diff --git a/.env b/.env index 9fc7b6c..46bc998 100644 --- a/.env +++ b/.env @@ -1,18 +1,27 @@ -PORT=6060 -SECRET=fDS9j269DSfd823FhdfG65 -ACCESS_TOKEN_SECERT=PNd98dsDS089ds3SDh7C5hg265SFC42bgHxTg34x -ACCESS_TOKEN_SECERT_ADMIN=G89dsJsd90DFdsf96F8se3sgL7JB29265SFC42bgHxTg34x -CONNECTION_STRING= -MERCHANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -EMAIL_HOST= -EMAIL_PORT= -EMAIL_USER= -EMAIL_PASS= -EMAIL_ADDRESS= -SMS_USER= -SMS_PASS= -SMS_NUMBER= -URLIMAGE=https://api-delearn.iran.liara.run -MONGO_CONNECTION_HOST=127.0.0.1 mongodb://127.0.0.1:27017/delearn -MONGO_CONNECTION_PORT=27017 -MONGO_CONNECTION_NAME=delearn \ No newline at end of file +PORT=3000 +SECRET=fDS9j269DSfd823FhdfG65 +ACCESS_TOKEN_SECERT=PNd98dsDS089ds3SDh7C5hg265SFC42bgHxTg34x +ACCESS_TOKEN_SECERT_ADMIN=G89dsJsd90DFdsf96F8se3sgL7JB29265SFC42bgHxTg34x +CONNECTION_STRING= +MERCHANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +EMAIL_HOST= +EMAIL_PORT= +EMAIL_USER= +EMAIL_PASS= +EMAIL_ADDRESS= +SMS_USER= +SMS_PASS= +SMS_NUMBER= +URLIMAGE=https://delearn-api.run.danakcorp.com +MONGO_CONNECTION_HOST=127.0.0.1 +MONGO_CONNECTION_PORT=27017 +MONGO_CONNECTION_NAME=delearn +MONGO_CONNECTION_OPTION=authSource=admin +STORAGE_ACCESS_KEY=d4eo96t2mklfe228 +STORAGE_SECRET_KEY=95e78068-ff60-41c0-82c3-71a0de0a3e2f +STORAGE_ENDPOINT=https://storage.iran.liara.space +STORAGE_BUCKET=dlearn +STORAGE_REGION=default + +MONGO_CONNECTION_DANAK=mongodb://root:ahh62bv6o7jndf32@srv-captain--danak-mongo-db:27017/delearn?authSource=admin +NODE_ENV=development \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..7f9edea --- /dev/null +++ b/.env.production @@ -0,0 +1,28 @@ +PORT=3000 +SECRET=fDS9j269DSfd823FhdfG65 +ACCESS_TOKEN_SECERT=PNd98dsDS089ds3SDh7C5hg265SFC42bgHxTg34x +ACCESS_TOKEN_SECERT_ADMIN=G89dsJsd90DFdsf96F8se3sgL7JB29265SFC42bgHxTg34x +CONNECTION_STRING= +MERCHANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +EMAIL_HOST= +EMAIL_PORT= +EMAIL_USER= +EMAIL_PASS= +EMAIL_ADDRESS= +SMS_USER= +SMS_PASS= +SMS_NUMBER= +URLIMAGE=https://delearn-api.run.danakcorp.com +MONGO_CONNECTION_HOST=danak-db-public.danakcorp.com +MONGO_CONNECTION_PORT=45698 +MONGO_CONNECTION_NAME=delearn +MONGO_CONNECTION_USER=root +MONGO_CONNECTION_PASS=ahh62bv6o7jndf32 +MONGO_CONNECTION_OPTION=authSource=admin +STORAGE_ACCESS_KEY=d4eo96t2mklfe228 +STORAGE_SECRET_KEY=95e78068-ff60-41c0-82c3-71a0de0a3e2f +STORAGE_ENDPOINT=https://storage.iran.liara.space +STORAGE_BUCKET=dlearn +STORAGE_REGION=default +MONGO_CONNECTION_DANAK=mongodb://root:ahh62bv6o7jndf32@srv-captain--danak-mongo-db:27017/delearn?authSource=admin +NODE_ENV=development \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index 76db3b5..85eb3cf 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,67 +1,67 @@ -module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - project: 'tsconfig.json', - sourceType: 'module', - }, - plugins: ['@typescript-eslint/eslint-plugin'], - extends: [ - 'plugin:@typescript-eslint/recommended', - 'plugin:prettier/recommended', - ], - root: true, - env: { - node: true, - jest: true, - }, - ignorePatterns: ['.eslintrc.js'], - - rules: { - 'linebreak-style': 0, - strict: 0, - 'max-len': ['error', { code: 120 }], - 'quote-props': 'off', - 'no-param-reassign': 'off', - 'no-underscore-dangle': 'off', - 'func-names': ['error', 'as-needed'], - 'prefer-const': 'warn', - radix: 'off', - 'no-restricted-syntax': ['error', "BinaryExpression[operator='at']"], - 'no-await-in-loop': 'off', - 'no-trailing-spaces': 'off', - 'object-curly-spacing': 'off', - 'object-curly-newline': [ - 'error', - { - ObjectExpression: { - multiline: true, - minProperties: 6, - consistent: true, - }, - ObjectPattern: { multiline: true, minProperties: 6, consistent: true }, - ImportDeclaration: { - multiline: true, - minProperties: 6, - consistent: true, - }, - ExportDeclaration: { - multiline: true, - minProperties: 6, - consistent: true, - }, - }, - ], - 'global-require': 'off', - 'import/no-dynamic-require': 'off', - '@typescript-eslint/interface-name-prefix': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - 'prettier/prettier': [ - 'error', - { - endOfLine: 'auto', - }, - ], - }, -}; +module.exports = { + parser: '@typescript-eslint/parser', + parserOptions: { + project: 'tsconfig.json', + sourceType: 'module', + }, + plugins: ['@typescript-eslint/eslint-plugin'], + extends: [ + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended', + ], + root: true, + env: { + node: true, + jest: true, + }, + ignorePatterns: ['.eslintrc.js'], + + rules: { + 'linebreak-style': 0, + strict: 0, + 'max-len': ['error', { code: 120 }], + 'quote-props': 'off', + 'no-param-reassign': 'off', + 'no-underscore-dangle': 'off', + 'func-names': ['error', 'as-needed'], + 'prefer-const': 'warn', + radix: 'off', + 'no-restricted-syntax': ['error', "BinaryExpression[operator='at']"], + 'no-await-in-loop': 'off', + 'no-trailing-spaces': 'off', + 'object-curly-spacing': 'off', + 'object-curly-newline': [ + 'error', + { + ObjectExpression: { + multiline: true, + minProperties: 6, + consistent: true, + }, + ObjectPattern: { multiline: true, minProperties: 6, consistent: true }, + ImportDeclaration: { + multiline: true, + minProperties: 6, + consistent: true, + }, + ExportDeclaration: { + multiline: true, + minProperties: 6, + consistent: true, + }, + }, + ], + 'global-require': 'off', + 'import/no-dynamic-require': 'off', + '@typescript-eslint/interface-name-prefix': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + 'prettier/prettier': [ + 'error', + { + endOfLine: 'auto', + }, + ], + }, +}; diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 0000000..9581fdf --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,48 @@ +name: deploy to danak + +on: + push: + branches: + - main + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + env: + DANAK_SERVER: "https://captain.run.danakcorp.com" + APP_TOKEN: fb6db122b78d5362d5b9c9297172d3145fa616420fca464b556008da9f86b3f1 + CAPROVER_APP_NAME: dlearn-api + GITHUB_TOKEN: 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 + + steps: + - name: Check out repositorys + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: zmihamid + password: ${{ env.GITHUB_TOKEN }} + + - name: Preset Image Name + run: echo "IMAGE_URL=$(echo ghcr.io/zmihamid/${{ github.event.repository.name }}:$(echo ${{ github.sha }} | cut -c1-7) | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV + + - name: Build and push Docker Image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ env.IMAGE_URL }} + + - name: Install CapRover CLI + run: npm install -g caprover + + - name: deploy to server + run: | + caprover deploy -a $CAPROVER_APP_NAME -u $DANAK_SERVER --appToken $APP_TOKEN -i "$IMAGE_URL" diff --git a/.gitignore b/.gitignore index 72e065f..6239fb3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,41 +1,41 @@ -# compiled output -/dist -/node_modules - -# Logs -logs -*.log -npm-debug.log* -pnpm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# package json -package-lock.json - -# OS -.DS_Store - -# Tests -/coverage -/.nyc_output - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -# Environments +# compiled output +/dist +/node_modules + +# Logs +logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# package json +package-lock.json + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# Environments .env \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index a20502b..38bbcbd 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,4 @@ -{ - "singleQuote": true, - "trailingComma": "all" -} +{ + "singleQuote": true, + "trailingComma": "all" +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6bc794f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +FROM node:20-alpine AS base + +RUN apk add --no-cache tzdata + +# Set the timezone to Asia/Tehran +RUN cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && echo "Asia/Tehran" > /etc/timezone + +FROM base AS deps +WORKDIR /temp-deps +COPY package*.json ./ +RUN yarn install + +FROM base AS builder +WORKDIR /build +COPY . ./ +COPY --from=deps /temp-deps/node_modules ./node_modules + +# Check if a build script exists and run the build if it does +RUN if [ -f package.json ] && grep -q '"build":' package.json; then yarn build; fi +RUN yarn install --production --frozen-lockfile + + +FROM base AS runner +RUN addgroup -S appgroup && adduser -S appuser -G appgroup +WORKDIR /app + +COPY --from=builder /build ./ + +RUN chown -R appuser:appgroup /app + +USER appuser + +ENV NODE_ENV=production + +EXPOSE 3000 + +CMD ["npm", "start"] diff --git a/nest-cli.json b/nest-cli.json index 56167b3..f591957 100644 --- a/nest-cli.json +++ b/nest-cli.json @@ -1,4 +1,4 @@ -{ - "collection": "@nestjs/schematics", - "sourceRoot": "src" -} +{ + "collection": "@nestjs/schematics", + "sourceRoot": "src" +} diff --git a/package.json b/package.json index 7625dd4..bc3b330 100644 --- a/package.json +++ b/package.json @@ -1,117 +1,128 @@ -{ - "name": "DLearn", - "version": "1.0.0", - "description": "", - "private": true, - "license": "UNLICENSED", - "scripts": { - "prebuild": "rimraf dist", - "build": "nest build", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", - "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "jest", - "test:watch": "jest --watch", - "test:cov": "jest --coverage", - "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" - }, - "author": "daniel.3380", - "dependencies": { - "@nestjs/axios": "^2.0.0", - "@nestjs/common": "^10.0.5", - "@nestjs/core": "^10.0.5", - "@nestjs/mongoose": "^10.0.6", - "@nestjs/platform-express": "^10.0.5", - "@nestjs/platform-socket.io": "^10.0.5", - "@nestjs/serve-static": "^4.0.0", - "@nestjs/swagger": "^7.1.1", - "@nestjs/testing": "^9.4.0", - "@nestjs/throttler": "^4.0.0", - "@types/axios": "^0.14.0", - "@types/crypto-js": "^4.1.1", - "@types/express-session": "1.17.0", - "@types/moment": "^2.13.0", - "@types/multer": "^1.4.7", - "@types/request": "^2.48.8", - "@types/request-ip": "^0.0.37", - "axios": "^1.3.6", - "base64-async": "^2.1.3", - "bluebird": "^3.7.2", - "class-transformer": "^0.5.1", - "class-validator": "^0.14.0", - "cookie-parser": "^1.4.6", - "crypto-js": "^4.1.1", - "dotenv": "^16.4.5", - "ejs": "^3.1.8", - "express-session": "^1.17.2", - "fs": "^0.0.1-security", - "jalali-moment": "^3.3.11", - "jsonwebtoken": "^8.5.1", - "md5": "^2.3.0", - "mongoose": "^8.3.2", - "mysql": "^2.18.1", - "mysql2": "^3.2.3", - "path": "^0.12.7", - "pg": "^8.11.1", - "pm2": "^5.2.0", - "qrcode": "^1.5.0", - "random-number": "^0.0.9", - "reflect-metadata": "^0.1.13", - "request": "^2.88.2", - "request-ip": "^2.1.3", - "rimraf": "^3.0.2", - "rxjs": "^7.5.5", - "sequelize": "^6.32.1", - "sequelize-typescript": "^2.1.5", - "shelljs": "^0.8.5", - "soap": "^1.0.0", - "swagger-ui-express": "^4.6.3", - "ts-loader": "^9.4.2", - "typescript": "^5.1.6" - }, - "devDependencies": { - "@nestjs/cli": "^8.2.5", - "@nestjs/schematics": "^8.0.11", - "@types/bluebird": "^3.5.36", - "@types/express": "^4.17.13", - "@types/jest": "27.0.2", - "@types/jsonwebtoken": "^8.5.8", - "@types/md5": "^2.3.2", - "@types/node": "^16.11.33", - "@types/qrcode": "^1.4.2", - "@types/supertest": "^2.0.12", - "@typescript-eslint/eslint-plugin": "^5.22.0", - "@typescript-eslint/parser": "^5.22.0", - "eslint": "^8.15.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.0.0", - "jest": "^27.5.1", - "prettier": "^2.6.2", - "source-map-support": "^0.5.20", - "supertest": "^6.2.3", - "ts-jest": "^27.1.4", - "ts-node": "^10.7.0", - "tsconfig-paths": "^3.14.1" - }, - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../coverage", - "testEnvironment": "node" - } -} +{ + "name": "DLearn", + "version": "1.0.0", + "description": "", + "private": true, + "license": "UNLICENSED", + "scripts": { + "prebuild": "rimraf dist", + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "node dist/main", + "start:dev": "cross-env NODE_ENV=development nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json" + }, + "author": "daniel.3380", + "dependencies": { + "@aws-sdk/client-s3": "^3.574.0", + "@ffprobe-installer/ffprobe": "^2.1.2", + "@liara/cli": "^6.0.3", + "@nestjs/axios": "^2.0.0", + "@nestjs/common": "^10.0.5", + "@nestjs/config": "^3.2.2", + "@nestjs/core": "^10.0.5", + "@nestjs/event-emitter": "^2.0.4", + "@nestjs/jwt": "^10.2.0", + "@nestjs/mongoose": "^10.0.6", + "@nestjs/platform-express": "^10.0.5", + "@nestjs/platform-socket.io": "^10.0.5", + "@nestjs/serve-static": "^4.0.0", + "@nestjs/swagger": "^7.1.1", + "@nestjs/testing": "^9.4.0", + "@nestjs/throttler": "^4.0.0", + "@types/axios": "^0.14.0", + "@types/crypto-js": "^4.1.1", + "@types/express-session": "1.17.0", + "@types/moment": "^2.13.0", + "@types/multer": "^1.4.7", + "@types/request": "^2.48.8", + "@types/request-ip": "^0.0.37", + "aws-sdk": "^2.1618.0", + "axios": "^1.3.6", + "base64-async": "^2.1.3", + "bluebird": "^3.7.2", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.0", + "cookie-parser": "^1.4.6", + "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", + "dotenv": "^16.4.5", + "ejs": "^3.1.8", + "express-session": "^1.17.2", + "fs": "^0.0.1-security", + "get-video-duration": "^4.1.0", + "jalali-moment": "^3.3.11", + "jsonwebtoken": "^9.0.2", + "md5": "^2.3.0", + "moment": "^2.29.4", + "mongoose": "^8.3.2", + "mysql": "^2.18.1", + "mysql2": "^3.2.3", + "path": "^0.12.7", + "pg": "^8.11.1", + "pm2": "^5.2.0", + "qrcode": "^1.5.0", + "random-number": "^0.0.9", + "reflect-metadata": "^0.1.13", + "request": "^2.88.2", + "request-ip": "^3.3.0", + "rimraf": "^3.0.2", + "rxjs": "^7.5.5", + "sequelize": "^6.32.1", + "sequelize-typescript": "^2.1.5", + "shelljs": "^0.8.5", + "soap": "^1.0.0", + "soft-delete-plugin-mongoose": "^1.0.17", + "swagger-ui-express": "^4.6.3", + "ts-loader": "^9.4.2", + "typescript": "^5.1.6" + }, + "devDependencies": { + "@nestjs/cli": "^10.3.2", + "@nestjs/schematics": "^8.0.11", + "@types/bluebird": "^3.5.36", + "@types/express": "^4.17.13", + "@types/jest": "27.0.2", + "@types/jsonwebtoken": "^8.5.8", + "@types/md5": "^2.3.2", + "@types/node": "^16.11.33", + "@types/qrcode": "^1.4.2", + "@types/supertest": "^2.0.12", + "@typescript-eslint/eslint-plugin": "^5.22.0", + "@typescript-eslint/parser": "^5.22.0", + "eslint": "^8.15.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-prettier": "^4.0.0", + "jest": "^27.5.1", + "prettier": "^2.6.2", + "source-map-support": "^0.5.20", + "supertest": "^6.2.3", + "ts-jest": "^27.1.4", + "ts-node": "^10.7.0", + "tsconfig-paths": "^3.14.1" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + } +} diff --git a/src/DTO/blogCategory.dto.ts b/src/DTO/blogCategory.dto.ts new file mode 100644 index 0000000..d6a40d5 --- /dev/null +++ b/src/DTO/blogCategory.dto.ts @@ -0,0 +1,228 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsEnum, IsInt, IsNotEmpty, IsOptional } from 'class-validator'; +import blogStatuses, { ItemStatus } from '../common/eNums/itemStatus.enum'; +import { PostDto, postObjDto } from './blogPost.dto'; +import { CategoryDataAccess } from '../dataAccess/blogCategory.dataAccess'; +import itemStatuses from '../common/eNums/itemStatus.enum'; + +const categoryDataAccess = new CategoryDataAccess(); +async function findParent(id) { + const parent = await categoryDataAccess.findById(id); + return parent.title; +} + +export async function blogCatObjDto(category) { + const active = Object.keys(blogStatuses).find( + (key) => blogStatuses[key].code === category.active, + ); + let Posts = []; + if (category.Posts && category.Posts.length !== 0) { + Posts = category.Posts.map((post) => postObjDto(post)); + } + const parent = + category.parentId !== null ? await findParent(category.parentId) : 'root'; + return { + id: category.id, + parentId: category.parentId, + parent: parent, + title: category.title, + description: category.description, + statusText: itemStatuses[category.status], + status: category.status, + createdAt: category.createdAt, + Posts, + }; +} + +export async function blogCatArrObjDto(category) { + console.log(category); + const parent = + category.parentId !== null ? await findParent(category.parentId) : 'root'; + return { + id: category.id, + parentId: category.parentId, + parent: parent, + parents: category.parents, + title: category.title, + description: category.description, + status: category.status, + statusText: itemStatuses[category.status], + createdAt: category.createdAt, + }; +} + +export function blogCatObjInfoDto(category) { + return { + title: category.title, + statusText: itemStatuses[category.status], + }; +} + +export function childBlogCatObj(category) { + return { + id: category.id, + title: category.title, + }; +} + +export function getAllBlogCategoriesObj(category) { + let BlogCategories = []; + if (category.BlogCategories && category.BlogCategories !== 0) { + BlogCategories = category.BlogCategories.map((category) => + childBlogCatObj(category), + ); + } + return { + id: category.id, + title: category.title, + BlogCategories, + }; +} + +export class BlogCatInfoDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + statusText: string; +} + +export class ChildBlogCatDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; +} + +export class GetAllBlogCategoriesDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @ApiProperty({ type: ChildBlogCatDto, isArray: true }) + BlogCategories: ChildBlogCatDto[]; +} + +export class BlogCatDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + parentId: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + parent: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @ApiProperty({ type: String }) + description: string; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + statusText: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; + + @ApiProperty({ type: PostDto, isArray: true }) + Posts: PostDto[]; +} + +export class BlogCatListDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + parentId: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + parent: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @ApiProperty({ type: String }) + description: string; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + statusText: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; +} + +export class CreateBlogCatDto { + @ApiProperty({ type: String }) + parentId: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @ApiProperty({ type: String }) + description: string; +} + +export class UpdateBlogCatDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @ApiProperty({ type: String }) + parentId: string; + + @IsNotEmpty() + @IsOptional() + @ApiProperty({ type: String }) + title: string; + + @IsOptional() + @ApiProperty({ type: String }) + description: string; +} + +export class StatusBlogCatDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; +} + +export class getParentListBlogCatDto { + @IsOptional() + @ApiProperty({ type: String, required: false }) + parentId: string; +} diff --git a/src/DTO/blogPost.dto.ts b/src/DTO/blogPost.dto.ts new file mode 100644 index 0000000..d0dbf78 --- /dev/null +++ b/src/DTO/blogPost.dto.ts @@ -0,0 +1,426 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { + IsEnum, + IsNotEmpty, + IsNumberString, + IsOptional, +} from 'class-validator'; +import blogStatuses, { ItemStatus } from '../common/eNums/itemStatus.enum'; + +import { postCommentObj } from './blogPostComment.dto'; +import { BlogCatInfoDto, blogCatObjInfoDto } from './blogCategory.dto'; +import { UserMidDto, userMidObj } from './user.dto'; + +export function postObjDto(post) { + const blogCat = blogCatObjInfoDto(post.blogCat); + return { + id: post.id, + adminId: post.adminId, + blogCat, + title: post.title, + slug: post.slug, + visitCount: post.visitCount, + statusText: blogStatuses[post.status], + status: post.status, + createdAt: post.createdAt, + }; +} + +export function viewPostObjDto(post) { + const blogCat = blogCatObjInfoDto(post.blogCat); + return { + id: post.id, + blogCat, + mediaUrl: post.mediaUrl, + title: post.title, + slug: post.slug, + description: post.description, + visitCount: post.visitCount, + createdAt: post.createdAt, + }; +} + +export function postInfoObjDto(post) { + // let PostMedias = []; + // if (post.PostMedias && post.PostMedias.length !== 0) { + // PostMedias = post.PostMedias.map((postMedia) => postMediaObj(postMedia)); + // } + let PostComments = []; + if (post.PostComments && post.PostComments.length !== 0) { + PostComments = post.PostComments.map((postComment) => + postCommentObj(postComment), + ); + } + const admin = userMidObj(post.admin); + const blogCat = blogCatObjInfoDto(post.blogCat); + // let media = null; + // if (post.Media) { + // media = mediaObj(post.Media); + // } + return { + id: post.id, + admin, + blogCat, + mediaUrl: post.mediaUrl, + // media, + description: post.description, + title: post.title, + slug: post.slug, + text: post.text, + writer: post.writer, + mediaAlt: post.mediaAlt, + metaTitle: post.metaTitle, + metaDescription: post.metaDescription, + metaKeywords: post.metaKeywords, + visitCount: post.visitCount, + sort: post.sort, + isInLanding: post.isInLanding, + statusText: blogStatuses[post.status], + status: post.status, + createdAt: post.createdAt, + PostComments, + }; +} + +export function postTitleObjDto(post) { + return { + id: post.id, + title: post.title, + slug: post.slug, + }; +} + +export class PostDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @ApiProperty({ type: () => UserMidDto }) + admin: UserMidDto; + + @ApiProperty({ type: () => BlogCatInfoDto }) + blogCat: BlogCatInfoDto; + + // @IsNotEmpty() + // @ApiProperty({ type: Number }) + // adminId: number; + + // @ApiProperty({ type: AdminInfoDto }) + // admin: AdminInfoDto; + + @IsNotEmpty() + @ApiProperty({ type: String }) + mediaUrl: string; + + // @ApiProperty({ type: MediaDto }) + // media: MediaDto; + + @IsNotEmpty() + @ApiProperty({ type: String }) + description: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + slug: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; + + @ApiProperty({ type: String }) + writer: string; + + @ApiProperty({ type: String }) + mediaAlt: string; + + @ApiProperty({ type: String }) + metaTitle: string; + + @ApiProperty({ type: String }) + metaDescription: string; + + @ApiProperty({ type: String }) + metaKeywords: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + visitCount: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + statusText: string; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; + + @ApiProperty({ type: Number }) + sort: number; + + @IsNotEmpty() + @ApiProperty({ type: Boolean }) + isInLanding: boolean; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; + + // @ApiProperty({ isArray: true, type: PostMediaDto }) + // PostMedias: PostMediaDto[]; + + // @ApiProperty({ isArray: true, type: PostCommentDto }) + // PostComments: PostCommentDto[]; +} + +export class ListPostDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @ApiProperty({ type: () => BlogCatInfoDto }) + blogCat: BlogCatInfoDto; + + @IsNotEmpty() + @ApiProperty({ type: String }) + adminId: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + slug: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + visitCount: number; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + statusText: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; +} + +export class ViewListPostDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @ApiProperty({ type: () => BlogCatInfoDto }) + blogCat: BlogCatInfoDto; + + @IsNotEmpty() + @ApiProperty({ type: String }) + mediaUrl: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + slug: string; + + @ApiProperty({ type: String }) + description: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + visitCount: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; +} + +export class FilterListPostDto { + @IsOptional() + @ApiProperty({ type: String, required: false }) + blogCatId: string; + + @IsOptional() + @ApiProperty({ type: String, required: false }) + title: string; + + @IsOptional() + @ApiProperty({ type: String, required: false }) + slug: string; + + @IsOptional() + @ApiProperty({ type: Number, required: false }) + visitCount: number; + + @IsOptional() + @ApiProperty({ type: Boolean, required: false }) + isInLanding: boolean; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; +} + +export class CreatePostDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'دسته بندی اجباری می باشد' }) + blogCatId: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'مدیا اجباری می باشد' }) + mediaUrl: string; + + @IsNotEmpty() + @IsNotEmpty({ message: 'عنوان اجباری می باشد' }) + @ApiProperty({ type: String }) + title: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'توضیحات کوتاه اجباری می باشد' }) + description: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'متن اجباری می باشد' }) + text: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'توضیحات عکس اجباری می باشد' }) + mediaAlt: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'عنوان متا اجباری می باشد' }) + metaTitle: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'توضیحات متا اجباری می باشد' }) + metaDescription: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'کلمات کلیدی اجباری می باشد' }) + metaKeywords: string; + + @IsNotEmpty() + @ApiProperty({ type: Boolean }) + @IsNotEmpty({ message: 'توضیحات متا اجباری می باشد' }) + isInLanding: boolean; + + // @Optional() + // @ApiProperty({ isArray: true, type: CreatePostMediaDto }) + // postMedias: CreatePostMediaDto[]; +} + +export class UpdatePostDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + blogCat: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + mediaUrl: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + description: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; + + @ApiProperty({ type: String }) + writer: string; + + @ApiProperty({ type: String }) + mediaAlt: string; + + @ApiProperty({ type: String }) + metaTitle: string; + + @ApiProperty({ type: String }) + metaDescription: string; + + @ApiProperty({ type: String }) + metaKeywords: string; + + @IsNotEmpty() + @ApiProperty({ type: Boolean }) + isInLanding: boolean; + + // @Optional() + // @ApiProperty({ isArray: true, type: CreatePostMediaDto }) + // postMedias: CreatePostMediaDto[]; +} + +export class PostStatusDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; +} + +export class ChangeSortPostDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + fromId: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + toId: string; +} + +export class getPostInputDto { + @IsOptional() + @IsNumberString() + @ApiProperty({ type: String, required: false }) + blogCatId: string; + + @IsOptional() + @ApiProperty({ type: Number, required: false }) + page: number; + + @IsOptional() + @ApiProperty({ type: Number, required: false }) + pageSize: number; +} + +export class SearchParameter { + @IsOptional() + @ApiProperty({ type: String, required: false }) + title: string; + + @IsOptional() + @ApiProperty({ type: String, required: false }) + page: string; + + @IsOptional() + @ApiProperty({ type: String, required: false }) + pageSize: string; +} diff --git a/src/DTO/blogPostComment.dto.ts b/src/DTO/blogPostComment.dto.ts new file mode 100644 index 0000000..cef74bc --- /dev/null +++ b/src/DTO/blogPostComment.dto.ts @@ -0,0 +1,183 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsEnum, IsMongoId, IsNotEmpty, IsOptional } from 'class-validator'; +import { ItemStatus } from '../common/eNums/itemStatus.enum'; +import { postTitleObjDto } from './blogPost.dto'; + +export function postCommentObj(postComment) { + return { + id: postComment.id, + postId: postComment.postId, + parentId: postComment.parentId, + userName: postComment.userName, + text: postComment.text, + status: postComment.status, + createdAt: postComment.createdAt, + }; +} + +export function postCommentInfoObj(postComment) { + let replies = []; + if (postComment.Replies && postComment.Replies.length !== 0) { + replies = postComment.Replies.map((postComment) => + postCommentObj(postComment), + ); + } + const post = postTitleObjDto(postComment.blogPost); + return { + id: postComment.id, + postId: postComment.postId, + post: post, + parentId: postComment.parentId, + userName: postComment.userName, + text: postComment.text, + status: postComment.status, + createdAt: postComment.createdAt, + replies, + }; +} + +export function postCommentArrObjDto(postComment) { + const post = postTitleObjDto(postComment.Post); + return { + id: postComment.id, + postId: postComment.postId, + post: post.title, + parentId: postComment.parentId, + userName: postComment.userName, + status: postComment.status, + text: postComment.text, + createdAt: postComment.createdAt, + }; +} + +export class ListPostCommentDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + postId: string; + + @ApiProperty({ type: String }) + post: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + parentId: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + userName: string; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; +} + +export class FilterListPostCommentDto { + @IsOptional() + @ApiProperty({ type: String, required: false }) + postId: string; + + @IsEnum(ItemStatus) + @IsOptional() + @ApiProperty({ type: String, required: false, enum: ItemStatus }) + status: string; + + @IsOptional() + @ApiProperty({ type: Date, required: false }) + fromDate: Date; + + @IsOptional() + @ApiProperty({ type: Date, required: false }) + toDate: Date; +} + +export class PostCommentDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + postId: number; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + parentId: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + userName: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; +} + +export class PostCommentInfoDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + postId: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + parentId: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + userName: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; + + @ApiProperty({ isArray: true, type: PostCommentDto }) + replies: PostCommentDto[]; +} + +export class CreatePostCommentDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; +} + +export class StatusPostCommentDto { + @IsNotEmpty() + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + @ApiProperty({ type: String }) + id: string; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; +} diff --git a/src/DTO/comment.dto.ts b/src/DTO/comment.dto.ts new file mode 100644 index 0000000..588ff9c --- /dev/null +++ b/src/DTO/comment.dto.ts @@ -0,0 +1,17 @@ +import { ApiProperty } from "@nestjs/swagger"; +import { IsMongoId, IsNotEmpty, IsOptional } from "class-validator"; + +export class CreateCommentDto { + @ApiProperty({type:String}) + @IsNotEmpty({message:"متن کامنت نمیتواند خالی باشد"}) + text: string; + + @ApiProperty({type:String}) + @IsOptional() + @IsMongoId({message:"شناسه والد نامعتبر است"}) + parent: string; + + course: string; + + createdBy: string; +} \ No newline at end of file diff --git a/src/DTO/course.dto.ts b/src/DTO/course.dto.ts new file mode 100644 index 0000000..4f69428 --- /dev/null +++ b/src/DTO/course.dto.ts @@ -0,0 +1,177 @@ +import { ApiProperty, PartialType } from '@nestjs/swagger'; +import { IsMongoId, IsNotEmpty, IsOptional } from 'class-validator'; + +export class CreateCourseDto { + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'نام دوره نباید خالی باشد.' }) + name: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'توضیحات دوره نباید خالی باشد.' }) + description: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'آدرس دوره نباید خالی باشد.' }) + slug: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'مدت دوره نباید خالی باشد.' }) + duration: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'عکس دوره نباید خالی باشد.' }) + image: string; + + @ApiProperty({ type: [String] }) + @IsNotEmpty({ message: 'دسته‌بندی‌های دوره نباید خالی باشد.' }) + categories: string[]; + + @ApiProperty({ type: Number }) + @IsNotEmpty({ message: 'قیمت دوره نباید خالی باشد.' }) + price: number; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'ایدی مدرس نباید خالی باشد.' }) + @IsMongoId({ message: 'ایدی مدرس نامعتبر است.' }) + teacher: string; + + @ApiProperty({ type: Number }) + @IsNotEmpty({ message: 'درصد تکمیل دوره نباید خالی باشد.' }) + completionPercentage: number; + + @ApiProperty({ enum: ['مبتدی', 'متوسط', 'پیشرفته'], enumName: 'CourseLevel' }) + @IsNotEmpty({ message: 'سطح دوره نباید خالی باشد.' }) + level: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'زبان دوره نباید خالی باشد.' }) + language: string; + + @ApiProperty({ type: Number }) + @IsNotEmpty({ message: 'تعداد ویدیوهای دوره نباید خالی باشد.' }) + countOfVideos: number; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'حجم فایل دوره نباید خالی باشد.' }) + totalFileSize: string; +} + +export class UpdateCourseDto { + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'ایدی دوره نباید خالی باشد.' }) + @IsMongoId({ message: 'ایدی دوره نامعتبر است.' }) + id: string; + + @ApiProperty({ type: String }) + @IsOptional() + name: string; + + @ApiProperty({ type: String }) + @IsOptional() + description: string; + + @ApiProperty({ type: String }) + @IsOptional() + slug: string; + + @ApiProperty({ type: String }) + @IsOptional() + duration: string; + + @ApiProperty({ type: String }) + @IsOptional() + image: string; + + @ApiProperty({ type: Number }) + @IsOptional() + price: number; + + @ApiProperty({ type: String }) + @IsOptional() + teacher: string; + + @ApiProperty({ type: [String] }) + @IsOptional() + categories: string[]; + + @ApiProperty({ type: Number }) + @IsOptional() + completionPercentage: number; + + @ApiProperty({ + enum: ['Beginner', 'Intermediate', 'Advanced'], + enumName: 'CourseLevel', + }) + @IsOptional() + level: string; + + @ApiProperty({ type: String }) + @IsOptional() + language: string; + + @ApiProperty({ type: Number }) + @IsOptional() + countOfVideos: number; + + @ApiProperty({ type: String }) + @IsOptional() + totalFileSize: string; +} + +export class PaginationCourseDto { + @IsOptional() + @ApiProperty({ type: Number, required: false }) + page: number; + + @IsOptional() + @ApiProperty({ type: Number, required: false }) + pageSize: number; +} + +export class FilterCategoryPaginationCourseDto { + @ApiProperty({ type: String, required: false }) + @IsOptional() + @IsMongoId({ message: 'ایدی دسته‌بندی نامعتبر است.' }) + categoryId: string; + + @IsOptional() + @ApiProperty({ type: Number, required: false }) + page: number; + + @IsOptional() + @ApiProperty({ type: Number, required: false }) + pageSize: number; + + @IsOptional() + @ApiProperty({ type: String, required: false }) + price: string; + + @IsOptional() + @ApiProperty({ type: String, required: false }) + name: string; +} + +export function MidCourseDtoObj(item) { + return { + id: item.id, + name: item.name, + image: item.image, + price: item.price, + }; +} +export class MidCourseDto { + @ApiProperty({ type: String }) + id: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'نام دوره نباید خالی باشد.' }) + name: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'عکس دوره نباید خالی باشد.' }) + image: string; + + @ApiProperty({ type: Number }) + @IsNotEmpty({ message: 'قیمت دوره نباید خالی باشد.' }) + price: number; +} diff --git a/src/DTO/courseCategory.dto.ts b/src/DTO/courseCategory.dto.ts new file mode 100644 index 0000000..df5594e --- /dev/null +++ b/src/DTO/courseCategory.dto.ts @@ -0,0 +1,9 @@ +import { ApiProperty } from "@nestjs/swagger"; +import { IsNotEmpty } from "class-validator"; + +export class CreateCourseCategoryDto { + @ApiProperty({type: String}) + @IsNotEmpty({message: 'نام دسته بندی را وارد کنید'}) + name: string; +} + diff --git a/src/DTO/courseHeadline.dto.ts b/src/DTO/courseHeadline.dto.ts new file mode 100644 index 0000000..1f8bcf6 --- /dev/null +++ b/src/DTO/courseHeadline.dto.ts @@ -0,0 +1,56 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsEnum, IsNotEmpty, IsOptional } from 'class-validator'; +import { ItemStatusCourseHeadline } from '../common/eNums/itemStatusCourseHeadline.enum'; + +export class CreateCourseHeadlineDTO { + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'عنوان دوره نباید خالی باشد.' }) + headline: string; + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'توضیحات دوره نباید خالی باشد.' }) + description: string; + episodes: EpisodeDTO[]; + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'ایدی دوره نباید خالی باشد.' }) + course: string; // Assuming course is referenced by its ID + + @ApiProperty({ type: String }) + @IsOptional() + videoUrl: string; + + @IsEnum(ItemStatusCourseHeadline) + @ApiProperty({ type: String, enum: ItemStatusCourseHeadline }) + @IsNotEmpty({ message: 'وضعیت دوره نباید خالی باشد.' }) + status: string; +} + +export class UpdateCourseHeadlineDTO { + @ApiProperty({ type: String }) + @IsOptional() + headline: string; + @ApiProperty({ type: String }) + @IsOptional() + description: string; + episodes: EpisodeDTO[]; + @ApiProperty({ type: String }) + @IsOptional() + course: string; // Assuming course is referenced by its ID + + @ApiProperty({ type: String }) + @IsOptional() + videoUrl: string; + + @IsEnum(ItemStatusCourseHeadline) + @ApiProperty({ type: String, enum: ItemStatusCourseHeadline }) + @IsOptional() + status: string; +} + +export class EpisodeDTO { + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'عنوان دوره نباید خالی باشد.' }) + title: string; + @ApiProperty({ type: Number }) + @IsNotEmpty({ message: 'مدت دوره نباید خالی باشد.' }) + duration: number; +} diff --git a/src/DTO/courseHeadlineComment.dto.ts b/src/DTO/courseHeadlineComment.dto.ts new file mode 100644 index 0000000..bcdb96a --- /dev/null +++ b/src/DTO/courseHeadlineComment.dto.ts @@ -0,0 +1,194 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsEnum, IsMongoId, IsNotEmpty, IsOptional } from 'class-validator'; +import { ItemStatus } from '../common/eNums/itemStatus.enum'; + +export function courseHeadlineCommentObj(item) { + return { + id: item.id, + courseHeadlineId: item.courseHeadlineId, + parentId: item.parentId, + userName: item.userName, + text: item.text, + createdAt: item.createdAt, + }; +} + +export function courseHeadlineCommentInfoObj(courseHeadlineComment) { + let replies = []; + if ( + courseHeadlineComment.Comment && + courseHeadlineComment.Comment.length !== 0 + ) { + replies = courseHeadlineComment.Comment.map((courseHeadlineComment) => + courseHeadlineCommentObj(courseHeadlineComment), + ); + } + return { + id: courseHeadlineComment.id, + courseHeadlineId: courseHeadlineComment.courseHeadlineId, + parentId: courseHeadlineComment.parentId, + userName: courseHeadlineComment.userName, + text: courseHeadlineComment.text, + createdAt: courseHeadlineComment.createdAt, + replies, + }; +} + +export function courseHeadlineCommentArrObjDto(courseHeadlineComment) { + return { + id: courseHeadlineComment.id, + courseHeadlineId: courseHeadlineComment.courseHeadlineId, + parentId: courseHeadlineComment.parentId, + userName: courseHeadlineComment.userName, + text: courseHeadlineComment.text, + createdAt: courseHeadlineComment.createdAt, + }; +} + +export class ListPostCommentDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + @IsMongoId({ message: 'آیدی سرفصل نامعتبر است.' }) + courseHeadlineId: string; + + @ApiProperty({ type: String }) + courseHeadline: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + parentId: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + userName: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + active: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + activeText: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; +} + +export class FilterListPostCommentDto { + @IsOptional() + @ApiProperty({ type: String, required: false }) + @IsMongoId({ message: 'آیدی سرفصل نامعتبر است.' }) + courseHeadlineId: string; + + @IsEnum(ItemStatus) + @IsOptional() + @ApiProperty({ type: String, required: false, enum: ItemStatus }) + status: string; + + @IsOptional() + @ApiProperty({ type: Date, required: false }) + fromDate: Date; + + @IsOptional() + @ApiProperty({ type: Date, required: false }) + toDate: Date; +} + +export class PostCommentDto { + @IsNotEmpty() + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @IsMongoId({ message: 'آیدی سرفصل نامعتبر است.' }) + @ApiProperty({ type: Number }) + courseHeadlineId: number; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + parentId: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + userName: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + active: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + activeText: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + createdAt: string; +} + +export class PostCommentInfoDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + courseHeadlineId: number; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + parentId: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + userName: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; + + @IsNotEmpty() + @ApiProperty({ type: Number }) + active: number; + + @IsNotEmpty() + @ApiProperty({ type: String }) + activeText: string; + + @ApiProperty({ isArray: true, type: PostCommentDto }) + replies: PostCommentDto[]; +} + +export class CreateCourseHeadlineCommentDto { + @IsNotEmpty() + @IsMongoId({ message: 'آیدی سرفصل نامعتبر است.' }) + @ApiProperty({ type: String }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + text: string; +} + +export class StatusCommentDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + active: string; +} diff --git a/src/DTO/discount.dto.ts b/src/DTO/discount.dto.ts new file mode 100644 index 0000000..509fef5 --- /dev/null +++ b/src/DTO/discount.dto.ts @@ -0,0 +1,212 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty, IsMongoId, IsEnum, IsOptional } from 'class-validator'; +import discountStatus from '../common/eNums/discountStatus.enum'; +import discountTypes, { + DiscountTypeEnum, +} from '../common/eNums/discountType.enum'; +import discountUser from '../common/eNums/discountUser.enum'; +import itemStatuses, { ItemStatus } from '../common/eNums/itemStatus.enum'; + +import { UserMidDto, userMidObj } from './user.dto'; + +// OBJ ******************* + +export function detailsAdminDiscountObj(discount) { + const adminObj = userMidObj(discount.user); + return { + id: discount.id, + admin: adminObj, + startDate: discount.startDate, + endDate: discount.endDate, + code: discount.code, + price: discount.price, + percent: discount.percent, + allUsers: discount.allUsers, + status: discount.status, + discountType: discount.discountType, + createdAt: discount.createdAt, + updatedAt: discount.updatedAt, + }; +} + +export function listDiscountObj(discount) { + const adminObj = userMidObj(discount.user); + + return { + id: discount.id, + admin: adminObj, + startDate: discount.startDate, + endDate: discount.endDate, + code: discount.code, + discountType: discount.discountType, + status: discount.status, + statusText: itemStatuses[discount.status], + createdAt: discount.createdAt, + }; +} + +// CLASS ******************* + +export class CreateDiscountDto { + @IsNotEmpty() + @ApiProperty({ type: Date }) + startDate: Date; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + endDate: Date; + + @IsNotEmpty() + @ApiProperty({ type: String }) + code: string; + + @IsEnum(DiscountTypeEnum) + @ApiProperty({ type: String, required: false }) + discountType: string; + + @ApiProperty({ required: false, type: String }) + price: string; + + @ApiProperty({ required: false, type: Number }) + percent: number; + + @IsNotEmpty() + @ApiProperty({ type: Boolean }) + allUsers: boolean; +} + +export class UpdateDiscountDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + startDate: Date; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + endDate: Date; + + @IsNotEmpty() + @ApiProperty({ type: String }) + code: string; + + @IsEnum(DiscountTypeEnum) + @ApiProperty({ type: String, required: false }) + discountType: string; + + @ApiProperty({ required: false, type: String }) + price: string; + + @ApiProperty({ required: false, type: Number }) + percent: number; + + @ApiProperty({ type: Boolean }) + allUsers: boolean; +} + +export class UpdatedStatusDiscountDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; +} + +export class ListDiscountDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: UserMidDto }) + admin: UserMidDto; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + startDate: Date; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + endDate: Date; + + @IsNotEmpty() + @ApiProperty({ type: String }) + code: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + discountType: string; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + createdAt: Date; +} + +export class DetailsAdminDiscountDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: UserMidDto }) + admin: UserMidDto; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + startDate: Date; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + endDate: Date; + + @IsNotEmpty() + @ApiProperty({ type: String }) + code: string; + + @ApiProperty({ required: false, type: String }) + price: string; + + @ApiProperty({ required: false, type: Number }) + percent: number; + + @IsNotEmpty() + @ApiProperty({ type: Boolean }) + allUsers: boolean; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + discountType: string; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + updatedAt: Date; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + createdAt: Date; +} + +export class IdDiscountDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; +} diff --git a/src/DTO/discountHistory.dto.ts b/src/DTO/discountHistory.dto.ts new file mode 100644 index 0000000..2ec9582 --- /dev/null +++ b/src/DTO/discountHistory.dto.ts @@ -0,0 +1,51 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty } from 'class-validator'; +import { UserMidDto, userMidObj } from './user.dto'; +import { + DetailsAdminDiscountDto, + detailsAdminDiscountObj, +} from './discount.dto'; +import { ListUserDiscountDto, listUserDiscountObj } from './userDiscount.dto'; + +// OBJ ******************* + +export function listDiscountHistoryObj(result) { + const user = result.user ? userMidObj(result.user) : null; + const discount = result.discount + ? detailsAdminDiscountObj(result.discount) + : null; + const userDiscount = result.userDiscount + ? listUserDiscountObj(result.userDiscount) + : null; + + return { + id: discount.id, + user, + discount, + userDiscount, + createdAt: discount.createdAt, + }; +} + +// CLASS ******************* + +export class ListDiscountHistoryDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @ApiProperty({ type: UserMidDto }) + user: UserMidDto; + + @ApiProperty({ type: ListUserDiscountDto }) + userDiscount: ListUserDiscountDto; + + @IsNotEmpty() + @ApiProperty({ type: DetailsAdminDiscountDto }) + discount: DetailsAdminDiscountDto; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + createdAt: Date; +} diff --git a/src/DTO/faq.dto.ts b/src/DTO/faq.dto.ts new file mode 100644 index 0000000..ea38652 --- /dev/null +++ b/src/DTO/faq.dto.ts @@ -0,0 +1,137 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { + IsEnum, + IsInt, + IsMongoId, + IsNotEmpty, + IsOptional, +} from 'class-validator'; +import { ItemStatus } from '../common/eNums/itemStatus.enum'; + +// OBJ ******************* + +export function faqObj(faq) { + let faqCatTitle = null; + if (faq.FaqCategory) { + faqCatTitle = faq.FaqCategory.title; + } + + return { + id: faq.id, + status: faq.status, + faqCat: faq.faqCat, + faqCatTitle, + question: faq.question, + answer: faq.answer, + createdAt: faq.createdAt, + updatedAt: faq.updatedAt, + }; +} + +// CLASS ******************* + +export class FaqDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + faqCat: string; + + @ApiProperty({ type: String }) + faqCatTitle: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + question: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + answer: string; + + @ApiProperty({ type: Date }) + createdAt: Date; + + @ApiProperty({ type: Date }) + updatedAt: Date; +} +export class CreateFaqDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + faqCat: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + question: string; + + @ApiProperty({ type: String }) + answer: string; +} +export class UpdateFaqDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + faqCat: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + question: string; + + @ApiProperty({ type: String }) + answer: string; +} +export class UpdateStatusFaqDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + status: string; +} +export class FilterFaqDto { + @IsOptional() + @ApiProperty({ type: String, required: false }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsOptional() + @ApiProperty({ type: String, required: false }) + @IsMongoId({ message: 'آیدی دسته بندی نامعتبر است.' }) + faqCat: string; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; +} + +export class ParamsPositionDto { + @IsNotEmpty() + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + @ApiProperty({ type: String }) + fId: string; + + @IsNotEmpty() + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + @ApiProperty({ type: String }) + tId: string; +} diff --git a/src/DTO/faqCategory.dto.ts b/src/DTO/faqCategory.dto.ts new file mode 100644 index 0000000..0099b0f --- /dev/null +++ b/src/DTO/faqCategory.dto.ts @@ -0,0 +1,81 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsEnum, IsMongoId, IsNotEmpty, IsOptional } from 'class-validator'; +import { FaqDto, faqObj } from './faq.dto'; +import { ItemStatus } from '../common/eNums/itemStatus.enum'; + +// OBJ ******************* + +export function faqCategoryObj(faqCategory) { + let Faqs = []; + if (faqCategory.Faqs && faqCategory.Faqs.length !== 0) { + Faqs = faqCategory.Faqs.map((faq) => faqObj(faq)); + } + + return { + id: faqCategory.id, + title: faqCategory.title, + status: faqCategory.status, + description: faqCategory.description, + Faqs, + }; +} + +// CLASS ******************* + +export class FaqCategoryDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @ApiProperty({ type: String }) + description: string; + + @ApiProperty({ isArray: true, type: FaqDto }) + Faqs: FaqDto[]; +} +export class CreateFaqCategoryDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @ApiProperty({ type: String }) + description: string; +} +export class UpdateFaqCategoryDto { + @IsNotEmpty() + @ApiProperty({ type: String }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; + + @IsNotEmpty() + @ApiProperty({ type: String }) + title: string; + + @ApiProperty({ type: String }) + description: string; +} +export class FilterFaqCategoryDto { + @IsOptional() + @ApiProperty({ type: String, required: false }) + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + id: string; + + @IsOptional() + @IsEnum(ItemStatus) + @ApiProperty({ type: String, required: false }) + status: string; +} diff --git a/src/DTO/pagination.dto.ts b/src/DTO/pagination.dto.ts new file mode 100644 index 0000000..0ea43cf --- /dev/null +++ b/src/DTO/pagination.dto.ts @@ -0,0 +1,12 @@ +import { IsNumber, IsOptional } from "class-validator"; + +export class PaginationDto { + @IsNumber() + @IsOptional() + page: number; + + @IsNumber() + @IsOptional() + pageSize: number; +} + diff --git a/src/DTO/rate.dto.ts b/src/DTO/rate.dto.ts new file mode 100644 index 0000000..9c5c9cd --- /dev/null +++ b/src/DTO/rate.dto.ts @@ -0,0 +1,11 @@ +import { ApiProperty } from "@nestjs/swagger"; +import { IsNotEmpty, IsNumber, Max, Min } from "class-validator"; + +export class CreateRateDto { + @ApiProperty({ type: Number }) + @IsNotEmpty({message:"امتیاز نمیتواند خالی باشد"}) + @IsNumber() + @Min(0,{message:"امتیاز باید بیشتر از 0 باشد"}) + @Max(5,{message:"امتیاز باید کمتر از 5 باشد"}) + rating: number; +} \ No newline at end of file diff --git a/src/DTO/settings.dto.ts b/src/DTO/settings.dto.ts new file mode 100644 index 0000000..0e53c85 --- /dev/null +++ b/src/DTO/settings.dto.ts @@ -0,0 +1,52 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsOptional } from 'class-validator'; + +export class CreateDto { + @IsOptional() + @ApiProperty({ type: String }) + about: string; + + @IsOptional() + @ApiProperty({ type: Number }) + student: number; + + @IsOptional() + @ApiProperty({ type: Number }) + hours: number; + + @IsOptional() + @ApiProperty({ type: Number }) + title: number; + + @IsOptional() + @ApiProperty({ type: Number }) + expertise: number; + + @IsOptional() + @ApiProperty({ type: String }) + nameCompany: string; + + @IsOptional() + @ApiProperty({ type: String }) + mission: string; + + @IsOptional() + @ApiProperty({ type: String }) + start: string; + + @IsOptional() + @ApiProperty({ type: String }) + goals: string; + + @IsOptional() + @ApiProperty({ type: String }) + rate: string; + + @IsOptional() + @ApiProperty({ type: String }) + titleText: string; + + @IsOptional() + @ApiProperty({ type: String }) + header: string; +} diff --git a/src/DTO/ticket.dto.ts b/src/DTO/ticket.dto.ts new file mode 100644 index 0000000..6633aa1 --- /dev/null +++ b/src/DTO/ticket.dto.ts @@ -0,0 +1,19 @@ +import { ApiProperty } from "@nestjs/swagger"; +import { IsNotEmpty } from "class-validator"; + +export class CreateTicketDto { + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'موضوع تیکت اجباری میباشد' }) + subject: string; +} + +export class CreateTicketMessageDto { + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'متن تیکت اجباری میباشد' }) + content: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'آیدی تیکت اجباری میباشد' }) + ticketId: string; +} + diff --git a/src/DTO/uploader.dto.ts b/src/DTO/uploader.dto.ts new file mode 100644 index 0000000..8f48afe --- /dev/null +++ b/src/DTO/uploader.dto.ts @@ -0,0 +1,17 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsNotEmpty } from 'class-validator'; + +export class UploaderDTO { + @ApiProperty({ type: 'string', format: 'binary' }) + file: string; + + @ApiProperty({ type: 'string' }) + @IsNotEmpty({ message: 'نام فولدر الزامی است' }) + directoryName: string; +} + +export class GetFileDTO { + @ApiProperty({ type: 'string' }) + @IsNotEmpty({ message: 'نام فایل الزامی است' }) + fileName: string; +} diff --git a/src/DTO/user.dto.ts b/src/DTO/user.dto.ts new file mode 100644 index 0000000..5575c4d --- /dev/null +++ b/src/DTO/user.dto.ts @@ -0,0 +1,217 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { + IsEnum, + IsMobilePhone, + IsMongoId, + IsNotEmpty, + IsNumberString, + IsOptional, +} from 'class-validator'; +import itemStatuses, { ItemStatus } from '../common/eNums/itemStatus.enum'; +import role, { Role } from '../common/eNums/role.enum'; +import { MidCourseDto, MidCourseDtoObj } from './course.dto'; + +export function userMidObj(user) { + return { + id: user.id, + phone: user.phone, + token: user.jwtToken, + email: user.email, + userName: user.userName, + name: user.name, + avatarMedia: user.avatarMedia, + roles: user.roles, + rolesText: role[user.roles], + status: user.status, + statusText: itemStatuses[user.status], + }; +} + +export function userObj(user) { + let course = []; + if (user.courseIds && user.courseIds !== 0) { + course = user.courseIds.map((item) => MidCourseDtoObj(item)); + } + return { + id: user.id, + phone: user.phone, + avatarMedia: user.avatarMedia, + name: user.name, + email: user.email, + userName: user.userName, + lastName: user.lastName, + cityId: user.cityId, + tel: user.tel, + address: user.address, + description: user.description, + gender: user.gender, + roles: user.roles, + rolesText: role[user.roles], + course, + status: user.status, + createdAt: user.createdAt, + }; +} + +export class LoginDto { + @IsNumberString() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'شماره موبایل اجباری می باشد' }) + phone: any; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'نوع تماس اجباری می باشد' }) + type: string; +} + +export class LoginStepTwoDto { + @IsNumberString() + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'شماره موبایل اجباری می باشد' }) + phone: string; + + @IsNotEmpty({ message: 'کد تایید اجباری می باشد' }) + @ApiProperty({ type: Number }) + code: number; +} + +export class LoginRes { + @ApiProperty({ type: String }) + message: string; +} + +export class UserMidDto { + @ApiProperty({ type: String }) + id: string; + + @ApiProperty({ type: String }) + phone: string; + + @ApiProperty({ type: String }) + token: string; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; + + @ApiProperty({ type: String }) + statusText: string; +} + +export class UserDto { + @ApiProperty({ type: String }) + id: string; + + @ApiProperty({ type: String }) + phone: string; + + @ApiProperty({ type: String }) + avatarMedia: string; + + @ApiProperty({ type: String }) + name: string; + + @ApiProperty({ type: String }) + email: string; + + @ApiProperty({ type: String }) + userName: string; + + @ApiProperty({ type: String }) + lastName: string; + + @ApiProperty({ type: String }) + cityId: string; + + @ApiProperty({ type: String }) + tel: string; + + @ApiProperty({ type: String }) + address: string; + + @ApiProperty({ type: String }) + description: string; + + @ApiProperty({ type: String }) + gender: string; + + @IsEnum(Role) + @ApiProperty({ type: String, enum: Role }) + roles: string; + + @ApiProperty({ type: String }) + rolesText: string; + + @ApiProperty({ isArray: true, type: MidCourseDto }) + course: MidCourseDto[]; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; +} + +export class QueryUserList { + @IsOptional() + @ApiProperty({ type: String, required: false }) + page: string; + + @IsOptional() + @ApiProperty({ type: String, required: false }) + pageSize: string; +} + +export class UserStatus { + @ApiProperty({ type: String }) + userId: string; + + @IsEnum(ItemStatus) + @ApiProperty({ type: String, enum: ItemStatus }) + status: string; +} + +export class UserUpdateDto { + @IsOptional() + @ApiProperty({ type: String }) + avatarMedia: string; + + @IsOptional() + @ApiProperty({ type: String }) + name: string; + + @IsOptional() + @ApiProperty({ type: String }) + lastName: string; + + @IsOptional() + @ApiProperty({ type: String }) + userName: string; + + @IsOptional() + @ApiProperty({ type: String }) + email: string; +} + +export class RegisterCourseDto { + @ApiProperty({ type: String }) + @IsMongoId({ message: 'شناسه دوره اجباری می باشد' }) + @IsNotEmpty({ message: 'شناسه دوره اجباری می باشد' }) + courseId: string; + + @IsOptional() + @ApiProperty({ type: String }) + code: string; +} + +export class AddBalanceDto { + @ApiProperty({ type: Number }) + @IsNotEmpty({ message: 'مبلغ اجباری می باشد' }) + amount: number; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'شماره پرداخت اجباری می باشد' }) + paymentNumber: string; + + @ApiProperty({ type: String }) + @IsNotEmpty({ message: 'دلیل اجباری می باشد' }) + reason: string; +} diff --git a/src/DTO/userDiscount.dto.ts b/src/DTO/userDiscount.dto.ts new file mode 100644 index 0000000..7ef5b42 --- /dev/null +++ b/src/DTO/userDiscount.dto.ts @@ -0,0 +1,58 @@ +import { ApiProperty } from '@nestjs/swagger'; +import { IsMongoId, IsNotEmpty } from 'class-validator'; +import { + DetailsAdminDiscountDto, + detailsAdminDiscountObj, +} from './discount.dto'; +import { UserMidDto, userMidObj } from './user.dto'; + +// OBJ ******************* + +export function listUserDiscountObj(userDiscount) { + const user = userMidObj(userDiscount.user); + const discount = detailsAdminDiscountObj(userDiscount.discount); + + return { + id: userDiscount.id, + user, + discount, + updatedAt: userDiscount.updatedAt, + createdAt: userDiscount.createdAt, + }; +} + +// CLASS ******************* + +export class ListUserDiscountDto { + @IsNotEmpty() + @ApiProperty({ type: Number }) + id: number; + + @IsNotEmpty() + @ApiProperty({ type: UserMidDto }) + user: UserMidDto; + + @IsNotEmpty() + @ApiProperty({ type: DetailsAdminDiscountDto }) + discount: DetailsAdminDiscountDto; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + createdAt: Date; + + @IsNotEmpty() + @ApiProperty({ type: Date }) + updatedAt: Date; +} + +export class CreateUserDiscountDto { + @IsNotEmpty() + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + @ApiProperty({ type: String }) + user: string; + + @IsNotEmpty() + @IsMongoId({ message: 'آیدی نامعتبر است.' }) + @ApiProperty({ type: String }) + discount: string; +} diff --git a/src/app.module.ts b/src/app.module.ts index 9b64851..997f7c8 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,20 +1,52 @@ -import { Module } from '@nestjs/common'; -import { ThrottlerModule } from '@nestjs/throttler'; - -@Module({ - imports: [ - // ServeStaticModule.forRoot({ - // rootPat h: join(__dirname, '..', 'public'), - // }), - // ConfigModule.forRoot({ - // isGlobal: true, - // }), - ThrottlerModule.forRoot({ - ttl: 60, - limit: 10, - }), - ], - controllers: [], - providers: [], -}) -export class AppModule {} +import { AdminModule } from './application/admin/admin.module'; +import { CommonModule } from './application/common/common.module'; +import { TicketModule } from './application/ticket/ticket.module'; +import { UserModule } from './application/user/user.module'; +import { AuthModule } from './auth/auth.module'; +import { Module } from '@nestjs/common'; +import { ThrottlerModule } from '@nestjs/throttler'; +import { EventEmitterModule } from '@nestjs/event-emitter'; +import { UploaderService } from './application/common/uploader/uploader.service'; +import { CourseModule } from './application/course/course.module'; +import { UploaderModule } from './application/common/uploader/uploader.module'; +import { CourseHeadlineModule } from './application/courseHeadline/courseHeadline.module'; +import { ConfigModule } from '@nestjs/config'; +import { CourseCategoryModule } from './application/courseCategory/courseCategory.module'; + +@Module({ + imports: [ + AdminModule, + // EventEmitterModule.forRoot({ + // wildcard: false, + // delimiter: '.', + // newListener: false, + // removeListener: false, + // maxListeners: 10, + // verboseMemoryLeak: false, + // ignoreErrors: false, + // }), + EventEmitterModule.forRoot(), + CommonModule, + AuthModule, + UserModule, + TicketModule, + CourseModule, + UploaderModule, + CourseHeadlineModule, + CourseCategoryModule, + // ServeStaticModule.forRoot({ + // rootPat h: join(__dirname, '..', 'public'), + // }), + ConfigModule.forRoot({ + isGlobal: true, + }), + ThrottlerModule.forRoot({ + ttl: 60, + limit: 10, + }), + ], + controllers: [], + providers: [UploaderService], + exports: [UploaderService], +}) +export class AppModule {} diff --git a/src/application/admin/admin.controller.ts b/src/application/admin/admin.controller.ts new file mode 100644 index 0000000..282ff7e --- /dev/null +++ b/src/application/admin/admin.controller.ts @@ -0,0 +1,9 @@ +import { Controller } from '@nestjs/common'; +import { AdminService } from './admin.service'; +import { ApiTags } from '@nestjs/swagger'; + +@ApiTags('admin') +@Controller('admin') +export class AdminController { + constructor(private readonly adminService: AdminService) {} +} diff --git a/src/application/admin/admin.module.ts b/src/application/admin/admin.module.ts new file mode 100644 index 0000000..cdb5d0f --- /dev/null +++ b/src/application/admin/admin.module.ts @@ -0,0 +1,14 @@ +import { Module } from '@nestjs/common'; +import { AdminService } from './admin.service'; +import { AdminController } from './admin.controller'; +import { UserModule } from './user/user.module'; +import { BlogModule } from './blog/blog.module'; +import { FaqModule } from './faq/faq.module'; +import { DiscountModule } from './discount/discount.module'; +import { SettingsModule } from './settings/settings.module'; +@Module({ + imports: [UserModule, SettingsModule, BlogModule, FaqModule, DiscountModule], + controllers: [AdminController], + providers: [AdminService], +}) +export class AdminModule {} diff --git a/src/application/admin/admin.service.ts b/src/application/admin/admin.service.ts new file mode 100644 index 0000000..88532cf --- /dev/null +++ b/src/application/admin/admin.service.ts @@ -0,0 +1,4 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class AdminService {} diff --git a/src/application/admin/blog/blog.controller.ts b/src/application/admin/blog/blog.controller.ts new file mode 100644 index 0000000..52d20f2 --- /dev/null +++ b/src/application/admin/blog/blog.controller.ts @@ -0,0 +1,400 @@ +import { + Body, + Controller, + Post, + HttpStatus, + HttpCode, + Get, + Put, + Query, + Patch, + Param, + UseGuards, +} from '@nestjs/common'; +import { + ApiTags, + ApiOkResponse, + ApiBody, + ApiOperation, + ApiBearerAuth, +} from '@nestjs/swagger'; +import { + BlogCatDto, + CreateBlogCatDto, + UpdateBlogCatDto, + StatusBlogCatDto, + BlogCatListDto, + getParentListBlogCatDto, +} from '../../..//DTO/blogCategory.dto'; + +import { + PostDto, + CreatePostDto, + UpdatePostDto, + PostStatusDto, + ListPostDto, + FilterListPostDto, + ChangeSortPostDto, +} from '../../../DTO/blogPost.dto'; + +// import { DeletePostMediaDto } from '../../../DTO/postMedia.dto'; +import { + StatusPostCommentDto, + ListPostCommentDto, + PostCommentDto, + CreatePostCommentDto, + FilterListPostCommentDto, + PostCommentInfoDto, +} from '../../../DTO/blogPostComment.dto'; +import { BlogService } from './blog.service'; +import { Roles } from '../../../decorators/role.decorators'; +import { Role } from '../../../common/eNums/role.enum'; +import { AuthGuard } from '../../../auth/auth.guard'; +import { CurrentUser } from '../../../decorators/currentUser.decorator'; + +@ApiTags('admin blog') +@Controller('admins/blog') +export class BlogController { + constructor(private readonly blogService: BlogService) {} + // create new post ************************************************************************** + @ApiOperation({ summary: ' ساخت پست برای بلاگ ' }) + @ApiOkResponse({ + description: 'PostDto info', + type: [PostDto], + }) + @ApiBody({ + type: CreatePostDto, + description: 'create new post', + }) + @Post('post') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async createPost( + @CurrentUser() user, + @Body() createPostDto: CreatePostDto, + ): Promise { + try { + await this.blogService.createPost(createPostDto, user); + return true; + } catch (err) { + throw err; + } + } + // update post ****************************************************************************** + @HttpCode(HttpStatus.OK) + @ApiOperation({ summary: ' بروز رسانی پست ' }) + @ApiOkResponse({ + description: 'update post', + type: Boolean, + }) + @ApiBody({ + type: UpdatePostDto, + description: 'update post DTO', + }) + @Put('post') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async updatePost( + @CurrentUser() user, + @Body() updatePostDto: UpdatePostDto, + ): Promise { + try { + await this.blogService.updatePost(updatePostDto, user); + return { status: true }; + } catch (err) { + throw err; + } + } + // change status of post ******************************************************************** + @ApiOperation({ summary: 'تغییر وضعیت پست بلاگ' }) + @ApiOkResponse({ + description: 'api status', + type: Boolean, + }) + @ApiBody({ + type: PostStatusDto, + description: 'change Status of post', + }) + @Patch('post') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async changeStatusPost(@Body() postStatusDto: PostStatusDto): Promise { + try { + await this.blogService.changeStatusPost(postStatusDto); + return { status: true }; + } catch (err) { + throw err; + } + } + // Filter / list post *********************************************************************** + @ApiOperation({ summary: ' فیلتر و لیست پست های بلاگ' }) + @HttpCode(HttpStatus.OK) + @ApiOkResponse({ + description: 'posts list', + type: [ListPostDto], + }) + @Get('post') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async ListPosts( + @Query() filterListPostDto: FilterListPostDto, + ): Promise { + const blogService = await this.blogService.listPosts(filterListPostDto); + return blogService; + } + // get detail post by id ***************************************************************************** + @ApiOperation({ summary: 'جزییات کامل پست بلاگ' }) + @ApiOkResponse({ + description: 'post detail info', + type: PostDto, + }) + @Get('post/:postId') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async postDetail( + @Param('postId') + postId: string, + ): Promise { + try { + const postDetail = await this.blogService.postDetail(postId); + return postDetail; + } catch (err) { + throw err; + } + } + + // change sort post ************************************************************************ + @ApiOperation({ summary: 'تغییر ترتیب پست' }) + @HttpCode(HttpStatus.OK) + @ApiOkResponse({ + description: 'change sort post', + type: [ListPostDto], + }) + @ApiBody({ + type: ChangeSortPostDto, + description: 'change sort post', + }) + @Put('post/sort') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async changeSortPost( + @Body() changeSortPostDto: ChangeSortPostDto, + ): Promise { + try { + await this.blogService.changeSortPost(changeSortPostDto); + return true; + } catch (err) { + throw err; + } + } + // create new blogCat *********************************************************************** + @ApiOperation({ summary: ' ساخت دسته بندی بلاگ ' }) + @ApiOkResponse({ + description: 'blog Category Dto info', + type: [BlogCatDto], + }) + @ApiBody({ + type: CreateBlogCatDto, + description: 'create new blog category', + }) + @Post('category') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async createCategory( + @Body() createBlogCatDto: CreateBlogCatDto, + ): Promise { + try { + const category = await this.blogService.createCategory(createBlogCatDto); + return category; + } catch (err) { + throw err; + } + } + // list blogCat *********************************************************************** + @ApiOperation({ summary: ' لیست دسته بندی های بلاگ ' }) + @HttpCode(HttpStatus.OK) + @ApiOkResponse({ + description: 'blog category list', + type: [BlogCatListDto], + }) + @Get('category') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async blogCatList( + @Query() getParentForListDto: getParentListBlogCatDto, + ): Promise { + try { + const categories = await this.blogService.blogCatList( + getParentForListDto, + ); + return categories; + } catch (err) { + throw err; + } + } + // update blogCat ********************************************************************** + @ApiOperation({ summary: ' بروز رسانی دسته بندی بلاگ ' }) + @HttpCode(HttpStatus.OK) + @ApiOkResponse({ + description: 'update blog category', + type: Boolean, + }) + @ApiBody({ + type: UpdateBlogCatDto, + description: 'update blog category', + }) + @Put('category') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async updateBlogCategory( + @Body() updateBlogCategory: UpdateBlogCatDto, + ): Promise { + try { + await this.blogService.updateBlogCategory(updateBlogCategory); + return { status: true }; + } catch (err) { + throw err; + } + } + //change status of blog Category ********************************************************************** + @ApiOperation({ summary: ' وضعیت دسته بندی بلاگ ' }) + @ApiOkResponse({ + description: 'api status', + type: Boolean, + }) + @ApiBody({ + type: StatusBlogCatDto, + description: 'change Status of blog category', + }) + @Patch('category') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async changeStatusCategory( + @Body() statusBlogCatDto: StatusBlogCatDto, + ): Promise { + try { + await this.blogService.changeStatusCategory(statusBlogCatDto); + return { status: true }; + } catch (err) { + throw err; + } + } + // Filter/ list post comment ******************************************************************** + @ApiOperation({ summary: ' لیست پست ها به همراه فیلتر ' }) + @ApiOkResponse({ + description: 'postComments List', + type: [ListPostCommentDto], + }) + @HttpCode(HttpStatus.OK) + @Get('postComment') + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async listPostComment( + @Query() filterListPostCommentDto: FilterListPostCommentDto, + ): Promise { + const list = await this.blogService.listPostComments( + filterListPostCommentDto, + ); + return list; + } + //get post comment detail by id **************************************************************** + @ApiOperation({ summary: 'detail PostComment' }) + @ApiOkResponse({ + description: 'post comment detail info', + type: PostCommentInfoDto, + }) + @HttpCode(HttpStatus.OK) + @Get('postComment/:id') + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async postCommentDetail( + @Param('id') + id: string, + ): Promise { + try { + const postCommentDetail = await this.blogService.postCommentDetail(id); + return postCommentDetail; + } catch (err) { + throw err; + } + } + // changeStatus postComment ********************************************************************* + @ApiOperation({ summary: 'change status PostComment' }) + @ApiOkResponse({ + description: 'api status', + type: Boolean, + }) + @ApiBody({ + type: StatusPostCommentDto, + description: 'change status of postComment', + }) + @Patch('postComment') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async changeStatusPostComment( + @Body() statusPostCommentDto: StatusPostCommentDto, + ): Promise { + try { + await this.blogService.changeStatusPostComment(statusPostCommentDto); + return { status: true }; + } catch (err) { + throw err; + } + } + // reply post comment ***************************************************** + @ApiOperation({ summary: 'reply PostComment' }) + @ApiOkResponse({ + description: 'PostComment Dto', + type: [PostCommentDto], + }) + @ApiBody({ + type: CreatePostCommentDto, + description: 'reply post comment', + }) + @Post('postComment/reply/:id') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async replyPostComment( + @CurrentUser() user, + @Body() createPostCommentDto: CreatePostCommentDto, + @Param('id') + id: string, + ): Promise { + try { + const result = await this.blogService.replyPostComment( + createPostCommentDto, + id, + user, + ); + return result; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/admin/blog/blog.module.ts b/src/application/admin/blog/blog.module.ts new file mode 100644 index 0000000..7715d5c --- /dev/null +++ b/src/application/admin/blog/blog.module.ts @@ -0,0 +1,22 @@ +import { Module } from '@nestjs/common'; + +import { BlogController } from './blog.controller'; +import { BlogService } from './blog.service'; +import { BlogPostDataAccess } from '../../../dataAccess/blogPost.dataAccess'; +import { CategoryDataAccess } from '../../../dataAccess/blogCategory.dataAccess'; +import { BlogPostCommentDataAccess } from '../../../dataAccess/blogPostComment.dataAccess'; +import { Tools } from '../../../common/helpers/tools.helpers'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; + +@Module({ + controllers: [BlogController], + providers: [ + BlogService, + CategoryDataAccess, + BlogPostDataAccess, + BlogPostCommentDataAccess, + Tools, + UserDataAccess, + ], +}) +export class BlogModule {} diff --git a/src/application/admin/blog/blog.service.ts b/src/application/admin/blog/blog.service.ts new file mode 100644 index 0000000..1cfc523 --- /dev/null +++ b/src/application/admin/blog/blog.service.ts @@ -0,0 +1,476 @@ +/* eslint-disable object-curly-newline */ +/* eslint-disable prefer-const */ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import bluebirdPromise = require('bluebird'); +import { CategoryDataAccess } from '../../../dataAccess/blogCategory.dataAccess'; +import { BlogPostDataAccess } from '../../../dataAccess/blogPost.dataAccess'; +import { BlogPostCommentDataAccess } from '../../../dataAccess/blogPostComment.dataAccess'; +import { Tools } from '../../../common/helpers/tools.helpers'; +import { blogCatArrObjDto, blogCatObjDto } from '../../../DTO/blogCategory.dto'; +import { + postObjDto, + postInfoObjDto, + ListPostDto, +} from '../../../DTO/blogPost.dto'; +import { ItemStatus } from '../../../common/eNums/itemStatus.enum'; +import { + postCommentArrObjDto, + postCommentObj, + postCommentInfoObj, + PostCommentInfoDto, + PostCommentDto, +} from '../../../DTO/blogPostComment.dto'; + +@Injectable() +export class BlogService { + constructor( + private readonly categoryDataAccess: CategoryDataAccess, + private readonly blogPostDataAccess: BlogPostDataAccess, + private readonly postCommentDataAccess: BlogPostCommentDataAccess, + private readonly tools: Tools, + ) {} + // create post ****************************************************************** + async createPost(createPostDto, admin) { + const { + blogCatId, + mediaUrl, + title, + description, + text, + mediaAlt, + metaTitle, + metaDescription, + metaKeywords, + isInLanding, + } = createPostDto; + const blogCat = await this.categoryDataAccess.findById(blogCatId); + if (!blogCat) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'دسته بندی یافت نشد', + }, + HttpStatus.NOT_FOUND, + ); + } + // if (blogCat.parents.length !== 0) { + // throw new HttpException( + // { + // status: HttpStatus.NOT_ACCEPTABLE, + // error: 'دسته بندی ریشه نیست و قابل ثبت نمی باشد', + // }, + // HttpStatus.NOT_ACCEPTABLE, + // ); + // } + const slug = this.tools.convertToSlug(title); + const checkPost = await this.blogPostDataAccess.checkDuplicate(slug); + if (checkPost) { + throw new HttpException( + { + status: HttpStatus.CONFLICT, + error: 'این آدرس قبلا رزرو شده است', + }, + HttpStatus.CONFLICT, + ); + } + // const media = await this.mediaDataAccess.findById(mediaUrl); + // if (!media) { + // throw new HttpException( + // { + // status: HttpStatus.NOT_FOUND, + // error: 'مدیا یافت نشد', + // }, + // HttpStatus.NOT_FOUND, + // ); + // } + const length = await this.blogPostDataAccess.findAllLength(); + const post = await this.blogPostDataAccess.createBlogPostRequest( + admin.id, + blogCatId, + mediaUrl, + title, + description, + slug, + text, + length, + mediaAlt, + metaTitle, + metaDescription, + metaKeywords, + isInLanding, + ); + await this.blogPostDataAccess.updateSortBlogPost(post._id); + blogCat.Posts.push(post._id ? post._id : post.id); + await blogCat.save(); + return postObjDto(await this.blogPostDataAccess.findById(post._id)); + } + // update post ********************************************************************* + async updatePost(updatePostDto, admin) { + const { + id, + mediaUrl, + title, + description, + text, + writerId, + mediaAlt, + metaTitle, + metaDescription, + metaKeywords, + isInLanding, + } = updatePostDto; + let { blogCat } = updatePostDto; + let blogCatOne; + const post = await this.blogPostDataAccess.findById(id); + if (!post) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'POST_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + if (blogCat) { + blogCatOne = await this.categoryDataAccess.findById(blogCat); + if (!blogCatOne) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'BLOG_CATEGORY_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + // if (blogCatOne.parents.length !== 0) { + // throw new HttpException( + // { + // status: HttpStatus.NOT_ACCEPTABLE, + // error: 'BLOG_CATEGORY_NOT_ACCEPTABLE', + // }, + // HttpStatus.NOT_ACCEPTABLE, + // ); + // } + } else { + blogCat = post.blogCat; + } + + const checkTitle = await this.blogPostDataAccess.checkTitle(title); + if (checkTitle && title !== post.title) { + throw new HttpException( + { + status: HttpStatus.CONFLICT, + error: 'TITLE_CONFLICT', + }, + HttpStatus.CONFLICT, + ); + } + if (post.blogCat._id.toString() !== blogCat) { + blogCatOne.Posts.push(post._id); + await blogCatOne.save(); + await this.categoryDataAccess.pullCate(post.blogCat._id, post._id); + } + await this.blogPostDataAccess.updateBlogPost( + id, + admin.id, + blogCat, + mediaUrl, + title, + description, + text, + writerId, + mediaAlt, + metaTitle, + metaDescription, + metaKeywords, + isInLanding, + ); + } + // post detail *********************************************************************** + async postDetail(postId) { + const postDetail = await this.blogPostDataAccess.findByIdDetails(postId); + if (postDetail) { + postDetail.Comment = []; + return postInfoObjDto(postDetail); + } else { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'POST_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + } + // change status post ******************************************************************** + async changeStatusPost(postStatusDto) { + const { id, status } = postStatusDto; + const post = await this.blogPostDataAccess.findById(id); + if (!post) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'پست مورد نظر وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } + await this.blogPostDataAccess.changeStatusBlogPost(id, status); + } + // list posts *************************************************************************** + async listPosts(filterListPostDto): Promise { + const list = await this.blogPostDataAccess.filterListAndFilter( + filterListPostDto, + ); + return list.map((item) => postObjDto(item)); + } + //change Sort post ************************************************************************* + async changeSortPost(changeSortPostDto) { + const { fromId, toId } = changeSortPostDto; + const from = await this.blogPostDataAccess.findById(fromId); + if (!from) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'پست مبدا مورد نظر وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } + const to = await this.blogPostDataAccess.findById(toId); + if (!to) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'پست مقصد مورد نظر وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } + await this.blogPostDataAccess.changeSortBlogPost(from, to); + return true; + } + // create category ************************************************************************* + async createCategory(createBlogCatDto) { + let { parentId } = createBlogCatDto; + let parent; + const { title, description } = createBlogCatDto; + if (parentId && parentId !== null) { + parent = await this.categoryDataAccess.findById(parentId); + if (!parent) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'منوی والد پیدا نشد', + }, + HttpStatus.NOT_FOUND, + ); + } + if (parent.parentId !== null) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: 'فقط برای منو های اصلی می توانید منو اضافه کنید', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + } else { + parentId = null; + } + const checkTitle = await this.categoryDataAccess.checkDuplicate(title); + if (checkTitle) { + throw new HttpException( + { + status: HttpStatus.CONFLICT, + error: 'TITLE_CONFLICT', + }, + HttpStatus.CONFLICT, + ); + } + const category = await this.categoryDataAccess.createCategory( + parentId, + title, + description, + ); + if (parentId && parentId !== null) { + parent.parents.push(category._id); + await parent.save(); + } + return blogCatObjDto(category); + } + // list category **************************************************************************** + async blogCatList(getParentForListDto) { + const { parentId } = getParentForListDto; + + const categories = await this.categoryDataAccess.findAll(parentId); + + const categoryList = await bluebirdPromise.map( + categories, + async (category) => { + return blogCatArrObjDto(category); + }, + ); + return categoryList; + } + // update category ************************************************************************* + async updateBlogCategory(updateBlogCategory): Promise { + let { parentId } = updateBlogCategory; + const { id, title, description } = updateBlogCategory; + let parent; + const category = await this.categoryDataAccess.findById(id); + if (!category) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'CATEGORY_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + if (parentId && parentId !== null && parentId !== id) { + parent = await this.categoryDataAccess.findById(parentId); + if (!parent) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'منوی اصلی پیدا نشد', + }, + HttpStatus.NOT_FOUND, + ); + } + if (parent.parentId !== null) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: 'فقط برای منو های اصلی می توانید منو اضافه کنید', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + // if (parent.Posts.length !== 0) { + // throw new HttpException( + // { + // status: HttpStatus.NOT_ACCEPTABLE, + // error: 'قابل ثبت نمی باشد منوی مورد نظر دارای پست می باشد', + // }, + // HttpStatus.NOT_ACCEPTABLE, + // ); + // } + } else { + parentId = null; + } + const checkTitle = await this.categoryDataAccess.checkDuplicate(title); + if (checkTitle && title !== category.title) { + throw new HttpException( + { + status: HttpStatus.CONFLICT, + error: 'این عنوان وجود دارد ', + }, + HttpStatus.CONFLICT, + ); + } + if ( + parentId && + parentId !== null && + category.parentId._id.toString() !== parentId + ) { + parent.parents.push(category._id); + await parent.save(); + await this.categoryDataAccess.pullCateParents( + category.parentId._id, + category._id, + ); + } + await this.categoryDataAccess.updateBlogCategory( + id, + parentId, + title, + description, + ); + return true; + } + // change status category ************************************************************************* + async changeStatusCategory(statusBlogCatDto): Promise { + const { id, status } = statusBlogCatDto; + const category = await this.categoryDataAccess.findById(id); + if (!category) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'CATEGORY_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + await this.categoryDataAccess.changeStatusCategory(id, status); + return true; + } + //list post comment ***************************************************************************** + async listPostComments(filterListPostCommentDto) { + const list = await this.postCommentDataAccess.listAndFilter( + filterListPostCommentDto, + ); + return list.map((item) => postCommentArrObjDto(item)); + } + // change status post comment ******************************************************************** + async changeStatusPostComment(statusPostCommentDto): Promise { + const { id, status } = statusPostCommentDto; + const postComment = await this.postCommentDataAccess.findById(id); + if (!postComment) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'POST_COMMENT_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + + await this.postCommentDataAccess.changeStatus(id, status); + return true; + } + // get detail post comment by id ***************************************************************** + async postCommentDetail(id: string): Promise { + const postComment = await this.postCommentDataAccess.findById(id); + if (!postComment) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'POST_COMMENT-NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } else { + return postCommentInfoObj(postComment); + } + } + // reply post Comment **************************************************************************** + async replyPostComment( + createPostCommentDto, + id, + admin, + ): Promise { + const postComment = await this.postCommentDataAccess.findById(id); + if (!postComment || postComment.status !== ItemStatus.Active) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'COMMENT_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } else { + const { text } = createPostCommentDto; + const replyPostComment = await this.postCommentDataAccess.replyComment( + postComment.blogPost.id, + id, + admin.id, + text, + ); + postComment.Replies.push(replyPostComment.id); + postComment.save(); + return postCommentObj(replyPostComment); + } + } +} diff --git a/src/application/admin/discount/discount.controller.ts b/src/application/admin/discount/discount.controller.ts new file mode 100644 index 0000000..c535e51 --- /dev/null +++ b/src/application/admin/discount/discount.controller.ts @@ -0,0 +1,161 @@ +// NEST +import { + Body, + Controller, + Post, + HttpStatus, + Get, + Res, + Param, + Put, + Patch, + HttpCode, + UseGuards, +} from '@nestjs/common'; +import { Response } from 'express'; +// SWAGGER +import { + ApiTags, + ApiOkResponse, + ApiBody, + ApiOperation, + ApiBearerAuth, +} from '@nestjs/swagger'; +import { DiscountService } from './discount.service'; + +// DTO +import { + CreateDiscountDto, + UpdateDiscountDto, + UpdatedStatusDiscountDto, + ListDiscountDto, + DetailsAdminDiscountDto, + IdDiscountDto, +} from '../../../DTO/discount.dto'; +import { AuthGuard } from '../../../auth/auth.guard'; +import { Roles } from '../../../decorators/role.decorators'; +import { Role } from '../../../common/eNums/role.enum'; +import { CurrentUser } from '../../../decorators/currentUser.decorator'; + +@ApiTags('admin discounts') +@Controller('admins/discount') +export class DiscountController { + constructor(private readonly discountService: DiscountService) {} + // CREATE DISCOUNT **************************** + @Post('') + @ApiOperation({ summary: 'create discount' }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiBody({ + description: 'create discount', + type: CreateDiscountDto, + }) + @ApiOkResponse({ + description: 'response created discount', + type: Boolean, + }) + async createDiscount( + @Body() created: CreateDiscountDto, + @CurrentUser() user, + ) { + try { + await this.discountService.createDiscount(created, user.id); + return true; + } catch (err) { + throw err; + } + } + // UPDATE DISCOUNT **************************** + @Put('') + @ApiOperation({ summary: 'updated discount' }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiBody({ + description: 'updated discount', + type: UpdateDiscountDto, + }) + @ApiOkResponse({ + description: 'response updated discount', + type: Boolean, + }) + async updateDiscount( + @Body() updated: UpdateDiscountDto, + @CurrentUser() user, + ) { + try { + await this.discountService.updatedDiscount(updated, user.id); + return true; + } catch (err) { + throw err; + } + } + // UPDATE STATUS DISCOUNT **************************** + @Patch('/status') + @ApiOperation({ summary: 'updated discount' }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiBody({ + description: 'updated status discount', + type: UpdatedStatusDiscountDto, + }) + @ApiOkResponse({ + description: 'response updated status discount', + type: Boolean, + }) + async updateStatusDiscount(@Body() updatedStatus: UpdatedStatusDiscountDto) { + try { + await this.discountService.updatedStatusDiscount(updatedStatus); + return true; + } catch (err) { + throw err; + } + } + // LIST DISCOUNT **************************** + @Get('') + @ApiOperation({ summary: 'list discount' }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'response list discount', + type: [ListDiscountDto], + }) + async listDiscount(@Res() res: Response) { + try { + const discounts = await this.discountService.listDiscount(); + res.json(discounts); + return; + } catch (err) { + throw err; + } + } + // DETAILS DISCOUNT **************************** + @Get('/:id') + @ApiOperation({ summary: 'details discount' }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'response details discount', + type: DetailsAdminDiscountDto, + }) + async detailsDiscount( + @Param() + id: IdDiscountDto, + ) { + try { + const discounts = await this.discountService.detailsDiscount(id); + return discounts; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/admin/discount/discount.module.ts b/src/application/admin/discount/discount.module.ts new file mode 100644 index 0000000..df726b2 --- /dev/null +++ b/src/application/admin/discount/discount.module.ts @@ -0,0 +1,15 @@ +import { Module } from '@nestjs/common'; + +import { DiscountController } from './discount.controller'; +import { DiscountService } from './discount.service'; +import { DiscountDataAccess } from '../../../dataAccess/discount.dataAccess'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; +import { DiscountHistoryModule } from './discountHistory/discountHistory.module'; +import { UserDiscountModule } from './userDiscount/userDiscount.module'; + +@Module({ + imports: [UserDiscountModule, DiscountHistoryModule], + controllers: [DiscountController], + providers: [DiscountService, DiscountDataAccess, UserDataAccess], +}) +export class DiscountModule {} diff --git a/src/application/admin/discount/discount.service.ts b/src/application/admin/discount/discount.service.ts new file mode 100644 index 0000000..5c7b854 --- /dev/null +++ b/src/application/admin/discount/discount.service.ts @@ -0,0 +1,137 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { DiscountDataAccess } from '../../../dataAccess/discount.dataAccess'; +import { + DetailsAdminDiscountDto, + IdDiscountDto, + ListDiscountDto, + detailsAdminDiscountObj, + listDiscountObj, +} from '../../../DTO/discount.dto'; + +@Injectable() +export class DiscountService { + constructor(private readonly discountDataAccess: DiscountDataAccess) {} + // CREATE DISCOUNT + async createDiscount(createDiscountDto, adminId): Promise { + const { startDate, endDate, code, discountType, price, percent, allUsers } = + createDiscountDto; + // validate startDate longer + if (startDate > endDate) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' تاریخ پایان نباید از تاریخ شروع کم تر باشد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + + await this.discountDataAccess.create( + startDate, + endDate, + code, + discountType, + price, + percent, + allUsers, + adminId, + ); + return true; + } + // UPDATED DISCOUNT + async updatedDiscount(updatedDiscountDto, adminId): Promise { + const { + id, + startDate, + endDate, + code, + discountType, + price, + percent, + allUsers, + } = updatedDiscountDto; + // validate startDate longer + if (startDate > endDate) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' تاریخ پایان نباید از تاریخ شروع کم تر باشد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + // validate exist discount + const discount = await this.discountDataAccess.findOne(id); + if (!discount) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: ' تخفیف وجود ندارد ', + }, + HttpStatus.NOT_FOUND, + ); + } + + await this.discountDataAccess.update( + id, + adminId, + startDate, + endDate, + code, + discountType, + price, + percent, + allUsers, + ); + return true; + } + // UPDATED STATUS DISCOUNT + async updatedStatusDiscount(updatedStatusDiscountDto): Promise { + const { id, status } = updatedStatusDiscountDto; + // validate exist discount + const discount = await this.discountDataAccess.findOne(id); + if (!discount) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: ' تخفیف موجود نمی باشد ', + }, + HttpStatus.NOT_FOUND, + ); + } + // update status discount + await this.discountDataAccess.updateStatus(id, status); + return true; + } + // LIST DISCOUNT + async listDiscount(): Promise<{ + discount: ListDiscountDto[]; + count: number; + }> { + // list discount + const discounts = await this.discountDataAccess.findAll(); + const count = await this.discountDataAccess.count(); + return { + discount: discounts.map((discount) => listDiscountObj(discount)), + count: count, + }; + } + // DETAILS DISCOUNT + async detailsDiscount( + idDiscountDto: IdDiscountDto, + ): Promise { + const { id } = idDiscountDto; + // details discount + const discounts = await this.discountDataAccess.findOne(id); + if (!discounts) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'تخفیف مورد نظر موجود نمی باشد', + }, + HttpStatus.NOT_FOUND, + ); + } + return detailsAdminDiscountObj(discounts); + } +} diff --git a/src/application/admin/discount/discountHistory/discountHistory.controller.ts b/src/application/admin/discount/discountHistory/discountHistory.controller.ts new file mode 100644 index 0000000..d518da9 --- /dev/null +++ b/src/application/admin/discount/discountHistory/discountHistory.controller.ts @@ -0,0 +1,51 @@ +// NEST +import { + Controller, + HttpStatus, + Get, + HttpCode, + UseGuards, +} from '@nestjs/common'; +// SWAGGER +import { + ApiTags, + ApiOkResponse, + ApiOperation, + ApiBearerAuth, +} from '@nestjs/swagger'; +import { DiscountHistoryService } from './discountHistory.service'; + +// DTO +import { ListDiscountHistoryDto } from '../../../../DTO/discountHistory.dto'; +import { AuthGuard } from '../../../../auth/auth.guard'; +import { Roles } from '../../../../decorators/role.decorators'; +import { Role } from '../../../../common/eNums/role.enum'; + +@ApiTags('admin discountHistory') +@Controller('admins/discountHistory') +export class DiscountHistoryController { + constructor( + private readonly discountHistoryService: DiscountHistoryService, + ) {} + // LIST DISCOUNT **************************** + @Get('') + @ApiOperation({ summary: 'list discountHistory' }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'response list discountHistory', + type: [ListDiscountHistoryDto], + }) + async listDiscountHistory(): Promise<{ + discount: ListDiscountHistoryDto[]; + count: number; + }> { + try { + return await this.discountHistoryService.listDiscountHistory(); + } catch (err) { + throw err; + } + } +} diff --git a/src/application/admin/discount/discountHistory/discountHistory.module.ts b/src/application/admin/discount/discountHistory/discountHistory.module.ts new file mode 100644 index 0000000..2be38d1 --- /dev/null +++ b/src/application/admin/discount/discountHistory/discountHistory.module.ts @@ -0,0 +1,17 @@ +import { Module } from '@nestjs/common'; + +import { DiscountHistoryController } from './discountHistory.controller'; +import { DiscountHistoryService } from './discountHistory.service'; +import { DiscountHistoryDataAccess } from '../../../../dataAccess/discountHistory.dataAccess'; +import { UserDataAccess } from '../../../../dataAccess/user.dataAccess'; + +@Module({ + imports: [], + controllers: [DiscountHistoryController], + providers: [ + DiscountHistoryService, + DiscountHistoryDataAccess, + UserDataAccess, + ], +}) +export class DiscountHistoryModule {} diff --git a/src/application/admin/discount/discountHistory/discountHistory.service.ts b/src/application/admin/discount/discountHistory/discountHistory.service.ts new file mode 100644 index 0000000..28feaf8 --- /dev/null +++ b/src/application/admin/discount/discountHistory/discountHistory.service.ts @@ -0,0 +1,29 @@ +import { Injectable } from '@nestjs/common'; +import { DiscountHistoryDataAccess } from '../../../../dataAccess/discountHistory.dataAccess'; +import { + ListDiscountHistoryDto, + listDiscountHistoryObj, +} from '../../../../DTO/discountHistory.dto'; + +@Injectable() +export class DiscountHistoryService { + constructor( + private readonly discountHistoryDataAccess: DiscountHistoryDataAccess, + ) {} + // LIST DISCOUNT + async listDiscountHistory(): Promise<{ + discount: ListDiscountHistoryDto[]; + count: number; + }> { + // list discountHistory + const result = await this.discountHistoryDataAccess.findAll(); + const count = await this.discountHistoryDataAccess.count(); + + return { + discount: result.map((discountHistory) => + listDiscountHistoryObj(discountHistory), + ), + count: count, + }; + } +} diff --git a/src/application/admin/discount/userDiscount/userDiscount.controller.ts b/src/application/admin/discount/userDiscount/userDiscount.controller.ts new file mode 100644 index 0000000..3c80f3d --- /dev/null +++ b/src/application/admin/discount/userDiscount/userDiscount.controller.ts @@ -0,0 +1,79 @@ +// NEST +import { + Body, + Controller, + Post, + HttpStatus, + Get, + HttpCode, + UseGuards, +} from '@nestjs/common'; +// SWAGGER +import { + ApiTags, + ApiOkResponse, + ApiBody, + ApiOperation, + ApiBearerAuth, +} from '@nestjs/swagger'; + +import { UserDiscountService } from './userDiscount.service'; + +// DTO +import { AuthGuard } from '../../../../auth/auth.guard'; +import { Roles } from '../../../../decorators/role.decorators'; +import { Role } from '../../../../common/eNums/role.enum'; +import { + CreateUserDiscountDto, + ListUserDiscountDto, +} from '../../../../DTO/userDiscount.dto'; + +@ApiTags('admin UserDiscounts') +@Controller('admins/UserDiscount') +export class UserDiscountController { + constructor(private readonly userDiscountService: UserDiscountService) {} + // CREATE DISCOUNT **************************** + @Post('') + @ApiOperation({ summary: 'create userUserDiscount' }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiBody({ + description: 'create userUserDiscount', + type: CreateUserDiscountDto, + }) + @ApiOkResponse({ + description: 'response created userUserDiscount', + type: Boolean, + }) + async createUserDiscount( + @Body() created: CreateUserDiscountDto, + ): Promise { + try { + await this.userDiscountService.createUserDiscount(created); + return true; + } catch (err) { + throw err; + } + } + + // LIST DISCOUNT **************************** + @Get('') + @ApiOperation({ summary: 'list userUserDiscount' }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'response list userUserDiscount', + type: [ListUserDiscountDto], + }) + async listUserDiscount(): Promise { + try { + return await this.userDiscountService.listUserDiscount(); + } catch (err) { + throw err; + } + } +} diff --git a/src/application/admin/discount/userDiscount/userDiscount.module.ts b/src/application/admin/discount/userDiscount/userDiscount.module.ts new file mode 100644 index 0000000..fc54102 --- /dev/null +++ b/src/application/admin/discount/userDiscount/userDiscount.module.ts @@ -0,0 +1,13 @@ +import { Module } from '@nestjs/common'; + +import { UserDiscountController } from './userDiscount.controller'; +import { UserDiscountService } from './userDiscount.service'; +import { UserDiscountDataAccess } from '../../../../dataAccess/userDiscount.dataAccess'; +import { UserDataAccess } from '../../../../dataAccess/user.dataAccess'; + +@Module({ + imports: [], + controllers: [UserDiscountController], + providers: [UserDiscountService, UserDiscountDataAccess, UserDataAccess], +}) +export class UserDiscountModule {} diff --git a/src/application/admin/discount/userDiscount/userDiscount.service.ts b/src/application/admin/discount/userDiscount/userDiscount.service.ts new file mode 100644 index 0000000..3cd0cbd --- /dev/null +++ b/src/application/admin/discount/userDiscount/userDiscount.service.ts @@ -0,0 +1,36 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +// DATAACCESS +import { UserDiscountDataAccess } from '../../../../dataAccess/userDiscount.dataAccess'; +// ENUM +// DTO +import { + CreateUserDiscountDto, + ListUserDiscountDto, + listUserDiscountObj, +} from '../../../../DTO/userDiscount.dto'; + +// APPLICATION +@Injectable() +export class UserDiscountService { + constructor( + private readonly userUserDiscountDataAccess: UserDiscountDataAccess, + ) {} + // CREATE DISCOUNT + async createUserDiscount( + createUserDiscountDto: CreateUserDiscountDto, + ): Promise { + const { user, discount } = createUserDiscountDto; + // validate startDate longer + + await this.userUserDiscountDataAccess.create(user, discount); + return true; + } + // LIST DISCOUNT + async listUserDiscount(): Promise { + // list userUserDiscount + const userUserDiscounts = await this.userUserDiscountDataAccess.findAll(); + return userUserDiscounts.map((userUserDiscount) => + listUserDiscountObj(userUserDiscount), + ); + } +} diff --git a/src/application/admin/faq/faq.controller.ts b/src/application/admin/faq/faq.controller.ts new file mode 100644 index 0000000..16ef6e4 --- /dev/null +++ b/src/application/admin/faq/faq.controller.ts @@ -0,0 +1,248 @@ +import { + Body, + Controller, + Post, + HttpStatus, + HttpCode, + Get, + Put, + Query, + Delete, + Param, + Patch, + UseGuards, +} from '@nestjs/common'; +import { AuthGuard } from '../../../auth/auth.guard'; +import { Roles } from '../../../decorators/role.decorators'; +import { Role } from '../../../common/eNums/role.enum'; +import { + ApiTags, + ApiOkResponse, + ApiInternalServerErrorResponse, + ApiOperation, + ApiBearerAuth, +} from '@nestjs/swagger'; +import { + CreateFaqDto, + FaqDto, + FilterFaqDto, + ParamsPositionDto, + UpdateFaqDto, + UpdateStatusFaqDto, +} from '../../../DTO/faq.dto'; +import { + CreateFaqCategoryDto, + FaqCategoryDto, + FilterFaqCategoryDto, + UpdateFaqCategoryDto, +} from '../../../DTO/faqCategory.dto'; +import { FaqService } from './faq.service'; + +@ApiTags('admin faqs') +@Controller('admins/faq') +export class FaqController { + constructor(private readonly faqService: FaqService) {} + + // faqCategory list + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'faqs list', + type: [FaqDto], + }) + @HttpCode(HttpStatus.OK) + @Get('/get') + async faqList(@Query() filterFaqDto: FilterFaqDto): Promise { + const faqList = await this.faqService.faqList(filterFaqDto); + return faqList; + } + // create new faqCategory ************************************ + @ApiOkResponse({ + description: 'create new faqCategory', + type: FaqCategoryDto, + }) + @ApiInternalServerErrorResponse({ + description: 'create new faqCategory failed', + }) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @Post('category') + @HttpCode(HttpStatus.OK) + async createFaqCategory( + @Body() createFaqCategoryDto: CreateFaqCategoryDto, + ): Promise { + try { + const faqCategory = await this.faqService.createCategory( + createFaqCategoryDto, + ); + return faqCategory; + } catch (err) { + throw err; + } + } + @ApiOkResponse({ + description: 'faq list', + type: [FaqCategoryDto], + }) + @HttpCode(HttpStatus.OK) + @Get('category') + async faqCategoryList( + @Query() filterFaqCategoryDto: FilterFaqCategoryDto, + ): Promise { + const faqCategoryList = await this.faqService.faqCategoryList( + filterFaqCategoryDto, + ); + return faqCategoryList; + } + // update faqCategory *********************************** + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'category detail', + type: FaqCategoryDto, + }) + @HttpCode(HttpStatus.OK) + @Put('category') + async updateFaqCategory( + @Body() updateFaqCategoryDto: UpdateFaqCategoryDto, + ): Promise { + try { + const faqCategory = await this.faqService.updateFaqCategory( + updateFaqCategoryDto, + ); + return faqCategory; + } catch (err) { + throw err; + } + } + // delete faqCategory *********************************** + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'categories list', + type: [FaqCategoryDto], + }) + @HttpCode(HttpStatus.OK) + @Delete('category/:id') + async deleteFaqCategory( + @Param('id') + id: string, + ): Promise { + try { + const faqCategoryList = await this.faqService.deleteFaqCategory(id); + return faqCategoryList; + } catch (err) { + throw err; + } + } + // create new faq ************************************ + @ApiOkResponse({ + description: 'create new faq', + type: FaqDto, + }) + @ApiInternalServerErrorResponse({ + description: 'create new faq failed', + }) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @Post('') + @HttpCode(HttpStatus.OK) + async createFaq(@Body() createFaqDto: CreateFaqDto): Promise { + try { + const faq = await this.faqService.createFaq(createFaqDto); + return faq; + } catch (err) { + throw err; + } + } + + // update faqCategory *********************************** + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'faq detail', + type: FaqDto, + }) + @HttpCode(HttpStatus.OK) + @Put('') + async updateFaq(@Body() updateFaqDto: UpdateFaqDto): Promise { + try { + const faq = await this.faqService.updateFaq(updateFaqDto); + return faq; + } catch (err) { + throw err; + } + } + // update Status *********************************** + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'faq detail', + type: FaqDto, + }) + @HttpCode(HttpStatus.OK) + @Patch('status') + async updateStatusFaq( + @Body() updateStatusFaqDto: UpdateStatusFaqDto, + ): Promise { + try { + const faq = await this.faqService.updateStatusFaq(updateStatusFaqDto); + return faq; + } catch (err) { + throw err; + } + } + // delete faq *********************************** + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @ApiOkResponse({ + description: 'faqs list', + type: [FaqDto], + }) + @HttpCode(HttpStatus.OK) + @Delete('/:id') + async deleteFaq( + @Param('id') + id: string, + ): Promise { + try { + const faqList = await this.faqService.deleteFaq(id); + return faqList; + } catch (err) { + throw err; + } + } + // update faqs position ********************************************************************************* + @ApiOperation({ summary: 'update faqs position' }) + @ApiOkResponse({ + description: 'boolean', + type: Boolean, + }) + @ApiInternalServerErrorResponse({ + description: 'menu not found', + }) + @Patch(':fId/:tId') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async changePosition( + @Param() + paramsPositionDto: ParamsPositionDto, + ): Promise { + try { + const status = await this.faqService.changePosition(paramsPositionDto); + return status; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/admin/faq/faq.module.ts b/src/application/admin/faq/faq.module.ts new file mode 100644 index 0000000..eb8eb13 --- /dev/null +++ b/src/application/admin/faq/faq.module.ts @@ -0,0 +1,15 @@ +import { Module } from '@nestjs/common'; + +import { FaqController } from './faq.controller'; +import { FaqService } from './faq.service'; +import { FaqDataAccess } from '../../../dataAccess/faq.dataAccess'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; +import { Tools } from '../../../common/helpers/tools.helpers'; +import { ConvertDate } from '../../../common/helpers/convertDate.helper'; + +@Module({ + imports: [], + controllers: [FaqController], + providers: [FaqService, UserDataAccess, FaqDataAccess, Tools, ConvertDate], +}) +export class FaqModule {} diff --git a/src/application/admin/faq/faq.service.ts b/src/application/admin/faq/faq.service.ts new file mode 100644 index 0000000..064e568 --- /dev/null +++ b/src/application/admin/faq/faq.service.ts @@ -0,0 +1,206 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { faqCategoryObj } from '../../../DTO/faqCategory.dto'; +import { faqObj, ParamsPositionDto } from '../../../DTO/faq.dto'; +import { Types } from 'mongoose'; + +import { FaqDataAccess } from '../../../dataAccess/faq.dataAccess'; + +@Injectable() +export class FaqService { + constructor(private readonly faqDataAccess: FaqDataAccess) {} + + // create new category ************************************ + async createCategory(createFaqCategoryDto) { + const { title, description } = createFaqCategoryDto; + const newFaqCategory = await this.faqDataAccess.createFaqCategory( + title, + description, + ); + return faqCategoryObj(newFaqCategory); + } + // faqCategoryList list + async faqCategoryList(filterFaqCategoryDto) { + const list = await this.faqDataAccess.findAllFaqCategory( + filterFaqCategoryDto, + ); + return list.map((item) => faqCategoryObj(item)); + } + // update FaqCategory ************************************ + async updateFaqCategory(updateFaqCategoryDto) { + const { id, status, title, description } = updateFaqCategoryDto; + const faqCategory = await this.faqDataAccess.findCatById(id); + if (!faqCategory) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'FaqCategory_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + + await this.faqDataAccess.updateFaqCategory(id, status, title, description); + + return faqCategoryObj(await this.faqDataAccess.findCatById(id)); + } + // create new faq ************************************ + async createFaq(createFaqDto) { + const { faqCat, question, answer, language } = createFaqDto; + const faqCategory = await this.faqDataAccess.findCatById(faqCat); + if (!faqCategory) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'FaqCategory_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + const newFaq = await this.faqDataAccess.createFaq( + faqCat, + question, + answer, + language, + ); + faqCategory.faqs.push(newFaq); + faqCategory.save(); + const maxFaq = await this.faqDataAccess.findAll(); + this.faqDataAccess.updatePosition(newFaq.id, maxFaq.length); + return faqObj(await this.faqDataAccess.findFaqById(newFaq._id)); + } + // faqList list + async faqList(filterFaqDto) { + const list = await this.faqDataAccess.findAllFaq(filterFaqDto); + return list.map((item) => faqObj(item)); + } + // update Faq ************************************ + async updateFaq(updateFaqDto) { + // eslint-disable-next-line object-curly-newline + const { id, status, faqCat, question, answer, language } = updateFaqDto; + const faqCategory = await this.faqDataAccess.findCatById(faqCat); + if (!faqCategory) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'FaqCategory_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + + const faq = await this.faqDataAccess.findFaqById(id); + if (!faq) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'Faq_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + if (faq.faqCat._id.toString() !== faqCat) { + const parents = await this.faqDataAccess.findCatById(faq.faqCat); + parents.faqs = faqCategory.faqs.filter((sub) => sub._id !== id); + parents.save(); + faqCategory.faqs.push(faq); + faqCategory.save(); + } + await this.faqDataAccess.updateFaq( + id, + status, + faqCat, + question, + answer, + language, + ); + + return faqObj(await this.faqDataAccess.findFaqById(id)); + } + // delete FaqCategory ************************************ + async deleteFaqCategory(id) { + if (!Types.ObjectId.isValid(id)) { + throw new HttpException( + { + status: HttpStatus.FAILED_DEPENDENCY, + error: ' رشته وارد شده برای شناسه معتبر نیست', + }, + HttpStatus.FAILED_DEPENDENCY, + ); + } + await this.faqDataAccess.deleteFaqCat(id); + const filter: any = {}; + const list = await this.faqDataAccess.findAllFaqCategory(filter); + return list.map((item) => faqCategoryObj(item)); + } + // update Status + async updateStatusFaq(updateFaqDto) { + const { id, status } = updateFaqDto; + if (!Types.ObjectId.isValid(id)) { + throw new HttpException( + { + status: HttpStatus.FAILED_DEPENDENCY, + error: ' رشته وارد شده برای شناسه معتبر نیست', + }, + HttpStatus.FAILED_DEPENDENCY, + ); + } + const faq = await this.faqDataAccess.findFaqById(id); + if (!faq) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'Faq_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + + await this.faqDataAccess.updateStatusFaq(id, status); + + return faqObj(await this.faqDataAccess.findFaqById(id)); + } + + // delete Faq ************************************ + async deleteFaq(id) { + if (!Types.ObjectId.isValid(id)) { + throw new HttpException( + { + status: HttpStatus.FAILED_DEPENDENCY, + error: ' رشته وارد شده برای شناسه معتبر نیست', + }, + HttpStatus.FAILED_DEPENDENCY, + ); + } + const filter = { faqCat: null }; + const category = await this.faqDataAccess.findFaqById(id); + if (category) { + filter.faqCat = category.faqCat; + } + await this.faqDataAccess.deleteFaq(id); + + const list = await this.faqDataAccess.findAllFaq(filter); + return list.map((item) => faqObj(item)); + } + async changePosition(paramsPositionDto: ParamsPositionDto) { + try { + const { fId, tId } = paramsPositionDto; + + const fFaq = await this.faqDataAccess.findFaqById(fId); + const tFaq = await this.faqDataAccess.findFaqById(tId); + if (!fFaq || !tFaq) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'پرسش وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } + await this.faqDataAccess.updatePosition(fFaq.id, tFaq.position); + await this.faqDataAccess.updatePosition(tFaq.id, fFaq.position); + return true; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/admin/settings/settings.controller.ts b/src/application/admin/settings/settings.controller.ts new file mode 100644 index 0000000..94b8973 --- /dev/null +++ b/src/application/admin/settings/settings.controller.ts @@ -0,0 +1,101 @@ +import { + Body, + Controller, + Get, + HttpCode, + HttpStatus, + Patch, + Post, + Query, + UseGuards, +} from '@nestjs/common'; +import { + ApiBearerAuth, + ApiBody, + ApiOkResponse, + ApiOperation, + ApiTags, +} from '@nestjs/swagger'; +import { SettingsService } from './settings.service'; +import { Roles } from '../../../decorators/role.decorators'; +import { Role } from '../../../common/eNums/role.enum'; +import { AuthGuard } from '../../../auth/auth.guard'; +import { CreateDto } from '../../../DTO/settings.dto'; +@ApiTags('admin settings') +@Controller('admin/settings') +export class SettingController { + constructor(private readonly settingsService: SettingsService) {} + + // get ************************************ + @ApiOperation({ + summary: ' تنظیمات سایت', + }) + @ApiOkResponse({ + description: ' Create Dto ', + type: CreateDto, + }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @Get() + async list(): Promise { + try { + const result = await this.settingsService.find(); + return result; + } catch (err) { + throw err; + } + } + // create ************************************ + @ApiOperation({ + summary: ' افزودن تنظیمات', + }) + @ApiOkResponse({ + description: ' Boolean', + type: Boolean, + }) + @ApiBody({ + type: CreateDto, + description: 'get body', + }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @Post('create') + async create(@Body() createDto: CreateDto): Promise { + try { + const result = await this.settingsService.create(createDto); + return result; + } catch (err) { + throw err; + } + } + + // update ************************************ + @ApiOperation({ + summary: ' تغییر تنظیمات', + }) + @ApiOkResponse({ + description: ' Boolean', + type: Boolean, + }) + @ApiBody({ + type: CreateDto, + description: 'get body', + }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @Patch('edit') + async edit(@Body() createDto: CreateDto): Promise { + try { + const result = await this.settingsService.edit(createDto); + return result; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/admin/settings/settings.module.ts b/src/application/admin/settings/settings.module.ts new file mode 100644 index 0000000..e6fcdd4 --- /dev/null +++ b/src/application/admin/settings/settings.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { SettingsDataAccess } from '../../../dataAccess/settings.dataAccess'; +import { SettingsService } from './settings.service'; +import { SettingController } from './settings.controller'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; + +@Module({ + imports: [], + controllers: [SettingController], + providers: [SettingsService, SettingsDataAccess, UserDataAccess], +}) +export class SettingsModule {} diff --git a/src/application/admin/settings/settings.service.ts b/src/application/admin/settings/settings.service.ts new file mode 100644 index 0000000..fdba87a --- /dev/null +++ b/src/application/admin/settings/settings.service.ts @@ -0,0 +1,112 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; + +import { SettingsDataAccess } from '../../../dataAccess/settings.dataAccess'; +import { CreateDto } from '../../../DTO/settings.dto'; +import { Settings } from '../../../models/schemas/settings.schema'; + +@Injectable() +export class SettingsService { + constructor(private readonly settingDataAccess: SettingsDataAccess) {} + + async find(): Promise { + const result = await this.settingDataAccess.findOne(); + if (result.length === 0) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' تنظیمات وجود ندارد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + return result[0]; + } + + async create(createDto: CreateDto): Promise { + const { + about, + student, + hours, + title, + expertise, + nameCompany, + mission, + start, + goals, + rate, + titleText, + header, + } = createDto; + const result = await this.settingDataAccess.findOne(); + if (result.length === 0) { + await this.settingDataAccess.create( + about, + student, + hours, + title, + expertise, + nameCompany, + mission, + start, + goals, + rate, + titleText, + header, + ); + } else { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' قابل ساخت دوباره نیست شما می توانید تغییر دهید ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + return true; + } + + async edit(createDto: CreateDto): Promise { + const { + about, + student, + hours, + title, + expertise, + nameCompany, + mission, + start, + goals, + rate, + titleText, + header, + } = createDto; + const result = await this.settingDataAccess.findOne(); + if (result.length === 0) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' تنظیمات وجود ندارد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + + await this.settingDataAccess.update( + result[0]._id, + about, + student, + hours, + title, + expertise, + nameCompany, + mission, + start, + goals, + rate, + titleText, + header, + ); + + return true; + } +} diff --git a/src/application/admin/user/user.controller.ts b/src/application/admin/user/user.controller.ts new file mode 100644 index 0000000..75a3dff --- /dev/null +++ b/src/application/admin/user/user.controller.ts @@ -0,0 +1,78 @@ +import { + Body, + Controller, + Get, + HttpCode, + HttpStatus, + Patch, + Query, + UseGuards, +} from '@nestjs/common'; +import { + ApiBearerAuth, + ApiBody, + ApiOkResponse, + ApiOperation, + ApiTags, +} from '@nestjs/swagger'; +import { UserService } from './user.service'; +import { Roles } from '../../../decorators/role.decorators'; +import { Role } from '../../../common/eNums/role.enum'; +import { AuthGuard } from '../../../auth/auth.guard'; +import { QueryUserList, UserMidDto, UserStatus } from '../../../DTO/user.dto'; +import { CurrentUser } from '../../../decorators/currentUser.decorator'; + +@ApiTags('admin user') +@Controller('admin/user') +export class UserController { + constructor(private readonly userService: UserService) {} + + // list user ************************************ + @ApiOperation({ + summary: ' لیست کاربران ', + }) + @ApiOkResponse({ + description: ' لیست کاربران به صورت آرایه زیر ', + type: [UserMidDto], + }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @Get('list') + async listUser( + @Query() queryUserList: QueryUserList, + ): Promise<{ user: UserMidDto[]; count: number }> { + try { + const result = await this.userService.list(queryUserList); + return result; + } catch (err) { + throw err; + } + } + // update user ************************************ + @ApiOperation({ + summary: ' تغییر وضعیت کاربر', + }) + @ApiOkResponse({ + description: ' پاسخ تغییر وضعیت ', + type: Boolean, + }) + @ApiBody({ + type: UserStatus, + description: 'get body', + }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + @Patch('status') + async statusUser(@Body() userStatus: UserStatus): Promise { + try { + const result = await this.userService.status(userStatus); + return result; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/admin/user/user.module.ts b/src/application/admin/user/user.module.ts new file mode 100644 index 0000000..4572165 --- /dev/null +++ b/src/application/admin/user/user.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; +import { UserService } from './user.service'; +import { UserController } from './user.controller'; + +@Module({ + imports: [], + controllers: [UserController], + providers: [UserService, UserDataAccess], +}) +export class UserModule {} diff --git a/src/application/admin/user/user.service.ts b/src/application/admin/user/user.service.ts new file mode 100644 index 0000000..54b34cc --- /dev/null +++ b/src/application/admin/user/user.service.ts @@ -0,0 +1,38 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { + QueryUserList, + UserMidDto, + userMidObj, + UserStatus, +} from '../../../DTO/user.dto'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; + +@Injectable() +export class UserService { + constructor(private readonly userDataAccess: UserDataAccess) {} + + async list( + queryUserList: QueryUserList, + ): Promise<{ user: UserMidDto[]; count: number }> { + const { page, pageSize } = queryUserList; + const result = await this.userDataAccess.list(page, pageSize); + const count = await this.userDataAccess.count(); + return { user: result.map((item) => userMidObj(item)), count: count }; + } + // user status + async status(userStatus: UserStatus): Promise { + const { userId, status } = userStatus; + const user = await this.userDataAccess.findOne(userId); + if (!user) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' کاربر وجود ندارد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + await this.userDataAccess.status(userId, status); + return true; + } +} diff --git a/src/application/common/blog/blog.controller.ts b/src/application/common/blog/blog.controller.ts new file mode 100644 index 0000000..d47c3c5 --- /dev/null +++ b/src/application/common/blog/blog.controller.ts @@ -0,0 +1,154 @@ +import { IpAddress } from '../../../decorators/ipAddress.decorator'; +import { + Controller, + HttpStatus, + HttpCode, + Get, + Param, + Post, + Body, + Query, + Res, + UseGuards, +} from '@nestjs/common'; +import { Response } from 'express'; + +import { + ApiTags, + ApiOkResponse, + ApiOperation, + ApiBody, + ApiBearerAuth, +} from '@nestjs/swagger'; +import { + PostDto, + getPostInputDto, + ViewListPostDto, + SearchParameter, +} from '../../../DTO/blogPost.dto'; +import { BlogService } from './blog.service'; +import { + CreatePostCommentDto, + PostCommentDto, +} from '../../../DTO/blogPostComment.dto'; +import { AuthGuard } from '../../../auth/auth.guard'; +import { Roles } from '../../../decorators/role.decorators'; +import { Role } from '../../../common/eNums/role.enum'; +import { CurrentUser } from '../../../decorators/currentUser.decorator'; +import { CheckGuard } from './blog.guard'; + +@ApiTags('common blog') +@Controller('common/blog') +export class BlogController { + constructor(private readonly blogService: BlogService) {} + // blog cat *********************************************************** + @ApiOperation({ summary: 'فیلتر و لیست پست های بلاگ' }) + @ApiOkResponse({ + description: 'list Posts', + type: [ViewListPostDto], + }) + @Get('postList') + @HttpCode(HttpStatus.OK) + async listPost(@Query() query: getPostInputDto): Promise { + const list = await this.blogService.listPost(query); + return list; + } + // post ********************************************************************** + @ApiOperation({ summary: 'جزییات پست بلاگ' }) + @ApiOkResponse({ + description: 'Post info', + type: [PostDto], + }) + @Get('post/:slug') + @HttpCode(HttpStatus.OK) + @UseGuards(CheckGuard) + @ApiBearerAuth() + async Post( + @CurrentUser() user, + @Param('slug') + slug: string, + @IpAddress() ip: string, + @Res() res: Response, + ): Promise { + try { + const post = await this.blogService.post(slug, user, ip); + res.json(post); + return; + } catch (err) { + throw err; + } + } + // create post comment ********************************************************** + @ApiOperation({ summary: ' ساخت کامنت ' }) + @ApiOkResponse({ + description: 'post comment Dto', + type: [PostCommentDto], + }) + @ApiBody({ + type: CreatePostCommentDto, + description: 'create postComment Dto', + }) + @UseGuards(AuthGuard) + @Roles(Role.User) + @ApiBearerAuth() + @Post('postComment/:id') + @HttpCode(HttpStatus.OK) + async createPostComment( + @CurrentUser() user, + @Body() createPostCommentDto: CreatePostCommentDto, + @Param('id') + id: string, + ): Promise { + try { + await this.blogService.createPostComment(user, createPostCommentDto, id); + return true; + } catch (err) { + throw err; + } + } + // reply post comment ********************************************************* + @ApiOperation({ summary: ' پاسخ دادن کامنت یک پست ' }) + @ApiOkResponse({ + description: 'PostComment Dto', + type: [PostCommentDto], + }) + @ApiBody({ + type: CreatePostCommentDto, + description: 'reply post comment', + }) + // @Post('postComment/reply/:id') + @UseGuards(AuthGuard) + @Roles(Role.User) + @ApiBearerAuth() + @Post('postComment/:id') + @HttpCode(HttpStatus.OK) + async replyPostComment( + @CurrentUser() user, + @Body() createPostCommentDto: CreatePostCommentDto, + @Param('id') + id: string, + ): Promise { + try { + await this.blogService.replyPostComment(user, createPostCommentDto, id); + return true; + } catch (err) { + throw err; + } + } + // search blog ****************************************************************** + @ApiOperation({ summary: ' جست و جو در بلاگ ' }) + @ApiOkResponse({ + description: 'search result', + type: [ViewListPostDto], + }) + @Get('search') + @HttpCode(HttpStatus.OK) + async search(@Query() query: SearchParameter): Promise { + try { + const result = await this.blogService.search(query); + return result; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/common/blog/blog.guard.ts b/src/application/common/blog/blog.guard.ts new file mode 100644 index 0000000..6d0f66f --- /dev/null +++ b/src/application/common/blog/blog.guard.ts @@ -0,0 +1,33 @@ +import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; +import { JwtService } from '@nestjs/jwt'; +import { jwtConstants } from './constants'; +import { Request } from 'express'; + +@Injectable() +export class CheckGuard implements CanActivate { + constructor(private jwtService: JwtService) {} + + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + + const token = this.extractTokenFromHeader(request); + if (!token) { + return true; + } + try { + const payload = await this.jwtService.verifyAsync(token, { + secret: jwtConstants.secret, + }); + request['user'] = payload; + return payload; + } catch (err) { + console.log(err); + return true; + } + } + + private extractTokenFromHeader(request: Request): string | undefined { + const [type, token] = request.headers.authorization?.split(' ') ?? []; + return type === 'Bearer' ? token : undefined; + } +} diff --git a/src/application/common/blog/blog.module.ts b/src/application/common/blog/blog.module.ts new file mode 100644 index 0000000..4d6d1ce --- /dev/null +++ b/src/application/common/blog/blog.module.ts @@ -0,0 +1,23 @@ +import { Module } from '@nestjs/common'; + +import { BlogController } from './blog.controller'; +import { BlogService } from './blog.service'; +import { BlogPostDataAccess } from '../../../dataAccess/blogPost.dataAccess'; +import { CategoryDataAccess } from '../../../dataAccess/blogCategory.dataAccess'; +import { BlogPostCommentDataAccess } from '../../../dataAccess/blogPostComment.dataAccess'; +import { PostVisitDataAccess } from '../../../dataAccess/postVisit.dataAccess'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; + +@Module({ + imports: [], + controllers: [BlogController], + providers: [ + BlogService, + CategoryDataAccess, + BlogPostDataAccess, + BlogPostCommentDataAccess, + PostVisitDataAccess, + UserDataAccess, + ], +}) +export class BlogModule {} diff --git a/src/application/common/blog/blog.service.ts b/src/application/common/blog/blog.service.ts new file mode 100644 index 0000000..c07ad52 --- /dev/null +++ b/src/application/common/blog/blog.service.ts @@ -0,0 +1,144 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { getAllBlogCategoriesObj } from '../../../DTO/blogCategory.dto'; +import { CategoryDataAccess } from '../../../dataAccess/blogCategory.dataAccess'; +import { ItemStatus } from '../../../common/eNums/itemStatus.enum'; +import { BlogPostCommentDataAccess } from '../../../dataAccess/blogPostComment.dataAccess'; +import { BlogPostDataAccess } from '../../../dataAccess/blogPost.dataAccess'; +import { PostVisitDataAccess } from '../../../dataAccess/postVisit.dataAccess'; +import { + postInfoObjDto, + viewPostObjDto, + ViewListPostDto, +} from '../../../DTO/blogPost.dto'; +import commentStatuses from '../../../common/eNums/itemStatus.enum'; + +@Injectable() +export class BlogService { + constructor( + private readonly categoryDataAccess: CategoryDataAccess, + private readonly blogPostCommentDataAccess: BlogPostCommentDataAccess, + private readonly blogPostDataAccess: BlogPostDataAccess, + private readonly postVisitDataAccess: PostVisitDataAccess, + ) {} + // blogCategory ****************************************************** + async listPost(query) { + const listPost = await this.blogPostDataAccess.listBlogPosts(query); + return listPost.map((item) => viewPostObjDto(item)); + } + // post ***************************************************************** + async post(slug, user, ip) { + const post = await this.blogPostDataAccess.findBlogPostBySlug(slug); + if (!post) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'POST_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } else { + if (!user) { + user = { id: null }; + } + + const visit = await this.postVisitDataAccess.findById( + user.id, + post._id, + ip, + ); + if (!visit) { + if (user) { + await this.blogPostDataAccess.updateVisitCount( + post._id, + post.visitCount + 1, + ); + await this.postVisitDataAccess.create(user.id, post._id, ip); + } else { + user = { id: null }; + await this.blogPostDataAccess.updateVisitCount( + post._id, + post.visitCount + 1, + ); + await this.postVisitDataAccess.create(user.id, post._id, ip); + } + } + // await this.blogPostDataAccess.updateVisitCount(post.id, post.visitCount + 1); + if (post.Comment.length !== 0) { + post.Comment = post.Comment.filter( + (x) => x.status === commentStatuses.Active, + ); + } else { + post.Comment = []; + } + return postInfoObjDto(post); + } + } + // create postComment *************************************************** + async createPostComment(userInf, createPostCommentDto, id): Promise { + const { text } = createPostCommentDto; + const post = await this.blogPostDataAccess.findById(id); + if (!post || post.status !== ItemStatus.Active) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'پست وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } else { + const comment = + await this.blogPostCommentDataAccess.createBlogPostComment( + id, + userInf.id, + text, + ); + post.Comment.push(comment._id ? comment._id : comment.id); + post.save(); + return true; + } + } + // blogCat structure ****************************************************** + async getAllBlogCategories() { + const list = await this.categoryDataAccess.getAll(); + for (let i = 0; i < list.length; i++) { + list[i].parents = list[i].parents.filter( + (x) => x.status === ItemStatus.Active, + ); + } + return list.map((item) => getAllBlogCategoriesObj(item)); + } + // replay post comment ******************************************************* + async replyPostComment(userInf, createPostCommentDto, id): Promise { + const postComment = await this.blogPostCommentDataAccess.findById(id); + if (!postComment || postComment.status !== ItemStatus.Active) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'کامنت وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } else { + const { text } = createPostCommentDto; + const replyComment = await this.blogPostCommentDataAccess.replyComment( + postComment.blogPost._id, + id, + userInf.id, + text, + ); + postComment.Replies.push(replyComment.id); + postComment.save(); + return true; + } + } + // search blog ************************************************************* + async search(query): Promise { + const { title, page, pageSize } = query; + const resultPosts = await this.blogPostDataAccess.search( + title, + page, + pageSize, + ); + return resultPosts.map((item) => viewPostObjDto(item)); + } +} diff --git a/src/application/common/blog/constants.ts b/src/application/common/blog/constants.ts new file mode 100644 index 0000000..19f6d69 --- /dev/null +++ b/src/application/common/blog/constants.ts @@ -0,0 +1,3 @@ +export const jwtConstants = { + secret: '8FWQDF%$ERDFGH#$FDSJ&*#@R1!34Vh', +}; diff --git a/src/application/common/common.controller.ts b/src/application/common/common.controller.ts new file mode 100644 index 0000000..04527f0 --- /dev/null +++ b/src/application/common/common.controller.ts @@ -0,0 +1,9 @@ +import { Controller } from '@nestjs/common'; +import { ApiTags } from '@nestjs/swagger'; +import { CommonService } from './common.service'; + +@ApiTags('commons') +@Controller('commons') +export class CommonController { + constructor(private readonly commonService: CommonService) {} +} diff --git a/src/application/common/common.module.ts b/src/application/common/common.module.ts new file mode 100644 index 0000000..fe51b56 --- /dev/null +++ b/src/application/common/common.module.ts @@ -0,0 +1,16 @@ +import { Module } from '@nestjs/common'; + +import { Tools } from '../../common/helpers/tools.helpers'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import { CommonController } from './common.controller'; +import { CommonService } from './common.service'; +import { BlogModule } from './blog/blog.module'; +import { FaqModule } from './faq/faq.module'; +import { SettingsModule } from './settings/settings.module'; + +@Module({ + imports: [BlogModule, FaqModule, SettingsModule], + controllers: [CommonController], + providers: [CommonService, Tools, UserDataAccess], +}) +export class CommonModule {} diff --git a/src/application/common/common.service.ts b/src/application/common/common.service.ts new file mode 100644 index 0000000..9f4a31c --- /dev/null +++ b/src/application/common/common.service.ts @@ -0,0 +1,6 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class CommonService { + constructor() {} +} diff --git a/src/application/common/faq/faq.controller.ts b/src/application/common/faq/faq.controller.ts new file mode 100644 index 0000000..a5e7ba9 --- /dev/null +++ b/src/application/common/faq/faq.controller.ts @@ -0,0 +1,27 @@ +import { Controller, HttpStatus, HttpCode, Get, Query } from '@nestjs/common'; +import { ApiTags, ApiOkResponse } from '@nestjs/swagger'; +import { + FaqCategoryDto, + FilterFaqCategoryDto, +} from '../../../DTO/faqCategory.dto'; +import { FaqService } from './faq.service'; + +@ApiTags('common faqs') +@Controller('common/faq') +export class FaqController { + constructor(private readonly faqService: FaqService) {} + + // faqCategory list + @ApiOkResponse({ + description: 'faqs list', + type: [FaqCategoryDto], + }) + @HttpCode(HttpStatus.OK) + @Get('faq') + async faqList( + @Query() filterFaqCategoryDto: FilterFaqCategoryDto, + ): Promise { + const faqList = await this.faqService.faqList(filterFaqCategoryDto); + return faqList; + } +} diff --git a/src/application/common/faq/faq.module.ts b/src/application/common/faq/faq.module.ts new file mode 100644 index 0000000..e02f622 --- /dev/null +++ b/src/application/common/faq/faq.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; + +import { FaqController } from './faq.controller'; +import { FaqService } from './faq.service'; +import { FaqDataAccess } from '../../../dataAccess/faq.dataAccess'; + +@Module({ + imports: [], + controllers: [FaqController], + providers: [FaqService, FaqDataAccess], +}) +export class FaqModule {} diff --git a/src/application/common/faq/faq.service.ts b/src/application/common/faq/faq.service.ts new file mode 100644 index 0000000..dd72f34 --- /dev/null +++ b/src/application/common/faq/faq.service.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@nestjs/common'; +import { + FaqCategoryDto, + faqCategoryObj, + FilterFaqCategoryDto, +} from '../../../DTO/faqCategory.dto'; + +import { FaqDataAccess } from '../../../dataAccess/faq.dataAccess'; + +@Injectable() +export class FaqService { + constructor(private readonly faqDataAccess: FaqDataAccess) {} + + async faqList( + filterFaqCategoryDto: FilterFaqCategoryDto, + ): Promise { + const list = await this.faqDataAccess.findAllFaqCategory( + filterFaqCategoryDto, + ); + return list.map((item) => faqCategoryObj(item)); + } +} diff --git a/src/application/common/settings/settings.controller.ts b/src/application/common/settings/settings.controller.ts new file mode 100644 index 0000000..468059e --- /dev/null +++ b/src/application/common/settings/settings.controller.ts @@ -0,0 +1,28 @@ +import { Controller, Get, HttpCode, HttpStatus } from '@nestjs/common'; +import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger'; +import { SettingsService } from './settings.service'; +import { CreateDto } from '../../../DTO/settings.dto'; +@ApiTags('common settings') +@Controller('common/settings') +export class SettingController { + constructor(private readonly settingsService: SettingsService) {} + + // get ************************************ + @ApiOperation({ + summary: ' تنظیمات سایت', + }) + @ApiOkResponse({ + description: ' Create Dto ', + type: CreateDto, + }) + @HttpCode(HttpStatus.OK) + @Get() + async list(): Promise { + try { + const result = await this.settingsService.find(); + return result; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/common/settings/settings.module.ts b/src/application/common/settings/settings.module.ts new file mode 100644 index 0000000..e6fcdd4 --- /dev/null +++ b/src/application/common/settings/settings.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { SettingsDataAccess } from '../../../dataAccess/settings.dataAccess'; +import { SettingsService } from './settings.service'; +import { SettingController } from './settings.controller'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; + +@Module({ + imports: [], + controllers: [SettingController], + providers: [SettingsService, SettingsDataAccess, UserDataAccess], +}) +export class SettingsModule {} diff --git a/src/application/common/settings/settings.service.ts b/src/application/common/settings/settings.service.ts new file mode 100644 index 0000000..4e0349f --- /dev/null +++ b/src/application/common/settings/settings.service.ts @@ -0,0 +1,23 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; + +import { SettingsDataAccess } from '../../../dataAccess/settings.dataAccess'; +import { Settings } from '../../../models/schemas/settings.schema'; + +@Injectable() +export class SettingsService { + constructor(private readonly settingDataAccess: SettingsDataAccess) {} + + async find(): Promise { + const result = await this.settingDataAccess.findOne(); + if (result.length === 0) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' تنظیمات وجود ندارد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + return result[0]; + } +} diff --git a/src/application/common/uploader/uploader.controller.ts b/src/application/common/uploader/uploader.controller.ts new file mode 100644 index 0000000..159bfa1 --- /dev/null +++ b/src/application/common/uploader/uploader.controller.ts @@ -0,0 +1,81 @@ +import { + Body, + Controller, + Get, + HttpException, + HttpStatus, + Post, + Query, + UploadedFile, + UseGuards, + UseInterceptors, +} from '@nestjs/common'; +import { FileInterceptor } from '@nestjs/platform-express'; +import { + ApiBearerAuth, + ApiBody, + ApiConsumes, + ApiOperation, + ApiTags, +} from '@nestjs/swagger'; +import { GetFileDTO, UploaderDTO } from '../../../DTO/uploader.dto'; +import { UploaderService } from './uploader.service'; +import { AuthGuard } from '../../../auth/auth.guard'; +import { Role } from '../../../common/eNums/role.enum'; +import { Roles } from '../../../decorators/role.decorators'; + +@ApiTags('Uploader') +@Controller('uploader') +export class UploaderController { + constructor(private readonly uploaderService: UploaderService) {} + + @ApiOperation({ + summary: ' آپلود فایل ', + }) + @ApiBody({ + type: UploaderDTO, + description: 'Uploader DTO', + }) + @UseInterceptors(FileInterceptor('file')) + @ApiConsumes('multipart/form-data') + @UseGuards(AuthGuard) + @Roles(Role.User, Role.Admin) + @ApiBearerAuth() + @Post() + uploadFile(@UploadedFile() file, @Body() uploaderDto: UploaderDTO) { + try { + if (file) { + return this.uploaderService.upload(file, uploaderDto.directoryName); + } + } catch (err) { + throw new HttpException( + { + status: HttpStatus.BAD_REQUEST, + error: 'BAD_REQUEST', + }, + HttpStatus.BAD_REQUEST, + ); + } + } + + @ApiOperation({ + summary: ' چک کردن وجود داشتن مدیا ', + }) + @UseGuards(AuthGuard) + @Roles(Role.User, Role.Admin) + @ApiBearerAuth() + @Get('file') + getFile(@Query() getFileDTO: GetFileDTO) { + try { + return this.uploaderService.getFileUrl(getFileDTO.fileName); + } catch (err) { + throw new HttpException( + { + status: HttpStatus.BAD_REQUEST, + error: 'BAD_REQUEST', + }, + HttpStatus.BAD_REQUEST, + ); + } + } +} diff --git a/src/application/common/uploader/uploader.module.ts b/src/application/common/uploader/uploader.module.ts new file mode 100644 index 0000000..d7f156f --- /dev/null +++ b/src/application/common/uploader/uploader.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { UploaderService } from './uploader.service'; +import { UploaderController } from './uploader.controller'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; + +@Module({ + imports: [], + controllers: [UploaderController], + providers: [UploaderService, UserDataAccess], + exports: [UploaderService], +}) +export class UploaderModule {} diff --git a/src/application/common/uploader/uploader.service.ts b/src/application/common/uploader/uploader.service.ts new file mode 100644 index 0000000..7d3d10f --- /dev/null +++ b/src/application/common/uploader/uploader.service.ts @@ -0,0 +1,52 @@ +import { Injectable } from '@nestjs/common'; +import { S3 } from 'aws-sdk'; +import { v4 as uuidv4 } from 'uuid'; + +@Injectable() +export class UploaderService { + constructor() {} + + client: any = new S3({ + accessKeyId: process.env.STORAGE_ACCESS_KEY, + secretAccessKey: process.env.STORAGE_SECRET_KEY, + endpoint: process.env.STORAGE_ENDPOINT, + region: process.env.STORAGE_REGION, + }); + + async upload(file, directoryName) { + const params = { + Body: file.buffer, + Bucket: process.env.STORAGE_BUCKET, + Key: directoryName + '/' + uuidv4() + file.originalname, + }; + + const uploadFile = await this.client.upload(params).promise(); + return { + url: uploadFile.Location, + key: uploadFile.key, + }; + } + + async getFileUrl(fileName) { + const params = { + Bucket: process.env.STORAGE_BUCKET, + Key: fileName, + }; + try { + // Check if the file exists in storage + const data = await this.client.headObject(params).promise(); + // If the file exists, return the file + return { + result: true, + url: `${process.env.STORAGE_ENDPOINT}/${params.Bucket}/${params.Key}`, + data: data, + }; + } catch (error) { + // If the file does not exist, return an error + return { + result: false, + error: `File ${params.Key} does not exist in storage`, + }; + } + } +} diff --git a/src/application/course/course.controller.ts b/src/application/course/course.controller.ts new file mode 100644 index 0000000..e1eb070 --- /dev/null +++ b/src/application/course/course.controller.ts @@ -0,0 +1,211 @@ +import { + Body, + Controller, + Delete, + Get, + HttpCode, + HttpStatus, + Param, + Patch, + Post, + Put, + Query, + Req, + UseGuards, +} from '@nestjs/common'; +import { CourseService } from './course.service'; +import { + ApiBearerAuth, + ApiBody, + ApiOkResponse, + ApiOperation, + ApiQuery, + ApiTags, +} from '@nestjs/swagger'; +import { + CreateCourseDto, + FilterCategoryPaginationCourseDto, + UpdateCourseDto, +} from '../../DTO/course.dto'; +import { AuthGuard } from '../../auth/auth.guard'; +import { UploaderService } from '../common/uploader/uploader.service'; +import { Role } from '../../common/eNums/role.enum'; +import { Roles } from '../../decorators/role.decorators'; +import { CreateCommentDto } from '../../DTO/comment.dto'; +import { CurrentUser } from '../../decorators/currentUser.decorator'; +import { CreateRateDto } from '../../DTO/rate.dto'; +import { StatusCommentDto } from 'src/DTO/courseHeadlineComment.dto'; +@ApiTags('course') +@Controller('course') +export class CourseController { + constructor( + private courseService: CourseService, + private uploaderService: UploaderService, + ) {} + + @ApiOperation({ + summary: 'ایجاد دوره', + }) + @ApiBody({ + type: CreateCourseDto, + description: 'get Body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Post() + @HttpCode(HttpStatus.CREATED) + async createCourse(@Body() createCourseDto: CreateCourseDto) { + return this.courseService.createCourse(createCourseDto); + } + + // profile user ************************************ + @ApiOperation({ + summary: ' دریافت دوره های من', + }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.User, Role.Admin) + @ApiBearerAuth() + @Get('/course-user') + async getProfile(@CurrentUser() user) { + try { + const result = await this.courseService.getCourseUser(user._id); + return result; + } catch (err) { + throw err; + } + } + + @ApiOperation({ + summary: 'دریافت دوره با آیدی', + }) + @ApiQuery({ + name: 'userId', + type: String, + required: false, + description: 'آیدی کاربر', + }) + @Get(':id') + @HttpCode(HttpStatus.OK) + async getCourse(@Param('id') id: string, @Query('userId') userId?: string) { + return this.courseService.getCourse(id, userId); + } + + @ApiOperation({ + summary: 'دریافت همه دوره ها', + }) + @Get('') + @HttpCode(HttpStatus.OK) + async getAllCourses( + @Query() + filterCategoryPaginationCourseDto: FilterCategoryPaginationCourseDto, + ) { + return this.courseService.getAllCourses(filterCategoryPaginationCourseDto); + } + + @ApiOperation({ + summary: 'بروزرسانی دوره', + }) + @ApiBody({ + type: UpdateCourseDto, + description: 'get Body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Put('') + @HttpCode(HttpStatus.OK) + async updateCourse(@Body() updateCourseDto: UpdateCourseDto) { + return this.courseService.updateCourse(updateCourseDto); + } + + // changeStatus postComment ********************************************************************* + @ApiOperation({ summary: 'change status' }) + @ApiOkResponse({ + description: 'api status', + type: Boolean, + }) + @ApiBody({ + type: StatusCommentDto, + description: 'change status ', + }) + @Patch('status') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async changeStatus(@Body() statusCommentDto: StatusCommentDto): Promise { + try { + await this.courseService.changeStatus(statusCommentDto); + return { status: true }; + } catch (err) { + throw err; + } + } + + @ApiOperation({ + summary: 'دریافت دوره ها بر اساس فیلتر دسته بندی', + }) + @Get('category/:id') + async findCoursesByCategory(@Param('id') id: string) { + return this.courseService.findCoursesByCategory(id); + } + + @ApiOperation({ + summary: 'ایجاد کامنت', + }) + @ApiBody({ + type: CreateCommentDto, + description: 'get Body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin, Role.User, Role.Reader, Role.Writer) + @Post(':id/comment') + async createComment( + @Param('id') id: string, + @CurrentUser() user, + @Body() createCommentDto: CreateCommentDto, + ) { + return this.courseService.createComment(createCommentDto, id, user.id); + } + + @ApiOperation({ + summary: 'ایجاد امتیاز', + }) + @ApiBody({ + type: CreateRateDto, + description: 'get Body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin, Role.User, Role.Reader, Role.Writer) + @Post(':id/rate') + async createRate( + @Param('id') id: string, + @CurrentUser() user, + @Body() createRateDto: CreateRateDto, + ) { + return this.courseService.addRating(createRateDto, id, user.id); + } + + @ApiOperation({ + summary: 'دریافت امتیاز', + }) + @Get(':id/rate') + async getRating(@Param('id') id: string) { + return this.courseService.getRating(id); + } + + @ApiOperation({ + summary: 'حذف دوره', + }) + @Delete(':id') + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + async deleteCourse(@Param('id') id: string, @CurrentUser() user) { + return this.courseService.deleteCourse(id, user.id); + } +} diff --git a/src/application/course/course.module.ts b/src/application/course/course.module.ts new file mode 100644 index 0000000..bc3a377 --- /dev/null +++ b/src/application/course/course.module.ts @@ -0,0 +1,28 @@ +import { Module } from '@nestjs/common'; +import { CourseController } from './course.controller'; +import { CourseService } from './course.service'; +import { UserModule } from '../user/user.module'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import { CourseDataAccess } from '../../dataAccess/course.dataAccess'; +import { UploaderService } from '../common/uploader/uploader.service'; +import { CourseHeadlineDataAccess } from '../../dataAccess/courseHeadline.dataAccess'; +import { CourseCategoryDataAccess } from '../../dataAccess/courseCategory.dataAccess'; +import { CommentDataAccess } from '../../dataAccess/comment.dataAccess'; + +@Module({ + imports: [ + UserModule, + ], + controllers: [CourseController], + providers: [ + CourseService, + CourseDataAccess, + UserDataAccess, + CourseHeadlineDataAccess, + UploaderService, + CourseCategoryDataAccess, + CommentDataAccess + ], + exports: [CourseService] +}) +export class CourseModule { } diff --git a/src/application/course/course.service.ts b/src/application/course/course.service.ts new file mode 100644 index 0000000..e6e01d4 --- /dev/null +++ b/src/application/course/course.service.ts @@ -0,0 +1,200 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { CourseDataAccess } from '../../dataAccess/course.dataAccess'; +import { + CreateCourseDto, + FilterCategoryPaginationCourseDto, + UpdateCourseDto, +} from '../../DTO/course.dto'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import { Course } from '../../models/schemas/course.schema'; +import { CourseCategoryDataAccess } from '../../dataAccess/courseCategory.dataAccess'; +import { CreateCommentDto } from '../../DTO/comment.dto'; +import { CommentDataAccess } from '../../dataAccess/comment.dataAccess'; +import { Comment } from '../../models/schemas/comment.schema'; +import { Rate } from '../../models/schemas/rate.schema'; +import { CreateRateDto } from '../../DTO/rate.dto'; +import { CourseHeadlineDataAccess } from '../../dataAccess/courseHeadline.dataAccess'; + +@Injectable() +export class CourseService { + constructor( + private courseDataAccess: CourseDataAccess, + private userDataAccess: UserDataAccess, + private courseCategoryDataAccess: CourseCategoryDataAccess, + private commentDataAccess: CommentDataAccess, + private courseHeadlineDataAccess: CourseHeadlineDataAccess, + ) {} + + async createCourse( + createCourseDto: CreateCourseDto, + ): Promise<{ message: string; course: Course }> { + try { + const teacher = await this.userDataAccess.findOne( + createCourseDto.teacher, + ); + if (!teacher) { + throw new HttpException('استاد یافت نشد', HttpStatus.NOT_FOUND); + } + // if (createCourseDto.image) { + // const fileUrl = await this.uploaderService.getFileUrl(createCourseDto.image); + // if (fileUrl.result === true) { + // createCourseDto.image = fileUrl.url; + // } else { + // throw new HttpException('فایل یافت نشد', HttpStatus.NOT_FOUND); + // } + // } + createCourseDto.teacher = teacher._id.toString(); + + if (createCourseDto.categories) { + const courseCategory = + await this.courseCategoryDataAccess.findCourseCategoryByIds( + createCourseDto.categories, + ); + if (!courseCategory) { + throw new HttpException( + 'دسته بندی دوره یافت نشد', + HttpStatus.NOT_FOUND, + ); + } + createCourseDto.categories = courseCategory.map((category) => + category._id ? category._id : category.id, + ); + } + + const course = await this.courseDataAccess.createCourse(createCourseDto); + return { message: 'دوره با موفقیت ثبت شد', course }; + } catch (error) { + if (error.code === 11000 && error.keyPattern && error.keyPattern.slug) { + throw new HttpException( + 'دوره با این slug قبلا ثبت شده است', + HttpStatus.CONFLICT, + ); + } else { + console.log(error); + throw new HttpException('خطای سرور', HttpStatus.INTERNAL_SERVER_ERROR); + } + } + } + + async getCourse( + id: string, + userId?: string, + ): Promise<{ + course: Course; + comments: Comment[]; + completionPercentage: number; + }> { + const course = await this.courseDataAccess.getCourse(id); + if (!course) { + throw new HttpException('دوره یافت نشد', HttpStatus.NOT_FOUND); + } + const comments = await this.commentDataAccess.getCommentsByCourseId(id); + if (userId) { + const user = await this.userDataAccess.findOne(userId); + const courseHeadlines = + await this.courseHeadlineDataAccess.getCourseHeadlines(id); + const totalHeadlines = courseHeadlines.length; + let completionPercentage = 0; + if (user.courseHeadlineProgress) { + console.log(user.courseHeadlineProgress); + console.log(courseHeadlines); + const completedHeadlines = user.courseHeadlineProgress.filter( + (progress) => + courseHeadlines.some( + (headline) => headline._id.toString() === progress.toString(), + ), + ).length; + console.log({ completedHeadlines }); + + completionPercentage = (completedHeadlines / totalHeadlines) * 100; + } + + return { course, comments, completionPercentage }; + } + + return { course, comments, completionPercentage: 0 }; + } + + async getAllCourses( + filterCategoryPaginationCourseDto: FilterCategoryPaginationCourseDto, + ): Promise<{ courses: Course[]; count: number }> { + return this.courseDataAccess.getCourses(filterCategoryPaginationCourseDto); + } + + async updateCourse(updateCourseDto: UpdateCourseDto): Promise { + if (updateCourseDto.teacher) { + const teacher = await this.userDataAccess.findOne( + updateCourseDto.teacher, + ); + if (!teacher) { + throw new HttpException('استاد یافت نشد', HttpStatus.NOT_FOUND); + } + updateCourseDto.teacher = teacher._id ? teacher._id : teacher.id; + } + return this.courseDataAccess.updateCourse(updateCourseDto); + } + + async findCoursesByCategory( + categoryId: string, + ): Promise<{ courses: Course[]; count: number }> { + return this.courseDataAccess.findCoursesByCategory(categoryId); + } + + async createComment( + createCommentDto: CreateCommentDto, + courseId: string, + userId: string, + ): Promise { + return this.commentDataAccess.createComment( + createCommentDto, + courseId, + userId, + ); + } + + async addRating( + createRateDto: CreateRateDto, + courseId, + userId, + ): Promise { + return this.courseDataAccess.addRating( + courseId, + userId, + createRateDto.rating, + ); + } + + async getRating(courseId: string): Promise { + return this.courseDataAccess.getRating(courseId); + } + + async getCourseUser(userId: string) { + return this.courseDataAccess.getCourseUser(userId); + } + + async deleteCourse(courseId: string, userId: string) { + const course = await this.courseDataAccess.getCourse(courseId); + // if (course.teacher.toString() !== userId) { + if (!course) { + throw new HttpException('دوره وجود ندارد', HttpStatus.FORBIDDEN); + } + return this.courseDataAccess.deleteCourse(courseId); + } + + async changeStatus(statusPostCommentDto): Promise { + const { id, status } = statusPostCommentDto; + const result = await this.courseDataAccess.findByIdCom(id); + if (!result) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'COMMENT_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + + await this.courseDataAccess.changeStatus(id, status); + return true; + } +} diff --git a/src/application/courseCategory/courseCategory.controller.ts b/src/application/courseCategory/courseCategory.controller.ts new file mode 100644 index 0000000..fb22de4 --- /dev/null +++ b/src/application/courseCategory/courseCategory.controller.ts @@ -0,0 +1,66 @@ +import { Body, Controller, Delete, Get, Param, Post, UseGuards } from '@nestjs/common'; +import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger'; +import { CourseCategoryService } from './courseCategory.service'; +import { CourseCategory } from '../../models/schemas/courseCategory.schema'; +import { CreateCourseCategoryDto } from '../../DTO/courseCategory.dto'; +import { AuthGuard } from '../../auth/auth.guard'; +import { Roles } from '../../decorators/role.decorators'; +import { Role } from '../../common/eNums/role.enum'; +import { HttpStatus } from 'aws-sdk/clients/lambda'; + +@ApiTags('courseCategory') +@Controller('courseCategory') +export class CourseCategoryController { + constructor(private readonly courseCategoryService: CourseCategoryService) {} + + @ApiOperation({ + summary: 'ایجاد دسته بندی دوره', + }) + @ApiBody({ + type: CreateCourseCategoryDto, + description: 'get Body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Post() + async createCourseCategory( + @Body() createCourseCategoryDto: CreateCourseCategoryDto, + ): Promise { + return this.courseCategoryService.createCourseCategory( + createCourseCategoryDto, + ); + } + + @ApiOperation({ + summary: 'دریافت همه دسته بندی ها', + }) + @Get() + async getAllCourseCategories(): Promise { + return this.courseCategoryService.getAllCourseCategories(); + } + + @ApiOperation({ + summary: 'دریافت دسته بندی دوره با آیدی', + }) + @Get(':id') + async getCourseCategoryById( + @Param('id') id: string, + ): Promise { + return this.courseCategoryService.getCourseCategoryById(id); + } + + @ApiOperation({ + summary: 'حذف دسته بندی دوره با آیدی', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Delete(':id') + async deleteCourseCategoryById(@Param('id') id: string): Promise<{ + status: HttpStatus; + message: string; + }> { + return this.courseCategoryService.deleteCourseCategoryById(id); + } +} diff --git a/src/application/courseCategory/courseCategory.module.ts b/src/application/courseCategory/courseCategory.module.ts new file mode 100644 index 0000000..1edc18a --- /dev/null +++ b/src/application/courseCategory/courseCategory.module.ts @@ -0,0 +1,18 @@ +import { Module } from "@nestjs/common"; +import { CourseCategoryController } from "./courseCategory.controller"; +import { CourseCategoryService } from "./courseCategory.service"; +import { CourseCategoryDataAccess } from "../../dataAccess/courseCategory.dataAccess"; +import { UserDataAccess } from "../../dataAccess/user.dataAccess"; + +@Module({ + imports: [], + controllers: [CourseCategoryController], + providers: [ + CourseCategoryService, + CourseCategoryDataAccess, + UserDataAccess + ], + exports: [CourseCategoryService] +}) +export class CourseCategoryModule {} + diff --git a/src/application/courseCategory/courseCategory.service.ts b/src/application/courseCategory/courseCategory.service.ts new file mode 100644 index 0000000..0cd0623 --- /dev/null +++ b/src/application/courseCategory/courseCategory.service.ts @@ -0,0 +1,41 @@ +import { HttpException, HttpStatus, Injectable } from "@nestjs/common"; +import { CreateCourseCategoryDto } from "../../DTO/courseCategory.dto"; +import { CourseCategoryDataAccess } from "../../dataAccess/courseCategory.dataAccess"; +import { CourseCategory } from "../../models/schemas/courseCategory.schema"; + +@Injectable() +export class CourseCategoryService { + constructor(private courseCategoryDataAccess: CourseCategoryDataAccess) {} + + async createCourseCategory(courseCategoryDto: CreateCourseCategoryDto): Promise { + return this.courseCategoryDataAccess.createCourseCategory(courseCategoryDto); + } + + async getAllCourseCategories(): Promise { + return this.courseCategoryDataAccess.findAllCourseCategories(); + } + + async getCourseCategoryById(id: string): Promise { + return this.courseCategoryDataAccess.findCourseCategoryById(id); + } + + async deleteCourseCategoryById(id: string) { + const courses = await this.courseCategoryDataAccess.findCoursesByCategoryId(id); + console.log(courses) + if (courses.length > 0) { + throw new HttpException( + { + status: HttpStatus.BAD_REQUEST, + error: 'این دسته بندی نمیتواند حذف شود', + }, + HttpStatus.BAD_REQUEST, + ); + } + await this.courseCategoryDataAccess.deleteCourseCategoryById(id); + return { + status: HttpStatus.OK, + message: 'دسته بندی با موفقیت حذف شد', + }; + } +} + diff --git a/src/application/courseHeadline/courseHeadline.controller.ts b/src/application/courseHeadline/courseHeadline.controller.ts new file mode 100644 index 0000000..d371735 --- /dev/null +++ b/src/application/courseHeadline/courseHeadline.controller.ts @@ -0,0 +1,125 @@ +import { + Body, + Controller, + Delete, + Get, + Param, + Post, + Put, + Query, + UseGuards, +} from '@nestjs/common'; +import { CourseHeadlineService } from './courseHeadline.service'; +import { + CreateCourseHeadlineDTO, + EpisodeDTO, + UpdateCourseHeadlineDTO, +} from '../../DTO/courseHeadline.dto'; +import { + ApiBearerAuth, + ApiBody, + ApiOkResponse, + ApiOperation, + ApiTags, +} from '@nestjs/swagger'; +import CourseHeadline from '../../models/courseHeadline.model'; +import { AuthGuard } from '../../auth/auth.guard'; +import { Roles } from '../../decorators/role.decorators'; +import { Role } from '../../common/eNums/role.enum'; +import { CurrentUser } from '../../decorators/currentUser.decorator'; + +@ApiTags('courseHeadline') +@Controller('courseHeadline') +export class CourseHeadlineController { + constructor(private readonly courseHeadlineService: CourseHeadlineService) {} + + @ApiOperation({ + summary: 'ایجاد سرفصل دوره', + }) + @ApiBody({ + type: CreateCourseHeadlineDTO, + description: 'get Body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Post() + createCourseHeadline( + @Body() createCourseHeadlineDto: CreateCourseHeadlineDTO, + ) { + return this.courseHeadlineService.createCourseHeadline( + createCourseHeadlineDto, + ); + } + + @ApiOperation({ + summary: 'دریافت سرفصل دوره با ایدی دوره', + }) + @ApiOkResponse({ + type: CourseHeadline, + }) + @Get() + getCourseHeadlines(@Query('courseId') courseId: string) { + return this.courseHeadlineService.getCourseHeadlines(courseId); + } + + @ApiOperation({ + summary: 'ویرایش سرفصل دوره', + }) + @ApiBody({ + type: UpdateCourseHeadlineDTO, + description: 'get Body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Put(':id') + async updateCourseHeadline( + @Param('id') id: string, + @Body() updateCourseHeadlineDto: UpdateCourseHeadlineDTO, + ) { + return this.courseHeadlineService.updateCourseHeadline( + id, + updateCourseHeadlineDto, + ); + } + + @ApiOperation({ + summary: 'ثبت پایان سرفصل دوره', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.User) + @Post('complete/:id') + async completeCourseHeadline(@Param('id') id: string, @CurrentUser() user) { + return this.courseHeadlineService.completeCourseHeadline(id, user.id); + } + + @ApiOperation({ + summary: 'حذف سرفصل دوره', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Delete(':id') + async deleteCourseHeadline(@Param('id') id: string) { + return this.courseHeadlineService.deleteCourseHeadline(id); + } + + @ApiOperation({ + summary: 'حذف سرفصل دوره از دوره', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Post('removeHeadlineFromCourse/:courseId/:headlineId') + async removeHeadlineFromCourse( + @Param('courseId') courseId: string, + @Param('headlineId') headlineId: string, + ) { + return this.courseHeadlineService.removeHeadlineFromCourse( + courseId, + headlineId, + ); + } +} diff --git a/src/application/courseHeadline/courseHeadline.module.ts b/src/application/courseHeadline/courseHeadline.module.ts new file mode 100644 index 0000000..aa11c0a --- /dev/null +++ b/src/application/courseHeadline/courseHeadline.module.ts @@ -0,0 +1,25 @@ +import { Module } from '@nestjs/common'; +import { CourseHeadlineController } from './courseHeadline.controller'; +import { CourseHeadlineService } from './courseHeadline.service'; +import { CourseDataAccess } from '../../dataAccess/course.dataAccess'; +import { CourseModule } from '../course/course.module'; +import { CourseHeadlineCommentModule } from './courseHeadlineComment/courseHeadlineComment.module'; +import { CourseHeadlineDataAccess } from '../../dataAccess/courseHeadline.dataAccess'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import { Tools } from '../../common/helpers/tools.helpers'; +import { UploaderService } from '../common/uploader/uploader.service'; + +@Module({ + imports: [CourseModule, CourseHeadlineCommentModule], + controllers: [CourseHeadlineController], + providers: [ + CourseHeadlineService, + CourseHeadlineDataAccess, + CourseDataAccess, + UserDataAccess, + Tools, + UploaderService, + ], + exports: [CourseHeadlineService], +}) +export class CourseHeadlineModule {} diff --git a/src/application/courseHeadline/courseHeadline.service.ts b/src/application/courseHeadline/courseHeadline.service.ts new file mode 100644 index 0000000..a060d81 --- /dev/null +++ b/src/application/courseHeadline/courseHeadline.service.ts @@ -0,0 +1,159 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { CourseDataAccess } from '../../dataAccess/course.dataAccess'; +import { CourseHeadlineDataAccess } from '../../dataAccess/courseHeadline.dataAccess'; +import { + CreateCourseHeadlineDTO, + EpisodeDTO, + UpdateCourseHeadlineDTO, +} from '../../DTO/courseHeadline.dto'; +import { Tools } from '../../common/helpers/tools.helpers'; +import { UploaderService } from '../common/uploader/uploader.service'; +import { CourseHeadline } from '../../models/schemas/courseHeadline.schema'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import mongoose from 'mongoose'; + +@Injectable() +export class CourseHeadlineService { + constructor( + private courseHeadlineDataAccess: CourseHeadlineDataAccess, + private courseDataAccess: CourseDataAccess, + private tools: Tools, + private uploaderService: UploaderService, + private userDataAccess: UserDataAccess, + ) {} + + async createCourseHeadline( + createCourseHeadlineDto: CreateCourseHeadlineDTO, + ): Promise { + const course = await this.courseDataAccess.getOneCourse( + createCourseHeadlineDto.course, + ); + if (!course) { + throw new Error('Course not found'); + } + const files = await this.uploaderService.getFileUrl( + createCourseHeadlineDto.videoUrl, + ); + console.log(files); + if (files.result == false) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' لینک ویدیو معتبر نمی باشد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + const time = await this.tools.timeVideo(files.url); + const result = await this.courseHeadlineDataAccess.createCourseHeadline( + createCourseHeadlineDto, + time, + ); + course.courseHeadlines.push(result._id ? result._id : result.id); + await course.save(); + return result; + } + + async getCourseHeadlines(courseId: string): Promise { + return await this.courseHeadlineDataAccess.getCourseHeadlines(courseId); + } + + async addEpisodeToCourseHeadline( + courseHeadlineId: string, + episodeDto: EpisodeDTO, + ): Promise { + return await this.courseHeadlineDataAccess.addEpisode( + courseHeadlineId, + episodeDto, + ); + } + + async removeEpisodeFromCourseHeadline( + courseHeadlineId: string, + episodeId: string, + ): Promise { + return await this.courseHeadlineDataAccess.removeEpisode( + courseHeadlineId, + episodeId, + ); + } + + async updateCourseHeadline( + id: string, + updateCourseHeadlineDto: UpdateCourseHeadlineDTO, + ): Promise { + return await this.courseHeadlineDataAccess.updateCourseHeadline( + id, + updateCourseHeadlineDto, + ); + } + + async deleteCourseHeadline( + id: string, + ): Promise<{ success: boolean; message: string }> { + const courseHeadline = await this.courseHeadlineDataAccess.getHeadline(id); + const removeHeadlineFromCourse = await this.removeHeadlineFromCourse( + courseHeadline.course.toString(), + id, + ); + if (removeHeadlineFromCourse.success) { + await this.courseHeadlineDataAccess.deleteCourseHeadline(id); + return { success: true, message: 'سرفصل با موفقیت حذف شد' }; + } + return { success: false, message: 'حذف سرفصل با مشکل موجه شد' }; + } + + async completeCourseHeadline( + id: string, + userId: string, + ): Promise<{ success: boolean; message: string }> { + const courseHeadline = await this.courseHeadlineDataAccess.getHeadline(id); + if (!courseHeadline) { + throw new HttpException('سرفصل یافت نشد', HttpStatus.NOT_FOUND); + } + const user = await this.userDataAccess.findOne(userId); + if ( + user.courseHeadlineProgress.includes( + courseHeadline._id as mongoose.Types.ObjectId, + ) + ) { + throw new HttpException('سرفصل فبلا ثبت شده است', HttpStatus.BAD_REQUEST); + } + user.courseHeadlineProgress.push( + courseHeadline._id as mongoose.Types.ObjectId, + ); + await user.save(); + return { + success: true, + message: 'سرفصل با موفقیت ثبت شد', + }; + } + + async removeHeadlineFromCourse(courseId: string, headlineId: string) { + const course = await this.courseDataAccess.getOneCourse(courseId); + if (!course) { + throw new HttpException('کورس یافت نشد', HttpStatus.NOT_FOUND); + } + const headline = await this.courseHeadlineDataAccess.getHeadline( + headlineId, + ); + if (!headline) { + throw new HttpException('سرفصل یافت نشد', HttpStatus.NOT_FOUND); + } + if ( + !course.courseHeadlines.some( + (headlineId) => headlineId._id.toString() === headline._id.toString(), + ) + ) { + throw new HttpException( + 'سرفصل در این دوره یافت نشد', + HttpStatus.NOT_FOUND, + ); + } + await this.courseDataAccess.removeHeadlineFromCourse(courseId, headlineId); + return { + success: true, + message: 'سرفصل با موفقیت از دوره حذف شد', + }; + } +} diff --git a/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.controller.ts b/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.controller.ts new file mode 100644 index 0000000..a349429 --- /dev/null +++ b/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.controller.ts @@ -0,0 +1,116 @@ +import { + Body, + Controller, + HttpCode, + HttpStatus, + Patch, + Post, + UseGuards, +} from '@nestjs/common'; +import { + ApiBearerAuth, + ApiBody, + ApiOkResponse, + ApiOperation, + ApiTags, +} from '@nestjs/swagger'; +import { AuthGuard } from '../../../auth/auth.guard'; +import { Role } from '../../../common/eNums/role.enum'; +import { CurrentUser } from '../../../decorators/currentUser.decorator'; +import { Roles } from '../../../decorators/role.decorators'; +import { CourseHeadlineCommentService } from './courseHeadlineComment.service'; +import { + CreateCourseHeadlineCommentDto, + StatusCommentDto, +} from '../../../DTO/courseHeadlineComment.dto'; + +@ApiTags('courseHeadlineComment') +@Controller('courseHeadlineComment') +export class CourseHeadlineCommentController { + constructor( + private readonly courseHeadlineCommentService: CourseHeadlineCommentService, + ) {} + + // create post comment ********************************************************** + @ApiOperation({ summary: ' ساخت کامنت ' }) + @ApiOkResponse({ + description: 'post comment Dto', + type: Boolean, + }) + @ApiBody({ + type: CreateCourseHeadlineCommentDto, + description: 'create comment Dto', + }) + @UseGuards(AuthGuard) + @Roles(Role.User, Role.Admin) + @ApiBearerAuth() + @Post('create') + @HttpCode(HttpStatus.OK) + async createPostComment( + @CurrentUser() user, + @Body() createCourseHeadlineCommentDto: CreateCourseHeadlineCommentDto, + ): Promise { + try { + await this.courseHeadlineCommentService.create( + user, + createCourseHeadlineCommentDto, + ); + return true; + } catch (err) { + throw err; + } + } + // reply post comment ********************************************************* + @ApiOperation({ summary: ' پاسخ دادن کامنت یک پست ' }) + @ApiOkResponse({ + description: 'PostComment Dto', + type: Boolean, + }) + @ApiBody({ + type: CreateCourseHeadlineCommentDto, + description: 'reply post comment', + }) + @UseGuards(AuthGuard) + @Roles(Role.Admin, Role.User) + @ApiBearerAuth() + @Post('reply') + @HttpCode(HttpStatus.OK) + async replyPostComment( + @CurrentUser() user, + @Body() createCourseHeadlineCommentDto: CreateCourseHeadlineCommentDto, + ): Promise { + try { + await this.courseHeadlineCommentService.reply( + user, + createCourseHeadlineCommentDto, + ); + return true; + } catch (err) { + throw err; + } + } + + // changeStatus postComment ********************************************************************* + @ApiOperation({ summary: 'change status' }) + @ApiOkResponse({ + description: 'api status', + type: Boolean, + }) + @ApiBody({ + type: StatusCommentDto, + description: 'change status ', + }) + @Patch('status') + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.Admin) + @ApiBearerAuth() + async changeStatus(@Body() statusCommentDto: StatusCommentDto): Promise { + try { + await this.courseHeadlineCommentService.changeStatus(statusCommentDto); + return { status: true }; + } catch (err) { + throw err; + } + } +} diff --git a/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.module.ts b/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.module.ts new file mode 100644 index 0000000..8f4abf2 --- /dev/null +++ b/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.module.ts @@ -0,0 +1,17 @@ +import { Module } from '@nestjs/common'; +import { CourseHeadlineCommentController } from './courseHeadlineComment.controller'; +import { CourseHeadlineCommentService } from './courseHeadlineComment.service'; +import { CourseHeadlineDataAccess } from '../../../dataAccess/courseHeadline.dataAccess'; +import { CourseHeadlineCommentDataAccess } from '../../../dataAccess/courseHeadlineComment.dataAccess'; +import { UserDataAccess } from '../../../dataAccess/user.dataAccess'; + +@Module({ + controllers: [CourseHeadlineCommentController], + providers: [ + CourseHeadlineCommentService, + CourseHeadlineCommentDataAccess, + CourseHeadlineDataAccess, + UserDataAccess, + ], +}) +export class CourseHeadlineCommentModule {} diff --git a/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.service.ts b/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.service.ts new file mode 100644 index 0000000..7461129 --- /dev/null +++ b/src/application/courseHeadline/courseHeadlineComment/courseHeadlineComment.service.ts @@ -0,0 +1,93 @@ +import mongoose from 'mongoose'; +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { CourseHeadlineDataAccess } from '../../../dataAccess/courseHeadline.dataAccess'; +import { CourseHeadlineCommentDataAccess } from '../../../dataAccess/courseHeadlineComment.dataAccess'; +import { ItemStatusCourseHeadline } from '../../../common/eNums/itemStatusCourseHeadline.enum'; +import { CreateCourseHeadlineCommentDto } from '../../../DTO/courseHeadlineComment.dto'; +import { ItemStatus } from '../../../common/eNums/itemStatus.enum'; +@Injectable() +export class CourseHeadlineCommentService { + constructor( + private courseHeadlineDataAccess: CourseHeadlineDataAccess, + private courseHeadlineCommentDataAccess: CourseHeadlineCommentDataAccess, + ) {} + // create *************************************************** + async create( + userInf, + createCourseHeadlineCommentDto: CreateCourseHeadlineCommentDto, + ): Promise { + const { text, id } = createCourseHeadlineCommentDto; + const courseHeadline = await this.courseHeadlineDataAccess.getHeadline(id); + if ( + !courseHeadline || + courseHeadline.status !== ItemStatusCourseHeadline.Completed + ) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'سرفصل دوره وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } else { + const comment = await this.courseHeadlineCommentDataAccess.create( + id, + userInf.id, + text, + ); + courseHeadline.Comment.push(comment._id ? comment._id : comment.id); + courseHeadline.save(); + return true; + } + } + // replay ******************************************************* + async reply( + userInf, + createCourseHeadlineCommentDto: CreateCourseHeadlineCommentDto, + ): Promise { + const { text, id } = createCourseHeadlineCommentDto; + + const courseHeadlineComment = + await this.courseHeadlineCommentDataAccess.findById(id); + if ( + !courseHeadlineComment || + courseHeadlineComment.status !== ItemStatus.Active + ) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'کامنت وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } else { + const replyComment = + await this.courseHeadlineCommentDataAccess.replyComment( + courseHeadlineComment.courseHeadline._id, + id, + userInf.id, + text, + ); + courseHeadlineComment.Replies.push(replyComment.id); + courseHeadlineComment.save(); + return true; + } + } + + async changeStatus(statusPostCommentDto): Promise { + const { id, status } = statusPostCommentDto; + const result = await this.courseHeadlineCommentDataAccess.findById(id); + if (!result) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'COMMENT_NOT_FOUND', + }, + HttpStatus.NOT_FOUND, + ); + } + + await this.courseHeadlineCommentDataAccess.changeStatus(id, status); + return true; + } +} diff --git a/src/application/ticket/ticket.controller.ts b/src/application/ticket/ticket.controller.ts new file mode 100644 index 0000000..7fbf82e --- /dev/null +++ b/src/application/ticket/ticket.controller.ts @@ -0,0 +1,123 @@ +import { + Body, + Controller, + DefaultValuePipe, + Get, + HttpCode, + HttpStatus, + Param, + ParseIntPipe, + Patch, + Post, + Query, + UploadedFile, + UseGuards, + UseInterceptors, +} from '@nestjs/common'; +import { TicketService } from './ticket.service'; +import { + ApiBearerAuth, + ApiBody, + ApiOperation, + ApiQuery, +} from '@nestjs/swagger'; +import { CreateTicketDto, CreateTicketMessageDto } from '../../DTO/ticket.dto'; +import { CurrentUser } from '../../decorators/currentUser.decorator'; +import { AuthGuard } from '../../auth/auth.guard'; +import { ApiTags } from '@nestjs/swagger'; +import { UploaderService } from '../common/uploader/uploader.service'; +import { FileInterceptor } from '@nestjs/platform-express'; +import { Roles } from '../../decorators/role.decorators'; +import { Role } from '../../common/eNums/role.enum'; +@ApiTags('ticket') +@Controller('ticket') +export class TicketController { + constructor( + private ticketService: TicketService, + private uploaderService: UploaderService, + ) {} + + @ApiOperation({ + summary: 'ایجاد تیکت', + }) + @ApiBody({ + type: CreateTicketDto, + description: 'get body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.User, Role.Admin) + @Post() + @HttpCode(HttpStatus.CREATED) + async create(@Body() createTicketDto: CreateTicketDto, @CurrentUser() user) { + return this.ticketService.create(createTicketDto, user.id); + } + + @ApiOperation({ + summary: 'لیست تیکت ها', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @ApiQuery({ name: 'page', required: false, type: Number }) + @ApiQuery({ name: 'pageSize', required: false, type: Number }) + @Roles(Role.User, Role.Admin, Role.Reader, Role.Writer) + @Get() + @HttpCode(HttpStatus.OK) + async findAll( + @CurrentUser() user, + @Query('page', new DefaultValuePipe(1), ParseIntPipe) page = 1, + @Query('pageSize', new DefaultValuePipe(10), ParseIntPipe) pageSize = 10, + ) { + return this.ticketService.findAll({ page, pageSize }, user.id); + } + + @ApiOperation({ + summary: 'دریافت تیکت با آیدی', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.User, Role.Admin, Role.Reader, Role.Writer) + @Get(':id') + @HttpCode(HttpStatus.OK) + async findOne(@Param('id') id: string) { + return this.ticketService.findOne(id); + } + + @ApiOperation({ + summary: 'ایجاد پیام تیکت', + }) + @ApiBody({ + type: CreateTicketMessageDto, + description: 'get body', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.User, Role.Admin, Role.Reader, Role.Writer) + @Post('message') + @HttpCode(HttpStatus.CREATED) + async createMessage( + @Body() createTicketMessageDto: CreateTicketMessageDto, + @CurrentUser() user, + ) { + return this.ticketService.createMessage(createTicketMessageDto, user.id); + } + + @ApiOperation({ + summary: 'بستن تیکت', + }) + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Roles(Role.Admin) + @Patch('close/:id') + @HttpCode(HttpStatus.OK) + async closeTicket(@Param('id') id: string) { + return this.ticketService.closeTicket(id); + } + + @Post('upload') + @UseInterceptors(FileInterceptor('file')) + async uploadFile(@UploadedFile() file: Express.Multer.File) { + console.log('file', file); + return this.uploaderService.upload(file, 'ticket'); + } +} diff --git a/src/application/ticket/ticket.module.ts b/src/application/ticket/ticket.module.ts new file mode 100644 index 0000000..1a88215 --- /dev/null +++ b/src/application/ticket/ticket.module.ts @@ -0,0 +1,24 @@ +import { Module } from '@nestjs/common'; +import { TicketController } from './ticket.controller'; +import { TicketService } from './ticket.service'; +import { UserModule } from '../user/user.module'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import { TicketDataAccess } from '../../dataAccess/ticket.dataAccess'; +import { TicketMessageDataAccess } from '../../dataAccess/ticketMessage.dataAccess'; +import { UploaderService } from '../common/uploader/uploader.service'; + +@Module({ + imports: [ + UserModule, + ], + controllers: [TicketController], + providers: [ + TicketService, + TicketDataAccess, + TicketMessageDataAccess, + UserDataAccess, + UploaderService + ], + exports: [TicketService] +}) +export class TicketModule { } diff --git a/src/application/ticket/ticket.service.ts b/src/application/ticket/ticket.service.ts new file mode 100644 index 0000000..35b1294 --- /dev/null +++ b/src/application/ticket/ticket.service.ts @@ -0,0 +1,133 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { CreateTicketDto, CreateTicketMessageDto } from '../../DTO/ticket.dto'; +import { TicketDataAccess } from '../../dataAccess/ticket.dataAccess'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import { Ticket } from '../../models/schemas/ticket.schema'; +import { TicketMessage } from '../../models/schemas/ticketMessage.schema'; +import { TicketMessageDataAccess } from '../../dataAccess/ticketMessage.dataAccess'; +import { PaginationDto } from '../../DTO/pagination.dto'; +import { Role } from '../../common/eNums/role.enum'; + +@Injectable() +export class TicketService { + constructor( + private readonly ticketDataAccess: TicketDataAccess, + private readonly ticketMessageDataAccess: TicketMessageDataAccess, + private readonly userDataAccess: UserDataAccess, + ) {} + + async create( + createTicketDto: CreateTicketDto, + userId: string, + ): Promise<{ message: string }> { + const user = await this.userDataAccess.findOne(userId); + if (!user) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'چنین کاربری یافت نشد', + }, + HttpStatus.NOT_FOUND, + ); + } + const result = await this.ticketDataAccess.create( + createTicketDto.subject, + user._id.toString(), + ); + if (!result) { + throw new HttpException( + { + status: HttpStatus.BAD_REQUEST, + error: 'تیکت با مشکل هایی ثبت نشد', + }, + HttpStatus.BAD_REQUEST, + ); + } + return { message: 'تیکت با موفقیت ثبت شد' }; + } + + async findOne(id: string): Promise { + const result = await this.ticketDataAccess.findOne(id); + if (!result) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'چنین تیکتی یافت نشد', + }, + HttpStatus.NOT_FOUND, + ); + } + return result; + } + + async findAll(paginationDto: PaginationDto, userId: string) { + const user = await this.userDataAccess.findOne(userId); + if (!user) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'چنین کاربری یافت نشد', + }, + HttpStatus.NOT_FOUND, + ); + } + if (user.roles.includes(Role.Admin)) { + const result = await this.ticketDataAccess.findAll( + paginationDto.page, + paginationDto.pageSize, + ); + return result; + } + const result = await this.ticketDataAccess.findAllByUser( + userId, + paginationDto.page, + paginationDto.pageSize, + ); + const count = await this.ticketDataAccess.count(); + + return { result, count }; + } + + async createMessage( + createTicketMessageDto: CreateTicketMessageDto, + userId: string, + ): Promise { + const ticket = await this.ticketDataAccess.findOne( + createTicketMessageDto.ticketId, + ); + if (!ticket) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'چنین تیکتی یافت نشد', + }, + HttpStatus.NOT_FOUND, + ); + } + if (ticket.status === 'closed') { + throw new HttpException( + { + status: HttpStatus.BAD_REQUEST, + error: 'تیکت بسته شده است و نمی‌توان پیام جدیدی ایجاد کرد', + }, + HttpStatus.BAD_REQUEST, + ); + } + const newTicketMessage = await this.ticketMessageDataAccess.createMessage( + createTicketMessageDto, + userId, + ); + if (ticket) { + ticket.ticketMessages.push( + newTicketMessage._id ? newTicketMessage._id : newTicketMessage.id, + ); + await ticket.save(); + } + return newTicketMessage; + } + + async closeTicket(id: string): Promise<{ message: string }> { + await this.ticketDataAccess.closeTicket(id); + return { message: 'تیکت با موفقیت بسته شد' }; + } +} diff --git a/src/application/user/user.controller.ts b/src/application/user/user.controller.ts new file mode 100644 index 0000000..7d61ebc --- /dev/null +++ b/src/application/user/user.controller.ts @@ -0,0 +1,154 @@ +import { + Body, + Controller, + Get, + HttpCode, + HttpStatus, + Post, + Put, + UseGuards, +} from '@nestjs/common'; +import { UserService } from './user.service'; +import { + ApiBearerAuth, + ApiBody, + ApiOkResponse, + ApiOperation, + ApiTags, +} from '@nestjs/swagger'; +import { Roles } from '../../decorators/role.decorators'; +import { Role } from '../../common/eNums/role.enum'; +import { AuthGuard } from '../../auth/auth.guard'; +import { + AddBalanceDto, + RegisterCourseDto, + UserDto, + UserUpdateDto, +} from '../../DTO/user.dto'; +import { CurrentUser } from '../../decorators/currentUser.decorator'; + +@ApiTags('user') +@Controller('user') +export class UserController { + constructor(private readonly userService: UserService) {} + + // profile user ************************************ + @ApiOperation({ + summary: ' پروفایل کاربر ', + }) + @ApiOkResponse({ + description: ' اطلاعات کاربر ', + type: UserDto, + }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.User, Role.Admin) + @ApiBearerAuth() + @Get('') + async getProfile(@CurrentUser() user) { + try { + const result = await this.userService.profile(user.id); + return result; + } catch (err) { + throw err; + } + } + + // update user ************************************ + @ApiOperation({ + summary: ' بروز رسانی پروفایل کاربر ', + }) + @ApiOkResponse({ + description: ' UserDto ', + type: UserDto, + }) + @ApiBody({ + type: UserUpdateDto, + description: 'get body', + }) + @HttpCode(HttpStatus.OK) + @UseGuards(AuthGuard) + @Roles(Role.User, Role.Admin) + @ApiBearerAuth() + @Put('update') + async updateUser( + @CurrentUser() user, + @Body() userUpdateDto: UserUpdateDto, + ): Promise { + try { + const result = await this.userService.update(user.id, userUpdateDto); + return result; + } catch (err) { + throw err; + } + } + + // update user ************************************ + @ApiOperation({ + summary: 'ثبت نام دوره', + }) + @ApiBody({ + type: RegisterCourseDto, + description: 'get body', + }) + @UseGuards(AuthGuard) + @Roles(Role.User) + @ApiBearerAuth() + @Post('registerCourse') + async registerCourse( + @CurrentUser() user, + @Body() registerCourseDto: RegisterCourseDto, + ) { + try { + const result = await this.userService.registerCourse( + user.id, + registerCourseDto, + ); + return result; + } catch (err) { + throw err; + } + } + + @ApiOperation({ + summary: 'افزایش موجودی کیف پول', + }) + @ApiBody({ + type: AddBalanceDto, + description: 'get body', + }) + @UseGuards(AuthGuard) + @Roles(Role.User) + @ApiBearerAuth() + @Post('add') + addBalance(@CurrentUser() user, @Body() addBalanceDto: AddBalanceDto) { + return this.userService.addBalance( + user.id, + addBalanceDto.amount, + addBalanceDto.paymentNumber, + addBalanceDto.reason, + ); + } + + @ApiOperation({ + summary: 'موجودی کیف پول', + }) + @UseGuards(AuthGuard) + @Roles(Role.User) + @ApiBearerAuth() + @Get('balance') + getBalance(@CurrentUser() user) { + return this.userService.getBalance(user.id); + } + + @ApiOperation({ + summary: 'لیست تراکنش ها', + }) + @UseGuards(AuthGuard) + @Roles(Role.User) + @ApiBearerAuth() + @Get('payments') + getPayments(@CurrentUser() user) { + return this.userService.getPayments(user.id); + } +} diff --git a/src/application/user/user.module.ts b/src/application/user/user.module.ts new file mode 100644 index 0000000..033a653 --- /dev/null +++ b/src/application/user/user.module.ts @@ -0,0 +1,24 @@ +import { Module } from '@nestjs/common'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import { UserService } from './user.service'; +import { UserController } from './user.controller'; +import { DiscountDataAccess } from '../../dataAccess/discount.dataAccess'; +import { UserDiscountDataAccess } from '../../dataAccess/userDiscount.dataAccess'; +import { DiscountHistoryDataAccess } from '../../dataAccess/discountHistory.dataAccess'; +import { PaymentDataAccess } from '../../dataAccess/payment.dataAccess'; +import { CourseHeadlineDataAccess } from '../../dataAccess/courseHeadline.dataAccess'; + +@Module({ + imports: [], + controllers: [UserController], + providers: [ + UserService, + UserDataAccess, + UserDiscountDataAccess, + DiscountHistoryDataAccess, + DiscountDataAccess, + PaymentDataAccess, + CourseHeadlineDataAccess, + ], +}) +export class UserModule {} diff --git a/src/application/user/user.service.ts b/src/application/user/user.service.ts new file mode 100644 index 0000000..7a6fdc2 --- /dev/null +++ b/src/application/user/user.service.ts @@ -0,0 +1,189 @@ +import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { + RegisterCourseDto, + UserDto, + userObj, + UserUpdateDto, +} from '../../DTO/user.dto'; +import { UserDataAccess } from '../../dataAccess/user.dataAccess'; +import { DiscountDataAccess } from '../../dataAccess/discount.dataAccess'; +import { UserDiscountDataAccess } from '../../dataAccess/userDiscount.dataAccess'; +import { DiscountHistoryDataAccess } from '../../dataAccess/discountHistory.dataAccess'; +import { PaymentDataAccess } from '../../dataAccess/payment.dataAccess'; +import { CourseHeadlineDataAccess } from '../../dataAccess/courseHeadline.dataAccess'; + +@Injectable() +export class UserService { + constructor( + private readonly userDataAccess: UserDataAccess, + private readonly courseHeadlineDataAccess: CourseHeadlineDataAccess, + private readonly discountDataAccess: DiscountDataAccess, + private readonly userDiscountDataAccess: UserDiscountDataAccess, + private readonly discountHistoryDataAccess: DiscountHistoryDataAccess, + private readonly paymentDataAccess: PaymentDataAccess, + ) {} + + async profile(id) { + const result = await this.userDataAccess.findOne(id); + let arr = []; + await Promise.all( + result.courseIds.map(async (item) => { + const courseHeadlines = + await this.courseHeadlineDataAccess.getCourseHeadlines(item._id); + const totalHeadlines = courseHeadlines.length; + let completionPercentage = 0; + console.log(result.courseHeadlineProgress); + if (result.courseHeadlineProgress) { + const completedHeadlines = result.courseHeadlineProgress.filter( + (progress) => + courseHeadlines.some( + (headline) => headline._id.toString() === progress.toString(), + ), + ).length; + + completionPercentage = (completedHeadlines / totalHeadlines) * 100; + } + arr.push({ item, completionPercentage }); + }), + ); + console.log(arr); + + return { user: userObj(result), com: arr }; + } + // update profile + async update(userId, userUpdateDto: UserUpdateDto): Promise { + const { avatarMedia, name, lastName, userName, email } = userUpdateDto; + + const user = await this.userDataAccess.findOne(userId); + if (!user) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' کاربر وجود ندارد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + // TODO:cityId check + // TODO:proId check + // TODO:avatarId check + await this.userDataAccess.update( + userId, + avatarMedia, + name, + lastName, + userName, + email, + ); + return true; + } + + async registerCourse(userId: string, registerCourseDto: RegisterCourseDto) { + const { code } = registerCourseDto; + if (code) { + const result = await this.discountDataAccess.findCode( + registerCourseDto.code, + ); + if (!result) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'تخفیف مورد نظر موجود نمی باشد', + }, + HttpStatus.NOT_FOUND, + ); + } + + if (result.allUsers === true) { + const userDiscount = await this.userDiscountDataAccess.findOne( + result.id, + userId, + ); + if (!userDiscount) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'تخفیف برای شما نمی باشد', + }, + HttpStatus.NOT_FOUND, + ); + } + const discountHistory = await this.discountHistoryDataAccess.findOne( + result.id, + userId, + ); + if (discountHistory) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' شما از این تخفیف استفاده کردید ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + await this.discountHistoryDataAccess.create( + result, + userDiscount, + userId, + ); + } else { + const discountHistory = await this.discountHistoryDataAccess.findOne( + result.id, + userId, + ); + if (discountHistory) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' شما از این تخفیف استفاده کردید ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + await this.discountHistoryDataAccess.create(result, null, userId); + } + } + + return await this.userDataAccess.registerCourse( + userId, + registerCourseDto.courseId, + ); + } + + async addBalance( + userId: string, + amount: number, + paymentNumber: string, + reason: string, + ) { + const user = await this.userDataAccess.findOne(userId); + const payment = await this.paymentDataAccess.createPayment( + userId, + amount, + paymentNumber, + reason, + ); + user.walletBalance += amount; + return await user.save(); + } + + async getBalance(userId: string): Promise { + const user = await this.userDataAccess.findOne(userId); + return user.walletBalance; + } + + async getPayments(userId: string) { + const user = await this.userDataAccess.findOne(userId); + if (!user) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'کاربر وجود ندارد', + }, + HttpStatus.NOT_FOUND, + ); + } + const payments = await this.paymentDataAccess.getPaymentsByUserId(userId); + return payments; + } +} diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts new file mode 100644 index 0000000..bc06405 --- /dev/null +++ b/src/auth/auth.controller.ts @@ -0,0 +1,52 @@ +import { Body, Controller, HttpCode, HttpStatus, Post } from '@nestjs/common'; +import { AuthService } from './auth.service'; +import { ApiBody, ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger'; +import { + LoginDto, + LoginRes, + LoginStepTwoDto, + UserMidDto, +} from '../DTO/user.dto'; +import { IpAddress } from '../decorators/ipAddress.decorator'; + +@ApiTags('auth') +@Controller('auth') +export class AuthController { + constructor(private authService: AuthService) {} + @ApiOperation({ + summary: ' ورود / ثبت نام مرحله یک ', + }) + @ApiOkResponse({ + description: ' ارسال پیام ', + type: LoginRes, + }) + @ApiBody({ + type: LoginDto, + description: 'get body', + }) + @HttpCode(HttpStatus.OK) + @Post('login') + signIn( + @Body() loginDto: LoginDto, + @IpAddress() ip: string, + ): Promise { + return this.authService.signIn(loginDto, ip); + } + // login step two ******************** + @ApiOperation({ + summary: ' ورود / ثبت نام مرحله دو ', + }) + @ApiOkResponse({ + description: ' جزئیات کاربر ', + type: UserMidDto, + }) + @ApiBody({ + type: LoginStepTwoDto, + description: 'get body', + }) + @HttpCode(HttpStatus.OK) + @Post('login-step-two') + signVerify(@Body() loginStepTwoDto: LoginStepTwoDto): Promise { + return this.authService.signInStepTwoVerify(loginStepTwoDto); + } +} diff --git a/src/auth/auth.guard.ts b/src/auth/auth.guard.ts new file mode 100644 index 0000000..bab3d15 --- /dev/null +++ b/src/auth/auth.guard.ts @@ -0,0 +1,62 @@ +import { + CanActivate, + ExecutionContext, + Injectable, + UnauthorizedException, +} from '@nestjs/common'; +import { JwtService } from '@nestjs/jwt'; +import { jwtConstants } from './constants'; +import { Request } from 'express'; +import { UserDataAccess } from '../dataAccess/user.dataAccess'; +import { Reflector } from '@nestjs/core'; +import { Role } from '../common/eNums/role.enum'; +import { ROLES_KEY } from '../decorators/role.decorators'; + +@Injectable() +export class AuthGuard implements CanActivate { + constructor( + private jwtService: JwtService, + private reflector: Reflector, + private readonly userDataAccess: UserDataAccess, + ) {} + + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + const token = this.extractTokenFromHeader(request); + + if (!token) { + throw new UnauthorizedException(); + } + + try { + const payload = await this.jwtService.verifyAsync(token, { + secret: jwtConstants.secret, + }); + + const user = await this.userDataAccess.findOne(payload.id); + + if (!user) { + throw new UnauthorizedException(); + } + + const requiredRoles = this.reflector.getAllAndOverride( + ROLES_KEY, + [context.getHandler(), context.getClass()], + ); + if (!requiredRoles) { + return true; + } + request['user'] = payload; + return requiredRoles.some((role) => user.roles?.includes(role)); + } catch { + throw new UnauthorizedException(); + } + return true; + } + + private extractTokenFromHeader(request: Request): string | undefined { + const [type, token] = request.headers.authorization?.split(' ') ?? []; + + return type === 'Bearer' ? token : undefined; + } +} diff --git a/src/auth/auth.module.ts b/src/auth/auth.module.ts new file mode 100644 index 0000000..8487405 --- /dev/null +++ b/src/auth/auth.module.ts @@ -0,0 +1,43 @@ +import { Module } from '@nestjs/common'; +import { AuthService } from './auth.service'; +import { UserModule } from '../application/user/user.module'; +import { UserService } from '../application/user/user.service'; +import { JwtModule } from '@nestjs/jwt'; +import { AuthController } from './auth.controller'; +import { jwtConstants } from './constants'; +import { Tools } from '../common/helpers/tools.helpers'; +import { UserSmsDataAccess } from '../dataAccess/userSms.dataAccess'; +import { UserDataAccess } from '../dataAccess/user.dataAccess'; +import { DiscountDataAccess } from '../dataAccess/discount.dataAccess'; +import { connectionListener } from '../common/listeners/connection.listeners'; +import { UserDiscountDataAccess } from '../dataAccess/userDiscount.dataAccess'; +import { DiscountHistoryDataAccess } from '../dataAccess/discountHistory.dataAccess'; +import { PaymentDataAccess } from '../dataAccess/payment.dataAccess'; +import { CourseHeadlineDataAccess } from '../dataAccess/courseHeadline.dataAccess'; + +@Module({ + imports: [ + UserModule, + JwtModule.register({ + global: true, + secret: jwtConstants.secret, + signOptions: { expiresIn: '604800s' }, + }), + ], + providers: [ + AuthService, + UserService, + Tools, + UserSmsDataAccess, + UserDataAccess, + DiscountHistoryDataAccess, + connectionListener, + UserDiscountDataAccess, + DiscountDataAccess, + PaymentDataAccess, + CourseHeadlineDataAccess, + ], + controllers: [AuthController], + exports: [AuthService], +}) +export class AuthModule {} diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts new file mode 100644 index 0000000..f355a56 --- /dev/null +++ b/src/auth/auth.service.ts @@ -0,0 +1,141 @@ +import { HttpException, Injectable, HttpStatus } from '@nestjs/common'; +import { JwtService } from '@nestjs/jwt'; +import { Tools } from '../common/helpers/tools.helpers'; +import { + LoginDto, + LoginStepTwoDto, + UserMidDto, + userMidObj, +} from '../DTO/user.dto'; +import { EventEmitter2 } from '@nestjs/event-emitter'; +import { UserSmsDataAccess } from '../dataAccess/userSms.dataAccess'; +import { UserDataAccess } from '../dataAccess/user.dataAccess'; +import * as moment from 'moment'; +import { PhoneEvent } from '../common/events/phone.event'; +const env = process.env.NODE_ENV; + +@Injectable() +export class AuthService { + constructor( + private eventEmitter: EventEmitter2, + private jwtService: JwtService, + private readonly tools: Tools, + private readonly userSmsDataAccess: UserSmsDataAccess, + private readonly userDataAccess: UserDataAccess, + ) {} + + async signIn(loginDto: LoginDto, ip): Promise<{ message: string }> { + const { phone, type } = loginDto; + const phoneConfirm = this.tools.removeZero(phone); + const validNumber = this.tools.validNumberWithRegex(phoneConfirm); + if (validNumber == false) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: 'شماره وارد شده معتبر نیست', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + const code = this.tools.codeCreator(); + const createdEvent = new PhoneEvent(); + createdEvent.phone = phone; + createdEvent.code = code; + const smsRq = await this.userSmsDataAccess.findSmsRq(phoneConfirm, ip); + if (parseInt(type) === 1 || parseInt(type) === 2) { + if (smsRq) { + if (smsRq.sendCount > 1000) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: 'شما بیش از حد تلاش کرده اید', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + const now = moment(new Date()); + const secondsDiff = now.diff(moment(smsRq.lastSentTime), 'seconds'); + if (secondsDiff < 60 && smsRq.phone === phoneConfirm) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: 'برای ارسال کد جدید 1 دقیقه صبر کنید', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + const sendCount = smsRq.sendCount + 1; + + if (env !== 'development' && env !== 'test') { + if (parseInt(type) === 1) { + this.eventEmitter.emit('sms.created', createdEvent); + } else { + this.eventEmitter.emit('call.created', createdEvent); + } + } + await this.userSmsDataAccess.updateSmsRq( + smsRq.id, + phoneConfirm, + sendCount, + ip, + code, + ); + return { message: 'کد با موفقیت ارسال شد' }; + } else { + if (env !== 'development' && env !== 'test') { + if (parseInt(type) === 1) { + this.eventEmitter.emit('sms.created', createdEvent); + } else { + this.eventEmitter.emit('call.created', createdEvent); + } + } + + await this.userSmsDataAccess.createSmsRq(phoneConfirm, ip, code); + return { + message: 'کد با موفقیت ارسال شد', + }; + } + } else { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' نوع ارتباط به درستی وارد نشده است ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + } + + async signInStepTwoVerify( + loginStepTwoDto: LoginStepTwoDto, + ): Promise { + const { phone, code } = loginStepTwoDto; + const smsRq = await this.userSmsDataAccess.validateCode(phone, code); + if (!smsRq) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: 'کد اشتباه می باشد', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + const userExist = await this.userDataAccess.findByPhone(phone); + if (!userExist) { + const user = await this.userDataAccess.create(phone); + const payload = { id: user.id }; + const jwtConf = await this.jwtService.signAsync(payload); + await this.userDataAccess.updateJwt(user.id, jwtConf); + const userSubmit = await this.userDataAccess.findOne(user.id); + await this.userSmsDataAccess.deleteSms(smsRq.id); + return userMidObj(userSubmit); + } else { + const payload = { id: userExist.id }; + const jwtConf = await this.jwtService.signAsync(payload); + await this.userDataAccess.updateJwt(userExist.id, jwtConf); + const finalUser = await this.userDataAccess.findOne(userExist.id); + await this.userSmsDataAccess.deleteSms(smsRq.id); + return userMidObj(finalUser); + } + } +} diff --git a/src/auth/constants.ts b/src/auth/constants.ts new file mode 100644 index 0000000..19f6d69 --- /dev/null +++ b/src/auth/constants.ts @@ -0,0 +1,3 @@ +export const jwtConstants = { + secret: '8FWQDF%$ERDFGH#$FDSJ&*#@R1!34Vh', +}; diff --git a/src/common/eNums/commentType.enum.ts b/src/common/eNums/commentType.enum.ts new file mode 100644 index 0000000..6b7f771 --- /dev/null +++ b/src/common/eNums/commentType.enum.ts @@ -0,0 +1,9 @@ +const commentType = { + Course: 'دوره', + BlogPost: 'پست بلاگ', +}; +export default commentType; +export enum CommentType { + 'Course' = 'Course', + 'BlogPost' = 'BlogPost', +} diff --git a/src/common/eNums/discountStatus.enum.ts b/src/common/eNums/discountStatus.enum.ts new file mode 100644 index 0000000..2b082cc --- /dev/null +++ b/src/common/eNums/discountStatus.enum.ts @@ -0,0 +1,11 @@ +const discountStatus = { + active: { + code: true, + text: 'فعال', + }, + deActive: { + code: false, + text: 'غیرفعال', + }, +}; +export default discountStatus; diff --git a/src/common/eNums/discountType.enum.ts b/src/common/eNums/discountType.enum.ts new file mode 100644 index 0000000..389773f --- /dev/null +++ b/src/common/eNums/discountType.enum.ts @@ -0,0 +1,9 @@ +const discountTypeEnum = { + percent: 'درصد', + price: 'قیمت واحد', +}; +export default discountTypeEnum; +export enum DiscountTypeEnum { + 'percent' = 'percent', + 'price' = 'price', +} diff --git a/src/common/eNums/discountUser.enum.ts b/src/common/eNums/discountUser.enum.ts new file mode 100644 index 0000000..426e9e7 --- /dev/null +++ b/src/common/eNums/discountUser.enum.ts @@ -0,0 +1,11 @@ +const discountUser = { + public: { + code: true, + text: 'عمومی', + }, + private: { + code: false, + text: 'خاص', + }, +}; +export default discountUser; diff --git a/src/common/eNums/gender.enum.ts b/src/common/eNums/gender.enum.ts new file mode 100644 index 0000000..70fe397 --- /dev/null +++ b/src/common/eNums/gender.enum.ts @@ -0,0 +1,9 @@ +const gender = { + Men: 'مرد', + Women: 'زن', +}; +export default gender; +export enum Gender { + 'Men' = 'Men', + 'Women' = 'Women', +} diff --git a/src/common/eNums/itemStatus.enum.ts b/src/common/eNums/itemStatus.enum.ts new file mode 100644 index 0000000..ec1c2f5 --- /dev/null +++ b/src/common/eNums/itemStatus.enum.ts @@ -0,0 +1,13 @@ +const itemStatuses = { + Active: 'فعال', + DeActivate: 'غیر فعال', + Archived: 'بایگانی شده', + Pending: 'در حال بررسی', +}; +export default itemStatuses; +export enum ItemStatus { + 'Active' = 'Active', + 'DeActivate' = 'DeActivate', + 'Archived' = 'Archived', + 'Pending' = 'Pending', +} diff --git a/src/common/eNums/itemStatusCourseHeadline.enum.ts b/src/common/eNums/itemStatusCourseHeadline.enum.ts new file mode 100644 index 0000000..89e37ca --- /dev/null +++ b/src/common/eNums/itemStatusCourseHeadline.enum.ts @@ -0,0 +1,13 @@ +const itemStatusCourseHeadline = { + Completed: 'تکمیل شده', + DeActivate: 'غیر فعال', + Recording: 'درحال ضبط', + Soon: 'بزودی', +}; +export default itemStatusCourseHeadline; +export enum ItemStatusCourseHeadline { + 'Completed' = 'Completed', + 'DeActivate' = 'DeActivate', + 'Recording' = 'Recording', + 'Soon' = 'Soon', +} diff --git a/src/common/eNums/role.enum.ts b/src/common/eNums/role.enum.ts new file mode 100644 index 0000000..020feb7 --- /dev/null +++ b/src/common/eNums/role.enum.ts @@ -0,0 +1,13 @@ +const role = { + Admin: 'ادمین', + Reader: 'مشاهده کننده', + Writer: 'نویسنده', + User: 'کاربر', +}; +export default role; +export enum Role { + 'Admin' = 'Admin', + 'Reader' = 'Reader', + 'Writer' = 'Writer', + 'User' = 'User', +} diff --git a/src/common/events/phone.event.ts b/src/common/events/phone.event.ts new file mode 100644 index 0000000..95b3161 --- /dev/null +++ b/src/common/events/phone.event.ts @@ -0,0 +1,4 @@ +export class PhoneEvent { + phone: string; + code: number; +} diff --git a/src/common/helpers/convertDate.helper.ts b/src/common/helpers/convertDate.helper.ts new file mode 100644 index 0000000..440e254 --- /dev/null +++ b/src/common/helpers/convertDate.helper.ts @@ -0,0 +1,148 @@ +import jalali = require('jalali-moment'); + +export class ConvertDate { + jalaliDate(date) { + const jalaliDate = jalali(date).locale('fa'); + const month = jalaliDate.format('MMMM'); + const day = jalaliDate.format('DD'); + const year = jalaliDate.format('YYYY'); + return `${day}-${month}-${year}`; + } + jalaliDateWithTime(date) { + const jalaliDate = jalali(date).locale('fa'); + const month = jalaliDate.format('MM'); + const day = jalaliDate.format('DD'); + const year = jalaliDate.format('YYYY'); + const hour = jalaliDate.format('HH'); + const minute = jalaliDate.format('mm'); + const second = jalaliDate.format('ss'); + return `${year}/${month}/${day} - ${hour}:${minute}:${second}`; + } + jalaliDateResume(date) { + const jalaliDate = jalali(date).locale('fa'); + const month = jalaliDate.format('MM'); + const day = jalaliDate.format('DD'); + const year = jalaliDate.format('YYYY'); + return `${year}/${month}/${day}`; + } + jalaliDateMonth(date) { + const jalaliDate = jalali(date).locale('fa'); + const month = jalaliDate.format('MMMM'); + return `${month}`; + } + jalaliDateDay(date) { + const jalaliDate = jalali(date).locale('fa'); + const day = jalaliDate.format('DD'); + return `${day}`; + } + jalaliDateYear(date) { + const jalaliDate = jalali(date).locale('fa'); + const year = jalaliDate.format('YYYY'); + return `${year}`; + } + jTime(date) { + const jalaliDate = jalali(date).locale('fa'); + const hour = jalaliDate.format('HH'); + const minute = jalaliDate.format('mm'); + const second = jalaliDate.format('ss'); + return `${hour}:${minute}:${second}`; + } + georgianDate(date) { + const georgianDate = jalali.from(date, 'fa', 'YYYY-MM-DD HH:mm:ss'); + const month = georgianDate.format('MM'); + const day = georgianDate.format('DD'); + const year = georgianDate.format('YYYY'); + const hour = georgianDate.format('HH'); + const minute = georgianDate.format('mm'); + const second = georgianDate.format('ss'); + return `${year}-${month}-${day} ${hour}:${minute}:${second}`; + } + DateAndTimePublication(date) { + let kabise = 1403; + let kabiseStatus = false; + const georgianDate = jalali(date).locale('fa'); + let month = parseInt(georgianDate.format('MM')); + let day = parseInt(georgianDate.format('DD')); + let year = parseInt(georgianDate.format('YYYY')); + let hour = parseInt(georgianDate.format('HH')); + let minute = parseInt(georgianDate.format('mm')); + let second = parseInt(georgianDate.format('ss')); + const month2 = georgianDate.format('MMMM'); + const day2 = georgianDate.format('DD'); + const year2 = georgianDate.format('YYYY'); + + const now = new Date(); + const georgianDateNow = jalali(now).locale('fa'); + let monthNow = parseInt(georgianDateNow.format('MM')); + let dayNow = parseInt(georgianDateNow.format('DD')); + let yearNow = parseInt(georgianDateNow.format('YYYY')); + let hourNow = parseInt(georgianDateNow.format('HH')); + let minuteNow = parseInt(georgianDateNow.format('mm')); + let secondNow = parseInt(georgianDateNow.format('ss')); + + if (secondNow < second) { + minuteNow -= 1; + secondNow += 60; + } + if (minuteNow < minute) { + hourNow -= 1; + minuteNow += 60; + } + if (hourNow < hour) { + dayNow -= 1; + hourNow += 24; + } + if (dayNow < day) { + while (kabise < yearNow) { + kabise += 4; + if (kabise === yearNow) { + kabiseStatus = true; + } + } + if (monthNow < 7) { + dayNow += 31; + } else if (kabiseStatus === true && monthNow > 6) { + dayNow += 30; + } else if (monthNow === 12) { + dayNow += 29; + } else { + dayNow += 30; + } + monthNow -= 1; + } + if (monthNow < month) { + yearNow -= 1; + monthNow += 12; + } + + second = secondNow - second; + minute = minuteNow - minute; + hour = hourNow - hour; + day = dayNow - day; + month = monthNow - month; + year = yearNow - year; + + if (year === 0) { + if (month === 0) { + if (day === 0) { + if (hour === 0) { + if (minute === 0) { + if (second === 0) { + return 'هم اکنون'; + } + return `${second} ثانیه قبل`; + } + return `${minute} دقیقه قبل`; + } + return `${hour} ساعت قبل`; + } + if (day < 8) { + return `${day} روز قبل`; + } + return `${day2} ${month2} ${year2}`; + } + return `${day2} ${month2} ${year2}`; + } + return `${day2} ${month2} ${year2}`; + } +} diff --git a/src/common/helpers/tools.helpers.ts b/src/common/helpers/tools.helpers.ts new file mode 100644 index 0000000..59f6e79 --- /dev/null +++ b/src/common/helpers/tools.helpers.ts @@ -0,0 +1,113 @@ +import smsRequest = require('request'); +const env = process.env.NODE_ENV; +const { getVideoDurationInSeconds } = require('get-video-duration'); + +export class Tools { + convertToSlug(Text) { + return Text.toLowerCase() + .replace(/ /g, '-') + .replace(/-{6}/g, '-') + .replace(/-{5}/g, '-') + .replace(/-{4}/g, '-') + .replace(/-{3}/g, '-') + .replace(/--/g, '-') + .replace(/,/g, '') + .replace(/–/g, '') + .replace(/،/g, '') + .replace(/#/g, '') + .replace(/@/g, '') + .replace(/$/g, '') + .replace(/!/g, '') + .replace(/&/g, '') + .replace(/؟/g, '') + .replace(/-{6}/g, '-') + .replace(/-{5}/g, '-') + .replace(/-{4}/g, '-') + .replace(/-{3}/g, '-'); + // .replace(new RegExp('(', 'g'), '') + // .replace(new RegExp(')', 'g'), '') + // .replace(new RegExp('"', 'g'), '') + // .replace(new RegExp("'", 'g'), '') + // .replace(new RegExp(`/`, 'g'), '') + // .replace(new RegExp('?', 'g'), ''); + } + codeCreator() { + if (env !== 'development' && env !== 'test') { + const val = Math.floor(1000 + Math.random() * 8999); + return val; + } else { + return 1234; + } + } + + async sendSmsCode(phone, code) { + const receptor = phone; + const template = ''; + const type = 'sms'; + const apiKey = ''; + const url = ``; + const options = { + url, + method: 'POST', + form: { + token: code, + receptor: receptor, + template: template, + type: type, + }, + }; + + const result = await smsRequest(options); + + return result; + } + + async callCode(phone, code) { + const receptor = phone; + const template = ''; + const type = 'call'; + const apiKey = ''; + const url = ``; + const options = { + url, + method: 'POST', + form: { + token: code, + receptor: receptor, + template: template, + type: type, + }, + }; + + const result = await smsRequest(options); + + return result; + } + + async timeVideo(url) { + const time = await getVideoDurationInSeconds(url, 'ffprobe'); + return time; + } + + removeZero(phone) { + const tsNumberAsString = phone.toString(); + + if (tsNumberAsString.charAt(0) === '0') { + // If the first digit is zero, return the number as is + return phone; + } else { + // If the first digit is not zero, add a zero in front of it + const modifiedNumberAsString = '0' + tsNumberAsString; + return modifiedNumberAsString; + } + + return tsNumberAsString; + } + + validNumberWithRegex(phone: string) { + const regex = new RegExp( + /^(098|0098|98|\+98|0)?9(0[0-5]|[1 3]\d|2[0-3]|9[0-9]|41)\d{7}$/g, + ); + return regex.test(phone); + } +} diff --git a/src/common/listeners/connection.listeners.ts b/src/common/listeners/connection.listeners.ts new file mode 100644 index 0000000..26e70e1 --- /dev/null +++ b/src/common/listeners/connection.listeners.ts @@ -0,0 +1,53 @@ +import { Injectable } from '@nestjs/common'; +import { OnEvent } from '@nestjs/event-emitter'; +import { PhoneEvent } from '../events/phone.event'; +import Request = require('request'); + +@Injectable() +export class connectionListener { + @OnEvent('sms.created') + async smsCreatedEvent(phoneEvent: PhoneEvent) { + // handle and process "OrderCreatedEvent" event + const { phone, code } = phoneEvent; + const receptor = phone; + const template = ''; + const type = 'sms'; + const apiKey = ''; + const url = ``; + const options = { + url, + method: 'POST', + form: { + token: code, + receptor: receptor, + template: template, + type: type, + }, + }; + const result = await Request(options); + return result; + } + + @OnEvent('call.created') + async callCreatedEvent(phoneEvent: PhoneEvent) { + // handle and process "OrderCreatedEvent" event + const { phone, code } = phoneEvent; + const receptor = phone; + const template = ''; + const type = 'sms'; + const apiKey = ''; + const url = ``; + const options = { + url, + method: 'POST', + form: { + token: code, + receptor: receptor, + template: template, + type: type, + }, + }; + const result = await Request(options); + return result; + } +} diff --git a/src/config/dbConfig.json b/src/config/dbConfig.json index b53b594..6334426 100644 --- a/src/config/dbConfig.json +++ b/src/config/dbConfig.json @@ -1 +1 @@ -{ "mongoDb": "mongodb://127.0.0.1:27017/admin" } +{ "mongoDb": "mongodb://127.0.0.1:27017/dlearn" } diff --git a/src/config/paths.ts b/src/config/paths.ts index f2683e0..3a0ce13 100644 --- a/src/config/paths.ts +++ b/src/config/paths.ts @@ -1,16 +1,16 @@ -import * as path from 'path'; - -const pathes = { - staticFiles: './../public', - viewFiles: './views', - userQrCodeFiles: '../public/user/qrCodes', - uploadedFiles: '/files/', - tinymceUpload: '/tinymceUpload/', - // siteUrl: 'http://172.16.27.32/api', - // clientUrl: 'http://172.16.27.32/api', - siteUrl: 'http://localhost:4123', - clientUrl: 'http://localhost:4123', - appRoot: path.resolve(), -}; - -export default pathes; +import * as path from 'path'; + +const pathes = { + staticFiles: './../public', + viewFiles: './views', + userQrCodeFiles: '../public/user/qrCodes', + uploadedFiles: '/files/', + tinymceUpload: '/tinymceUpload/', + // siteUrl: 'http://172.16.27.32/api', + // clientUrl: 'http://172.16.27.32/api', + siteUrl: 'http://localhost:4123', + clientUrl: 'http://localhost:4123', + appRoot: path.resolve(), +}; + +export default pathes; diff --git a/src/config/swagger.json b/src/config/swagger.json index 9dd1eee..9fdd686 100644 --- a/src/config/swagger.json +++ b/src/config/swagger.json @@ -1,6 +1,6 @@ -{ - "title": "DLearn ", - "description": "DLearn APIs", - "version": "1.0.0", - "tag": "DLearn Apis" -} +{ + "title": "DLearn ", + "description": "DLearn APIs", + "version": "1.0.0", + "tag": "DLearn Apis" +} diff --git a/src/dataAccess/blogCategory.dataAccess.ts b/src/dataAccess/blogCategory.dataAccess.ts new file mode 100644 index 0000000..d0274d2 --- /dev/null +++ b/src/dataAccess/blogCategory.dataAccess.ts @@ -0,0 +1,120 @@ +import { BlogCategory } from '../models/schemas/blogCategory.schema'; +import Models from '../models/index'; +import { ItemStatus } from '../common/eNums/itemStatus.enum'; + +export class CategoryDataAccess { + async findById(id): Promise { + const result = await Models.BlogCategory.findOne({ + _id: id, + }).populate({ + path: 'parentId', + }); + return result; + } + async findByIdAndPopulate(id): Promise { + const result = await Models.BlogCategory.findOne({ + _id: id, + }) + .populate({ + path: 'Posts', + }) + .populate({ + path: 'parent', + }); + return result; + } + + async checkDuplicate(title): Promise { + const category = await Models.BlogCategory.findOne({ + where: { + title: title, + }, + }); + return category; + } + + async pullCate(id, postId): Promise { + await Models.BlogCategory.updateOne( + { _id: id }, + { $pull: { Posts: postId } }, + ); + return true; + } + + async pullCateParents(id, cateId): Promise { + await Models.BlogCategory.updateOne( + { _id: id }, + { $pull: { parents: cateId } }, + ); + return true; + } + + async createCategory(parentId, title, description): Promise { + const category = await Models.BlogCategory.create({ + parentId, + title, + description, + }); + return category; + } + + async findAllBlogCategries(parentId): Promise { + const categories = await Models.BlogCategory.find({ + where: { parentId: parentId }, + order: [['id', 'DESC']], + }); + return categories; + } + + async findAll(parentId): Promise { + const where: any = {}; + if (parentId) { + where.parentId = parentId; + } + const categories = await Models.BlogCategory.find(where) + .populate({ + path: 'parents', + }) + .sort({ createdAt: -1 }); + return categories; + } + + async updateBlogCategory(id, parentId, title, description): Promise { + await Models.BlogCategory.updateOne( + { + _id: id, + }, + { + parentId, + title, + description, + updatedAt: new Date(), + }, + ); + return true; + } + + async changeStatusCategory(id, status): Promise { + await Models.BlogCategory.updateMany( + { + _id: id, + }, + { + status, + }, + ); + return true; + } + + async getAll(): Promise { + const list = await Models.BlogCategory.find({ + where: { + parentId: 0, + active: ItemStatus.Active, + }, + }).populate({ + path: 'parents', + }); + return list; + } +} diff --git a/src/dataAccess/blogPost.dataAccess.ts b/src/dataAccess/blogPost.dataAccess.ts new file mode 100644 index 0000000..7262b1e --- /dev/null +++ b/src/dataAccess/blogPost.dataAccess.ts @@ -0,0 +1,288 @@ +import { BlogPost } from '../models/schemas/blogPost.schema'; +import Models from '../models/index'; +import { ItemStatus } from '../common/eNums/itemStatus.enum'; + +export class BlogPostDataAccess { + async findById(id): Promise { + const result = await Models.BlogPost.findOne({ + _id: id, + }).populate({ + path: 'blogCat', + }); + return result; + } + + async findAllLength(): Promise { + const result = await Models.BlogPost.find(); + return result.length; + } + + async findByIdDetails(_id): Promise { + const result = await Models.BlogPost.findOne({ + _id, + }) + .populate({ + path: 'blogCat', + }) + .populate({ + path: 'admin', + }); + return result; + } + + async checkDuplicate(slug): Promise { + const result = await Models.BlogPost.findOne({ + where: { + slug: slug, + }, + }); + return result; + } + + async checkTitle(title): Promise { + const result = await Models.BlogPost.findOne({ + where: { + title: title, + }, + }); + return result; + } + + async createBlogPostRequest( + admin, + blogCat, + mediaId, + title, + description, + slug, + text, + sort, + mediaAlt, + metaTitle, + metaDescription, + metaKeywords, + isInLanding, + ): Promise { + const result = await Models.BlogPost.create({ + blogCat, + admin, + mediaId, + title, + description, + slug, + text, + sort, + mediaAlt, + metaTitle, + metaDescription, + metaKeywords, + isInLanding, + }); + return result; + } + + async updateSortBlogPost(id) { + // await Models.BlogPost.update( + // { + // sort: id, + // }, + // { + // where: { + // id, + // }, + // }, + // ); + } + + async findBlogPostBySlug(slug): Promise { + const result = await Models.BlogPost.findOne({ + slug: slug, + status: ItemStatus.Active, + }) + .populate({ + path: 'Comment', + }) + .populate({ + path: 'blogCat', + }); + return result; + } + + // eslint-disable-next-line prettier/prettier + async updateBlogPost( + _id, + admin, + blogCat, + mediaId, + title, + description, + text, + writer, + mediaAlt, + metaTitle, + metaDescription, + metaKeywords, + isInLanding, + ): Promise { + await Models.BlogPost.updateOne( + { + _id, + }, + { + admin, + blogCat, + mediaId, + title, + description, + text, + writer, + mediaAlt, + metaTitle, + metaDescription, + metaKeywords, + isInLanding, + status: ItemStatus.DeActivate, + updatedAt: new Date(), + }, + ); + return true; + } + + async changeStatusBlogPost(_id, status): Promise { + await Models.BlogPost.updateOne( + { + _id, + }, + { + status, + updatedAt: new Date(), + }, + ); + return true; + } + + async filterListAndFilter(filterListBlogPostDto): Promise { + const where: any = {}; + const { blogCatId, title, visitCount, status, isInLanding } = + filterListBlogPostDto; + if (title && title.length > 2) { + where.title = { $regex: `${title}` }; + // where.title = `%${title}%`; + } + if (blogCatId) { + where.blogCat = blogCatId; + } + if (visitCount) { + where.visitCount = visitCount; + } + if (status) { + where.status = status; + } + if (isInLanding) { + where.isInLanding = isInLanding; + } + const results = await Models.BlogPost.find( + where, + // order: [['sort', 'DESC']], + // include: [Models.BlogCategory, Models.Media], + ).populate({ + path: 'blogCat', + }); + return results; + } + + async changeSortBlogPost(from, to): Promise { + await Models.BlogPost.updateOne( + { + _id: from.id, + }, + { + sort: to.sort, + }, + ); + await Models.BlogPost.updateOne( + { + _id: to.id, + }, + { + sort: from.sort, + }, + ); + return true; + } + + async updateVisitCount(id, visitCount): Promise { + await Models.BlogPost.updateOne( + { + _id: id, + }, + { + visitCount, + }, + ); + return true; + } + + async listBlogPosts(query) { + const where: any = {}; + const { blogCatId, page, pageSize } = query; + if (blogCatId) { + where.blogCat = blogCatId; + } + + where.status = ItemStatus.Active; + const limit = parseInt(pageSize) || 12; + const offset = (page - 1) * limit; + const results = await Models.BlogPost.find( + where, + // include: [Models.BlogCategory, Models.Media], + ) + .populate({ + path: 'blogCat', + }) + .sort({ createdAt: -1 }) + .skip(offset) + .limit(pageSize); + return results; + } + + async search(title, page, pageSize): Promise { + const limit = parseInt(pageSize) || 12; + const offset = (page - 1) * limit; + const where: any = {}; + if (title && title.length > 2) { + where.title = { $regex: `${title}` }; + } + where.status = ItemStatus.Active; + const result = await Models.BlogPost.find(where) + .populate({ + path: 'blogCat', + }) + .sort({ createdAt: -1 }) + .skip(offset) + .limit(pageSize); + + return result; + } + + async landing() { + // const results = await Models.BlogPost.findAll({ + // where: { + // active: blogStatuses.active.code, + // isInLanding: true, + // }, + // order: [['sort', 'DESC']], + // limit: 8, + // include: [Models.BlogCategory, Models.Media], + // }); + // return results; + } + + async resultListCount(id) { + const count = await Models.BlogPost.countDocuments({ + blogCatId: id, + active: ItemStatus.Active, + }); + return count; + } +} diff --git a/src/dataAccess/blogPostComment.dataAccess.ts b/src/dataAccess/blogPostComment.dataAccess.ts new file mode 100644 index 0000000..1b52ad7 --- /dev/null +++ b/src/dataAccess/blogPostComment.dataAccess.ts @@ -0,0 +1,79 @@ +import { BlogPostComment } from '../models/schemas/blogPostComment.schema'; +import Models from '../models/index'; + +export class BlogPostCommentDataAccess { + async createBlogPostComment(blogPost, user, text): Promise { + const result = await Models.BlogPostComment.create({ + blogPost, + user, + text, + }); + return result; + } + + async replyComment(blogPost, parent, user, text): Promise { + const BlogPostComment = await Models.BlogPostComment.create({ + blogPost, + parent, + user, + text, + }); + return BlogPostComment; + } + + async findById(_id): Promise { + const item = await Models.BlogPostComment.findOne({ + _id, + }) + .populate({ + path: 'blogPost', + }) + .populate({ + path: 'Replies', + }); + return item; + } + + async changeStatus(_id, status): Promise { + await Models.BlogPostComment.updateOne( + { + _id, + }, + { + status, + }, + ); + return true; + } + + async listAndFilter( + filterListBlogPostCommentDto, + ): Promise { + const where: any = {}; + const { postId, status, fromDate, toDate } = filterListBlogPostCommentDto; + if (postId) { + where.blogPost = postId; + } + if (status) { + where.status = status; + } + const from3mounts = new Date(); + from3mounts.setDate(from3mounts.getDate() - 90); + const fromDateWhereC = fromDate || from3mounts; + + const toDateWhereC = toDate || new Date(); + where.createdAt = { + $gte: fromDateWhereC, + $lte: toDateWhereC, + // $between: [fromDateWhereC, toDateWhereC], + }; + where.parent = null; + const list = await Models.BlogPostComment.find(where) + .populate({ + path: 'blogPost', + }) + .sort({ createdAt: -1 }); + + return list; + } +} diff --git a/src/dataAccess/comment.dataAccess.ts b/src/dataAccess/comment.dataAccess.ts new file mode 100644 index 0000000..f8b0f8a --- /dev/null +++ b/src/dataAccess/comment.dataAccess.ts @@ -0,0 +1,91 @@ +import { Comment } from '../models/schemas/comment.schema'; +import { CreateCommentDto } from '../DTO/comment.dto'; +import Models from '../models'; + +export class CommentDataAccess { + async createComment( + createCommentDto: CreateCommentDto, + courseId: string, + userId: string, + ): Promise { + const course = await Models.Course.findById(courseId); + if (!course) { + throw new Error('دوره یافت نشد'); + } + const user = await Models.User.findById(userId); + if (!user) { + throw new Error('کاربر یافت نشد'); + } + createCommentDto.createdBy = user._id ? user._id : user.id; + createCommentDto.course = course._id ? course._id : course.id; + const newComment = await Models.Comment.create(createCommentDto); + if (createCommentDto.parent) { + const parentComment = await Models.Comment.findById( + createCommentDto.parent, + ); + if (!parentComment) { + throw new Error('کامنت والد مدنظر یافت نشد'); + } + parentComment.replies.push( + newComment._id ? newComment._id : newComment.id, + ); + await parentComment.save(); + } + await newComment.save(); + return newComment; + } + + async getComments(): Promise { + const comments = await Models.Comment.find() + .populate('replies') + .populate('createdBy', 'id phone') + .exec(); + return comments; + } + + // async getCommentsByCourseId(courseId: string): Promise { + // const comments = await Models.Comment.find({ course: courseId, parent:null }) + // .populate('replies') + // .populate('createdBy','id phone name') + // .populate({ + // path: 'replies', + // populate: { + // path: 'createdBy', + // select: 'id phone name', + // } + // }) + // .exec(); + // return comments; + // } + + async getCommentsByCourseId(courseId: string): Promise { + const comments = await Models.Comment.find({ + course: courseId, + parent: null, + }) + .populate({ + path: 'replies', + populate: [ + { + path: 'replies', + populate: { + path: 'replies', + populate: { + path: 'replies', + }, + }, + }, + { + path: 'createdBy', + select: 'id name lastName userName avatarMedia createdAt', + }, + ], + }) + .populate( + 'createdBy', + 'id phone name lastName userName avatarMedia createdAt', + ) + .exec(); + return comments; + } +} diff --git a/src/dataAccess/course.dataAccess.ts b/src/dataAccess/course.dataAccess.ts new file mode 100644 index 0000000..ebda680 --- /dev/null +++ b/src/dataAccess/course.dataAccess.ts @@ -0,0 +1,250 @@ +import { Course } from '../models/schemas/course.schema'; +import { + CreateCourseDto, + FilterCategoryPaginationCourseDto, + UpdateCourseDto, +} from '../DTO/course.dto'; +import Models from '../models'; +import { HttpException, HttpStatus } from '@nestjs/common'; +import { Rate } from '../models/schemas/rate.schema'; +import { User } from '../models/schemas/user.schema'; + +export class CourseDataAccess { + async createCourse(createCourseDto: CreateCourseDto): Promise { + const result = await Models.Course.create(createCourseDto); + return result; + } + + async getCourse( + courseId: string, + ): Promise { + const course = await Models.Course.findById(courseId) + .populate('teacher', 'id name lastName') + .populate('categories', 'id name') + .populate({ + path: 'comments', + select: 'text createdAt ', + populate: [ + { path: 'replies', select: 'text createdAt' }, + { path: 'createdBy' }, + ], + strictPopulate: false, + }) + .populate({ + path: 'courseHeadlines', + select: 'headline description time', + }); + + const ratings = await Models.Rate.find({ courseId: courseId }); + const averageRating = + ratings.reduce((acc, curr) => acc + curr.rating, 0) / + (ratings.length || 1); + + return { ...course.toObject(), averageRating } as Course & { + averageRating: number; + }; + } + async getOneCourse(courseId: string): Promise { + const course = await Models.Course.findById(courseId).populate({ + path: 'courseHeadlines', + select: 'headline description ', + }); + return course; + } + async getCourses( + filterCategoryPaginationCourseDto: FilterCategoryPaginationCourseDto, + ): Promise<{ + courses: Array; + count: number; + }> { + let query = {}; + if (filterCategoryPaginationCourseDto.categoryId) { + query['categories'] = filterCategoryPaginationCourseDto.categoryId; + } + + // اضافه کردن فیلتر قیمت + if (filterCategoryPaginationCourseDto.price) { + switch (filterCategoryPaginationCourseDto.price) { + case 'free': + query['price'] = 0; + break; + case 'low_to_high': + query['price'] = { $gt: 0 }; + break; + case 'high_to_low': + query['price'] = { $gt: 0 }; + break; + } + } + + // اضافه کردن فیلتر بر اساس نام دوره + if (filterCategoryPaginationCourseDto.name) { + query['name'] = { + $regex: filterCategoryPaginationCourseDto.name, + $options: 'i', + }; + } + + const coursesQuery = Models.Course.find(query) + .populate('teacher', 'id phone') + .populate('categories', 'id name') + .skip( + (filterCategoryPaginationCourseDto.page - 1) * + filterCategoryPaginationCourseDto.pageSize, + ) + .limit(filterCategoryPaginationCourseDto.pageSize); + + // تنظیم مرتب سازی بر اساس قیمت + if (filterCategoryPaginationCourseDto.price === 'low_to_high') { + coursesQuery.sort('price'); + } else if (filterCategoryPaginationCourseDto.price === 'high_to_low') { + coursesQuery.sort('-price'); + } + + const courses = await coursesQuery; + const count = await Models.Course.countDocuments(query); + + // محاسبه میانگین امتیازات و اضافه کردن به اطلاعات هر دوره + const coursesWithRatings = await Promise.all( + courses.map(async (course) => { + const ratings = await Models.Rate.find({ courseId: course._id }); + const averageRating = + ratings.reduce((acc, curr) => acc + curr.rating, 0) / + (ratings.length || 1); + return { ...course.toObject(), averageRating }; + }), + ); + + return { + courses: coursesWithRatings as (Course & { averageRating: number })[], + count, + }; + } + + async updateCourse(updateCourseDto: UpdateCourseDto): Promise { + const result = await Models.Course.findByIdAndUpdate( + updateCourseDto.id, + updateCourseDto, + { new: true, runValidators: true, omitUndefined: true }, + ); + return result; + } + + async findCoursesByCategory( + categoryId: string, + page: number = 1, + pageSize: number = 12, + ): Promise<{ courses: Course[]; count: number }> { + console.log(categoryId); + const courses = await Models.Course.find({ + categories: { $in: categoryId }, + }) + .skip((page - 1) * pageSize) + .limit(pageSize); + const count = await Models.Course.countDocuments({ + categories: categoryId, + }); + return { courses, count }; + } + + async addRating( + courseId: string, + userId: string, + rating: number, + ): Promise { + const existingRating = await Models.Rate.findOne({ + userId: userId, + courseId: courseId, + }); + if (existingRating) { + throw new HttpException( + { + status: HttpStatus.BAD_REQUEST, + error: 'شما قبلا به این دوره امتیاز داده‌اید', + }, + HttpStatus.BAD_REQUEST, + ); + } + const course = await Models.Course.findById(courseId); + if (!course) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: ' دوره یافت نشد ', + }, + HttpStatus.NOT_FOUND, + ); + } + const user = await Models.User.findById(userId); + if (!user) { + throw new HttpException( + { + status: HttpStatus.NOT_FOUND, + error: 'کاربر یافت نشد', + }, + HttpStatus.NOT_FOUND, + ); + } + if (!course.studentIds.includes(user.id ? user.id : user._id)) { + throw new HttpException( + { + status: HttpStatus.FORBIDDEN, + error: 'شما در این دوره ثبت نام نکرده‌اید و نمی‌توانید امتیاز دهید', + }, + HttpStatus.FORBIDDEN, + ); + } + const rate = Models.Rate.create({ + userId: user.id ? user.id : user._id, + rating, + courseId: course.id ? course.id : course._id, + }); + return rate; + } + + async getRating(courseId: string): Promise { + const ratings = await Models.Rate.find({ courseId: courseId }); + const averageRating = + ratings.reduce((acc, curr) => acc + curr.rating, 0) / + (ratings.length || 1); + console.log(`Average rating for course ${courseId}: ${averageRating}`); + const result = await Models.Rate.find({ courseId: courseId }); + return result; + } + + async getCourseUser(user: string): Promise { + const result = await Models.User.find({ courseIds: user }); + return result; + } + + async deleteCourse(courseId: string): Promise { + const result = await Models.Course.findByIdAndDelete(courseId); + return result; + } + + async findByIdCom(_id) { + await Models.Comment.findById(_id); + return true; + } + async changeStatus(_id, status): Promise { + await Models.Comment.updateOne( + { + _id, + }, + { + status, + }, + ); + return true; + } + + async removeHeadlineFromCourse( + courseId: string, + headlineId: string, + ): Promise { + const result = await Models.Course.findByIdAndUpdate(courseId, { + $pull: { courseHeadlines: headlineId }, + }); + return result; + } +} diff --git a/src/dataAccess/courseCategory.dataAccess.ts b/src/dataAccess/courseCategory.dataAccess.ts new file mode 100644 index 0000000..b5391a9 --- /dev/null +++ b/src/dataAccess/courseCategory.dataAccess.ts @@ -0,0 +1,30 @@ +import { CreateCourseCategoryDto } from "../DTO/courseCategory.dto"; +import Models from "../models"; + +export class CourseCategoryDataAccess { + + async createCourseCategory(createCourseCategoryDto: CreateCourseCategoryDto) { + return await Models.CourseCategory.create(createCourseCategoryDto); + } + + async findAllCourseCategories() { + return await Models.CourseCategory.find({}); + } + + async findCourseCategoryById(id: string) { + return await Models.CourseCategory.findById(id); + } + + async findCourseCategoryByIds(ids: string[]) { + return await Models.CourseCategory.find({ _id: { $in: ids } }); + } + + async deleteCourseCategoryById(id: string) { + return await Models.CourseCategory.findByIdAndDelete(id); + } + + async findCoursesByCategoryId(id: string) { + return await Models.Course.find({ categories: id }); + } +} + diff --git a/src/dataAccess/courseHeadline.dataAccess.ts b/src/dataAccess/courseHeadline.dataAccess.ts new file mode 100644 index 0000000..fa8aff4 --- /dev/null +++ b/src/dataAccess/courseHeadline.dataAccess.ts @@ -0,0 +1,77 @@ +import Models from '../models'; +import { + CreateCourseHeadlineDTO, + EpisodeDTO, + UpdateCourseHeadlineDTO, +} from '../DTO/courseHeadline.dto'; +import { CourseHeadline } from '../models/schemas/courseHeadline.schema'; +import { ItemStatus } from '../common/eNums/itemStatus.enum'; + +export class CourseHeadlineDataAccess { + async createCourseHeadline( + courseHeadlineDto: CreateCourseHeadlineDTO, + time, + ): Promise { + return await Models.CourseHeadline.create({ + ...courseHeadlineDto, + time: time, + }); + } + + async updateCourseHeadline( + id: string, + courseHeadlineDto: UpdateCourseHeadlineDTO, + ): Promise { + return await Models.CourseHeadline.findByIdAndUpdate(id, courseHeadlineDto); + } + + async addEpisode( + courseHeadlineId: string, + episodeDto: EpisodeDTO, + ): Promise { + return await Models.CourseHeadline.findByIdAndUpdate( + courseHeadlineId, + { $push: { episodes: episodeDto } }, + { new: true, runValidators: true }, + ); + } + + async removeEpisode( + courseHeadlineId: string, + episodeId: string, + ): Promise { + return await Models.CourseHeadline.findByIdAndUpdate( + courseHeadlineId, + { $pull: { episodes: { _id: episodeId } } }, + { new: true, runValidators: true }, + ); + } + + async getCourseHeadlines(courseId): Promise { + return await Models.CourseHeadline.find({ course: courseId }).populate({ + path: 'Comment', + populate: [ + { path: 'Replies', populate: { path: 'user' } }, + { path: 'user' }, + ], + }); + } + + async getHeadline(_id: string): Promise { + return await Models.CourseHeadline.findById({ + _id, + }); + } + + async deleteCourseHeadline(id: string): Promise { + return await Models.CourseHeadline.findByIdAndDelete(id); + } + + async getCourseHeadlineByIds( + courseHeadlineIds: string[], + ): Promise { + return await Models.CourseHeadline.find({ + _id: { $in: courseHeadlineIds }, + }); + } +} diff --git a/src/dataAccess/courseHeadlineComment.dataAccess.ts b/src/dataAccess/courseHeadlineComment.dataAccess.ts new file mode 100644 index 0000000..43182f6 --- /dev/null +++ b/src/dataAccess/courseHeadlineComment.dataAccess.ts @@ -0,0 +1,78 @@ +import { CourseHeadlineComment } from '../models/schemas/courseHeadlineComment.schema'; +import Models from '../models/index'; + +export class CourseHeadlineCommentDataAccess { + async create(courseHeadline, user, text): Promise { + const result = await Models.CourseHeadlineComment.create({ + courseHeadline, + user, + text, + }); + return result; + } + + async replyComment( + courseHeadline, + parent, + user, + text, + ): Promise { + const BlogPostComment = await Models.CourseHeadlineComment.create({ + courseHeadline, + parent, + user, + text, + }); + return BlogPostComment; + } + + async findById(_id): Promise { + const item = await Models.CourseHeadlineComment.findOne({ + _id, + }).populate({ + path: 'courseHeadline', + }); + return item; + } + + async changeStatus(_id, status): Promise { + await Models.CourseHeadlineComment.updateOne( + { + _id, + }, + { + status, + }, + ); + return true; + } + + async listAndFilter(filterListBlogPostCommentDto) { + const where: any = {}; + const { postId, status, fromDate, toDate } = filterListBlogPostCommentDto; + if (postId) { + where.blogPost = postId; + } + if (status) { + where.status = status; + } + const from3mounts = new Date(); + from3mounts.setDate(from3mounts.getDate() - 90); + const fromDateWhereC = fromDate || from3mounts; + + const toDateWhereC = toDate || new Date(); + where.createdAt = { + $gte: fromDateWhereC, + $lte: toDateWhereC, + // $between: [fromDateWhereC, toDateWhereC], + }; + where.parent = null; + const list = await Models.CourseHeadlineComment.find(where) + .populate({ + path: 'blogPost', + }) + .sort({ createdAt: -1 }); + + return list; + } +} diff --git a/src/dataAccess/discount.dataAccess.ts b/src/dataAccess/discount.dataAccess.ts new file mode 100644 index 0000000..020ba6e --- /dev/null +++ b/src/dataAccess/discount.dataAccess.ts @@ -0,0 +1,87 @@ +import { Discount } from '../models/schemas/discount.schema'; +import Models from '../models/index'; + +export class DiscountDataAccess { + async create( + startDate, + endDate, + code, + discountType, + price, + percent, + allUsers, + user, + ) { + const discount = await Models.Discount.create({ + startDate, + endDate, + code, + discountType, + price, + percent, + allUsers, + user, + }); + return discount; + } + async findOne(_id) { + const discount = await Models.Discount.findOne({ + _id, + }).populate({ + path: 'user', + }); + return discount; + } + async update( + _id, + user, + startDate, + endDate, + code, + discountType, + price, + percent, + allUsers, + ) { + await Models.Discount.updateOne( + { _id }, + { + user, + startDate, + endDate, + code, + discountType, + price, + percent, + allUsers, + }, + ); + return true; + } + async updateStatus(_id, status) { + await Models.Discount.updateOne( + { _id }, + { + status: status, + }, + ); + } + async findAll() { + const discount = await Models.Discount.find() + .populate({ + path: 'user', + }) + .sort({ createdAt: -1 }); + return discount; + } + async count(): Promise { + const result = await Models.Discount.countDocuments(); + return result; + } + async findCode(code) { + const discount = await Models.Discount.findOne({ + code, + }); + return discount; + } +} diff --git a/src/dataAccess/discountHistory.dataAccess.ts b/src/dataAccess/discountHistory.dataAccess.ts new file mode 100644 index 0000000..defa096 --- /dev/null +++ b/src/dataAccess/discountHistory.dataAccess.ts @@ -0,0 +1,33 @@ +import { DiscountHistory } from '../models/schemas/discountHistory.schema'; +import Models from '../models/index'; + +export class DiscountHistoryDataAccess { + async findAll(): Promise { + const discount = await Models.DiscountHistory.find() + .populate({ + path: 'user', + }) + .populate({ + path: 'userDiscount', + }) + .populate({ + path: 'discount', + }) + .sort({ createdAt: -1 }); + return discount; + } + + async count(): Promise { + const result = await Models.DiscountHistory.countDocuments(); + return result; + } + async findOne(discount, user): Promise { + const result = await Models.DiscountHistory.findOne({ discount, user }); + return result; + } + + async create(discount, userDiscount, user): Promise { + const result = await Models.DiscountHistory.create({ discount, user }); + return result; + } +} diff --git a/src/dataAccess/faq.dataAccess.ts b/src/dataAccess/faq.dataAccess.ts new file mode 100644 index 0000000..7e11a0a --- /dev/null +++ b/src/dataAccess/faq.dataAccess.ts @@ -0,0 +1,133 @@ +import { Faq } from '../models/schemas/faq.schema'; +import { FaqCategory } from '../models/schemas/faqCategory.schema'; +import Models from '../models/index'; + +export class FaqDataAccess { + async findCatById(id): Promise { + const faqCategory = await Models.FaqCategory.findById(id).populate({ + path: 'faqs', + }); + return faqCategory; + } + + async updateFaqCategory(id, status, title, description): Promise { + await Models.FaqCategory.findByIdAndUpdate(id, { + title, + description, + status, + updatedAt: new Date(), + }); + return true; + } + + async createFaqCategory(title, description): Promise { + const newFaqCat = await Models.FaqCategory.create({ + title, + description, + }); + return newFaqCat; + } + + async findAllFaqCategory(filterFaqCategoryDto): Promise { + const where: any = {}; + const { id, status, language } = filterFaqCategoryDto; + if (id) { + where.id = parseInt(id); + } + if (status) { + where.status = status; + } + const all = await Models.FaqCategory.find(where) + .populate({ + path: 'faqs', + match: { language, status }, + }) + .exec(); + return all; + } + + async findFaqById(id): Promise { + const faq = await Models.Faq.findById(id).populate({ + path: 'faqCat', + }); + return faq; + } + + async updateFaq( + id, + status, + faqCat, + question, + answer, + language, + ): Promise { + await Models.Faq.findByIdAndUpdate(id, { + status, + faqCat, + question, + answer, + language, + updatedAt: new Date(), + }); + return true; + } + + async updateStatusFaq(id, status): Promise { + await Models.Faq.findByIdAndUpdate(id, { + status, + updatedAt: new Date(), + }); + return true; + } + + async createFaq(faqCat, question, answer, language): Promise { + const newFaq = await Models.Faq.create({ + faqCat, + question, + answer, + language, + }); + return newFaq; + } + + async findAllFaq(filterFaqDto): Promise { + const where: any = {}; + const { id, faqCat, status } = filterFaqDto; + if (id) { + where._id = id; + } + if (status) { + where.status = status; + } + if (faqCat) { + where.faqCat = faqCat; + } + const all = await Models.Faq.find(where, {}) + .populate({ + path: 'faqCat', + }) + .sort({ position: 1 }); + return all; + } + + async findAll(): Promise { + const all = await Models.Faq.find(); + return all; + } + + async deleteFaqCat(id): Promise { + await Models.Faq.deleteMany({ faqCat: id }); + await Models.FaqCategory.deleteOne({ _id: id }); + return true; + } + + async deleteFaq(id): Promise { + await Models.Faq.deleteOne({ _id: id }); + return true; + } + + async updatePosition(id, position: number): Promise { + await Models.Faq.findOneAndUpdate({ _id: id }, { position: position }); + return true; + } +} diff --git a/src/dataAccess/payment.dataAccess.ts b/src/dataAccess/payment.dataAccess.ts new file mode 100644 index 0000000..4752a25 --- /dev/null +++ b/src/dataAccess/payment.dataAccess.ts @@ -0,0 +1,25 @@ +import Models from "../models"; +import Payment from "../models/payment.model"; + +export class PaymentDataAccess { + async createPayment(userId: string, amount: number, paymentNumber: string,reason:string):Promise { + const payment = Models.Payment.create({ userId, amount, paymentNumber,reason }); + return payment; + } + + async getPayment(paymentId: string): Promise { + const payment = await Models.Payment.findById(paymentId); + return payment; + } + + async getPaymentsByUserId(userId: string): Promise { + const payments = await Models.Payment.find({ userId }); + return payments; + } + + async getPayments(): Promise { + const payments = await Models.Payment.find(); + return payments; + } +} + diff --git a/src/dataAccess/postVisit.dataAccess.ts b/src/dataAccess/postVisit.dataAccess.ts new file mode 100644 index 0000000..924f4d1 --- /dev/null +++ b/src/dataAccess/postVisit.dataAccess.ts @@ -0,0 +1,25 @@ +import { BlogPostVisit } from '../models/schemas/blogPostVisit.schema'; +import Models from '../models/index'; + +export class PostVisitDataAccess { + async findById(user, blogPost, ip): Promise { + const post = await Models.BlogPostVisit.findOne({ + blogPost, + user, + $or: [ + { + ip, + }, + ], + }); + return post; + } + async create(user, blogPost, ip): Promise { + const post = await Models.BlogPostVisit.create({ + user, + ip, + blogPost, + }); + return post; + } +} diff --git a/src/dataAccess/settings.dataAccess.ts b/src/dataAccess/settings.dataAccess.ts new file mode 100644 index 0000000..7614f2f --- /dev/null +++ b/src/dataAccess/settings.dataAccess.ts @@ -0,0 +1,75 @@ +import { Settings } from '../models/schemas/settings.schema'; +import Models from '../models/index'; + +export class SettingsDataAccess { + async findOne(): Promise { + const result = await Models.Settings.find(); + return result; + } + + async create( + about, + student, + hours, + title, + expertise, + nameCompany, + mission, + start, + goals, + rate, + titleText, + header, + ): Promise { + const result = await Models.Settings.create({ + about, + student, + hours, + title, + expertise, + nameCompany, + mission, + start, + goals, + rate, + titleText, + header, + }); + return result; + } + + async update( + _id, + about, + student, + hours, + title, + expertise, + nameCompany, + mission, + start, + goals, + rate, + titleText, + header, + ): Promise { + await Models.Settings.updateOne( + { _id }, + { + about, + student, + hours, + title, + expertise, + nameCompany, + mission, + start, + goals, + rate, + titleText, + header, + }, + ); + return true; + } +} diff --git a/src/dataAccess/ticket.dataAccess.ts b/src/dataAccess/ticket.dataAccess.ts new file mode 100644 index 0000000..915bc69 --- /dev/null +++ b/src/dataAccess/ticket.dataAccess.ts @@ -0,0 +1,58 @@ +import Models from '../models'; +import { Ticket } from '../models/schemas/ticket.schema'; + +export class TicketDataAccess { + async create(subject: string, userId: string): Promise { + const result = await Models.Ticket.create({ + createdBy: userId, + subject, + }); + return result; + } + + async findOne(id: string): Promise { + const result = await Models.Ticket.findById(id) + .populate('createdBy', 'id phone name lastName username avatarMedia') + .populate({ + path: 'ticketMessages', + select: 'content createdBy createdAt updatedAt', + populate: { path: 'createdBy', select: 'id phone roles' }, + options: { sort: { createdAt: -1 } }, + strictPopulate: false, // Added to override schema strict population + }); + return result; + } + + async findAll(page: number = 1, pageSize: number = 10): Promise { + const result = await Models.Ticket.find() + .populate('createdBy', 'id phone roles') + .skip((page - 1) * pageSize) + .limit(pageSize); + console.log({ result }); + return result; + } + + async count(): Promise { + const result = await Models.Ticket.countDocuments(); + return result; + } + + async findAllByUser( + userId: string, + page: number = 1, + pageSize: number = 10, + ): Promise { + const result = await Models.Ticket.find({ createdBy: userId }) + .populate('createdBy', 'id phone') + .skip((page - 1) * pageSize) + .limit(pageSize); + return result; + } + + async closeTicket(id: string): Promise { + const result = await Models.Ticket.findByIdAndUpdate(id, { + status: 'closed', + }); + return result; + } +} diff --git a/src/dataAccess/ticketMessage.dataAccess.ts b/src/dataAccess/ticketMessage.dataAccess.ts new file mode 100644 index 0000000..0f4f178 --- /dev/null +++ b/src/dataAccess/ticketMessage.dataAccess.ts @@ -0,0 +1,12 @@ +import TicketMessage from "../models/ticketMessage.model" +import { CreateTicketMessageDto } from "../DTO/ticket.dto" +import Models from "../models" + +export class TicketMessageDataAccess { + async createMessage(createTicketMessageDto: CreateTicketMessageDto, createdBy: string): Promise { + const result = await Models.TicketMessage.create({ ...createTicketMessageDto, createdBy }) + return result + } + +} + diff --git a/src/dataAccess/user.dataAccess.ts b/src/dataAccess/user.dataAccess.ts new file mode 100644 index 0000000..c779111 --- /dev/null +++ b/src/dataAccess/user.dataAccess.ts @@ -0,0 +1,117 @@ +import { User } from '../models/schemas/user.schema'; +import Models from '../models/index'; +import { HttpException, HttpStatus } from '@nestjs/common'; + +export class UserDataAccess { + async findOne(id): Promise { + const result = await Models.User.findById(id).populate({ + path: 'courseIds', + // populate: { path: 'courseHeadlines' }, + }); + + return result; + } + + async count(): Promise { + const result = await Models.User.countDocuments(); + return result; + } + + async findByPhone(phone): Promise { + const result = await Models.User.findOne({ + phone, + }); + return result; + } + + async create(phoneClean): Promise { + const result = await Models.User.create({ + phone: phoneClean, + }); + return result; + } + + async updateJwt(userId, jwt) { + const result = await Models.User.updateOne( + { + _id: userId, + }, + { + jwtToken: jwt, + }, + ); + return result; + } + + async list(page, pageSize) { + const limit = parseInt(pageSize) || 12; + const offset = (page - 1) * limit; + const result = await Models.User.find() + .sort({ createdAt: -1 }) + .skip(offset) + .limit(pageSize); + return result; + } + + async status(id, status) { + await Models.User.findByIdAndUpdate(id, { + status, + updatedAt: new Date(), + }); + } + + async update(userId, avatarMedia, name, lastName, userName, email) { + const result = await Models.User.updateOne( + { + _id: userId, + }, + { + avatarMedia, + name, + lastName, + userName, + email, + }, + ); + return result; + } + + async registerCourse(userId, courseId) { + const user = await Models.User.findById(userId); + if (!user) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' کاربر وجود ندارد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + const course = await Models.Course.findById(courseId); + if (!course) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: ' دوره یافت نشد ', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + // فرض بر این است که مدل کاربر دارای یک آرایه از courseIds است + if (user.courseIds.includes(courseId)) { + throw new HttpException( + { + status: HttpStatus.NOT_ACCEPTABLE, + error: 'شما قبلا این دوره ثبت نام کرده اید', + }, + HttpStatus.NOT_ACCEPTABLE, + ); + } + user.courseIds.push(courseId); + course.studentsCount++; + course.studentIds.push(userId); + await user.save(); + await course.save(); + return { message: 'ثبت نام با موفقیت انجام شد' }; + } +} diff --git a/src/dataAccess/userDiscount.dataAccess.ts b/src/dataAccess/userDiscount.dataAccess.ts new file mode 100644 index 0000000..d414eb1 --- /dev/null +++ b/src/dataAccess/userDiscount.dataAccess.ts @@ -0,0 +1,33 @@ +import { UserDiscount } from '../models/schemas/userDiscount.schema'; +import Models from '../models/index'; + +export class UserDiscountDataAccess { + async create(user, discount): Promise { + return await Models.UserDiscount.create({ + user, + discount, + }); + } + + async count(): Promise { + const result = await Models.UserDiscount.countDocuments(); + return result; + } + + async findAll(): Promise { + const discount = await Models.UserDiscount.find() + .populate({ + path: 'user', + }) + .populate({ + path: 'discount', + }) + .sort({ createdAt: -1 }); + return discount; + } + + async findOne(discount, user): Promise { + const result = await Models.UserDiscount.findOne({ discount, user }); + return result; + } +} diff --git a/src/dataAccess/userSms.dataAccess.ts b/src/dataAccess/userSms.dataAccess.ts new file mode 100644 index 0000000..fd2e145 --- /dev/null +++ b/src/dataAccess/userSms.dataAccess.ts @@ -0,0 +1,66 @@ +import { UserSms } from '../models/schemas/userSms.schema'; +import Models from '../models/index'; + +export class UserSmsDataAccess { + async findSmsRq(phone, ip): Promise { + const smsRq = await Models.UserSms.findOne({ + $or: [{ ip }, { phone }], + }); + return smsRq; + } + + async updateSmsRq(id, phone, sendCount, ip, code): Promise { + await Models.UserSms.updateOne( + { + _id: id, + }, + { + phone, + sendCount, + ip, + code, + lastSentTime: new Date(), + }, + ); + return true; + } + + async createSmsRq(phone, ip, code): Promise { + await Models.UserSms.create({ + phone, + sendCount: 1, + ip, + code, + lastSentTime: new Date(), + }); + return true; + } + + async deleteSmsRqs(): Promise { + const date = new Date(); + date.setDate(date.getDate() - 1); + await Models.UserSms.deleteOne({ + where: { + lastSentTime: { + $lte: date, + }, + }, + }); + return true; + } + + async deleteSms(id): Promise { + await Models.UserSms.deleteOne({ + _id: id, + }); + return true; + } + + async validateCode(phone, code): Promise { + const smsRq = await Models.UserSms.findOne({ + phone, + code, + }); + return smsRq; + } +} diff --git a/src/decorators/currentUser.decorator.ts b/src/decorators/currentUser.decorator.ts new file mode 100644 index 0000000..42cd973 --- /dev/null +++ b/src/decorators/currentUser.decorator.ts @@ -0,0 +1,8 @@ +import { createParamDecorator, ExecutionContext } from '@nestjs/common'; + +export const CurrentUser = createParamDecorator( + (data: unknown, ctx: ExecutionContext) => { + const request = ctx.switchToHttp().getRequest(); + return request.user; + }, +); diff --git a/src/decorators/ipAddress.decorator.ts b/src/decorators/ipAddress.decorator.ts new file mode 100644 index 0000000..96ea798 --- /dev/null +++ b/src/decorators/ipAddress.decorator.ts @@ -0,0 +1,10 @@ +import { createParamDecorator, ExecutionContext } from '@nestjs/common'; +import * as requestIp from 'request-ip'; + +export const IpAddress = createParamDecorator( + (data: unknown, ctx: ExecutionContext) => { + const req = ctx.switchToHttp().getRequest(); + if (req.clientIp) return req.clientIp; + return requestIp.getClientIp(req); + }, +); diff --git a/src/decorators/role.decorators.ts b/src/decorators/role.decorators.ts new file mode 100644 index 0000000..54a1628 --- /dev/null +++ b/src/decorators/role.decorators.ts @@ -0,0 +1,5 @@ +import { SetMetadata } from '@nestjs/common'; +import { Role } from '../common/eNums/role.enum'; + +export const ROLES_KEY = 'roles'; +export const Roles = (...roles: Role[]) => SetMetadata(ROLES_KEY, roles); diff --git a/src/main.ts b/src/main.ts index 0f82374..7c78930 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,65 +1,65 @@ -import { NestFactory } from '@nestjs/core'; -import * as session from 'express-session'; -import { AppModule } from './app.module'; -import mongoose from 'mongoose'; -import * as dotenv from 'dotenv'; -import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; -import * as swaggerConfig from './config/swagger.json'; -import { ValidationPipe } from '@nestjs/common'; -import { NestExpressApplication } from '@nestjs/platform-express'; -import paths from './config/paths'; -dotenv.config(); - -async function bootstrap() { - const app = await NestFactory.create(AppModule, { - cors: true, - }); - const db = - // app.setGlobalPrefix('api/v1'); - // app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector))); - app.useGlobalPipes(new ValidationPipe()); - app.use( - session({ - name: 'DLearn', - secret: '68yzNk6SQuPFY#WREFDF^&%TERGH765rtgfHJ%$ERFDF@#$!dg^5r%aALM1', - resave: false, - saveUninitialized: false, - }), - ); - app.useStaticAssets(paths.staticFiles); - app.setBaseViewsDir(paths.viewFiles); - app.setViewEngine('ejs'); - app.use((req, res, next) => { - res.header('Access-Control-Allow-Origin', '*'); - res.setHeader('Access-Control-Allow-Origin', '*'); - res.setHeader('X-Powered-By', 'NestJs'); - res.setHeader( - 'Access-Control-Allow-Methods', - 'GET, POST, OPTIONS, PUT, PATCH, DELETE', - ); - res.setHeader( - 'Access-Control-Allow-Headers', - 'X-Requested-With,content-type', - ); - res.setHeader('Access-Control-Allow-Credentials', true); - res.header( - 'Access-Control-Allow-Headers', - 'Origin, X-Requested-With, Content-Type, Accept', - ); - next(); - }); - mongoose.connect( - // eslint-disable-next-line max-len - `mongodb://${process.env.MONGO_CONNECTION_HOST}:${process.env.MONGO_CONNECTION_PORT}/${process.env.MONGO_CONNECTION_NAME}`, - ); - const config = new DocumentBuilder() - .setTitle(swaggerConfig.title) - .setDescription(swaggerConfig.description) - .setVersion(swaggerConfig.version) - .addTag(swaggerConfig.tag) - .build(); - const document = SwaggerModule.createDocument(app, config); - SwaggerModule.setup('api/v1', app, document); - await app.listen(3000); -} -bootstrap(); +import { NestFactory } from '@nestjs/core'; +import * as session from 'express-session'; +import { AppModule } from './app.module'; +import mongoose from 'mongoose'; +import * as dotenv from 'dotenv'; +import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; +import * as swaggerConfig from './config/swagger.json'; +import { ValidationPipe } from '@nestjs/common'; +import { NestExpressApplication } from '@nestjs/platform-express'; +import paths from './config/paths'; +dotenv.config(); + +async function bootstrap() { + const app = await NestFactory.create(AppModule, { + cors: true, + }); + // app.setGlobalPrefix('api/v1'); + // app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector))); + app.useGlobalPipes(new ValidationPipe()); + // app.useGlobalGuards(new RolesGuard()); + + app.use( + session({ + name: 'DLearn', + secret: '68yzNk6SQuPFY#WREFDF^&%TERGH765rtgfHJ%$ERFDF@#$!dg^5r%aALM1', + resave: false, + saveUninitialized: false, + }), + ); + app.useStaticAssets(paths.staticFiles); + app.setBaseViewsDir(paths.viewFiles); + app.setViewEngine('ejs'); + app.use((req, res, next) => { + res.header('Access-Control-Allow-Origin', '*'); + res.setHeader('Access-Control-Allow-Origin', '*'); + res.setHeader('X-Powered-By', 'NestJs'); + res.setHeader( + 'Access-Control-Allow-Methods', + 'GET, POST, OPTIONS, PUT, PATCH, DELETE', + ); + res.setHeader( + 'Access-Control-Allow-Headers', + 'X-Requested-With,content-type', + ); + res.setHeader('Access-Control-Allow-Credentials', true); + res.header( + 'Access-Control-Allow-Headers', + 'Origin, X-Requested-With, Content-Type, Accept', + ); + next(); + }); + mongoose.connect(process.env.MONGO_CONNECTION_DANAK); + const config = new DocumentBuilder() + .addBearerAuth() + .setTitle(swaggerConfig.title) + .setDescription(swaggerConfig.description) + .setVersion(swaggerConfig.version) + .addTag(swaggerConfig.tag) + .build(); + + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup('api/v1', app, document); + await app.listen(3000, '0.0.0.0'); +} +bootstrap(); diff --git a/src/models/blogCategory.model.ts b/src/models/blogCategory.model.ts new file mode 100644 index 0000000..a5afcd1 --- /dev/null +++ b/src/models/blogCategory.model.ts @@ -0,0 +1,16 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { + BlogCategorySchema, + BlogCategory, +} from './schemas/blogCategory.schema'; +import { cleanJson } from './plugins'; + +BlogCategorySchema.plugin(softDeletePlugin); +BlogCategorySchema.plugin(cleanJson); +const BlogCategory = mongoose.model< + BlogCategory, + SoftDeleteModel +>('blog_categories', BlogCategorySchema); +export default BlogCategory; diff --git a/src/models/blogPost.model.ts b/src/models/blogPost.model.ts new file mode 100644 index 0000000..60d69da --- /dev/null +++ b/src/models/blogPost.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { BlogPostSchema, BlogPost } from './schemas/blogPost.schema'; +import { cleanJson } from './plugins'; + +BlogPostSchema.plugin(softDeletePlugin); +BlogPostSchema.plugin(cleanJson); +const BlogPost = mongoose.model>( + 'blog_posts', + BlogPostSchema, +); +export default BlogPost; diff --git a/src/models/blogPostComment.model.ts b/src/models/blogPostComment.model.ts new file mode 100644 index 0000000..72a0a6d --- /dev/null +++ b/src/models/blogPostComment.model.ts @@ -0,0 +1,16 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { + BlogPostComment, + BlogPostCommentSchema, +} from './schemas/blogPostComment.schema'; +import { cleanJson } from './plugins'; + +BlogPostCommentSchema.plugin(softDeletePlugin); +BlogPostCommentSchema.plugin(cleanJson); +const BlogPostComment = mongoose.model< + BlogPostComment, + SoftDeleteModel +>('blog_post_comments', BlogPostCommentSchema); +export default BlogPostComment; diff --git a/src/models/blogPostVisit.model.ts b/src/models/blogPostVisit.model.ts new file mode 100644 index 0000000..111d2d9 --- /dev/null +++ b/src/models/blogPostVisit.model.ts @@ -0,0 +1,16 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { + BlogPostVisitSchema, + BlogPostVisit, +} from './schemas/blogPostVisit.schema'; +import { cleanJson } from './plugins'; + +BlogPostVisitSchema.plugin(softDeletePlugin); +BlogPostVisitSchema.plugin(cleanJson); +const BlogPostVisit = mongoose.model< + BlogPostVisit, + SoftDeleteModel +>('blog_post_visits', BlogPostVisitSchema); +export default BlogPostVisit; diff --git a/src/models/comment.model.ts b/src/models/comment.model.ts new file mode 100644 index 0000000..b01a9de --- /dev/null +++ b/src/models/comment.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { Comment, CommentSchema } from './schemas/comment.schema'; +import { cleanJson } from './plugins'; + +CommentSchema.plugin(softDeletePlugin); +CommentSchema.plugin(cleanJson); +const Comment = mongoose.model>( + 'comments', + CommentSchema, +); +export default Comment; diff --git a/src/models/course.model.ts b/src/models/course.model.ts new file mode 100644 index 0000000..e587795 --- /dev/null +++ b/src/models/course.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { Course, CourseSchema } from './schemas/course.schema'; +import { cleanJson } from './plugins'; + +CourseSchema.plugin(softDeletePlugin); +CourseSchema.plugin(cleanJson); +const Course = mongoose.model>( + 'courses', + CourseSchema, +); +export default Course; diff --git a/src/models/courseCategory.model.ts b/src/models/courseCategory.model.ts new file mode 100644 index 0000000..7473da4 --- /dev/null +++ b/src/models/courseCategory.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { CourseCategory, CourseCategorySchema } from './schemas/courseCategory.schema'; +import { cleanJson } from './plugins'; + +CourseCategorySchema.plugin(softDeletePlugin); +CourseCategorySchema.plugin(cleanJson); +const CourseCategory = mongoose.model>( + 'courseCategories', + CourseCategorySchema, +); +export default CourseCategory; diff --git a/src/models/courseHeadline.model.ts b/src/models/courseHeadline.model.ts new file mode 100644 index 0000000..b0db713 --- /dev/null +++ b/src/models/courseHeadline.model.ts @@ -0,0 +1,12 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; +import { cleanJson } from './plugins'; +import { CourseHeadline, CourseHeadlineSchema } from './schemas/courseHeadline.schema'; + +CourseHeadlineSchema.plugin(softDeletePlugin); +CourseHeadlineSchema.plugin(cleanJson); +const CourseHeadline = mongoose.model>( + 'courseHeadlines', + CourseHeadlineSchema, +); +export default CourseHeadline; diff --git a/src/models/courseHeadlineComment.model.ts b/src/models/courseHeadlineComment.model.ts new file mode 100644 index 0000000..cc56a64 --- /dev/null +++ b/src/models/courseHeadlineComment.model.ts @@ -0,0 +1,16 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { + CourseHeadlineComment, + CourseHeadlineCommentSchema, +} from './schemas/courseHeadlineComment.schema'; +import { cleanJson } from './plugins'; + +CourseHeadlineCommentSchema.plugin(softDeletePlugin); +CourseHeadlineCommentSchema.plugin(cleanJson); +const CourseHeadlineComment = mongoose.model< + CourseHeadlineComment, + SoftDeleteModel +>('course_headline_comments', CourseHeadlineCommentSchema); +export default CourseHeadlineComment; diff --git a/src/models/discount.model.ts b/src/models/discount.model.ts new file mode 100644 index 0000000..4de818a --- /dev/null +++ b/src/models/discount.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { Discount, DiscountSchema } from './schemas/discount.schema'; +import { cleanJson } from './plugins'; + +DiscountSchema.plugin(softDeletePlugin); +DiscountSchema.plugin(cleanJson); +const Discount = mongoose.model>( + 'discounts', + DiscountSchema, +); +export default Discount; diff --git a/src/models/discountHistory.model.ts b/src/models/discountHistory.model.ts new file mode 100644 index 0000000..1101e4f --- /dev/null +++ b/src/models/discountHistory.model.ts @@ -0,0 +1,16 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { + DiscountHistory, + DiscountHistorySchema, +} from './schemas/discountHistory.schema'; +import { cleanJson } from './plugins'; + +DiscountHistorySchema.plugin(softDeletePlugin); +DiscountHistorySchema.plugin(cleanJson); +const DiscountHistory = mongoose.model< + DiscountHistory, + SoftDeleteModel +>('discount_histories', DiscountHistorySchema); +export default DiscountHistory; diff --git a/src/models/faq.model.ts b/src/models/faq.model.ts new file mode 100644 index 0000000..c77002a --- /dev/null +++ b/src/models/faq.model.ts @@ -0,0 +1,10 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { FaqSchema, Faq } from './schemas/faq.schema'; +import { cleanJson } from './plugins'; + +FaqSchema.plugin(softDeletePlugin); +FaqSchema.plugin(cleanJson); +const Faq = mongoose.model>('faqs', FaqSchema); +export default Faq; diff --git a/src/models/faqCategory.model.ts b/src/models/faqCategory.model.ts new file mode 100644 index 0000000..2b5c8a8 --- /dev/null +++ b/src/models/faqCategory.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { FaqCategorySchema, FaqCategory } from './schemas/faqCategory.schema'; +import { cleanJson } from './plugins'; + +FaqCategorySchema.plugin(softDeletePlugin); +FaqCategorySchema.plugin(cleanJson); +const FaqCategory = mongoose.model>( + 'faq_categories', + FaqCategorySchema, +); +export default FaqCategory; diff --git a/src/models/index.ts b/src/models/index.ts new file mode 100644 index 0000000..0297d2c --- /dev/null +++ b/src/models/index.ts @@ -0,0 +1,47 @@ +import User from './user.model'; +import UserSms from './userSms.model'; +import BlogPost from './blogPost.model'; +import BlogCategory from './blogCategory.model'; +import Course from './course.model'; +import BlogPostComment from './blogPostComment.model'; +import Ticket from './ticket.model'; +import TicketMessage from './ticketMessage.model'; +import CourseHeadline from './courseHeadline.model'; +import BlogPostVisit from './blogPostVisit.model'; +import CourseCategory from './courseCategory.model'; +import Faq from './faq.model'; +import FaqCategory from './faqCategory.model'; +import Comment from './comment.model'; +import CourseHeadlineComment from './courseHeadlineComment.model'; +import Discount from './discount.model'; +import DiscountHistory from './discountHistory.model'; +import UserDiscount from './userDiscount.model'; +import Rate from './rate.model'; +import Payment from './payment.model'; +import Settings from './settings.model'; + +const Models = { + User, + Settings, + UserSms, + BlogCategory, + BlogPost, + BlogPostComment, + BlogPostVisit, + Course, + Discount, + DiscountHistory, + UserDiscount, + Ticket, + Comment, + TicketMessage, + Faq, + FaqCategory, + CourseHeadline, + CourseCategory, + CourseHeadlineComment, + Rate, + Payment, +}; + +export default Models; diff --git a/src/models/payment.model.ts b/src/models/payment.model.ts new file mode 100644 index 0000000..5bbd9b1 --- /dev/null +++ b/src/models/payment.model.ts @@ -0,0 +1,12 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; +import { cleanJson } from './plugins'; +import { Payment, PaymentSchema } from './schemas/payment.schema'; + +PaymentSchema.plugin(softDeletePlugin); +PaymentSchema.plugin(cleanJson); +const Payment = mongoose.model>( + 'payments', + PaymentSchema, +); +export default Payment; diff --git a/src/models/plugins/cleanJson.plugin.ts b/src/models/plugins/cleanJson.plugin.ts index b5e62be..e9a8bae 100644 --- a/src/models/plugins/cleanJson.plugin.ts +++ b/src/models/plugins/cleanJson.plugin.ts @@ -1,44 +1,43 @@ -/* eslint-disable no-param-reassign */ - -/** - * A mongoose schema plugin which applies the following in the toJSON transform call: - * - removes __v, createdAt, updatedAt, and any path that has private: true - * - replaces _id with id - */ - -const deleteAtPath = (obj, path, index) => { - if (index === path.length - 1) { - delete obj[path[index]]; - return; - } - deleteAtPath(obj[path[index]], path, index + 1); -}; - -const cleanJson = (schema) => { - let transform; - if (schema.options.toJSON && schema.options.toJSON.transform) { - transform = schema.options.toJSON.transform; - } - - schema.options.toJSON = Object.assign(schema.options.toJSON || {}, { - transform(doc, ret, options) { - Object.keys(schema.paths).forEach((path) => { - if (schema.paths[path].options && schema.paths[path].options.private) { - deleteAtPath(ret, path.split('.'), 0); - } - }); - - ret.id = ret._id.toString(); - delete ret._id; - delete ret.isDeleted; - delete ret.deletedAt; - delete ret.__v; - delete ret.updatedAt; - if (transform) { - return transform(doc, ret, options); - } - }, - }); -}; - -export default cleanJson; +/* eslint-disable no-param-reassign */ + +/** + * A mongoose schema plugin which applies the following in the toJSON transform call: + * - removes __v, createdAt, updatedAt, and any path that has private: true + * - replaces _id with id + */ + +const deleteAtPath = (obj, path, index) => { + if (index === path.length - 1) { + delete obj[path[index]]; + return; + } + deleteAtPath(obj[path[index]], path, index + 1); +}; + +const cleanJson = (schema) => { + let transform; + if (schema.options.toJSON && schema.options.toJSON.transform) { + transform = schema.options.toJSON.transform; + } + + schema.options.toJSON = Object.assign(schema.options.toJSON || {}, { + transform(doc, ret, options) { + Object.keys(schema.paths).forEach((path) => { + if (schema.paths[path].options && schema.paths[path].options.private) { + deleteAtPath(ret, path.split('.'), 0); + } + }); + ret.id = ret._id ? ret._id.toString() : ret.id; + delete ret._id; + delete ret.isDeleted; + delete ret.deletedAt; + delete ret.__v; + delete ret.updatedAt; + if (transform) { + return transform(doc, ret, options); + } + }, + }); +}; + +export default cleanJson; diff --git a/src/models/plugins/index.ts b/src/models/plugins/index.ts index 6159d33..df6f447 100644 --- a/src/models/plugins/index.ts +++ b/src/models/plugins/index.ts @@ -1,2 +1,2 @@ -import cleanJson from './cleanJson.plugin'; -export { cleanJson }; +import cleanJson from './cleanJson.plugin'; +export { cleanJson }; diff --git a/src/models/rate.model.ts b/src/models/rate.model.ts new file mode 100644 index 0000000..e43a1a5 --- /dev/null +++ b/src/models/rate.model.ts @@ -0,0 +1,12 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; +import { cleanJson } from './plugins'; +import { Rate, RateSchema } from './schemas/rate.schema'; + +RateSchema.plugin(softDeletePlugin); +RateSchema.plugin(cleanJson); +const Rate = mongoose.model>( + 'rates', + RateSchema, +); +export default Rate; diff --git a/src/models/schemas/blogCategory.schema.ts b/src/models/schemas/blogCategory.schema.ts new file mode 100644 index 0000000..919bec5 --- /dev/null +++ b/src/models/schemas/blogCategory.schema.ts @@ -0,0 +1,51 @@ +import * as mongoose from 'mongoose'; +import { BlogPost } from './blogPost.schema'; + +export const BlogCategorySchema = new mongoose.Schema( + { + parentId: { + type: mongoose.Types.ObjectId, + ref: 'blog_categories', + required: false, + }, + title: { + type: String, + required: true, + }, + description: { + type: String, + required: false, + }, + status: { + //TODO: + enum: ['Active', 'DeActivate', 'Archived', 'Pending'], + default: 'Active', + type: String, + required: true, + }, + parents: [ + { + type: mongoose.Types.ObjectId, + ref: 'blog_categories', + default: null, + }, + ], + Posts: [ + { type: mongoose.Types.ObjectId, ref: 'blog_posts', default: null }, + ], + }, + { + collection: 'blog_categories', + timestamps: true, + }, +); +export interface BlogCategory extends mongoose.Document { + parentId: BlogCategory; + title: string; + description: string; + status: string; + parents: BlogCategory[]; + Posts: BlogPost[]; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/blogPost.schema.ts b/src/models/schemas/blogPost.schema.ts new file mode 100644 index 0000000..d8f6d3c --- /dev/null +++ b/src/models/schemas/blogPost.schema.ts @@ -0,0 +1,136 @@ +import * as mongoose from 'mongoose'; +import { BlogPostComment } from './blogPostComment.schema'; +import { BlogCategory } from './blogCategory.schema'; +export const BlogPostSchema = new mongoose.Schema( + { + blogCat: { + type: mongoose.Types.ObjectId, + ref: 'blog_categories', + required: true, + }, + admin: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: false, + }, + mediaUrl: { + type: String, + required: false, + }, + description: { + type: String, + required: false, + }, + title: { + type: String, + required: false, + }, + slug: { + type: String, + required: false, + }, + text: { + type: String, + required: false, + }, + mediaAlt: { + type: String, + required: false, + }, + metaDescription: { + type: String, + required: false, + }, + visitCount: { + type: Number, + required: false, + default: 0, + }, + sort: { + type: Number, + required: false, + }, + source: { + type: String, + required: false, + }, + sourceLink: { + type: String, + required: false, + }, + isInLanding: { + type: String, + required: false, + }, + status: { + enum: ['Active', 'DeActivate', 'Archived', 'Pending'], + default: 'Active', + type: String, + required: true, + }, + Comment: [{ type: mongoose.Types.ObjectId, ref: 'blog_post_comments' }], + + // Comment: { + // type: [ + // { + // parentId: { + // type: Number, + // required: false, + // }, + // userId: { + // type: mongoose.Types.ObjectId, + // ref: 'users', + // required: false, + // }, + // name: { + // type: String, + // required: false, + // }, + // text: { + // type: String, + // required: false, + // }, + // status: { + // enum: ['Active', 'DeActivate', 'Archived', 'Pending'], + // default: 'Active', + // type: String, + // required: true, + // }, + // replies: [ + // { + // type: mongoose.Types.ObjectId, + // ref: 'comments', + // default: null, + // }, + // ], + // }, + // ], + // required: false, + // }, + }, + { + collection: 'blog_posts', + timestamps: true, + }, +); + +export interface BlogPost extends mongoose.Document { + blogCat: BlogCategory; + admin: string; + mediaUrl: string; + description: string; + title: string; + slug: string; + text: string; + mediaAlt: string; + metaDescription: string; + visitCount: string; + sort: string; + source: string; + sourceLink: string; + isInLanding: string; + Comment: BlogPostComment[]; + status: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/blogPostComment.schema.ts b/src/models/schemas/blogPostComment.schema.ts new file mode 100644 index 0000000..4b82479 --- /dev/null +++ b/src/models/schemas/blogPostComment.schema.ts @@ -0,0 +1,55 @@ +import * as mongoose from 'mongoose'; +import { BlogPost } from './blogPost.schema'; +import { User } from './user.schema'; +export const BlogPostCommentSchema = new mongoose.Schema( + { + text: { + type: String, + required: true, + }, + blogPost: { + type: mongoose.Types.ObjectId, + ref: 'blog_posts', + required: true, + }, + user: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: true, + }, + parent: { + type: mongoose.Types.ObjectId, + ref: 'blog_post_comments', + default: null, + required: false, + }, + status: { + enum: ['Active', 'DeActivate', 'Archived', 'Pending'], + default: 'DeActivate', + type: String, + required: true, + }, + Replies: [ + { + type: mongoose.Types.ObjectId, + ref: 'blog_post_comments', + default: null, + }, + ], + }, + { + collection: 'blog_post_comments', + timestamps: true, + }, +); +export interface BlogPostComment extends mongoose.Document { + text: string; + type: string; + blogPost: BlogPost; + user: User; + parent: BlogPostComment; + status: string; + Replies: BlogPostComment[]; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/blogPostVisit.schema.ts b/src/models/schemas/blogPostVisit.schema.ts new file mode 100644 index 0000000..50b6b73 --- /dev/null +++ b/src/models/schemas/blogPostVisit.schema.ts @@ -0,0 +1,31 @@ +import * as mongoose from 'mongoose'; +export const BlogPostVisitSchema = new mongoose.Schema( + { + blogPost: { + type: mongoose.Types.ObjectId, + ref: 'blog_posts', + required: true, + }, + user: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: false, + }, + ip: { + type: String, + required: false, + }, + }, + { + collection: 'blog_post_visits', + timestamps: true, + }, +); + +export interface BlogPostVisit extends mongoose.Document { + blogPostId: string; + userId: string; + ip: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/comment.schema.ts b/src/models/schemas/comment.schema.ts new file mode 100644 index 0000000..a3151af --- /dev/null +++ b/src/models/schemas/comment.schema.ts @@ -0,0 +1,50 @@ +import * as mongoose from 'mongoose'; +import { User } from './user.schema'; +export const CommentSchema = new mongoose.Schema( + { + text: { + type: String, + required: true, + }, + createdBy: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: true, + }, + course: { + type: mongoose.Types.ObjectId, + ref: 'courses', + required: true, + }, + parent: { + type: mongoose.Types.ObjectId, + ref: 'comments', + default: null, + }, + status: { + enum: ['Active', 'DeActivate', 'Archived', 'Pending'], + default: 'DeActivate', + type: String, + required: true, + }, + replies: [ + { + type: mongoose.Types.ObjectId, + ref: 'comments', + default: null, + }, + ], + }, + { + collection: 'comments', + timestamps: true, + }, +); +export interface Comment extends mongoose.Document { + text: string; + createdBy: User; + parent: mongoose.Types.ObjectId; + replies: Comment[]; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/course.schema.ts b/src/models/schemas/course.schema.ts new file mode 100644 index 0000000..4608eca --- /dev/null +++ b/src/models/schemas/course.schema.ts @@ -0,0 +1,133 @@ +import * as mongoose from 'mongoose'; + +export const CourseSchema = new mongoose.Schema( + { + name: { + required: true, + type: String, + }, + slug: { + required: true, + type: String, + unique: true, + }, + description: { + required: true, + type: String, + }, + duration: { + required: true, + type: String, + }, + teacher: { + required: true, + type: mongoose.Types.ObjectId, + ref: 'users', + }, + price: { + type: Number, + required: true, + }, + image: { + type: String, + default: null, + }, + studentsCount: { + type: Number, + default: 0, + }, + comments: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: 'comments', + }, + ], + studentIds: [{ + type: mongoose.Schema.Types.ObjectId, + ref: 'users' + }], + completionPercentage: { + type: Number, + default: 0, + }, + courseHeadlines: [ + { + type: mongoose.Types.ObjectId, + ref: 'courseHeadlines', // Reference to the CourseHeadline model + }, + ], + categories: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: 'courseCategories', + }, + ], + // completionPercentage: { + // type: Number, + // default: 0, + // min: 0, + // max: 100, + // }, + level: { + type: String, + required: true, + enum: ['مبتدی', 'متوسط', 'پیشرفته'], + default: 'مبتدی', + }, + language: { + type: String, + required: true, + }, + satisfactionLevel: { + type: Number, + required: true, + min: 0, + max: 5, + default: 0, + }, + countOfVideos: { + type: Number, + default: 0, + }, + totalFileSize: { + type: String, + required: true, + }, + //darsad takmil dore + //etelaate dore + // The model should be completed in the future, once the season and episode model is finalized.season and episode should be add when model will create + // The model should be completed in the future, one the comment model is finalized + status: { + enum: ['active', 'deActive'], + default: 'active', + type: String, + required: true, + }, + }, + { + collection: 'courses', + timestamps: true, + }, +); +export interface Course extends mongoose.Document { + name: string; + slug: string; + description: string; + duration: string; + teacher: mongoose.Types.ObjectId; + courseHeadlines: [mongoose.Types.ObjectId]; + studentIds: [mongoose.Types.ObjectId]; + categories: [mongoose.Types.ObjectId]; + price: number; + image: string; + studentsCount: number; + completionPercentage: number; + level: string; + language: string; + satisfactionLevel: number; + countOfVideos: number; + totalFileSize: string; + status: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/courseCategory.schema.ts b/src/models/schemas/courseCategory.schema.ts new file mode 100644 index 0000000..d50993b --- /dev/null +++ b/src/models/schemas/courseCategory.schema.ts @@ -0,0 +1,26 @@ +import * as mongoose from 'mongoose'; +export const CourseCategorySchema = new mongoose.Schema( + { + name: { + type: String, + required: true, + unique: true + }, + status: { + enum: ['active', 'deActive'], + default: 'active', + type: String, + required: true, + } + }, + { + collection: 'courseCategories', + timestamps: true + }, +); +export interface CourseCategory extends mongoose.Document { + name: string; + status: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/courseHeadline.schema.ts b/src/models/schemas/courseHeadline.schema.ts new file mode 100644 index 0000000..c237d56 --- /dev/null +++ b/src/models/schemas/courseHeadline.schema.ts @@ -0,0 +1,65 @@ +import * as mongoose from 'mongoose'; +import { CourseHeadlineComment } from './courseHeadlineComment.schema'; + +export const EpisodeSchema = new mongoose.Schema({ + title: { + type: String, + required: true, + }, + duration: { + type: Number, + required: true, + }, +}); + +export const CourseHeadlineSchema = new mongoose.Schema( + { + headline: { + required: true, + type: String, + }, + description: { + required: true, + type: String, + }, + episodes: [EpisodeSchema], + course: { + // Adding a reference to the Course schema + type: mongoose.Types.ObjectId, + ref: 'courses', + required: true, + }, + videoUrl: { + type: String, + required: false, + }, + time: { + type: String, + required: false, + }, + status: { + enum: ['Completed', 'DeActive', 'Recording', 'Soon'], + default: 'Soon', + type: String, + required: true, + }, + Comment: [ + { type: mongoose.Types.ObjectId, ref: 'course_headline_comments' }, + ], + }, + { + collection: 'course_headlines', + timestamps: true, + }, +); +export interface CourseHeadline extends mongoose.Document { + headline: string; + description: string; + episodes: (typeof EpisodeSchema)[]; + course: mongoose.Types.ObjectId; + Comment: CourseHeadlineComment[]; + status: string; + time: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/courseHeadlineComment.schema.ts b/src/models/schemas/courseHeadlineComment.schema.ts new file mode 100644 index 0000000..03c1a9e --- /dev/null +++ b/src/models/schemas/courseHeadlineComment.schema.ts @@ -0,0 +1,55 @@ +import * as mongoose from 'mongoose'; +import { BlogPost } from './blogPost.schema'; +import { User } from './user.schema'; +export const CourseHeadlineCommentSchema = new mongoose.Schema( + { + text: { + type: String, + required: true, + }, + courseHeadline: { + type: mongoose.Types.ObjectId, + ref: 'courseHeadlines', + required: true, + }, + user: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: true, + }, + parent: { + type: mongoose.Types.ObjectId, + ref: 'course_headline_comments', + default: null, + required: false, + }, + status: { + enum: ['Active', 'DeActivate', 'Archived', 'Pending'], + default: 'DeActivate', + type: String, + required: true, + }, + Replies: [ + { + type: mongoose.Types.ObjectId, + ref: 'course_headline_comments', + default: null, + }, + ], + }, + { + collection: 'course_headline_comments', + timestamps: true, + }, +); +export interface CourseHeadlineComment extends mongoose.Document { + text: string; + type: string; + courseHeadline: BlogPost; + user: User; + parent: CourseHeadlineComment; + status: string; + Replies: CourseHeadlineComment[]; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/discount.schema.ts b/src/models/schemas/discount.schema.ts new file mode 100644 index 0000000..6fb019f --- /dev/null +++ b/src/models/schemas/discount.schema.ts @@ -0,0 +1,66 @@ +import * as mongoose from 'mongoose'; +import { BlogPost } from './blogPost.schema'; +import { User } from './user.schema'; +export const DiscountSchema = new mongoose.Schema( + { + user: { + type: String, + ref: 'users', + required: true, + }, + startDate: { + type: Date, + required: true, + }, + endDate: { + type: Date, + required: true, + }, + code: { + type: String, + required: false, + }, + discountType: { + type: String, + required: false, + }, + price: { + type: String, + default: null, + required: false, + }, + percent: { + type: Number, + default: null, + required: false, + }, + allUsers: { + type: Boolean, + default: null, + required: false, + }, + status: { + enum: ['Active', 'DeActivate', 'Archived', 'Pending'], + default: 'DeActivate', + type: String, + required: true, + }, + }, + { + collection: 'discounts', + timestamps: true, + }, +); +export interface Discount extends mongoose.Document { + user: User; + startDate: Date; + endDate: Date; + code: BlogPost; + discountType: string; + price: string; + percent: number; + allUsers: boolean; + status: number; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/discountHistory.schema.ts b/src/models/schemas/discountHistory.schema.ts new file mode 100644 index 0000000..971d401 --- /dev/null +++ b/src/models/schemas/discountHistory.schema.ts @@ -0,0 +1,33 @@ +import * as mongoose from 'mongoose'; +import { BlogPost } from './blogPost.schema'; +import { User } from './user.schema'; +export const DiscountHistorySchema = new mongoose.Schema( + { + user: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: true, + }, + userDiscount: { + type: mongoose.Types.ObjectId, + ref: 'user_discounts', + required: false, + }, + discount: { + type: mongoose.Types.ObjectId, + ref: 'discounts', + required: true, + }, + }, + { + collection: 'discount_histories', + timestamps: true, + }, +); +export interface DiscountHistory extends mongoose.Document { + user: User; + userDiscount: BlogPost; + discount: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/faq.schema.ts b/src/models/schemas/faq.schema.ts new file mode 100644 index 0000000..ac31e55 --- /dev/null +++ b/src/models/schemas/faq.schema.ts @@ -0,0 +1,38 @@ +import * as mongoose from 'mongoose'; +export const FaqSchema = new mongoose.Schema( + { + position: { + type: Number, + required: false, + }, + faqCat: { + type: mongoose.Schema.Types.ObjectId, + ref: 'faq_categories', + required: true, + }, + status: { + enum: ['Active', 'DeActivate'], + default: 'Active', + type: String, + required: true, + }, + question: { + type: String, + required: true, + }, + answer: { + type: String, + required: true, + }, + }, + { collection: 'faqs', timestamps: true }, +); +export interface Faq extends mongoose.Document { + position: number; + faqCat: { _id: string }; + status: string; + question: string; + answer: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/faqCategory.schema.ts b/src/models/schemas/faqCategory.schema.ts new file mode 100644 index 0000000..08673cf --- /dev/null +++ b/src/models/schemas/faqCategory.schema.ts @@ -0,0 +1,35 @@ +import * as mongoose from 'mongoose'; +import { Faq } from './faq.schema'; +export const FaqCategorySchema = new mongoose.Schema( + { + status: { + type: String, + enum: ['Active', 'DeActivate'], + default: 'Active', + required: true, + }, + title: { + type: String, + required: false, + }, + description: { + type: String, + required: true, + }, + faqs: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: 'faqs', + }, + ], + }, + { collection: 'faq_categories', timestamps: true }, +); +export interface FaqCategory extends mongoose.Document { + status: string; + title: string; + description: string; + faqs: Faq[]; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/payment.schema.ts b/src/models/schemas/payment.schema.ts new file mode 100644 index 0000000..bf1ac0a --- /dev/null +++ b/src/models/schemas/payment.schema.ts @@ -0,0 +1,37 @@ + +import mongoose from "mongoose"; + +export const PaymentSchema = new mongoose.Schema({ + userId: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: true + }, + amount: { + type: Number, + required: true + }, + paymentNumber: { + type: String, + required: true, + }, + reason: { + type: String, + enum: ['deposit', 'withdrawal'], + required: true + }, + }, +{ + collection: 'payments', + timestamps: true, +}, +); + +export interface Payment extends mongoose.Document { + userId: mongoose.Types.ObjectId; + amount: number; + paymentNumber: string; + reason: 'deposit' | 'withdrawal'; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/rate.schema.ts b/src/models/schemas/rate.schema.ts new file mode 100644 index 0000000..a5f629d --- /dev/null +++ b/src/models/schemas/rate.schema.ts @@ -0,0 +1,33 @@ +import mongoose from "mongoose"; + +export const RateSchema = new mongoose.Schema({ + userId: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: true + }, + courseId: { + type: mongoose.Types.ObjectId, + ref: 'courses', + required: true + }, + rating: { + type: Number, + required: true, + min: 1, + max: 5 + } +}, +{ + collection: 'rates', + timestamps: true, +}, +); + +export interface Rate extends mongoose.Document { + userId: mongoose.Types.ObjectId; + courseId: mongoose.Types.ObjectId; + rating: number; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/settings.schema.ts b/src/models/schemas/settings.schema.ts new file mode 100644 index 0000000..3908c09 --- /dev/null +++ b/src/models/schemas/settings.schema.ts @@ -0,0 +1,74 @@ +import * as mongoose from 'mongoose'; +export const SettingsSchema = new mongoose.Schema( + { + about: { + type: String, + required: true, + unique: true, + }, + student: { + type: Number, + required: false, + }, + hours: { + type: Number, + required: false, + }, + title: { + type: Number, + required: false, + }, + expertise: { + type: Number, + required: false, + }, + nameCompany: { + type: String, + required: false, + }, + mission: { + type: String, + required: false, + }, + start: { + type: String, + required: false, + }, + goals: { + type: String, + required: false, + }, + rate: { + type: String, + required: false, + }, + titleText: { + type: String, + required: false, + }, + header: { + type: String, + required: false, + }, + }, + { + collection: 'settings', + timestamps: true, + }, +); +export interface Settings extends mongoose.Document { + about: string; + student: number; + hours: number; + title: number; + expertise: number; + nameCompany: string; + mission: string; + start: string; + goals: string; + rate: string; + titleText: string; + header: string; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/ticket.schema.ts b/src/models/schemas/ticket.schema.ts new file mode 100644 index 0000000..fb6d03b --- /dev/null +++ b/src/models/schemas/ticket.schema.ts @@ -0,0 +1,44 @@ +import * as mongoose from 'mongoose'; + +export enum TicketRelevant { + FINANCIAL = 'financial', + MANAGEMENT = 'management', +} + +export const TicketSchema = new mongoose.Schema( + { + subject: { + type: String, + required: true + }, + relevant: { + type: String, + enum: TicketRelevant, + }, + createdBy: { + type: mongoose.Types.ObjectId, ref: 'users', required: true + }, + ticketMessages: [{ + type: mongoose.Types.ObjectId, ref: 'ticketMessages' + }], + status: { + enum: ['active', 'closed'], + default: 'active', + type: String, + required: true, + } + }, + { + collection: 'tickets', + timestamps: true + }, +); +export interface Ticket extends mongoose.Document { + status: string; + subject: String; + relevant: TicketRelevant; + createdBy: mongoose.Types.ObjectId; + ticketMessages: [mongoose.Types.ObjectId] + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/ticketMessage.schema.ts b/src/models/schemas/ticketMessage.schema.ts new file mode 100644 index 0000000..9766a53 --- /dev/null +++ b/src/models/schemas/ticketMessage.schema.ts @@ -0,0 +1,28 @@ +import * as mongoose from 'mongoose'; + +export const TicketMessageSchema = new mongoose.Schema( + { + content: { + type: String, + required: true + }, + ticketId: { + type: mongoose.Types.ObjectId, ref: 'tickets', + required: true + }, + createdBy: { + type: mongoose.Types.ObjectId, ref: 'users', required: true + } + }, + { + collection: 'ticketMessages', + timestamps: true + }, +); +export interface TicketMessage extends mongoose.Document { + content: String; + createdBy: mongoose.Types.ObjectId; + ticketId: mongoose.Types.ObjectId; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/user.schema.ts b/src/models/schemas/user.schema.ts new file mode 100644 index 0000000..ef69788 --- /dev/null +++ b/src/models/schemas/user.schema.ts @@ -0,0 +1,108 @@ +import * as mongoose from 'mongoose'; +import { Role } from '../../common/eNums/role.enum'; +export const UserSchema = new mongoose.Schema( + { + phone: { + type: String, + required: true, + unique: true, + }, + avatarMedia: { + type: String, + required: false, + }, + name: { + type: String, + required: false, + }, + userName: { + type: String, + required: false, + }, + email: { + type: String, + required: false, + }, + lastName: { + type: String, + required: false, + }, + courseIds: [ + { + type: mongoose.Schema.Types.ObjectId, + ref: 'courses', + }, + ], + walletBalance: { type: Number, default: 0 }, + proId: { + type: String, + required: false, + }, + cityId: { + type: String, + required: false, + }, + tel: { + type: String, + required: false, + unique: false, + }, + address: { + type: String, + required: false, + }, + description: { + type: String, + required: false, + }, + gender: { + type: String, + enum: ['Men', 'Women'], + required: false, + }, + courseHeadlineProgress:[{ + type: mongoose.Types.ObjectId, + ref: 'courseHeadlines', + }], + jwtToken: { + type: String, + required: false, + }, + roles: { + type: [], + // enum: ['Writer', 'Reader', 'Admin', 'User'], + default: 'User', + required: true, + }, + status: { + //TODO: + enum: ['Active', 'DeActivate', 'Archived', 'Pending'], + default: 'Active', + type: String, + required: true, + }, + }, + { + collection: 'users', + timestamps: true, + }, +); +export interface User extends mongoose.Document { + phone: string; + avatarMedia: string; + name: string; + lastName: string; + courseIds: [mongoose.Types.ObjectId]; + courseHeadlineProgress: [mongoose.Types.ObjectId]; + walletBalance: number; + proId: string; + cityId: string; + tel: string; + address: string; + description: string; + jwtToken: string; + status: string; + roles: Role[]; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/userDiscount.schema.ts b/src/models/schemas/userDiscount.schema.ts new file mode 100644 index 0000000..5d7f452 --- /dev/null +++ b/src/models/schemas/userDiscount.schema.ts @@ -0,0 +1,27 @@ +import * as mongoose from 'mongoose'; +import { User } from './user.schema'; +import { Discount } from './discount.schema'; +export const UserDiscountSchema = new mongoose.Schema( + { + user: { + type: mongoose.Types.ObjectId, + ref: 'users', + required: true, + }, + discount: { + type: mongoose.Types.ObjectId, + ref: 'discounts', + required: true, + }, + }, + { + collection: 'user_discounts', + timestamps: true, + }, +); +export interface UserDiscount extends mongoose.Document { + user: User; + discount: Discount; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/schemas/userSms.schema.ts b/src/models/schemas/userSms.schema.ts new file mode 100644 index 0000000..c8eb8c5 --- /dev/null +++ b/src/models/schemas/userSms.schema.ts @@ -0,0 +1,40 @@ +import * as mongoose from 'mongoose'; +export const UserSmsSchema = new mongoose.Schema( + { + phone: { + type: String, + required: true, + unique: true, + }, + code: { + type: String, + required: true, + }, + ip: { + type: String, + required: true, + }, + lastSentTime: { + type: Date, + required: false, + }, + sendCount: { + type: Number, + required: true, + unique: false, + }, + }, + { + collection: 'user_sms', + timestamps: true, + }, +); +export interface UserSms extends mongoose.Document { + phone: string; + code: string; + ip: string; + lastSentTime: string; + sendCount: number; + createdAt: Date; + updatedAt: Date; +} diff --git a/src/models/settings.model.ts b/src/models/settings.model.ts new file mode 100644 index 0000000..b671c43 --- /dev/null +++ b/src/models/settings.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { SettingsSchema, Settings } from './schemas/settings.schema'; +import { cleanJson } from './plugins'; + +SettingsSchema.plugin(softDeletePlugin); +SettingsSchema.plugin(cleanJson); +const Settings = mongoose.model>( + 'settings', + SettingsSchema, +); +export default Settings; diff --git a/src/models/ticket.model.ts b/src/models/ticket.model.ts new file mode 100644 index 0000000..97ac3f6 --- /dev/null +++ b/src/models/ticket.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { Ticket, TicketSchema } from './schemas/ticket.schema'; +import { cleanJson } from './plugins'; + +TicketSchema.plugin(softDeletePlugin); +TicketSchema.plugin(cleanJson); +const Ticket = mongoose.model>( + 'tickets', + TicketSchema, +); +export default Ticket; diff --git a/src/models/ticketMessage.model.ts b/src/models/ticketMessage.model.ts new file mode 100644 index 0000000..38ad493 --- /dev/null +++ b/src/models/ticketMessage.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { TicketMessage, TicketMessageSchema } from './schemas/ticketMessage.schema'; +import { cleanJson } from './plugins'; + +TicketMessageSchema.plugin(softDeletePlugin); +TicketMessageSchema.plugin(cleanJson); +const TicketMessage = mongoose.model>( + 'ticketMessages', + TicketMessageSchema, +); +export default TicketMessage; diff --git a/src/models/user.model.ts b/src/models/user.model.ts new file mode 100644 index 0000000..362a14d --- /dev/null +++ b/src/models/user.model.ts @@ -0,0 +1,10 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { UserSchema, User } from './schemas/user.schema'; +import { cleanJson } from './plugins'; + +UserSchema.plugin(softDeletePlugin); +UserSchema.plugin(cleanJson); +const User = mongoose.model>('users', UserSchema); +export default User; diff --git a/src/models/userDiscount.model.ts b/src/models/userDiscount.model.ts new file mode 100644 index 0000000..0761c19 --- /dev/null +++ b/src/models/userDiscount.model.ts @@ -0,0 +1,16 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { + UserDiscount, + UserDiscountSchema, +} from './schemas/userDiscount.schema'; +import { cleanJson } from './plugins'; + +UserDiscountSchema.plugin(softDeletePlugin); +UserDiscountSchema.plugin(cleanJson); +const UserDiscount = mongoose.model< + UserDiscount, + SoftDeleteModel +>('user_discounts', UserDiscountSchema); +export default UserDiscount; diff --git a/src/models/userSms.model.ts b/src/models/userSms.model.ts new file mode 100644 index 0000000..2315a7c --- /dev/null +++ b/src/models/userSms.model.ts @@ -0,0 +1,13 @@ +import mongoose from 'mongoose'; +import { softDeletePlugin, SoftDeleteModel } from 'soft-delete-plugin-mongoose'; + +import { UserSmsSchema, UserSms } from './schemas/userSms.schema'; +import { cleanJson } from './plugins'; + +UserSmsSchema.plugin(softDeletePlugin); +UserSmsSchema.plugin(cleanJson); +const UserSms = mongoose.model>( + 'user_sms', + UserSmsSchema, +); +export default UserSms; diff --git a/tsconfig.build.json b/tsconfig.build.json index 64f86c6..1d7acd8 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -1,4 +1,4 @@ -{ - "extends": "./tsconfig.json", - "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] -} +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] +} diff --git a/tsconfig.json b/tsconfig.json index 7a64609..afa5ad9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,22 @@ -{ - "compilerOptions": { - "module": "commonjs", - "declaration": true, - "removeComments": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "target": "es2017", - "sourceMap": true, - "outDir": "./dist", - "baseUrl": "./", - "incremental": true, - "skipLibCheck": true, - "strictNullChecks": false, - "noImplicitAny": false, - "strictBindCallApply": false, - "forceConsistentCasingInFileNames": false, - "noFallthroughCasesInSwitch": false, - "resolveJsonModule": true - } -} +{ + "compilerOptions": { + "module": "commonjs", + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "es2017", + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": false, + "noImplicitAny": false, + "strictBindCallApply": false, + "forceConsistentCasingInFileNames": false, + "noFallthroughCasesInSwitch": false, + "resolveJsonModule": true + } +} diff --git a/yarn.lock b/yarn.lock index 98b9c37..b492aed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@ampproject/remapping@^2.2.0": version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== dependencies: "@jridgewell/gen-mapping" "^0.3.5" @@ -12,7 +12,7 @@ "@angular-devkit/core@13.3.5": version "13.3.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.3.5.tgz#c5f32f4f99b5cad8df9cf3cf4da9c4b1335c1155" + resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.5.tgz" integrity sha512-w7vzK4VoYP9rLgxJ2SwEfrkpKybdD+QgQZlsDBzT0C6Ebp7b4gkNcNVFo8EiZvfDl6Yplw2IAP7g7fs3STn0hQ== dependencies: ajv "8.9.0" @@ -22,33 +22,33 @@ rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/core@13.3.6": - version "13.3.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.3.6.tgz#656284327d6f84a866a8d3cc8625895fe740602d" - integrity sha512-ZmD586B+RnM2CG5+jbXh2NVfIydTc/yKSjppYDDOv4I530YBm6vpfZMwClpiNk6XLbMv7KqX4Tlr4wfxlPYYbA== +"@angular-devkit/core@17.1.2": + version "17.1.2" + resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-17.1.2.tgz" + integrity sha512-ku+/W/HMCBacSWFppenr9y6Lx8mDuTuQvn1IkTyBLiJOpWnzgVbx9kHDeaDchGa1PwLlJUBBrv27t3qgJOIDPw== dependencies: - ajv "8.9.0" + ajv "8.12.0" ajv-formats "2.1.1" - fast-json-stable-stringify "2.1.0" - magic-string "0.25.7" - rxjs "6.6.7" - source-map "0.7.3" + jsonc-parser "3.2.0" + picomatch "3.0.1" + rxjs "7.8.1" + source-map "0.7.4" -"@angular-devkit/schematics-cli@13.3.6": - version "13.3.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics-cli/-/schematics-cli-13.3.6.tgz#5246c112b6b837a9d0a348cb6b79a8c4948e90c8" - integrity sha512-5tTuu9gbXM0bMk0sin4phmWA3U1Qz53zT/rpEfzQ/+c/s8CoqZ5N1qOnYtemRct3Jxsz1kn4TBpHeriR4r5hHg== +"@angular-devkit/schematics-cli@17.1.2": + version "17.1.2" + resolved "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-17.1.2.tgz" + integrity sha512-bvXykYzSST05qFdlgIzUguNOb3z0hCa8HaTwtqdmQo9aFPf+P+/AC56I64t1iTchMjQtf3JrBQhYM25gUdcGbg== dependencies: - "@angular-devkit/core" "13.3.6" - "@angular-devkit/schematics" "13.3.6" - ansi-colors "4.1.1" - inquirer "8.2.0" - minimist "1.2.6" + "@angular-devkit/core" "17.1.2" + "@angular-devkit/schematics" "17.1.2" + ansi-colors "4.1.3" + inquirer "9.2.12" symbol-observable "4.0.0" + yargs-parser "21.1.1" "@angular-devkit/schematics@13.3.5": version "13.3.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.3.5.tgz#9cb03ac99ee14173a6fa00fd7ca94fa42600c163" + resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.5.tgz" integrity sha512-0N/kL/Vfx0yVAEwa3HYxNx9wYb+G9r1JrLjJQQzDp+z9LtcojNf7j3oey6NXrDUs1WjVZOa/AIdRl3/DuaoG5w== dependencies: "@angular-devkit/core" "13.3.5" @@ -57,325 +57,932 @@ ora "5.4.1" rxjs "6.6.7" -"@angular-devkit/schematics@13.3.6": - version "13.3.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.3.6.tgz#b02e1eff714c2cf44a54de92410d07cc8cefbb0e" - integrity sha512-yLh5xc92C/FiaAp27coPiKWpSUmwoXF7vMxbJYJTyOXlt0mUITAEAwtrZQNr4yAxW/yvgTdyg7PhXaveQNTUuQ== +"@angular-devkit/schematics@17.1.2": + version "17.1.2" + resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.1.2.tgz" + integrity sha512-8S9RuM8olFN/gwN+mjbuF1CwHX61f0i59EGXz9tXLnKRUTjsRR+8vVMTAmX0dvVAT5fJTG/T69X+HX7FeumdqA== dependencies: - "@angular-devkit/core" "13.3.6" - jsonc-parser "3.0.0" - magic-string "0.25.7" + "@angular-devkit/core" "17.1.2" + jsonc-parser "3.2.0" + magic-string "0.30.5" ora "5.4.1" - rxjs "6.6.7" + rxjs "7.8.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz" + integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== dependencies: - "@babel/highlight" "^7.24.2" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/crc32c@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz" + integrity sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/ie11-detection@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz" + integrity sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/sha1-browser@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz" + integrity sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@aws-crypto/supports-web-crypto" "^3.0.0" + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-browser@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz" + integrity sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ== + dependencies: + "@aws-crypto/ie11-detection" "^3.0.0" + "@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.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-crypto/sha256-js@^3.0.0", "@aws-crypto/sha256-js@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz" + integrity sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + +"@aws-crypto/supports-web-crypto@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz" + integrity sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg== + dependencies: + tslib "^1.11.1" + +"@aws-crypto/util@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz" + integrity sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-utf8-browser" "^3.0.0" + tslib "^1.11.1" + +"@aws-sdk/client-s3@^3.574.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.583.0.tgz" + integrity sha512-pS7wncugSuIQ8RgtRIE9Dystdmd3mMnjfjiO1iA1UhGXkyAgoJzQ4jH0r+5X+eWmYHYQcfy9fUQXT2gqV3t9GA== + dependencies: + "@aws-crypto/sha1-browser" "3.0.0" + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sso-oidc" "3.583.0" + "@aws-sdk/client-sts" "3.583.0" + "@aws-sdk/core" "3.582.0" + "@aws-sdk/credential-provider-node" "3.583.0" + "@aws-sdk/middleware-bucket-endpoint" "3.577.0" + "@aws-sdk/middleware-expect-continue" "3.577.0" + "@aws-sdk/middleware-flexible-checksums" "3.577.0" + "@aws-sdk/middleware-host-header" "3.577.0" + "@aws-sdk/middleware-location-constraint" "3.577.0" + "@aws-sdk/middleware-logger" "3.577.0" + "@aws-sdk/middleware-recursion-detection" "3.577.0" + "@aws-sdk/middleware-sdk-s3" "3.582.0" + "@aws-sdk/middleware-signing" "3.577.0" + "@aws-sdk/middleware-ssec" "3.577.0" + "@aws-sdk/middleware-user-agent" "3.583.0" + "@aws-sdk/region-config-resolver" "3.577.0" + "@aws-sdk/signature-v4-multi-region" "3.582.0" + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.583.0" + "@aws-sdk/util-user-agent-browser" "3.577.0" + "@aws-sdk/util-user-agent-node" "3.577.0" + "@aws-sdk/xml-builder" "3.575.0" + "@smithy/config-resolver" "^3.0.0" + "@smithy/core" "^2.0.1" + "@smithy/eventstream-serde-browser" "^3.0.0" + "@smithy/eventstream-serde-config-resolver" "^3.0.0" + "@smithy/eventstream-serde-node" "^3.0.0" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/hash-blob-browser" "^3.0.0" + "@smithy/hash-node" "^3.0.0" + "@smithy/hash-stream-node" "^3.0.0" + "@smithy/invalid-dependency" "^3.0.0" + "@smithy/md5-js" "^3.0.0" + "@smithy/middleware-content-length" "^3.0.0" + "@smithy/middleware-endpoint" "^3.0.0" + "@smithy/middleware-retry" "^3.0.1" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.1" + "@smithy/util-defaults-mode-node" "^3.0.1" + "@smithy/util-endpoints" "^2.0.0" + "@smithy/util-retry" "^3.0.0" + "@smithy/util-stream" "^3.0.1" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso-oidc@^3.577.0", "@aws-sdk/client-sso-oidc@3.583.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.583.0.tgz" + integrity sha512-LO3wmrFXPi2kNE46lD1XATfRrvdNxXd4DlTFouoWmr7lvqoUkcbmtkV2r/XChZA2z0HiDauphC1e8b8laJVeSg== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sts" "3.583.0" + "@aws-sdk/core" "3.582.0" + "@aws-sdk/credential-provider-node" "3.583.0" + "@aws-sdk/middleware-host-header" "3.577.0" + "@aws-sdk/middleware-logger" "3.577.0" + "@aws-sdk/middleware-recursion-detection" "3.577.0" + "@aws-sdk/middleware-user-agent" "3.583.0" + "@aws-sdk/region-config-resolver" "3.577.0" + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.583.0" + "@aws-sdk/util-user-agent-browser" "3.577.0" + "@aws-sdk/util-user-agent-node" "3.577.0" + "@smithy/config-resolver" "^3.0.0" + "@smithy/core" "^2.0.1" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/hash-node" "^3.0.0" + "@smithy/invalid-dependency" "^3.0.0" + "@smithy/middleware-content-length" "^3.0.0" + "@smithy/middleware-endpoint" "^3.0.0" + "@smithy/middleware-retry" "^3.0.1" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.1" + "@smithy/util-defaults-mode-node" "^3.0.1" + "@smithy/util-endpoints" "^2.0.0" + "@smithy/util-middleware" "^3.0.0" + "@smithy/util-retry" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso@3.583.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.583.0.tgz" + integrity sha512-FNJ2MmiBtZZwgkj4+GLVrzqwmD6D8FBptrFZk7PnGkSf7v1Q8txYNI6gY938RRhYJ4lBW4cNbhPvWoDxAl90Hw== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/core" "3.582.0" + "@aws-sdk/middleware-host-header" "3.577.0" + "@aws-sdk/middleware-logger" "3.577.0" + "@aws-sdk/middleware-recursion-detection" "3.577.0" + "@aws-sdk/middleware-user-agent" "3.583.0" + "@aws-sdk/region-config-resolver" "3.577.0" + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.583.0" + "@aws-sdk/util-user-agent-browser" "3.577.0" + "@aws-sdk/util-user-agent-node" "3.577.0" + "@smithy/config-resolver" "^3.0.0" + "@smithy/core" "^2.0.1" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/hash-node" "^3.0.0" + "@smithy/invalid-dependency" "^3.0.0" + "@smithy/middleware-content-length" "^3.0.0" + "@smithy/middleware-endpoint" "^3.0.0" + "@smithy/middleware-retry" "^3.0.1" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.1" + "@smithy/util-defaults-mode-node" "^3.0.1" + "@smithy/util-endpoints" "^2.0.0" + "@smithy/util-middleware" "^3.0.0" + "@smithy/util-retry" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sts@^3.577.0", "@aws-sdk/client-sts@^3.583.0", "@aws-sdk/client-sts@3.583.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.583.0.tgz" + integrity sha512-xDMxiemPDWr9dY2Q4AyixkRnk/hvS6fs6OWxuVCz1WO47YhaAfOsEGAgQMgDLLaOfj/oLU5D14uTNBEPGh4rBA== + dependencies: + "@aws-crypto/sha256-browser" "3.0.0" + "@aws-crypto/sha256-js" "3.0.0" + "@aws-sdk/client-sso-oidc" "3.583.0" + "@aws-sdk/core" "3.582.0" + "@aws-sdk/credential-provider-node" "3.583.0" + "@aws-sdk/middleware-host-header" "3.577.0" + "@aws-sdk/middleware-logger" "3.577.0" + "@aws-sdk/middleware-recursion-detection" "3.577.0" + "@aws-sdk/middleware-user-agent" "3.583.0" + "@aws-sdk/region-config-resolver" "3.577.0" + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.583.0" + "@aws-sdk/util-user-agent-browser" "3.577.0" + "@aws-sdk/util-user-agent-node" "3.577.0" + "@smithy/config-resolver" "^3.0.0" + "@smithy/core" "^2.0.1" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/hash-node" "^3.0.0" + "@smithy/invalid-dependency" "^3.0.0" + "@smithy/middleware-content-length" "^3.0.0" + "@smithy/middleware-endpoint" "^3.0.0" + "@smithy/middleware-retry" "^3.0.1" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.1" + "@smithy/util-defaults-mode-node" "^3.0.1" + "@smithy/util-endpoints" "^2.0.0" + "@smithy/util-middleware" "^3.0.0" + "@smithy/util-retry" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/core@3.582.0": + version "3.582.0" + resolved "https://registry.npmjs.org/@aws-sdk/core/-/core-3.582.0.tgz" + integrity sha512-ofmD96IQc9g1dbyqlCyxu5fCG7kIl9p1NoN5+vGBUyLdbmPCV3Pdg99nRHYEJuv2MgGx5AUFGDPMHcqbJpnZIw== + dependencies: + "@smithy/core" "^2.0.1" + "@smithy/protocol-http" "^4.0.0" + "@smithy/signature-v4" "^3.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + fast-xml-parser "4.2.5" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-env@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz" + integrity sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-http@3.582.0": + version "3.582.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.582.0.tgz" + integrity sha512-kGOUKw5ryPkDIYB69PjK3SicVLTbWB06ouFN2W1EvqUJpkQGPAUGzYcomKtt3mJaCTf/1kfoaHwARAl6KKSP8Q== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + "@smithy/util-stream" "^3.0.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@3.583.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.583.0.tgz" + integrity sha512-8I0oWNg/yps6ctjhEeL/qJ9BIa/+xXP7RPDQqFKZ2zBkWbmLLOoMWXRvl8uKUBD6qCe+DGmcu9skfVXeXSesEQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.577.0" + "@aws-sdk/credential-provider-process" "3.577.0" + "@aws-sdk/credential-provider-sso" "3.583.0" + "@aws-sdk/credential-provider-web-identity" "3.577.0" + "@aws-sdk/types" "3.577.0" + "@smithy/credential-provider-imds" "^3.0.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/shared-ini-file-loader" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@3.583.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.583.0.tgz" + integrity sha512-yBNypBXny7zJH85SzxDj8s1mbLXv9c/Vbq0qR3R3POj2idZ6ywB/qlIRC1XwBuv49Wvg8kA1wKXk3K3jrpcVIw== + dependencies: + "@aws-sdk/credential-provider-env" "3.577.0" + "@aws-sdk/credential-provider-http" "3.582.0" + "@aws-sdk/credential-provider-ini" "3.583.0" + "@aws-sdk/credential-provider-process" "3.577.0" + "@aws-sdk/credential-provider-sso" "3.583.0" + "@aws-sdk/credential-provider-web-identity" "3.577.0" + "@aws-sdk/types" "3.577.0" + "@smithy/credential-provider-imds" "^3.0.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/shared-ini-file-loader" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-process@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz" + integrity sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/shared-ini-file-loader" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@3.583.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.583.0.tgz" + integrity sha512-G/1EvL9tBezSiU+06tG4K/kOvFfPjnheT4JSXqjPM7+vjKzgp2jxp1J9MMd69zs4jVWon932zMeGgjrCplzMEg== + dependencies: + "@aws-sdk/client-sso" "3.583.0" + "@aws-sdk/token-providers" "3.577.0" + "@aws-sdk/types" "3.577.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/shared-ini-file-loader" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-web-identity@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz" + integrity sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-bucket-endpoint@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.577.0.tgz" + integrity sha512-twlkNX2VofM6kHXzDEiJOiYCc9tVABe5cbyxMArRWscIsCWG9mamPhC77ezG4XsN9dFEwVdxEYD5Crpm/5EUiw== + dependencies: + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-arn-parser" "3.568.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-config-provider" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-expect-continue@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.577.0.tgz" + integrity sha512-6dPp8Tv4F0of4un5IAyG6q++GrRrNQQ4P2NAMB1W0VO4JoEu1C8GievbbDLi88TFIFmtKpnHB0ODCzwnoe8JsA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-flexible-checksums@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.577.0.tgz" + integrity sha512-IHAUEipIfagjw92LV8SOSBiCF7ZnqfHcw14IkcZW2/mfrCy1Fh/k40MoS/t3Tro2tQ91rgQPwUoSgB/QCi2Org== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@aws-crypto/crc32c" "3.0.0" + "@aws-sdk/types" "3.577.0" + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-host-header@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz" + integrity sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-location-constraint@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.577.0.tgz" + integrity sha512-DKPTD2D2s+t2QUo/IXYtVa/6Un8GZ+phSTBkyBNx2kfZz4Kwavhl/JJzSqTV3GfCXkVdFu7CrjoX7BZ6qWeTUA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-logger@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz" + integrity sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz" + integrity sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-s3@3.582.0": + version "3.582.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.582.0.tgz" + integrity sha512-PJqQpLoLaZPRI4L/XZUeHkd9UVK8VAr9R38wv0osGeMTvzD9iwzzk0I2TtBqFda/5xEB1YgVYZwyqvmStXmttg== + dependencies: + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-arn-parser" "3.568.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/signature-v4" "^3.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + "@smithy/util-config-provider" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-signing@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.577.0.tgz" + integrity sha512-QS/dh3+NqZbXtY0j/DZ867ogP413pG5cFGqBy9OeOhDMsolcwLrQbi0S0c621dc1QNq+er9ffaMhZ/aPkyXXIg== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/signature-v4" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-middleware" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-ssec@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.577.0.tgz" + integrity sha512-i2BPJR+rp8xmRVIGc0h1kDRFcM2J9GnClqqpc+NLSjmYadlcg4mPklisz9HzwFVcRPJ5XcGf3U4BYs5G8+iTyg== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@3.583.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.583.0.tgz" + integrity sha512-xVNXXXDWvBVI/AeVtSdA9SVumqxiZaESk/JpUn9GMkmtTKfter0Cweap+1iQ9j8bRAO0vNhmIkbcvdB1S4WVUw== + dependencies: + "@aws-sdk/types" "3.577.0" + "@aws-sdk/util-endpoints" "3.583.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/region-config-resolver@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz" + integrity sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@3.582.0": + version "3.582.0" + resolved "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.582.0.tgz" + integrity sha512-aFCOjjNqEX2l+V8QjOWy5F7CtHIC/RlYdBuv3No6yxn+pMvVUUe6zdMk2yHWcudVpHWsyvcZzAUBliAPeFLPsQ== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.582.0" + "@aws-sdk/types" "3.577.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/signature-v4" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz" + integrity sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/shared-ini-file-loader" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/types@^3.222.0", "@aws-sdk/types@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz" + integrity sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/util-arn-parser@3.568.0": + version "3.568.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz" + integrity sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-endpoints@3.583.0": + version "3.583.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.583.0.tgz" + integrity sha512-ZC9mb2jq6BFXPYsUsD2tmYcnlmd+9PGNwnFNn8jk4abna5Jjk2wDknN81ybktmBR5ttN9W8ugmktuKtvAMIDCQ== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/types" "^3.0.0" + "@smithy/util-endpoints" "^2.0.0" + tslib "^2.6.2" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.568.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz" + integrity sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-browser@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz" + integrity sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/types" "^3.0.0" + bowser "^2.11.0" + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-node@3.577.0": + version "3.577.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz" + integrity sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA== + dependencies: + "@aws-sdk/types" "3.577.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/util-utf8-browser@^3.0.0": + version "3.259.0" + resolved "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz" + integrity sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw== + dependencies: + tslib "^2.3.1" + +"@aws-sdk/xml-builder@3.575.0": + version "3.575.0" + resolved "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.575.0.tgz" + integrity sha512-cWgAwmbFYNCFzPwxL705+lWps0F3ZvOckufd2KKoEZUmtpVw9/txUXNrPySUXSmRTSRhoatIMABNfStWR043bQ== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz" + integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== + dependencies: + "@babel/highlight" "^7.24.6" picocolors "^1.0.0" -"@babel/compat-data@^7.23.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/compat-data@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.6.tgz" + integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" - integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.6.tgz" + integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.4" - "@babel/parser" "^7.24.4" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helpers" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/template" "^7.24.6" + "@babel/traverse" "^7.24.6" + "@babel/types" "^7.24.6" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.1", "@babel/generator@^7.24.4", "@babel/generator@^7.7.2": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" - integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== +"@babel/generator@^7.24.6", "@babel/generator@^7.7.2": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.6.tgz" + integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg== dependencies: - "@babel/types" "^7.24.0" + "@babel/types" "^7.24.6" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-compilation-targets@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz" + integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" + "@babel/compat-data" "^7.24.6" + "@babel/helper-validator-option" "^7.24.6" browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== +"@babel/helper-environment-visitor@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz" + integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== +"@babel/helper-function-name@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz" + integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w== dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== +"@babel/helper-hoist-variables@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz" + integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.6" -"@babel/helper-module-imports@^7.22.15": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== +"@babel/helper-module-imports@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz" + integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g== dependencies: - "@babel/types" "^7.24.0" + "@babel/types" "^7.24.6" -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== +"@babel/helper-module-transforms@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz" + integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-module-imports" "^7.24.6" + "@babel/helper-simple-access" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" - integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.6", "@babel/helper-plugin-utils@^7.8.0": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz" + integrity sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg== -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== +"@babel/helper-simple-access@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz" + integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.6" -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== +"@babel/helper-split-export-declaration@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz" + integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.6" -"@babel/helper-string-parser@^7.23.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== +"@babel/helper-string-parser@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz" + integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz" + integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-validator-option@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz" + integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ== -"@babel/helpers@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" - integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== +"@babel/helpers@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.6.tgz" + integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA== dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" -"@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== +"@babel/highlight@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz" + integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== dependencies: - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-validator-identifier" "^7.24.6" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" - integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.6": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz" + integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz" + integrity sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" -"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== +"@babel/template@^7.24.6", "@babel/template@^7.3.3": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz" + integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw== dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" + "@babel/code-frame" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" -"@babel/traverse@^7.24.1", "@babel/traverse@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== +"@babel/traverse@^7.24.6", "@babel/traverse@^7.7.2": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz" + integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw== dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-function-name" "^7.24.6" + "@babel/helper-hoist-variables" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.6", "@babel/types@^7.3.3": + version "7.24.6" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz" + integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-string-parser" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@colors/colors@1.5.0": version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== "@eslint/eslintrc@^2.1.4": version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" @@ -390,12 +997,50 @@ "@eslint/js@8.57.0": version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@ffprobe-installer/ffprobe@^1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/@ffprobe-installer/ffprobe/-/ffprobe-1.4.1.tgz" + integrity sha512-3WJvxU0f4d7IOZdzoVCAj9fYtiQNC6E0521FJFe9iP5Ej8auTXU7TsrUzIAG1CydeQI+BnM3vGog92SCcF9KtA== + optionalDependencies: + "@ffprobe-installer/darwin-arm64" "5.0.1" + "@ffprobe-installer/darwin-x64" "5.0.0" + "@ffprobe-installer/linux-arm" "5.0.0" + "@ffprobe-installer/linux-arm64" "5.0.0" + "@ffprobe-installer/linux-ia32" "5.0.0" + "@ffprobe-installer/linux-x64" "5.0.0" + "@ffprobe-installer/win32-ia32" "5.0.0" + "@ffprobe-installer/win32-x64" "5.0.0" + +"@ffprobe-installer/ffprobe@^2.1.2": + version "2.1.2" + resolved "https://registry.npmjs.org/@ffprobe-installer/ffprobe/-/ffprobe-2.1.2.tgz" + integrity sha512-ZNvwk4f2magF42Zji2Ese16SMj9BS7Fui4kRjg6gTYTxY3gWZNpg85n4MIfQyI9nimHg4x/gT6FVkp/bBDuBwg== + optionalDependencies: + "@ffprobe-installer/darwin-arm64" "5.0.1" + "@ffprobe-installer/darwin-x64" "5.1.0" + "@ffprobe-installer/linux-arm" "5.2.0" + "@ffprobe-installer/linux-arm64" "5.2.0" + "@ffprobe-installer/linux-ia32" "5.2.0" + "@ffprobe-installer/linux-x64" "5.2.0" + "@ffprobe-installer/win32-ia32" "5.1.0" + "@ffprobe-installer/win32-x64" "5.1.0" + +"@ffprobe-installer/win32-x64@5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/@ffprobe-installer/win32-x64/-/win32-x64-5.0.0.tgz" + integrity sha512-P4ZMRFxVMnfMsOyTfBM/+nkTodLeOUfXNPo+X1bKEWBiZxRErqX/IHS5sLA0yAH8XmtKZcL7Cu6M26ztGcQYxw== + +"@ffprobe-installer/win32-x64@5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@ffprobe-installer/win32-x64/-/win32-x64-5.1.0.tgz" + integrity sha512-jMGYeAgkrdn4e2vvYt/qakgHRE3CPju4bn5TmdPfoAm1BlX1mY9cyMd8gf5vSzI8gH8Zq5WQAyAkmekX/8TSTg== + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz" integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== dependencies: "@humanwhocodes/object-schema" "^2.0.2" @@ -404,17 +1049,41 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^2.0.2": version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@inquirer/figures@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.2.tgz" + integrity sha512-4F1MBwVr3c/m4bAUef6LgkvBfSjzwH+OfldgHqcuacWwSUetFebM2wi58WfG9uk1rR98U6GwLed4asLJbwdV5w== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@isaacs/fs-minipass@^4.0.0": + version "4.0.1" + resolved "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz" + integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== + dependencies: + minipass "^7.0.4" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -425,12 +1094,12 @@ "@istanbuljs/schema@^0.1.2": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: "@jest/types" "^27.5.1" @@ -442,7 +1111,7 @@ "@jest/core@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== dependencies: "@jest/console" "^27.5.1" @@ -476,7 +1145,7 @@ "@jest/environment@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: "@jest/fake-timers" "^27.5.1" @@ -486,7 +1155,7 @@ "@jest/fake-timers@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: "@jest/types" "^27.5.1" @@ -498,7 +1167,7 @@ "@jest/globals@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: "@jest/environment" "^27.5.1" @@ -507,7 +1176,7 @@ "@jest/reporters@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -538,7 +1207,7 @@ "@jest/source-map@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: callsites "^3.0.0" @@ -547,7 +1216,7 @@ "@jest/test-result@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: "@jest/console" "^27.5.1" @@ -557,7 +1226,7 @@ "@jest/test-sequencer@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== dependencies: "@jest/test-result" "^27.5.1" @@ -567,7 +1236,7 @@ "@jest/transform@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" @@ -588,7 +1257,7 @@ "@jest/types@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" @@ -599,7 +1268,7 @@ "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: "@jridgewell/set-array" "^1.2.1" @@ -608,127 +1277,194 @@ "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/set-array@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/source-map@^0.3.3": version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz" integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== dependencies: "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@liara/cli@^6.0.3": + version "6.0.3" + resolved "https://registry.npmjs.org/@liara/cli/-/cli-6.0.3.tgz" + integrity sha512-MmF13VImH4OQiDxXwVeXpUg0iQoOgHOTOEmGYBVcjrC8Fq90AuKKrcFUzCkGmAjHMX35r8+efcMv7pkKkf6cBw== + dependencies: + "@oclif/core" "^3.26.4" + "@oclif/plugin-autocomplete" "^3.0.15" + "@oclif/plugin-help" "^6.0.21" + "@oclif/plugin-version" "^2.0.17" + ansi-escapes "^6.2.1" + async-retry "^1.3.3" + bytes "^3.1.2" + chalk "^5.3.0" + email-prompt-ts "0.3.2" + email-validator "^2.0.4" + form-data "^4.0.0" + fs-extra "^11.2.0" + get-port "^7.1.0" + globby "^14.0.1" + got "^13.0.0" + https-proxy-agent "^7.0.4" + ignore "^5.3.1" + inquirer "^9.2.19" + mime "^4.0.1" + moment "^2.30.1" + open "^10.1.0" + ora "^8.0.1" + progress "^2.0.3" + semver "^7.6.0" + shamsi-date-converter "^1.0.5" + tar "^7.0.1" + ua-parser-js "^1.0.37" + update-notifier "^7.0.0" + ws "^8.16.0" + +"@ljharb/through@^2.3.11", "@ljharb/through@^2.3.13": + version "2.3.13" + resolved "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz" + integrity sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ== + dependencies: + call-bind "^1.0.7" + "@lukeed/csprng@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@lukeed/csprng/-/csprng-1.1.0.tgz#1e3e4bd05c1cc7a0b2ddbd8a03f39f6e4b5e6cfe" + resolved "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz" integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== "@microsoft/tsdoc@^0.14.2": version "0.14.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb" + resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz" integrity sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug== "@mongodb-js/saslprep@^1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz#0c48a96c8d799e81fae311b7251aa5c1dc7c6e95" - integrity sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA== + version "1.1.7" + resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.7.tgz" + integrity sha512-dCHW/oEX0KJ4NjDULBo3JiOaK5+6axtpBbS+ao2ZInoAL9/YRQLhXzSNAFz7hP4nzLkIqsfYAK/PDE3+XHny0Q== dependencies: sparse-bitfield "^3.0.3" "@nestjs/axios@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@nestjs/axios/-/axios-2.0.0.tgz#2116fad483e232ef102a877b503a9f19926bd102" + resolved "https://registry.npmjs.org/@nestjs/axios/-/axios-2.0.0.tgz" integrity sha512-F6oceoQLEn031uun8NiommeMkRIojQqVryxQy/mK7fx0CI0KbgkJL3SloCQcsOD+agoEnqKJKXZpEvL6FNswJg== -"@nestjs/cli@^8.2.5": - version "8.2.8" - resolved "https://registry.yarnpkg.com/@nestjs/cli/-/cli-8.2.8.tgz#63e5b477f90e6d0238365dcc6236b95bf4f0c807" - integrity sha512-y5Imcw1EY0OxD3POAM7SLUB1rFdn5FjbfSsyJrokjKmXY+i6KcBdbRrv3Ox7aeJ4W7wXuckIXZEUlK6lC52dnA== +"@nestjs/cli@^10.3.2": + version "10.3.2" + resolved "https://registry.npmjs.org/@nestjs/cli/-/cli-10.3.2.tgz" + integrity sha512-aWmD1GLluWrbuC4a1Iz/XBk5p74Uj6nIVZj6Ov03JbTfgtWqGFLtXuMetvzMiHxfrHehx/myt2iKAPRhKdZvTg== dependencies: - "@angular-devkit/core" "13.3.6" - "@angular-devkit/schematics" "13.3.6" - "@angular-devkit/schematics-cli" "13.3.6" - "@nestjs/schematics" "^8.0.3" - chalk "3.0.0" - chokidar "3.5.3" - cli-table3 "0.6.2" + "@angular-devkit/core" "17.1.2" + "@angular-devkit/schematics" "17.1.2" + "@angular-devkit/schematics-cli" "17.1.2" + "@nestjs/schematics" "^10.0.1" + chalk "4.1.2" + chokidar "3.6.0" + cli-table3 "0.6.3" commander "4.1.1" - fork-ts-checker-webpack-plugin "7.2.11" - inquirer "7.3.3" + fork-ts-checker-webpack-plugin "9.0.2" + glob "10.3.10" + inquirer "8.2.6" node-emoji "1.11.0" ora "5.4.1" - os-name "4.0.1" - rimraf "3.0.2" + rimraf "4.4.1" shelljs "0.8.5" source-map-support "0.5.21" tree-kill "1.2.2" - tsconfig-paths "3.14.1" - tsconfig-paths-webpack-plugin "3.5.2" - typescript "4.7.4" - webpack "5.73.0" + tsconfig-paths "4.2.0" + tsconfig-paths-webpack-plugin "4.1.0" + typescript "5.3.3" + webpack "5.90.1" webpack-node-externals "3.0.0" -"@nestjs/common@^10.0.5": +"@nestjs/common@^10.0.0", "@nestjs/common@^10.0.5", "@nestjs/common@^7.0.0 || ^8.0.0 || ^9.0.0", "@nestjs/common@^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^9.0.0", "@nestjs/common@^9.0.0 || ^10.0.0": version "10.3.8" - resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-10.3.8.tgz#2dada4dc8b53aa1630d00bdea57db4453f066c4b" + resolved "https://registry.npmjs.org/@nestjs/common/-/common-10.3.8.tgz" integrity sha512-P+vPEIvqx2e+fonsYVlFXKvoChyJ8Tq+lfpqdVFqblovHbFr3kZ/nYX0cPs+XuW6bnRT8tz0SSR9XBGU43kJhw== dependencies: - uid "2.0.2" iterare "1.2.1" tslib "2.6.2" + uid "2.0.2" -"@nestjs/core@^10.0.5": +"@nestjs/config@^3.2.2": + version "3.2.2" + resolved "https://registry.npmjs.org/@nestjs/config/-/config-3.2.2.tgz" + integrity sha512-vGICPOui5vE6kPz1iwQ7oCnp3qWgqxldPmBQ9onkVoKlBtyc83KJCr7CjuVtf4OdovMAVcux1d8Q6jglU2ZphA== + dependencies: + dotenv "16.4.5" + dotenv-expand "10.0.0" + lodash "4.17.21" + uuid "9.0.1" + +"@nestjs/core@^10.0.0", "@nestjs/core@^10.0.5", "@nestjs/core@^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/core@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/core@^9.0.0", "@nestjs/core@^9.0.0 || ^10.0.0": version "10.3.8" - resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-10.3.8.tgz#0831fc44b51cfe736cf5ffacd17d479dc806eddb" + resolved "https://registry.npmjs.org/@nestjs/core/-/core-10.3.8.tgz" integrity sha512-AxF4tpYLDNn5Wfb3C4bNaaHJ4pREH5FJrSisR2A5zkYpQFORFs0Tc36lOFPMwBTy8Iv2wUwWLUVc5ftBnxEv4w== dependencies: - uid "2.0.2" "@nuxtjs/opencollective" "0.3.2" fast-safe-stringify "2.1.1" iterare "1.2.1" path-to-regexp "3.2.0" tslib "2.6.2" + uid "2.0.2" + +"@nestjs/event-emitter@^2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.0.4.tgz" + integrity sha512-quMiw8yOwoSul0pp3mOonGz8EyXWHSBTqBy8B0TbYYgpnG1Ix2wGUnuTksLWaaBiiOTDhciaZ41Y5fJZsSJE1Q== + dependencies: + eventemitter2 "6.4.9" + +"@nestjs/jwt@^10.2.0": + version "10.2.0" + resolved "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz" + integrity sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g== + dependencies: + "@types/jsonwebtoken" "9.0.5" + jsonwebtoken "9.0.2" "@nestjs/mapped-types@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz#485d6b44e19779c98d04e52bd1d2bcc7001df0ea" + resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz" integrity sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg== "@nestjs/mongoose@^10.0.6": version "10.0.6" - resolved "https://registry.yarnpkg.com/@nestjs/mongoose/-/mongoose-10.0.6.tgz#6081975eaa658a6097b63d139a82f58b2b35956c" + resolved "https://registry.npmjs.org/@nestjs/mongoose/-/mongoose-10.0.6.tgz" integrity sha512-J8jFgSvCDEKMXU57QAIdXIlWQsOFWK+x0PM1KI/0zHe3/4JrAtFGTFD08hRX3IHk+WJT9g/XQIpMSNM7/10Jlg== -"@nestjs/platform-express@^10.0.5": +"@nestjs/platform-express@^10.0.0", "@nestjs/platform-express@^10.0.5", "@nestjs/platform-express@^9.0.0": version "10.3.8" - resolved "https://registry.yarnpkg.com/@nestjs/platform-express/-/platform-express-10.3.8.tgz#e8458cb1d1931589d5438d7b6075aa31634417d3" + resolved "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.3.8.tgz" integrity sha512-sifLoxgEJvAgbim1UuW6wyScMfkS9SVQRH+lN33N/9ZvZSjO6NSDLOe+wxqsnZkia+QrjFC0qy0ITRAsggfqbg== dependencies: body-parser "1.20.2" @@ -737,17 +1473,28 @@ multer "1.4.4-lts.1" tslib "2.6.2" -"@nestjs/platform-socket.io@^10.0.5": +"@nestjs/platform-socket.io@^10.0.0", "@nestjs/platform-socket.io@^10.0.5": version "10.3.8" - resolved "https://registry.yarnpkg.com/@nestjs/platform-socket.io/-/platform-socket.io-10.3.8.tgz#98e246007be4520543bb838d69122abc2cff0e88" + resolved "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-10.3.8.tgz" integrity sha512-CpsWw/AaJMDTan0FoYHkKyptsrFz8JSnHBGcajvj9UMeKCJ8Hi80T9ymKnP7OozbArKimh1oBusN+k4sKRxRTg== dependencies: socket.io "4.7.5" tslib "2.6.2" -"@nestjs/schematics@^8.0.11", "@nestjs/schematics@^8.0.3": +"@nestjs/schematics@^10.0.1": + version "10.1.1" + resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.1.1.tgz" + integrity sha512-o4lfCnEeIkfJhGBbLZxTuVWcGuqDCFwg5OrvpgRUBM7vI/vONvKKiB5riVNpO+JqXoH0I42NNeDb0m4V5RREig== + dependencies: + "@angular-devkit/core" "17.1.2" + "@angular-devkit/schematics" "17.1.2" + comment-json "4.2.3" + jsonc-parser "3.2.1" + pluralize "8.0.0" + +"@nestjs/schematics@^8.0.11": version "8.0.11" - resolved "https://registry.yarnpkg.com/@nestjs/schematics/-/schematics-8.0.11.tgz#5d0c56184826660a2c01b1c326dbdbb12880e864" + resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-8.0.11.tgz" integrity sha512-W/WzaxgH5aE01AiIErE9QrQJ73VR/M/8p8pq0LZmjmNcjZqU5kQyOWUxZg13WYfSpJdOa62t6TZRtFDmgZPoIg== dependencies: "@angular-devkit/core" "13.3.5" @@ -758,14 +1505,14 @@ "@nestjs/serve-static@^4.0.0": version "4.0.2" - resolved "https://registry.yarnpkg.com/@nestjs/serve-static/-/serve-static-4.0.2.tgz#f003bbd90922bdc73d0261edacf001dfef174c96" + resolved "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-4.0.2.tgz" integrity sha512-cT0vdWN5ar7jDI2NKbhf4LcwJzU4vS5sVpMkVrHuyLcltbrz6JdGi1TfIMMatP2pNiq5Ie/uUdPSFDVaZX/URQ== dependencies: path-to-regexp "0.2.5" "@nestjs/swagger@^7.1.1": version "7.3.1" - resolved "https://registry.yarnpkg.com/@nestjs/swagger/-/swagger-7.3.1.tgz#353fdd5bd6f23564505117b1c82d7decc145e8fe" + resolved "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.3.1.tgz" integrity sha512-LUC4mr+5oAleEC/a2j8pNRh1S5xhKXJ1Gal5ZdRjt9XebQgbngXCdW7JTA9WOEcwGtFZN9EnKYdquzH971LZfw== dependencies: "@microsoft/tsdoc" "^0.14.2" @@ -777,34 +1524,43 @@ "@nestjs/testing@^9.4.0": version "9.4.3" - resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-9.4.3.tgz#53ffbabdd38f500b145c30f2fbb76dedad393d79" + resolved "https://registry.npmjs.org/@nestjs/testing/-/testing-9.4.3.tgz" integrity sha512-LDT8Ai2eKnTzvnPaJwWOK03qTaFap5uHHsJCv6dL0uKWk6hyF9jms8DjyVaGsaujCaXDG8izl1mDEER0OmxaZA== dependencies: tslib "2.5.3" "@nestjs/throttler@^4.0.0": version "4.2.1" - resolved "https://registry.yarnpkg.com/@nestjs/throttler/-/throttler-4.2.1.tgz#7a27bb3fed899396beab04648ed72b5c682fc61b" + resolved "https://registry.npmjs.org/@nestjs/throttler/-/throttler-4.2.1.tgz" integrity sha512-wVPMuIyr0KdrK1RVVQceWVNesogCm9IgYC1V5EkaTZ+usIE4qxEyzdwU5IqQLgOO/Loiq98MLwReDxazX7i9Uw== dependencies: md5 "^2.2.1" +"@nestjs/websockets@^10.0.0": + version "10.3.9" + resolved "https://registry.npmjs.org/@nestjs/websockets/-/websockets-10.3.9.tgz" + integrity sha512-mKPIctbFoJ1BVYZL/sNlg0jWmkOTS0EIaJ5iULZvx83AA5K15kzettpQ3ls8u0qBsqbOe+ueqoDEpT1wHYKvyg== + dependencies: + iterare "1.2.1" + object-hash "3.0.0" + tslib "2.6.2" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -812,47 +1568,81 @@ "@nuxtjs/opencollective@0.3.2": version "0.3.2" - resolved "https://registry.yarnpkg.com/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz#620ce1044f7ac77185e825e1936115bb38e2681c" + resolved "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== dependencies: chalk "^4.1.0" consola "^2.15.0" node-fetch "^2.6.1" -"@opencensus/core@0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@opencensus/core/-/core-0.0.9.tgz#b16f775435ee309433e4126af194d37313fc93b3" - integrity sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q== +"@oclif/core@^3.26.4", "@oclif/core@^3.26.6": + version "3.26.6" + resolved "https://registry.npmjs.org/@oclif/core/-/core-3.26.6.tgz" + integrity sha512-+FiTw1IPuJTF9tSAlTsY8bGK4sgthehjz7c2SvYdgQncTkxI2xvUch/8QpjNYGLEmUneNygvYMRBax2KJcLccA== dependencies: - continuation-local-storage "^3.2.1" - log-driver "^1.2.7" - semver "^5.5.0" - shimmer "^1.2.0" - uuid "^3.2.1" + "@types/cli-progress" "^3.11.5" + 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" + color "^4.2.3" + debug "^4.3.4" + ejs "^3.1.10" + 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" + minimatch "^9.0.4" + 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.2.0" + widest-line "^3.1.0" + wordwrap "^1.0.0" + wrap-ansi "^7.0.0" -"@opencensus/core@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@opencensus/core/-/core-0.0.8.tgz#df01f200c2d2fbfe14dae129a1a86fb87286db92" - integrity sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ== +"@oclif/plugin-autocomplete@^3.0.15": + version "3.0.18" + resolved "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-3.0.18.tgz" + integrity sha512-J+SZ5dNoBUoGerpBRJQfNm4ml4+rED23MoXXJeAE8HCFTscXtnJ3I1kS37O4D7A1O0+PsUzslQBJkLHFjZg+xQ== dependencies: - continuation-local-storage "^3.2.1" - log-driver "^1.2.7" - semver "^5.5.0" - shimmer "^1.2.0" - uuid "^3.2.1" + "@oclif/core" "^3.26.6" + chalk "^5.3.0" + debug "^4.3.4" + ejs "^3.1.10" -"@opencensus/propagation-b3@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz#0751e6fd75f09400d9d3c419001e9e15a0df68e9" - integrity sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A== +"@oclif/plugin-help@^6.0.21": + version "6.0.22" + resolved "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.0.22.tgz" + integrity sha512-IPgUvPSdZMCHzCwCRVDUMWtFkWZSoU6Z7igNclugLIpF3Ac3vKkZGguWZ+SLK3e7012etDzgAHjXFELYOqqbsw== dependencies: - "@opencensus/core" "^0.0.8" - uuid "^3.2.1" + "@oclif/core" "^3.26.6" + +"@oclif/plugin-version@^2.0.17": + version "2.1.2" + resolved "https://registry.npmjs.org/@oclif/plugin-version/-/plugin-version-2.1.2.tgz" + integrity sha512-viBj+3M5O0sCumSC/yt3T5VnL/gWZklFYZpBTby3rOIkXGuIsgAscMfnabWpYzbMryGGylIBKagbOPsAzab8Fw== + dependencies: + "@oclif/core" "^3.26.6" + ansis "^3.2.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pm2/agent@~2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@pm2/agent/-/agent-2.0.3.tgz#6b47fda837f185864767fe1e048f61d1de31fc45" - integrity sha512-xkqqCoTf5VsciMqN0vb9jthW7olVAi4KRFNddCc7ZkeJZ3i8QwZANr4NSH2H5DvseRFHq7MiPspRY/EWAFWWTg== + version "2.0.4" + resolved "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.4.tgz" + integrity sha512-n7WYvvTJhHLS2oBb1PjOtgLpMhgImOq8sXkPBw6smeg9LJBWZjiEgPKOpR8mn9UJZsB5P3W4V/MyvNnp31LKeA== dependencies: async "~3.2.0" chalk "~3.0.0" @@ -866,15 +1656,13 @@ pm2-axon-rpc "~0.7.0" proxy-agent "~6.3.0" semver "~7.5.0" - ws "~7.4.0" + ws "~7.5.10" -"@pm2/io@~5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@pm2/io/-/io-5.0.2.tgz#5e4177281280082d7c490bb776fad7f8448c6bca" - integrity sha512-XAvrNoQPKOyO/jJyCu8jPhLzlyp35MEf7w/carHXmWKddPzeNOFSEpSEqMzPDawsvpxbE+i918cNN+MwgVsStA== +"@pm2/io@~6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/@pm2/io/-/io-6.0.0.tgz" + integrity sha512-sKUEgZoQ5/jRwTyMB1I7u2wXL6dG0j/F/M4ANJ7dJCApfW8nWC0RElMW2siEKvZ79iplIPAaWV27oyBoerEflw== dependencies: - "@opencensus/core" "0.0.9" - "@opencensus/propagation-b3" "0.0.8" async "~2.6.1" debug "~4.3.1" eventemitter2 "^6.3.1" @@ -886,7 +1674,7 @@ "@pm2/js-api@~0.8.0": version "0.8.0" - resolved "https://registry.yarnpkg.com/@pm2/js-api/-/js-api-0.8.0.tgz#d1b8aff562dd34befa3cb30fe28e08c9f9743abc" + resolved "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.8.0.tgz" integrity sha512-nmWzrA/BQZik3VBz+npRcNIu01kdBhWL0mxKmP1ciF/gTcujPTQqt027N9fc1pK9ERM8RipFhymw7RcmCyOEYA== dependencies: async "^2.6.3" @@ -897,70 +1685,572 @@ "@pm2/pm2-version-check@latest": version "1.0.4" - resolved "https://registry.yarnpkg.com/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz#cf97fbb14b0eca95430ca05eedccbd2683806e43" + resolved "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz" integrity sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA== dependencies: debug "^4.3.1" +"@pnpm/config.env-replace@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz" + integrity sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w== + +"@pnpm/network.ca-file@^1.0.1": + version "1.0.2" + resolved "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz" + integrity sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA== + dependencies: + graceful-fs "4.2.10" + +"@pnpm/npm-conf@^2.1.0": + version "2.2.2" + resolved "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== + dependencies: + "@pnpm/config.env-replace" "^1.1.0" + "@pnpm/network.ca-file" "^1.0.1" + config-chain "^1.1.11" + +"@sindresorhus/is@^5.2.0": + version "5.6.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz" + integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== + +"@sindresorhus/merge-streams@^2.1.0": + version "2.3.0" + resolved "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz" + integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== + "@sinonjs/commons@^1.7.0": version "1.8.6" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz" integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^8.0.1": version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== dependencies: "@sinonjs/commons" "^1.7.0" +"@smithy/abort-controller@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader-native@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz" + integrity sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg== + dependencies: + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz" + integrity sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA== + dependencies: + tslib "^2.6.2" + +"@smithy/config-resolver@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz" + integrity sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw== + dependencies: + "@smithy/node-config-provider" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.0" + tslib "^2.6.2" + +"@smithy/core@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz" + integrity sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg== + dependencies: + "@smithy/middleware-endpoint" "^3.0.0" + "@smithy/middleware-retry" "^3.0.1" + "@smithy/middleware-serde" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + "@smithy/util-middleware" "^3.0.0" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz" + integrity sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA== + dependencies: + "@smithy/node-config-provider" "^3.0.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.0.0.tgz" + integrity sha512-PUtyEA0Oik50SaEFCZ0WPVtF9tz/teze2fDptW6WRXl+RrEenH8UbEjudOz8iakiMl3lE3lCVqYf2Y+znL8QFQ== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.0.tgz" + integrity sha512-NB7AFiPN4NxP/YCAnrvYR18z2/ZsiHiF7VtG30gshO9GbFrIb1rC8ep4NGpJSWrz6P64uhPXeo4M0UsCLnZKqw== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-config-resolver@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.0.tgz" + integrity sha512-RUQG3vQ3LX7peqqHAbmayhgrF5aTilPnazinaSGF1P0+tgM3vvIRWPHmlLIz2qFqB9LqFIxditxc8O2Z6psrRw== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-node@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.0.tgz" + integrity sha512-baRPdMBDMBExZXIUAoPGm/hntixjt/VFpU6+VmCyiYJYzRHRxoaI1MN+5XE+hIS8AJ2GCHLMFEIOLzq9xx1EgQ== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-universal@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.0.tgz" + integrity sha512-HNFfShmotWGeAoW4ujP8meV9BZavcpmerDbPIjkJbxKbN8RsUcpRQ/2OyIxWNxXNH2GWCAxuSB7ynmIGJlQ3Dw== + dependencies: + "@smithy/eventstream-codec" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz" + integrity sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg== + dependencies: + "@smithy/protocol-http" "^4.0.0" + "@smithy/querystring-builder" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-blob-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.0.0.tgz" + integrity sha512-/Wbpdg+bwJvW7lxR/zpWAc1/x/YkcqguuF2bAzkJrvXriZu1vm8r+PUdE4syiVwQg7PPR2dXpi3CLBb9qRDaVQ== + dependencies: + "@smithy/chunked-blob-reader" "^3.0.0" + "@smithy/chunked-blob-reader-native" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-node@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz" + integrity sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw== + dependencies: + "@smithy/types" "^3.0.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-stream-node@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.0.0.tgz" + integrity sha512-J0i7de+EgXDEGITD4fxzmMX8CyCNETTIRXlxjMiNUvvu76Xn3GJ31wQR85ynlPk2wI1lqoknAFJaD1fiNDlbIA== + dependencies: + "@smithy/types" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/invalid-dependency@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz" + integrity sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/is-array-buffer@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz" + integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ== + dependencies: + tslib "^2.6.2" + +"@smithy/md5-js@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.0.tgz" + integrity sha512-Tm0vrrVzjlD+6RCQTx7D3Ls58S3FUH1ZCtU1MIh/qQmaOo1H9lMN2as6CikcEwgattnA9SURSdoJJ27xMcEfMA== + dependencies: + "@smithy/types" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/middleware-content-length@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz" + integrity sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg== + dependencies: + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/middleware-endpoint@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz" + integrity sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ== + dependencies: + "@smithy/middleware-serde" "^3.0.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/shared-ini-file-loader" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/url-parser" "^3.0.0" + "@smithy/util-middleware" "^3.0.0" + tslib "^2.6.2" + +"@smithy/middleware-retry@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz" + integrity sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw== + dependencies: + "@smithy/node-config-provider" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/service-error-classification" "^3.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + "@smithy/util-middleware" "^3.0.0" + "@smithy/util-retry" "^3.0.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@smithy/middleware-serde@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz" + integrity sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/middleware-stack@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz" + integrity sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/node-config-provider@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz" + integrity sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g== + dependencies: + "@smithy/property-provider" "^3.0.0" + "@smithy/shared-ini-file-loader" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/node-http-handler@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz" + integrity sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ== + dependencies: + "@smithy/abort-controller" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/querystring-builder" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/property-provider@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz" + integrity sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/protocol-http@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz" + integrity sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/querystring-builder@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.0.tgz" + integrity sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg== + dependencies: + "@smithy/types" "^3.0.0" + "@smithy/util-uri-escape" "^3.0.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.0.tgz" + integrity sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/service-error-classification@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.0.tgz" + integrity sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA== + dependencies: + "@smithy/types" "^3.0.0" + +"@smithy/shared-ini-file-loader@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz" + integrity sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/signature-v4@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz" + integrity sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-middleware" "^3.0.0" + "@smithy/util-uri-escape" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/smithy-client@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz" + integrity sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw== + dependencies: + "@smithy/middleware-endpoint" "^3.0.0" + "@smithy/middleware-stack" "^3.0.0" + "@smithy/protocol-http" "^4.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-stream" "^3.0.1" + tslib "^2.6.2" + +"@smithy/types@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz" + integrity sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw== + dependencies: + tslib "^2.6.2" + +"@smithy/url-parser@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz" + integrity sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw== + dependencies: + "@smithy/querystring-parser" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-base64@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz" + integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-body-length-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz" + integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-body-length-node@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz" + integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-buffer-from@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz" + integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-config-provider@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz" + integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-defaults-mode-browser@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz" + integrity sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg== + dependencies: + "@smithy/property-provider" "^3.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + bowser "^2.11.0" + tslib "^2.6.2" + +"@smithy/util-defaults-mode-node@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz" + integrity sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q== + dependencies: + "@smithy/config-resolver" "^3.0.0" + "@smithy/credential-provider-imds" "^3.0.0" + "@smithy/node-config-provider" "^3.0.0" + "@smithy/property-provider" "^3.0.0" + "@smithy/smithy-client" "^3.0.1" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-endpoints@^2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz" + integrity sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ== + dependencies: + "@smithy/node-config-provider" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-hex-encoding@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz" + integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-middleware@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz" + integrity sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ== + dependencies: + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-retry@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz" + integrity sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g== + dependencies: + "@smithy/service-error-classification" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-stream@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.1.tgz" + integrity sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA== + dependencies: + "@smithy/fetch-http-handler" "^3.0.1" + "@smithy/node-http-handler" "^3.0.0" + "@smithy/types" "^3.0.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-uri-escape@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz" + integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg== + dependencies: + tslib "^2.6.2" + +"@smithy/util-utf8@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz" + integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-waiter@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.0.0.tgz" + integrity sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw== + dependencies: + "@smithy/abort-controller" "^3.0.0" + "@smithy/types" "^3.0.0" + tslib "^2.6.2" + "@socket.io/component-emitter@~3.1.0": version "3.1.2" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz" integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@tootallnate/quickjs-emscripten@^0.23.0": version "0.23.0" - resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz" integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== "@tsconfig/node10@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz" integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== "@tsconfig/node12@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== "@types/axios@^0.14.0": version "0.14.0" - resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" + resolved "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz" integrity sha512-KqQnQbdYE54D7oa/UmYVMZKq7CO4l8DEENzOKc4aBRwxCXSlJXGz83flFx5L7AWrOQnmuN3kVsRdt+GZPPjiVQ== dependencies: axios "*" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: "@babel/parser" "^7.20.7" @@ -971,34 +2261,34 @@ "@types/babel__generator@*": version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz" integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + version "7.20.6" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== dependencies: "@babel/types" "^7.20.7" "@types/bluebird@^3.5.36": version "3.5.42" - resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.42.tgz#7ec05f1ce9986d920313c1377a5662b1b563d366" + resolved "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz" integrity sha512-Jhy+MWRlro6UjVi578V/4ZGNfeCOcNCp0YaFNIUGFKlImowqwb1O/22wDVk3FDGMLqxdpOV3qQHD5fPEH4hK6A== "@types/body-parser@*": version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz" integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== dependencies: "@types/connect" "*" @@ -1006,48 +2296,55 @@ "@types/caseless@*": version "0.12.5" - resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.5.tgz#db9468cb1b1b5a925b8f34822f1669df0c5472f5" + resolved "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz" integrity sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg== +"@types/cli-progress@^3.11.5": + version "3.11.5" + resolved "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.5.tgz" + integrity sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g== + dependencies: + "@types/node" "*" + "@types/connect@*": version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz" integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== dependencies: "@types/node" "*" "@types/cookie@^0.4.1": version "0.4.1" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz" integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cookiejar@^2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.5.tgz#14a3e83fa641beb169a2dd8422d91c3c345a9a78" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz" integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== "@types/cors@^2.8.12": version "2.8.17" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" + resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz" integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== dependencies: "@types/node" "*" "@types/crypto-js@^4.1.1": version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.2.2.tgz#771c4a768d94eb5922cc202a3009558204df0cea" + resolved "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz" integrity sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ== "@types/debug@^4.1.8": version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== dependencies: "@types/ms" "*" "@types/eslint-scope@^3.7.3": version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== dependencies: "@types/eslint" "*" @@ -1055,26 +2352,21 @@ "@types/eslint@*": version "8.56.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz" integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": +"@types/estree@*", "@types/estree@^1.0.5": version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - "@types/express-serve-static-core@^4.17.33": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa" - integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ== + version "4.19.2" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.2.tgz" + integrity sha512-dPSEQElyVJ97BuGduAqQjpBocZWAs0GR94z+ptL7JXQJeJdHw2WBG3EWdFrK36b8Q6j8P4cXOMhgUoi0IIfIsg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -1083,7 +2375,7 @@ "@types/express-session@1.17.0": version "1.17.0" - resolved "https://registry.yarnpkg.com/@types/express-session/-/express-session-1.17.0.tgz#770daf81368f6278e3e40dd894e1e52abbdca0cd" + resolved "https://registry.npmjs.org/@types/express-session/-/express-session-1.17.0.tgz" integrity sha512-OQEHeBFE1UhChVIBhRh9qElHUvTp4BzKKHxMDkGHT7WuYk5eL93hPG7D8YAIkoBSbhNEY0RjreF15zn+U0eLjA== dependencies: "@types/express" "*" @@ -1091,7 +2383,7 @@ "@types/express@*", "@types/express@^4.17.13": version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== dependencies: "@types/body-parser" "*" @@ -1101,38 +2393,43 @@ "@types/graceful-fs@^4.1.2": version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz" integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== dependencies: "@types/node" "*" +"@types/http-cache-semantics@^4.0.2": + version "4.0.4" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + "@types/http-errors@*": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz" integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@27.0.2": +"@types/jest@^27.0.0", "@types/jest@27.0.2": version "27.0.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.2.tgz#ac383c4d4aaddd29bbf2b916d8d105c304a5fcd7" + resolved "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz" integrity sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA== dependencies: jest-diff "^27.0.0" @@ -1140,104 +2437,106 @@ "@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/jsonwebtoken@^8.5.8": version "8.5.9" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz#2c064ecb0b3128d837d2764aa0b117b0ff6e4586" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz" integrity sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg== dependencies: "@types/node" "*" +"@types/jsonwebtoken@9.0.5": + version "9.0.5" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz" + integrity sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA== + dependencies: + "@types/node" "*" + "@types/md5@^2.3.2": version "2.3.5" - resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.3.5.tgz#481cef0a896e3a5dcbfc5a8a8b02c05958af48a5" + resolved "https://registry.npmjs.org/@types/md5/-/md5-2.3.5.tgz" integrity sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw== "@types/methods@^1.1.4": version "1.1.4" - resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.4.tgz#d3b7ac30ac47c91054ea951ce9eed07b1051e547" + resolved "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz" integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== "@types/mime@^1": version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== "@types/moment@^2.13.0": version "2.13.0" - resolved "https://registry.yarnpkg.com/@types/moment/-/moment-2.13.0.tgz#604ebd189bc3bc34a1548689404e61a2a4aac896" + resolved "https://registry.npmjs.org/@types/moment/-/moment-2.13.0.tgz" integrity sha512-DyuyYGpV6r+4Z1bUznLi/Y7HpGn4iQ4IVcGn8zrr1P4KotKLdH0sbK1TFR6RGyX6B+G8u83wCzL+bpawKU/hdQ== dependencies: moment "*" "@types/ms@*": version "0.7.34" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" + resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz" integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== "@types/multer@^1.4.7": version "1.4.11" - resolved "https://registry.yarnpkg.com/@types/multer/-/multer-1.4.11.tgz#c70792670513b4af1159a2b60bf48cc932af55c5" + resolved "https://registry.npmjs.org/@types/multer/-/multer-1.4.11.tgz" integrity sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w== dependencies: "@types/express" "*" -"@types/node@*", "@types/node@>=10.0.0": - version "20.12.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" - integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== +"@types/node@*", "@types/node@^16.11.33": + version "16.18.97" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.97.tgz" + integrity sha512-4muilE1Lbfn57unR+/nT9AFjWk0MtWi5muwCEJqnOvfRQDbSfLCUdN7vCIg8TYuaANfhLOV85ve+FNpiUsbSRg== + +"@types/node@>=10.0.0": + version "20.12.13" + resolved "https://registry.npmjs.org/@types/node/-/node-20.12.13.tgz" + integrity sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA== dependencies: undici-types "~5.26.4" -"@types/node@^16.11.33": - version "16.18.96" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.96.tgz#eb0012d23ff53d14d64ec8a352bf89792de6aade" - integrity sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ== - -"@types/parse-json@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" - integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== - "@types/prettier@^2.1.5": version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz" integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/qrcode@^1.4.2": version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.5.tgz#993ff7c6b584277eee7aac0a20861eab682f9dac" + resolved "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz" integrity sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg== dependencies: "@types/node" "*" "@types/qs@*": version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz" integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== "@types/range-parser@*": version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/request-ip@^0.0.37": version "0.0.37" - resolved "https://registry.yarnpkg.com/@types/request-ip/-/request-ip-0.0.37.tgz#06decdcdeeaa834edf2b0a7dea0c1aefd5a04375" + resolved "https://registry.npmjs.org/@types/request-ip/-/request-ip-0.0.37.tgz" integrity sha512-uw6/i3rQnpznxD7LtLaeuZytLhKZK6bRoTS6XVJlwxIOoOpEBU7bgKoVXDNtOg4Xl6riUKHa9bjMVrL6ESqYlQ== dependencies: "@types/node" "*" "@types/request@^2.48.8": version "2.48.12" - resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.12.tgz#0f590f615a10f87da18e9790ac94c29ec4c5ef30" + resolved "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz" integrity sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw== dependencies: "@types/caseless" "*" @@ -1247,12 +2546,12 @@ "@types/semver@^7.3.12": version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== "@types/send@*": version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz" integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== dependencies: "@types/mime" "^1" @@ -1260,7 +2559,7 @@ "@types/serve-static@*": version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz" integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== dependencies: "@types/http-errors" "*" @@ -1269,13 +2568,13 @@ "@types/stack-utils@^2.0.0": version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== "@types/superagent@*": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-8.1.6.tgz#e660543b1a4b7c7473caec4799de87ff68216270" - integrity sha512-yzBOv+6meEHSzV2NThYYOA6RtqvPr3Hbob9ZLp3i07SH27CrYVfm8CrF7ydTmidtelsFiKx2I4gZAiAOamGgvQ== + version "8.1.7" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.7.tgz" + integrity sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww== dependencies: "@types/cookiejar" "^2.1.5" "@types/methods" "^1.1.4" @@ -1283,48 +2582,48 @@ "@types/supertest@^2.0.12": version "2.0.16" - resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.16.tgz#7a1294edebecb960d957bbe9b26002a2b7f21cd7" + resolved "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz" integrity sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg== dependencies: "@types/superagent" "*" "@types/tough-cookie@*": version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz" integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== -"@types/validator@^13.11.8", "@types/validator@^13.7.17": - version "13.11.9" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.9.tgz#adfe96520b437a0eaa798a475877bf2f75ee402d" - integrity sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw== +"@types/validator@*", "@types/validator@^13.11.8", "@types/validator@^13.7.17": + version "13.11.10" + resolved "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz" + integrity sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg== "@types/webidl-conversions@*": version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz#1306dbfa53768bcbcfc95a1c8cde367975581859" + resolved "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz" integrity sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA== "@types/whatwg-url@^11.0.2": - version "11.0.4" - resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-11.0.4.tgz#ffed0dc8d89d91f62e3f368fcbda222a487c4f63" - integrity sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw== + version "11.0.5" + resolved "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz" + integrity sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ== dependencies: "@types/webidl-conversions" "*" "@types/yargs-parser@*": version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^16.0.0": version "16.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz" integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^5.22.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== dependencies: "@eslint-community/regexpp" "^4.4.0" @@ -1338,9 +2637,9 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.22.0": +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.22.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: "@typescript-eslint/scope-manager" "5.62.0" @@ -1350,7 +2649,7 @@ "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: "@typescript-eslint/types" "5.62.0" @@ -1358,7 +2657,7 @@ "@typescript-eslint/type-utils@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz" integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: "@typescript-eslint/typescript-estree" "5.62.0" @@ -1368,12 +2667,12 @@ "@typescript-eslint/types@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: "@typescript-eslint/types" "5.62.0" @@ -1386,7 +2685,7 @@ "@typescript-eslint/utils@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -1400,7 +2699,7 @@ "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: "@typescript-eslint/types" "5.62.0" @@ -1408,153 +2707,153 @@ "@ungap/structured-clone@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== +"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== +"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== dependencies: - "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" "@xmldom/xmldom@^0.8.8": version "0.8.10" - resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz" integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.3, abab@^2.0.5: version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== accepts@~1.3.4, accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -1562,81 +2861,71 @@ accepts@~1.3.4, accepts@~1.3.8: acorn-globals@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-import-assertions@^1.7.6: +acorn-import-assertions@^1.9.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^7.1.1: version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.1.1: version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + acorn@^7.1.1: version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz" integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== dependencies: debug "^4.3.4" +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + ajv-formats@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@8.9.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" - integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -1645,8 +2934,18 @@ ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0: + version "8.16.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ajv@8.12.0: version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" @@ -1654,62 +2953,114 @@ ajv@^8.0.0: require-from-string "^2.0.2" uri-js "^4.2.2" +ajv@8.9.0: + version "8.9.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz" + integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + amp-message@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/amp-message/-/amp-message-0.1.2.tgz#a78f1c98995087ad36192a41298e4db49e3dfc45" + resolved "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz" integrity sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg== dependencies: amp "0.3.1" -amp@0.3.1, amp@~0.3.1: +amp@~0.3.1, amp@0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/amp/-/amp-0.3.1.tgz#6adf8d58a74f361e82c1fa8d389c079e139fc47d" + resolved "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz" integrity sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw== -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-align@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" -ansi-colors@^4.1.1: +ansi-colors@^4.1.1, ansi-colors@4.1.3: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" +ansi-escapes@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz" + integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== + +ansi-escapes@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz" + integrity sha512-tH/fSoQp4DrEodDK3QpdiWiZTSe7sBJ9eOqcQBZ0o9HTM+5M/viSEn+sPMoTuPjQQ8n++w3QJoPEjt8LVPcrCg== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== + +ansis@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/ansis/-/ansis-3.2.0.tgz" + integrity sha512-Yk3BkHH9U7oPyCN3gL5Tc7CpahG/+UFv/6UG03C311Vy9lzRmA5uoxDTpU9CO3rGHL6KzJz/pdDeXZCZ5Mu/Sg== + anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -1717,98 +3068,137 @@ anymatch@^3.0.3, anymatch@~3.1.2: append-field@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56" + resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== arg@^4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== +array-timsort@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz" + integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== + array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== asap@^2.0.0: version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== asn1@~0.2.3: version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" -assert-plus@1.0.0, assert-plus@^1.0.0: +assert-plus@^1.0.0, assert-plus@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== ast-types@^0.13.4: version "0.13.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== dependencies: tslib "^2.0.1" -async-listener@^0.6.0: - version "0.6.10" - resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" - integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== - dependencies: - semver "^5.3.0" - shimmer "^1.1.0" +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async@^2.6.3, async@~2.6.1: +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +async@^2.6.3: version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" async@^3.2.0, async@^3.2.3, async@~3.2.0: version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + resolved "https://registry.npmjs.org/async/-/async-3.2.5.tgz" integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== +async@~2.6.1: + version "2.6.4" + resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +aws-sdk@^2.1618.0: + version "2.1630.0" + resolved "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1630.0.tgz" + integrity sha512-Lu1+jzBExiAoD88A1XnY+nztUPCE1TRU/hZHgcyDsc8TYyQ0JjsJoVo+BsnshBNt4j+OvdNg3ytk4+lRJTB04w== + 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.4" + uuid "8.0.0" + xml2js "0.6.2" + aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + version "1.13.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz" + integrity sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g== axios-ntlm@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/axios-ntlm/-/axios-ntlm-1.4.2.tgz#360ca6ad40df5bef13e9d1d1bdb105f3d2966919" + resolved "https://registry.npmjs.org/axios-ntlm/-/axios-ntlm-1.4.2.tgz" integrity sha512-8mS/uhmSWiRBiFKQvysPbX1eDBp6e+eXskmasuAXRHrn1Zjgji3O/oGXzXLw7tOhyD9nho1vGjZ2OYOD3cCvHg== dependencies: axios "^1.6.1" @@ -1816,18 +3206,18 @@ axios-ntlm@^1.4.2: dev-null "^0.1.1" js-md4 "^0.3.2" -axios@*, axios@^1.3.6, axios@^1.6.1, axios@^1.6.8: - version "1.6.8" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" - integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== +axios@*, axios@^1.3.1, axios@^1.3.6, axios@^1.6.1, axios@^1.6.8: + version "1.7.2" + resolved "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@^27.5.1: +babel-jest@^27.5.1, "babel-jest@>=27.0.0 <28": version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== dependencies: "@jest/transform" "^27.5.1" @@ -1841,7 +3231,7 @@ babel-jest@^27.5.1: babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -1852,7 +3242,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" @@ -1862,7 +3252,7 @@ babel-plugin-jest-hoist@^27.5.1: babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -1880,7 +3270,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== dependencies: babel-plugin-jest-hoist "^27.5.1" @@ -1888,49 +3278,49 @@ babel-preset-jest@^27.5.1: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-async@^2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/base64-async/-/base64-async-2.1.3.tgz#e731c6b3ceb03d17dcfa6c41fb370772d488e131" + resolved "https://registry.npmjs.org/base64-async/-/base64-async-2.1.3.tgz" integrity sha512-e5Oa4ceLtvuJsyWcS0pChdfAh9jT0Mhl5ERKdLOY7Mi8lIAheAewV89DFQKdebYaGO4XhWDBEmiklXgV5vXIBw== -base64-js@^1.3.1: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64id@2.0.0, base64id@~2.0.0: +base64id@~2.0.0, base64id@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + resolved "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== basic-ftp@^5.0.2: version "5.0.5" - resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" + resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz" integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" bignumber.js@9.0.0: version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz" integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== binary-extensions@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== bl@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" @@ -1939,22 +3329,22 @@ bl@^4.1.0: blessed@0.1.81: version "0.1.81" - resolved "https://registry.yarnpkg.com/blessed/-/blessed-0.1.81.tgz#f962d687ec2c369570ae71af843256e6d0ca1129" + resolved "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz" integrity sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ== bluebird@^3.7.2: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bodec@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/bodec/-/bodec-0.1.0.tgz#bc851555430f23c9f7650a75ef64c6a94c3418cc" + resolved "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz" integrity sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ== body-parser@1.20.2: version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" @@ -1970,9 +3360,28 @@ body-parser@1.20.2: type-is "~1.6.18" unpipe "1.0.0" +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + +boxen@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz" + integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== + dependencies: + ansi-align "^3.0.1" + camelcase "^7.0.1" + chalk "^5.2.0" + cli-boxes "^3.0.0" + string-width "^5.1.2" + type-fest "^2.13.0" + widest-line "^4.0.1" + wrap-ansi "^8.1.0" + brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -1980,26 +3389,26 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browser-process-hrtime@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.14.5, browserslist@^4.22.2: +browserslist@^4.21.10, browserslist@^4.22.2, "browserslist@>= 4.21.0": version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: caniuse-lite "^1.0.30001587" @@ -2009,56 +3418,90 @@ browserslist@^4.14.5, browserslist@^4.22.2: bs-logger@0.x: version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: fast-json-stable-stringify "2.x" bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" -bson@^6.4.0, bson@^6.5.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/bson/-/bson-6.6.0.tgz#f225137eb49fe19bee4d87949a0515c05176e2ad" - integrity sha512-BVINv2SgcMjL4oYbBuCQTpE3/VKOSxrOA8Cj/wQP7izSzlBGVomdm+TcUd0Pzy0ytLSSDweCKQ6X3f5veM5LQA== +bson@^6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz" + integrity sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ== buffer-equal-constant-time@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer@^5.5.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + busboy@^1.0.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== dependencies: streamsearch "^1.1.0" -bytes@3.1.2: +bytes@^3.1.2, bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.7: +cacheable-lookup@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz" + integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== + +cacheable-request@^10.2.8: + version "10.2.14" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz" + integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== + dependencies: + "@types/http-cache-semantics" "^4.0.2" + get-stream "^6.0.1" + http-cache-semantics "^4.1.1" + keyv "^4.5.3" + mimic-response "^4.0.0" + normalize-url "^8.0.0" + responselike "^3.0.0" + +call-bind@^1.0.2, call-bind@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: es-define-property "^1.0.0" @@ -2069,92 +3512,119 @@ call-bind@^1.0.7: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +camelcase@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz" + integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== + caniuse-lite@^1.0.30001587: - version "1.0.30001614" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz#f894b4209376a0bf923d67d9c361d96b1dfebe39" - integrity sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog== + version "1.0.30001625" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001625.tgz" + integrity sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w== + +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz" + integrity sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw== + dependencies: + ansicolors "~0.3.2" + redeyed "~2.1.0" caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -chalk@3.0.0, chalk@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +chalk@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== chardet@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== charenc@0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== charm@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/charm/-/charm-0.1.2.tgz#06c21eed1a1b06aeb67553cdc53e23274bac2296" + resolved "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz" integrity sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ== -chokidar@3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^3.5.3: +chokidar@^3.5.2, chokidar@^3.5.3, chokidar@3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" @@ -2167,51 +3637,82 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" +chownr@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz" + integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== + chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + version "1.0.4" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== ci-info@^3.2.0: version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz" integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== -class-transformer@^0.5.1: +class-transformer@*, "class-transformer@^0.4.0 || ^0.5.0", class-transformer@^0.5.1: version "0.5.1" - resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336" + resolved "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz" integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== -class-validator@^0.14.0: +class-validator@*, "class-validator@^0.13.0 || ^0.14.0", class-validator@^0.14.0: version "0.14.1" - resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.14.1.tgz#ff2411ed8134e9d76acfeb14872884448be98110" + resolved "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz" integrity sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ== dependencies: "@types/validator" "^13.11.8" libphonenumber-js "^1.10.53" validator "^13.9.0" +clean-stack@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz" + integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== + dependencies: + escape-string-regexp "4.0.0" + +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" -cli-spinners@^2.5.0: +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== + dependencies: + string-width "^4.2.3" + +cli-spinners@^2.5.0, cli-spinners@^2.9.2: version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz" integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== -cli-table3@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" - integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== +cli-table3@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: string-width "^4.2.0" optionalDependencies: @@ -2219,19 +3720,24 @@ cli-table3@0.6.2: cli-tableau@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/cli-tableau/-/cli-tableau-2.0.1.tgz#baa78d83e08a2d7ab79b7dad9406f0254977053f" + resolved "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz" integrity sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ== dependencies: chalk "3.0.0" cli-width@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + cliui@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: string-width "^4.2.0" @@ -2240,7 +3746,7 @@ cliui@^6.0.0: cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -2249,83 +3755,110 @@ cliui@^7.0.2: clone@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== collect-v8-coverage@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/color/-/color-4.2.3.tgz" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" -commander@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== - -commander@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - commander@^2.20.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^7.0.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@2.15.1: + version "2.15.1" + resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + +commander@4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +comment-json@4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz" + integrity sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw== + dependencies: + array-timsort "^1.0.3" + core-util-is "^1.0.3" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + component-emitter@^1.3.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz" integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.5.2: version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -2333,44 +3866,55 @@ concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== + dependencies: + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + xdg-basedir "^5.0.1" + consola@^2.15.0: version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -continuation-local-storage@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" - integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== - dependencies: - async-listener "^0.6.0" - emitter-listener "^1.1.1" - convert-source-map@^1.4.0, convert-source-map@^1.6.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== convert-source-map@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== cookie-parser@^1.4.6: version "1.4.6" - resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594" + resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz" integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== dependencies: cookie "0.4.1" @@ -2378,76 +3922,82 @@ cookie-parser@^1.4.6: cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie-signature@1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz" integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA== +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + cookie@0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== cookie@0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== -cookie@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - cookiejar@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz" integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== +core-util-is@^1.0.3, core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + core-util-is@1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@2.8.5, cors@~2.8.5: +cors@~2.8.5, cors@2.8.5: version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: object-assign "^4" vary "^1" -cosmiconfig@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== +cosmiconfig@^8.2.0: + version "8.3.6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" path-type "^4.0.0" - yaml "^1.10.0" create-require@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== croner@~4.1.92: version "4.1.97" - resolved "https://registry.yarnpkg.com/croner/-/croner-4.1.97.tgz#6e373dc7bb3026fab2deb0d82685feef20796766" + resolved "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz" integrity sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ== -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-env@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -2456,51 +4006,58 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: crypt@0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== crypto-js@^4.1.1: version "4.2.0" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz" integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" + cssom@^0.4.4: version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" culvert@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/culvert/-/culvert-0.1.2.tgz#9502f5f0154a2d5a22a023e79f71cc936fa6ef6f" + resolved "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz" integrity sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg== dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" data-uri-to-buffer@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz" integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== data-urls@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: abab "^2.0.3" @@ -2509,79 +4066,114 @@ data-urls@^2.0.0: dayjs@~1.11.5: version "1.11.11" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz" integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== dayjs@~1.8.24: version "1.8.36" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.36.tgz#be36e248467afabf8f5a86bae0de0cdceecced50" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz" integrity sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw== -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@4.x, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@^3.2.6: version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4, debug@4, debug@4.x: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + decamelize@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decimal.js@^10.2.1: version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + defaults@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== dependencies: clone "^1.0.2" +defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + define-data-property@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: es-define-property "^1.0.0" es-errors "^1.3.0" gopd "^1.0.1" +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + degenerator@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz" integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== dependencies: ast-types "^0.13.4" @@ -2590,22 +4182,22 @@ degenerator@^5.0.0: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== denque@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== -depd@2.0.0, depd@~2.0.0: +depd@~2.0.0, depd@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== des.js@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz" integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== dependencies: inherits "^2.0.1" @@ -2613,22 +4205,22 @@ des.js@^1.1.0: destroy@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== dev-null@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/dev-null/-/dev-null-0.1.1.tgz#5a205ce3c2b2ef77b6238d6ba179eb74c6a0e818" + resolved "https://registry.npmjs.org/dev-null/-/dev-null-0.1.1.tgz" integrity sha512-nMNZG0zfMgmdv8S5O0TM5cpwNbGKRGPCxVsr0SmA3NZZy9CYBbuNLL0PD3Acx9e5LIUgwONXtM9kM6RlawPxEQ== dezalgo@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" @@ -2636,53 +4228,70 @@ dezalgo@^1.0.4: diff-sequences@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== diff@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dijkstrajs@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + resolved "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz" integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" domexception@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: webidl-conversions "^5.0.0" -dotenv@^16.4.5: +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz" + integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== + +dotenv@^16.4.5, dotenv@16.4.5: version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== dottie@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.6.tgz#34564ebfc6ec5e5772272d466424ad5b696484d4" + resolved "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz" integrity sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" @@ -2690,71 +4299,80 @@ ecc-jsbn@~0.1.1: ecdsa-sig-formatter@1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== dependencies: safe-buffer "^5.0.1" ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@^3.1.8: +ejs@^3.1.10, ejs@^3.1.8: version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== dependencies: jake "^10.8.5" electron-to-chromium@^1.4.668: - version "1.4.750" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz#d278a619af727ed069de1317115187282b1131ee" - integrity sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA== + version "1.4.784" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.784.tgz" + integrity sha512-9CZwh+sDrhDAeOEFh8s3PqwduzTyYIeYwZolc1b9ENAUt3ePu7R1sJSCWr/820ISssRxCJUyHI9Wb7j+0Uo1AA== -emitter-listener@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" - integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== +email-prompt-ts@0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/email-prompt-ts/-/email-prompt-ts-0.3.2.tgz" + integrity sha512-jdqXpNgyGyRkGXzjiq5c7JIsQlSQv/HkxytdXy0i7ifGY8faVjHMUwSiJbzhGSKztH3V+O1sq/k97vj6Yf7k7Q== dependencies: - shimmer "^1.2.0" + ansi-escapes "2.0.0" + chalk "1.1.3" + +email-validator@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz" + integrity sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ== emittery@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emoji-regex@^10.3.0: + version "10.3.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encode-utf8@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + resolved "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz" integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - engine.io-parser@~5.2.1: version "5.2.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz" integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== engine.io@~6.5.2: - version "6.5.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.4.tgz#6822debf324e781add2254e912f8568508850cdc" - integrity sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg== + version "6.5.5" + resolved "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz" + integrity sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA== dependencies: "@types/cookie" "^0.4.1" "@types/cors" "^2.8.12" @@ -2765,75 +4383,90 @@ engine.io@~6.5.2: cors "~2.8.5" debug "~4.3.1" engine.io-parser "~5.2.1" - ws "~8.11.0" + ws "~8.17.1" -enhanced-resolve@^5.0.0, enhanced-resolve@^5.7.0, enhanced-resolve@^5.9.3: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== +enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.7.0: + version "5.16.1" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz" + integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" enquirer@2.3.6: version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: get-intrinsic "^1.2.4" es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-module-lexer@^1.2.1: + version "1.5.4" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== -escalade@^3.1.1: +escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escape-goat@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz" + integrity sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg== + escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escodegen@^2.0.0, escodegen@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -2844,19 +4477,19 @@ escodegen@^2.0.0, escodegen@^2.1.0: eslint-config-prettier@^8.5.0: version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz" integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== eslint-plugin-prettier@^4.0.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1, eslint-scope@5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -2864,7 +4497,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^7.2.2: version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" @@ -2872,12 +4505,12 @@ eslint-scope@^7.2.2: eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.15.0: +eslint@*, "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.15.0, eslint@>=7.0.0, eslint@>=7.28.0: version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -2921,90 +4554,85 @@ eslint@^8.15.0: espree@^9.6.0, espree@^9.6.1: version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: acorn "^8.9.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2: version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -eventemitter2@5.0.1, eventemitter2@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-5.0.1.tgz#6197a095d5fb6b57e8942f6fd7eaad63a09c9452" - integrity sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg== - -eventemitter2@^6.3.1: +eventemitter2@^6.3.1, eventemitter2@6.4.9: version "6.4.9" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz" integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== eventemitter2@~0.4.14: version "0.4.14" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" integrity sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ== +eventemitter2@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz" + integrity sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg== + +eventemitter2@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz" + integrity sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg== + events@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" +events@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz" + integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== execa@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -3019,12 +4647,12 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expect@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: "@jest/types" "^27.5.1" @@ -3034,7 +4662,7 @@ expect@^27.5.1: express-session@^1.17.2: version "1.18.0" - resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.18.0.tgz#a6ae39d9091f2efba5f20fc5c65a3ce7c9ce16a3" + resolved "https://registry.npmjs.org/express-session/-/express-session-1.18.0.tgz" integrity sha512-m93QLWr0ju+rOwApSsyso838LQwgfs44QtOP/WBiwtAgPIo/SAh1a5c6nn2BR6mFNZehTpqKDESzP+fRHVbxwQ== dependencies: cookie "0.6.0" @@ -3046,9 +4674,9 @@ express-session@^1.17.2: safe-buffer "5.2.1" uid-safe "~2.1.5" -express@4.19.2: +express@^4.18.1, "express@>=4.0.0 || >=5.0.0-beta", express@4.19.2: version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== dependencies: accepts "~1.3.8" @@ -3085,12 +4713,12 @@ express@4.19.2: extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: +external-editor@^3.0.3, external-editor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: chardet "^0.7.0" @@ -3099,34 +4727,34 @@ external-editor@^3.0.3: extrareqp2@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/extrareqp2/-/extrareqp2-1.0.0.tgz#aaf8ad1495d723f71276b0eab041c061aa21f035" + resolved "https://registry.npmjs.org/extrareqp2/-/extrareqp2-1.0.0.tgz" integrity sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA== dependencies: follow-redirects "^1.14.0" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - extsprintf@^1.2.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9: +fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -3137,74 +4765,89 @@ fast-glob@^3.2.9: fast-json-patch@^3.0.0-1: version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-json-patch/-/fast-json-patch-3.1.1.tgz#85064ea1b1ebf97a3f7ad01e23f9337e72c66947" + resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz" integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ== -fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-safe-stringify@2.1.1, fast-safe-stringify@^2.1.1: +fast-safe-stringify@^2.1.1, fast-safe-stringify@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== + dependencies: + strnum "^1.0.5" + fastq@^1.6.0: version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== dependencies: reusify "^1.0.4" fb-watchman@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" -fclone@1.0.11, fclone@~1.0.11: +fclone@~1.0.11, fclone@1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/fclone/-/fclone-1.0.11.tgz#10e85da38bfea7fc599341c296ee1d77266ee640" + resolved "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz" integrity sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw== figures@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" +figures@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz" + integrity sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg== + dependencies: + escape-string-regexp "^5.0.0" + is-unicode-supported "^1.2.0" + file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" filelist@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -3217,7 +4860,7 @@ finalhandler@1.2.0: find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -3225,7 +4868,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -3233,7 +4876,7 @@ find-up@^5.0.0: flat-cache@^3.0.4: version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" @@ -3242,39 +4885,60 @@ flat-cache@^3.0.4: flatted@^3.2.9: version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== follow-redirects@^1.14.0, follow-redirects@^1.15.6: version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -fork-ts-checker-webpack-plugin@7.2.11: - version "7.2.11" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.11.tgz#aff3febbc11544ba3ad0ae4d5aa4055bd15cd26d" - integrity sha512-2e5+NyTUTE1Xq4fWo7KFEQblCaIvvINQwUX3jRmEGlgCTc1Ecqw/975EfQrQ0GEraxJTnp8KB9d/c8hlCHUMJA== +fork-ts-checker-webpack-plugin@9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz" + integrity sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg== dependencies: "@babel/code-frame" "^7.16.7" chalk "^4.1.2" chokidar "^3.5.3" - cosmiconfig "^7.0.1" + cosmiconfig "^8.2.0" deepmerge "^4.2.2" fs-extra "^10.0.0" memfs "^3.4.1" minimatch "^3.0.4" + node-abort-controller "^3.0.1" schema-utils "^3.1.1" semver "^7.3.5" tapable "^2.2.1" +form-data-encoder@^2.1.2: + version "2.1.4" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz" + integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== + form-data@^2.5.0: version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz" integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== dependencies: asynckit "^0.4.0" @@ -3283,7 +4947,7 @@ form-data@^2.5.0: form-data@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" @@ -3292,7 +4956,7 @@ form-data@^3.0.0: form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -3301,7 +4965,7 @@ form-data@^4.0.0: form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" @@ -3310,7 +4974,7 @@ form-data@~2.3.2: formidable@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.2.tgz#fa973a2bec150e4ce7cac15589d7a25fc30ebd89" + resolved "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz" integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g== dependencies: dezalgo "^1.0.4" @@ -3320,7 +4984,7 @@ formidable@^2.1.2: formidable@^3.2.4: version "3.5.1" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-3.5.1.tgz#9360a23a656f261207868b1484624c4c8d06ee1a" + resolved "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz" integrity sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og== dependencies: dezalgo "^1.0.4" @@ -3329,17 +4993,17 @@ formidable@^3.2.4: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-extra@10.1.0, fs-extra@^10.0.0: +fs-extra@^10.0.0, fs-extra@10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -3348,7 +5012,7 @@ fs-extra@10.1.0, fs-extra@^10.0.0: fs-extra@^11.2.0: version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" @@ -3356,50 +5020,50 @@ fs-extra@^11.2.0: universalify "^2.0.0" fs-monkey@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" - integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== + version "1.0.6" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz" + integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fs@^0.0.1-security: version "0.0.1-security" - resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4" + resolved "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz" integrity sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w== -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== generate-function@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" + resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz" integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== dependencies: is-property "^1.0.2" gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-east-asian-width@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz" + integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== + get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: es-errors "^1.3.0" @@ -3410,24 +5074,22 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" +get-port@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz" + integrity sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw== get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-uri@^6.0.1: version "6.0.3" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a" + resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz" integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw== dependencies: basic-ftp "^5.0.2" @@ -3435,57 +5097,65 @@ get-uri@^6.0.1: debug "^4.3.4" fs-extra "^11.2.0" +get-video-duration@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-video-duration/-/get-video-duration-4.1.0.tgz" + integrity sha512-kDmnD/C/WFHmZx7eV2duUNCwAH6w9YwpigiUHmq7cRNmxuTvcJ/otvcxa4A5GDus2iSZ+CZEA5e0va/r5ZWumw== + dependencies: + "@ffprobe-installer/ffprobe" "^1.4.1" + execa "^5.0.0" + is-stream "^2.0.0" + getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" git-node-fs@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/git-node-fs/-/git-node-fs-1.0.0.tgz#49b215e242ebe43aa4c7561bbba499521752080f" + resolved "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz" integrity sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ== git-sha1@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/git-sha1/-/git-sha1-0.1.2.tgz#599ac192b71875825e13a445f3a6e05118c2f745" + resolved "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz" integrity sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg== glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob-to-regexp@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@^10.3.7: + version "10.4.1" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz" + integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + path-scurry "^1.11.1" -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -3495,21 +5165,61 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^9.2.0: + version "9.3.5" + resolved "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + +glob@10.3.10: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== + dependencies: + ini "2.0.0" + globals@^11.1.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== dependencies: type-fest "^0.20.2" globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -3519,90 +5229,165 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globby@^14.0.1: + version "14.0.1" + resolved "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz" + integrity sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ== + dependencies: + "@sindresorhus/merge-streams" "^2.1.0" + fast-glob "^3.3.2" + ignore "^5.2.4" + path-type "^5.0.0" + slash "^5.1.0" + unicorn-magic "^0.1.0" + gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +got@^12.1.0: + version "12.6.1" + resolved "https://registry.npmjs.org/got/-/got-12.6.1.tgz" + integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +got@^13.0.0: + version "13.0.0" + resolved "https://registry.npmjs.org/got/-/got-13.0.0.tgz" + integrity sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + graphemer@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" har-schema "^2.0.0" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + has-property-descriptors@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: es-define-property "^1.0.0" has-proto@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + hasown@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" hexoid@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" + resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== html-encoding-sniffer@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -3613,7 +5398,7 @@ http-errors@2.0.0: http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" @@ -3622,7 +5407,7 @@ http-proxy-agent@^4.0.1: http-proxy-agent@^7.0.0: version "7.0.2" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz" integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: agent-base "^7.1.0" @@ -3630,74 +5415,92 @@ http-proxy-agent@^7.0.0: http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" +http2-wrapper@^2.1.10: + version "2.2.1" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" -https-proxy-agent@^7.0.2: +https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.4: version "7.0.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz" integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== dependencies: agent-base "^7.0.2" debug "4" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +hyperlinker@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz" + integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== + +iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.1.4: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^5.2.0: +ieee754@1.1.13: + version "1.1.13" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -import-fresh@^3.2.1: +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -3705,79 +5508,50 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + inflection@^1.13.4: version "1.13.4" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.13.4.tgz#65aa696c4e2da6225b148d7a154c449366633a32" + resolved "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz" integrity sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -ini@^1.3.5: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" +ini@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -inquirer@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" - integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.2.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -inquirer@^8.0.0: +inquirer@^8.0.0, inquirer@8.2.6: version "8.2.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== dependencies: ansi-escapes "^4.2.1" @@ -3796,14 +5570,56 @@ inquirer@^8.0.0: through "^2.3.6" wrap-ansi "^6.0.1" +inquirer@^9.2.19: + version "9.2.22" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-9.2.22.tgz" + integrity sha512-SqLLa/Oe5rZUagTR9z+Zd6izyatHglbmbvVofo1KzuVB54YHleWzeHNLoR7FOICGOeQSqeLh1cordb3MzhGcEw== + dependencies: + "@inquirer/figures" "^1.0.2" + "@ljharb/through" "^2.3.13" + ansi-escapes "^4.3.2" + chalk "^5.3.0" + cli-cursor "^3.1.0" + cli-width "^4.1.0" + external-editor "^3.1.0" + lodash "^4.17.21" + mute-stream "1.0.0" + ora "^5.4.1" + run-async "^3.0.0" + rxjs "^7.8.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + +inquirer@9.2.12: + version "9.2.12" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz" + integrity sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q== + dependencies: + "@ljharb/through" "^2.3.11" + ansi-escapes "^4.3.2" + chalk "^5.3.0" + cli-cursor "^3.1.0" + cli-width "^4.1.0" + external-editor "^3.1.0" + figures "^5.0.0" + lodash "^4.17.21" + mute-stream "1.0.0" + ora "^5.4.1" + run-async "^3.0.0" + rxjs "^7.8.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + interpret@^1.0.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== ip-address@^9.0.5: version "9.0.5" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz" integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== dependencies: jsbn "1.1.0" @@ -3811,123 +5627,224 @@ ip-address@^9.0.5: ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-buffer@~1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-core-module@^2.13.0: version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" +is-in-ci@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-in-ci/-/is-in-ci-0.1.0.tgz" + integrity sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ== + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + is-interactive@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-interactive@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz" + integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== + +is-npm@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz" + integrity sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ== + is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-inside@^3.0.2, is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-potential-custom-element-name@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-property@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is_js@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/is_js/-/is_js-0.9.0.tgz#0ab94540502ba7afa24c856aa985561669e9c52d" - integrity sha512-8Y5EHSH+TonfUHX2g3pMJljdbGavg55q4jmHzghJCdqYDbdNROC8uw/YFQwIRCRqRJT1EY3pJefz+kglw+o7sg== +is-unicode-supported@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz" + integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== -isarray@~1.0.0: +is-unicode-supported@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz" + integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== + +is-unicode-supported@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz" + integrity sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + +isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" @@ -3938,7 +5855,7 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-report@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -3947,7 +5864,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -3956,7 +5873,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz" integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: html-escaper "^2.0.0" @@ -3964,13 +5881,31 @@ istanbul-reports@^3.1.3: iterare@1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" + resolved "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jackspeak@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz" + integrity sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: - version "10.8.7" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" - integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + version "10.9.1" + resolved "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz" + integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== dependencies: async "^3.2.3" chalk "^4.0.2" @@ -3979,7 +5914,7 @@ jake@^10.8.5: jalali-moment@^3.3.11: version "3.3.11" - resolved "https://registry.yarnpkg.com/jalali-moment/-/jalali-moment-3.3.11.tgz#caa306751d1382c8648571bca1743aabf27660c3" + resolved "https://registry.npmjs.org/jalali-moment/-/jalali-moment-3.3.11.tgz" integrity sha512-tdSaRs9cjWjOIaWhcsGFZMhZQhfgok5J0TwqFpBIZPudZxxa6yjUPoLCOwuvbAtRpiZn7k/mvazAJh+vEN5suw== dependencies: commander "^7.0.0" @@ -3988,7 +5923,7 @@ jalali-moment@^3.3.11: jest-changed-files@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== dependencies: "@jest/types" "^27.5.1" @@ -3997,7 +5932,7 @@ jest-changed-files@^27.5.1: jest-circus@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: "@jest/environment" "^27.5.1" @@ -4022,7 +5957,7 @@ jest-circus@^27.5.1: jest-cli@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== dependencies: "@jest/core" "^27.5.1" @@ -4040,7 +5975,7 @@ jest-cli@^27.5.1: jest-config@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: "@babel/core" "^7.8.0" @@ -4070,7 +6005,7 @@ jest-config@^27.5.1: jest-diff@^27.0.0, jest-diff@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: chalk "^4.0.0" @@ -4080,14 +6015,14 @@ jest-diff@^27.0.0, jest-diff@^27.5.1: jest-docblock@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: detect-newline "^3.0.0" jest-each@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: "@jest/types" "^27.5.1" @@ -4098,7 +6033,7 @@ jest-each@^27.5.1: jest-environment-jsdom@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== dependencies: "@jest/environment" "^27.5.1" @@ -4111,7 +6046,7 @@ jest-environment-jsdom@^27.5.1: jest-environment-node@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: "@jest/environment" "^27.5.1" @@ -4123,12 +6058,12 @@ jest-environment-node@^27.5.1: jest-get-type@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== jest-haste-map@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: "@jest/types" "^27.5.1" @@ -4148,7 +6083,7 @@ jest-haste-map@^27.5.1: jest-jasmine2@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== dependencies: "@jest/environment" "^27.5.1" @@ -4171,7 +6106,7 @@ jest-jasmine2@^27.5.1: jest-leak-detector@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== dependencies: jest-get-type "^27.5.1" @@ -4179,7 +6114,7 @@ jest-leak-detector@^27.5.1: jest-matcher-utils@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: chalk "^4.0.0" @@ -4189,7 +6124,7 @@ jest-matcher-utils@^27.5.1: jest-message-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: "@babel/code-frame" "^7.12.13" @@ -4204,7 +6139,7 @@ jest-message-util@^27.5.1: jest-mock@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: "@jest/types" "^27.5.1" @@ -4212,26 +6147,26 @@ jest-mock@^27.5.1: jest-pnp-resolver@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== jest-resolve-dependencies@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== dependencies: "@jest/types" "^27.5.1" jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@^27.5.1: +jest-resolve@*, jest-resolve@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: "@jest/types" "^27.5.1" @@ -4247,7 +6182,7 @@ jest-resolve@^27.5.1: jest-runner@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: "@jest/console" "^27.5.1" @@ -4274,7 +6209,7 @@ jest-runner@^27.5.1: jest-runtime@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== dependencies: "@jest/environment" "^27.5.1" @@ -4302,7 +6237,7 @@ jest-runtime@^27.5.1: jest-serializer@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" @@ -4310,7 +6245,7 @@ jest-serializer@^27.5.1: jest-snapshot@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: "@babel/core" "^7.7.2" @@ -4338,7 +6273,7 @@ jest-snapshot@^27.5.1: jest-util@^27.0.0, jest-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: "@jest/types" "^27.5.1" @@ -4350,7 +6285,7 @@ jest-util@^27.0.0, jest-util@^27.5.1: jest-validate@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: "@jest/types" "^27.5.1" @@ -4362,7 +6297,7 @@ jest-validate@^27.5.1: jest-watcher@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== dependencies: "@jest/test-result" "^27.5.1" @@ -4375,25 +6310,30 @@ jest-watcher@^27.5.1: jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.5.1: +jest@^27.0.0, jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== dependencies: "@jest/core" "^27.5.1" import-local "^3.0.2" jest-cli "^27.5.1" +jmespath@0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz" + integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== + js-git@^0.7.8: version "0.7.8" - resolved "https://registry.yarnpkg.com/js-git/-/js-git-0.7.8.tgz#52fa655ab61877d6f1079efc6534b554f31e5444" + resolved "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz" integrity sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA== dependencies: bodec "^0.1.0" @@ -4403,42 +6343,50 @@ js-git@^0.7.8: js-md4@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/js-md4/-/js-md4-0.3.2.tgz#cd3b3dc045b0c404556c81ddb5756c23e59d7cf5" + resolved "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz" integrity sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA== js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsbn@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== +js-yaml@^3.14.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0, js-yaml@~4.1.0, js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsdom@^16.6.0: version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: abab "^2.0.5" @@ -4471,74 +6419,94 @@ jsdom@^16.6.0: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema@0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@2.x, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -json5@^1.0.1, json5@^1.0.2: +json5@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +json5@2.x: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonc-parser@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz" integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +jsonc-parser@3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz" + integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== + jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" -jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== +jsonwebtoken@^9.0.2, jsonwebtoken@9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== dependencies: jws "^3.2.2" lodash.includes "^4.3.0" @@ -4549,11 +6517,11 @@ jsonwebtoken@^8.5.1: lodash.isstring "^4.0.1" lodash.once "^4.0.0" ms "^2.1.1" - semver "^5.6.0" + semver "^7.5.4" jsprim@^1.2.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" @@ -4563,7 +6531,7 @@ jsprim@^1.2.2: jwa@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== dependencies: buffer-equal-constant-time "1.0.1" @@ -4572,7 +6540,7 @@ jwa@^1.4.1: jws@^3.2.2: version "3.2.2" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== dependencies: jwa "^1.4.1" @@ -4580,194 +6548,216 @@ jws@^3.2.2: kareem@2.6.3: version "2.6.3" - resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.6.3.tgz#23168ec8ffb6c1abfd31b7169a6fb1dd285992ac" + resolved "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz" integrity sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q== keyv@^4.5.3: version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +latest-version@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz" + integrity sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg== + dependencies: + package-json "^8.1.0" + lazy@~1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/lazy/-/lazy-1.0.11.tgz#daa068206282542c088288e975c297c1ae77b690" + resolved "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz" integrity sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA== leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" type-check "~0.4.0" libphonenumber-js@^1.10.53: - version "1.10.61" - resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.61.tgz#efd350a6283e5d6a804f0cd17dae1f563410241d" - integrity sha512-TsQsyzDttDvvzWNkbp/i0fVbzTGJIG0mUu/uNalIaRQEYeJxVQ/FPg+EJgSqfSXezREjM0V3RZ8cLVsKYhhw0Q== + version "1.11.2" + resolved "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.2.tgz" + integrity sha512-V9mGLlaXN1WETzqQvSu6qf6XVAr3nFuJvWsHcuzCCCo6xUKawwSxOPTpan5CGOSKTn5w/bQuCZcLPJkyysgC3w== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== loader-runner@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.includes@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== lodash.isboolean@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== lodash.isinteger@^4.0.4: version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== lodash.isnumber@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.isstring@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== lodash.memoize@4.x: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.once@^4.0.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== -lodash@4.17.21, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.14, lodash@^4.17.21, lodash@^4.7.0, lodash@4.17.21: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-driver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" - integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== - log-symbols@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" is-unicode-supported "^0.1.0" +log-symbols@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz" + integrity sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw== + dependencies: + chalk "^5.3.0" + is-unicode-supported "^1.3.0" + long@^5.2.1: version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" lru-cache@^7.14.1: version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== lru-cache@^8.0.0: version "8.0.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-8.0.5.tgz#983fe337f3e176667f8e567cfcce7cb064ea214e" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz" integrity sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA== -macos-release@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.1.tgz#bccac4a8f7b93163a8d163b8ebf385b3c5f55bf9" - integrity sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A== - magic-string@0.25.7: version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: sourcemap-codec "^1.4.4" +magic-string@0.30.5: + version "0.30.5" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + make-dir@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: semver "^7.5.3" -make-error@1.x, make-error@^1.1.1: +make-error@^1.1.1, make-error@1.x: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== makeerror@1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" md5@^2.2.1, md5@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== dependencies: charenc "0.0.2" @@ -4776,194 +6766,248 @@ md5@^2.2.1, md5@^2.3.0: media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^3.4.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + version "3.5.3" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz" + integrity sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw== dependencies: fs-monkey "^1.0.4" memory-pager@^1.0.2: version "1.5.0" - resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@^1.1.2, methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.0, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.7" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" +mime@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/mime/-/mime-4.0.3.tgz" + integrity sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ== + mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@2.6.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +mimic-response@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz" + integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== + minimalistic-assert@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimist@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.1: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -mkdirp@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.0, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz" + integrity sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg== + dependencies: + minipass "^7.0.4" + rimraf "^5.0.5" mkdirp@^0.5.4: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mkdirp@1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + module-details-from-path@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" + resolved "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz" integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== moment-timezone@^0.5.43: version "0.5.45" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.45.tgz#cb685acd56bac10e69d93c536366eb65aa6bcf5c" + resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz" integrity sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ== dependencies: moment "^2.29.4" -moment@*, moment@^2.26.0, moment@^2.29.4: +moment@*, moment@^2.26.0, moment@^2.29.4, moment@^2.30.1: version "2.30.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + resolved "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== mongodb-connection-string-url@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz#b4f87f92fd8593f3b9365f592515a06d304a1e9c" - integrity sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ== + version "3.0.1" + resolved "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz" + integrity sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg== dependencies: "@types/whatwg-url" "^11.0.2" whatwg-url "^13.0.0" -mongodb@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.5.0.tgz#3735b4fba085b26ca06f7744e9639bc538e93d87" - integrity sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA== +mongodb@6.6.2: + version "6.6.2" + resolved "https://registry.npmjs.org/mongodb/-/mongodb-6.6.2.tgz" + integrity sha512-ZF9Ugo2JCG/GfR7DEb4ypfyJJyiKbg5qBYKRintebj8+DNS33CyGMkWbrS9lara+u+h+yEOGSRiLhFO/g1s1aw== dependencies: "@mongodb-js/saslprep" "^1.1.5" - bson "^6.4.0" + bson "^6.7.0" mongodb-connection-string-url "^3.0.0" -mongoose@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-8.3.2.tgz#88d7eceecb1284c67c0d2e64d352442bc75f0aae" - integrity sha512-3JcpDjFI25cF/3xpu+4+9nM0lURQTNLcP86X83+LvuICdn453QQLmhSrUr2IPM/ffLiDE9KPl9slNb2s0hZPpg== +"mongoose@^6.0.2 || ^7.0.0 || ^8.0.0", mongoose@^7.6.1, mongoose@^8.3.2: + version "8.4.0" + resolved "https://registry.npmjs.org/mongoose/-/mongoose-8.4.0.tgz" + integrity sha512-fgqRMwVEP1qgRYfh+tUe2YBBFnPO35FIg2lfFH+w9IhRGg1/ataWGIqvf/MjwM29cZ60D5vSnqtN2b8Qp0sOZA== dependencies: - bson "^6.5.0" + bson "^6.7.0" kareem "2.6.3" - mongodb "6.5.0" + mongodb "6.6.2" mpath "0.9.0" mquery "5.0.0" ms "2.1.3" - sift "16.0.1" + sift "17.1.3" mpath@0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.9.0.tgz#0c122fe107846e31fc58c75b09c35514b3871904" + resolved "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz" integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== mquery@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/mquery/-/mquery-5.0.0.tgz#a95be5dfc610b23862df34a47d3e5d60e110695d" + resolved "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz" integrity sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg== dependencies: debug "4.x" +ms@^2.1.1, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - multer@1.4.4-lts.1: version "1.4.4-lts.1" - resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.4-lts.1.tgz#24100f701a4611211cfae94ae16ea39bb314e04d" + resolved "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz" integrity sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg== dependencies: append-field "^1.0.0" @@ -4974,15 +7018,30 @@ multer@1.4.4-lts.1: type-is "^1.6.4" xtend "^4.0.0" -mute-stream@0.0.8, mute-stream@~0.0.4: +mute-stream@~0.0.4, mute-stream@0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mute-stream@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +mysql@^2.18.1: + version "2.18.1" + resolved "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + mysql2@^3.2.3: - version "3.9.7" - resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.9.7.tgz#843755daf65b5ef08afe545fe14b8fb62824741a" - integrity sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw== + version "3.9.9" + resolved "https://registry.npmjs.org/mysql2/-/mysql2-3.9.9.tgz" + integrity sha512-Qtb2RUxwWMFkWXqF7Rd/7ySkupbQnNY7O0zQuQYgPcuJZ06M36JG3HIDEh/pEeq7LImcvA6O3lOVQ9XQK+HEZg== dependencies: denque "^2.1.0" generate-function "^2.3.1" @@ -4993,36 +7052,31 @@ mysql2@^3.2.3: seq-queue "^0.0.5" sqlstring "^2.3.2" -mysql@^2.18.1: - version "2.18.1" - resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" - integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== - dependencies: - bignumber.js "9.0.0" - readable-stream "2.3.7" - safe-buffer "5.1.2" - sqlstring "2.3.1" - named-placeholders@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351" + resolved "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz" integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== dependencies: lru-cache "^7.14.1" natural-compare-lite@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +natural-orderby@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz" + integrity sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q== + needle@2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + resolved "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz" integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== dependencies: debug "^3.2.6" @@ -5031,112 +7085,142 @@ needle@2.4.0: negotiator@0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== netmask@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== +node-abort-controller@^3.0.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + node-emoji@1.11.0: version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== dependencies: lodash "^4.17.21" node-fetch@^2.6.1: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.14: version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +normalize-url@^8.0.0: + version "8.0.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz" + integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== + +npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" nssocket@0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/nssocket/-/nssocket-0.6.0.tgz#59f96f6ff321566f33c70f7dbeeecdfdc07154fa" + resolved "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz" integrity sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w== dependencies: eventemitter2 "~0.4.14" lazy "~1.0.11" nwsapi@^2.2.0: - version "2.2.9" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.9.tgz#7f3303218372db2e9f27c27766bcfc59ae7e61c6" - integrity sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg== + version "2.2.10" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz" + integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-hash@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.13.1: version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== +object-treeify@^1.1.33: + version "1.1.33" + resolved "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz" + integrity sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A== + on-finished@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" on-headers@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +open@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/open/-/open-10.1.0.tgz" + integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" + optionator@^0.9.3: version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== dependencies: deep-is "^0.1.3" @@ -5146,9 +7230,9 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -ora@5.4.1, ora@^5.4.1: +ora@^5.4.1, ora@5.4.1: version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: bl "^4.1.0" @@ -5161,55 +7245,67 @@ ora@5.4.1, ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -os-name@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-4.0.1.tgz#32cee7823de85a8897647ba4d76db46bf845e555" - integrity sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw== +ora@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz" + integrity sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ== dependencies: - macos-release "^2.5.0" - windows-release "^4.0.0" + chalk "^5.3.0" + cli-cursor "^4.0.0" + cli-spinners "^2.9.2" + is-interactive "^2.0.0" + is-unicode-supported "^2.0.0" + log-symbols "^6.0.0" + stdin-discarder "^0.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pac-proxy-agent@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz#6b9ddc002ec3ff0ba5fdf4a8a21d363bcc612d75" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz" integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A== dependencies: "@tootallnate/quickjs-emscripten" "^0.23.0" @@ -5223,27 +7319,37 @@ pac-proxy-agent@^7.0.1: pac-resolver@^7.0.0: version "7.0.1" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz" integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== dependencies: degenerator "^5.0.0" netmask "^2.0.2" +package-json@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz" + integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== + dependencies: + got "^12.1.0" + registry-auth-token "^5.0.1" + registry-url "^6.0.0" + semver "^7.3.7" + pako@^0.2.5: version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + resolved "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" -parse-json@^5.0.0, parse-json@^5.2.0: +parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -5253,57 +7359,78 @@ parse-json@^5.0.0, parse-json@^5.2.0: parse5@6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +password-prompt@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz" + integrity sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw== + dependencies: + ansi-escapes "^4.3.2" + cross-spawn "^7.0.3" + path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1, path-scurry@^1.11.1, path-scurry@^1.6.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-to-regexp@0.2.5: version "0.2.5" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.2.5.tgz#0b426991e387fc4c675de23557f358715eb66fb0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.2.5.tgz" integrity sha512-l6qtdDPIkmAmzEO6egquYDfqQGPMRNGjYtrU13HAXb3YSRrt7HSb1sJY0pKp6o2bAa86tSB6iwaW2JbthPKr7Q== path-to-regexp@3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.2.0.tgz#fa7877ecbc495c601907562222453c43cc204a5f" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz" integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +path-type@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz" + integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== + path@^0.12.7: version "0.12.7" - resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + resolved "https://registry.npmjs.org/path/-/path-0.12.7.tgz" integrity sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q== dependencies: process "^0.11.1" @@ -5311,37 +7438,37 @@ path@^0.12.7: performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== pg-cloudflare@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + resolved "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz" integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== pg-connection-string@^2.6.1, pg-connection-string@^2.6.4: version "2.6.4" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.4.tgz#f543862adfa49fa4e14bc8a8892d2a84d754246d" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz" integrity sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA== pg-int8@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== pg-pool@^3.6.2: version "3.6.2" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.2.tgz#3a592370b8ae3f02a7c8130d245bc02fa2c5f3f2" + resolved "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz" integrity sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg== pg-protocol@^1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.1.tgz#21333e6d83b01faaebfe7a33a7ad6bfd9ed38cb3" + resolved "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz" integrity sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg== pg-types@^2.1.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + resolved "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz" integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== dependencies: pg-int8 "1.0.1" @@ -5350,9 +7477,9 @@ pg-types@^2.1.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" -pg@^8.11.1: +pg@^8.11.1, pg@>=8.0: version "8.11.5" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.5.tgz#e722b0a5f1ed92931c31758ebec3ddf878dd4128" + resolved "https://registry.npmjs.org/pg/-/pg-8.11.5.tgz" integrity sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw== dependencies: pg-connection-string "^2.6.4" @@ -5365,62 +7492,67 @@ pg@^8.11.1: pgpass@1.x: version "1.0.5" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz" integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== dependencies: split2 "^4.1.0" -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz" + integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== + pidusage@^2.0.21: version "2.0.21" - resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-2.0.21.tgz#7068967b3d952baea73e57668c98b9eaa876894e" + resolved "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz" integrity sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA== dependencies: safe-buffer "^5.2.1" pidusage@~3.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-3.0.2.tgz#6faa5402b2530b3af2cf93d13bcf202889724a53" + resolved "https://registry.npmjs.org/pidusage/-/pidusage-3.0.2.tgz" integrity sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w== dependencies: safe-buffer "^5.2.1" pirates@^4.0.4: version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" pluralize@8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== pm2-axon-rpc@~0.7.0, pm2-axon-rpc@~0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz#2daec5383a63135b3f18babb70266dacdcbc429a" + resolved "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz" integrity sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw== dependencies: debug "^4.3.1" pm2-axon@~4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pm2-axon/-/pm2-axon-4.0.1.tgz#a7b4bb586e9aeb35b1042b488cde15b60cabafd2" + resolved "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz" integrity sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg== dependencies: amp "~0.3.1" @@ -5430,7 +7562,7 @@ pm2-axon@~4.0.1: pm2-deploy@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pm2-deploy/-/pm2-deploy-1.0.2.tgz#98d8385553a3a4dca11c7b3116deb519bc5961a7" + resolved "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz" integrity sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg== dependencies: run-series "^1.1.8" @@ -5438,14 +7570,14 @@ pm2-deploy@~1.0.2: pm2-multimeter@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz#1a1e55153d41a05534cea23cfe860abaa0eb4ace" + resolved "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz" integrity sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA== dependencies: charm "~0.1.1" pm2-sysmonit@^1.2.8: version "1.2.8" - resolved "https://registry.yarnpkg.com/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz#eddea34a53fd8c8d7c3efb73b97a3c548686e24d" + resolved "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz" integrity sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA== dependencies: async "^3.2.0" @@ -5455,12 +7587,12 @@ pm2-sysmonit@^1.2.8: tx2 "~1.0.4" pm2@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/pm2/-/pm2-5.3.1.tgz#f4c1b1199aac2988e9079ca4f127adaa1a5d18ce" - integrity sha512-DLVQHpSR1EegaTaRH3KbRXxpPVaqYwAp3uHSCtCsS++LSErvk07WSxuUnntFblBRqNU/w2KQyqs12mSq5wurkg== + version "5.4.0" + resolved "https://registry.npmjs.org/pm2/-/pm2-5.4.0.tgz" + integrity sha512-9TrDuckcSEnINoURygr3yfruK20qXuOUPOPQyIh4FIskQduyDNst9ys1XAt9YPY3RyGxVr2+x8Irsdma3klVQw== dependencies: "@pm2/agent" "~2.0.0" - "@pm2/io" "~5.0.0" + "@pm2/io" "~6.0.0" "@pm2/js-api" "~0.8.0" "@pm2/pm2-version-check" latest async "~3.2.0" @@ -5475,6 +7607,7 @@ pm2@^5.2.0: enquirer "2.3.6" eventemitter2 "5.0.1" fclone "1.0.11" + js-yaml "~4.1.0" mkdirp "1.0.4" needle "2.4.0" pidusage "~3.0" @@ -5487,57 +7620,61 @@ pm2@^5.2.0: source-map-support "0.5.21" sprintf-js "1.1.2" vizion "~2.2.1" - yamljs "0.3.0" optionalDependencies: pm2-sysmonit "^1.2.8" pngjs@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz" integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postgres-array@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== postgres-bytea@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + resolved "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== postgres-date@~1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + resolved "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz" integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== postgres-interval@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + resolved "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz" integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== dependencies: xtend "^4.0.0" prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" -prettier@^2.6.2: +prettier@^2.6.2, prettier@>=2.0.0: version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== pretty-format@^27.0.0, pretty-format@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" @@ -5546,32 +7683,42 @@ pretty-format@^27.0.0, pretty-format@^27.5.1: process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process@^0.11.1: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promptly@^2: version "2.2.0" - resolved "https://registry.yarnpkg.com/promptly/-/promptly-2.2.0.tgz#2a13fa063688a2a5983b161fff0108a07d26fc74" + resolved "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz" integrity sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA== dependencies: read "^1.0.4" prompts@^2.0.1: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" sisteransi "^1.0.5" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -5579,7 +7726,7 @@ proxy-addr@~2.0.7: proxy-agent@~6.3.0: version "6.3.1" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.1.tgz#40e7b230552cf44fd23ffaf7c59024b692612687" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz" integrity sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ== dependencies: agent-base "^7.0.2" @@ -5593,30 +7740,34 @@ proxy-agent@~6.3.0: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== psl@^1.1.28, psl@^1.1.33: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +pupa@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz" + integrity sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug== + dependencies: + escape-goat "^4.0.0" + qrcode@^1.5.0: version "1.5.3" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + resolved "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz" integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== dependencies: dijkstrajs "^1.0.1" @@ -5624,60 +7775,70 @@ qrcode@^1.5.0: pngjs "^5.0.0" yargs "^15.3.1" -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - qs@^6.11.0: version "6.12.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" + resolved "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz" integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== dependencies: side-channel "^1.0.6" qs@~6.5.2: version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + random-bytes@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + resolved "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" integrity sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ== random-number@^0.0.9: version "0.0.9" - resolved "https://registry.yarnpkg.com/random-number/-/random-number-0.0.9.tgz#5907b96f05041807c52aed601c869524d86fbbd5" + resolved "https://registry.npmjs.org/random-number/-/random-number-0.0.9.tgz" integrity sha512-ipG3kRCREi/YQpi2A5QGcvDz1KemohovWmH6qGfboVyyGdR2t/7zQz0vFxrfxpbHQgPPdtVlUDaks3aikD1Ljw== randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.5.2: version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" @@ -5685,34 +7846,31 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +rc@1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-is@^17.0.1: version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== read@^1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz" integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== dependencies: mute-stream "~0.0.4" -readable-stream@2.3.7: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - readable-stream@^2.2.2: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -5725,42 +7883,79 @@ readable-stream@^2.2.2: readable-stream@^3.4.0: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@2.3.7: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" rechoir@^0.6.2: version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: resolve "^1.1.6" -reflect-metadata@^0.1.13: +redeyed@~2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz" + integrity sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ== + dependencies: + esprima "~4.0.0" + +reflect-metadata@*, reflect-metadata@^0.1.12, "reflect-metadata@^0.1.12 || ^0.2.0", reflect-metadata@^0.1.13: version "0.1.14" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" + resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz" integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== -request-ip@^2.1.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/request-ip/-/request-ip-2.2.0.tgz#8dbf53de6c5eb9a7da63a4f9f8991c1ea968a099" - integrity sha512-Hn4zUAr+XHbUs2RrfHur62t7+UhvtevqK32ordFewguEfNHUkhSdYgbG7PDGmXZEzqEXll9bei0+VMe6gkmuUQ== +registry-auth-token@^5.0.1: + version "5.0.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz" + integrity sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ== dependencies: - is_js "^0.9.0" + "@pnpm/npm-conf" "^2.1.0" + +registry-url@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz" + integrity sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q== + dependencies: + rc "1.2.8" + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +request-ip@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz" + integrity sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA== request@^2.88.2: version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" @@ -5786,17 +7981,17 @@ request@^2.88.2: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-in-the-middle@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz#4b71e3cc7f59977100af9beb76bf2d056a5a6de2" + resolved "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz" integrity sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg== dependencies: debug "^4.1.1" @@ -5805,164 +8000,240 @@ require-in-the-middle@^5.0.0: require-main-filename@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve.exports@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz" integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== resolve@^1.1.6, resolve@^1.20.0, resolve@^1.22.1: version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +responselike@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz" + integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== + dependencies: + lowercase-keys "^3.0.0" + restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" signal-exit "^3.0.2" +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retry-as-promised@^7.0.4: version "7.0.4" - resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-7.0.4.tgz#9df73adaeea08cb2948b9d34990549dc13d800a2" + resolved "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz" integrity sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA== +retry@0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +rimraf@^5.0.5: + version "5.0.7" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz" + integrity sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg== + dependencies: + glob "^10.3.7" + +rimraf@4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== + dependencies: + glob "^9.2.0" + +run-applescript@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz" + integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + run-async@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== + run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" run-series@^1.1.8: version "1.1.9" - resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.9.tgz#15ba9cb90e6a6c054e67c98e1dc063df0ecc113a" + resolved "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz" integrity sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g== -rxjs@6.6.7, rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.2.0, rxjs@^7.5.5: +"rxjs@^6.0.0 || ^7.0.0", rxjs@^7.0.0, rxjs@^7.1.0, rxjs@^7.5.5, rxjs@^7.8.1, rxjs@7.8.1: version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +rxjs@6.6.7: + version "6.6.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safe-buffer@~5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@>=0.6, sax@^1.2.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" - integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== +sax@^1.2.4, sax@>=0.6, sax@>=0.6.0: + version "1.4.1" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +sax@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== saxes@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" -schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== dependencies: "@types/json-schema" "^7.0.8" ajv "^6.12.5" ajv-keywords "^3.5.2" -semver@7.x, semver@^7.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== +semver-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz" + integrity sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA== + dependencies: + semver "^7.3.5" + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@7.x: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@~7.5.0: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@~7.5.0, semver@~7.5.4: +semver@~7.5.4: version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" send@0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -5981,24 +8252,24 @@ send@0.18.0: seq-queue@^0.0.5: version "0.0.5" - resolved "https://registry.yarnpkg.com/seq-queue/-/seq-queue-0.0.5.tgz#d56812e1c017a6e4e7c3e3a37a1da6d78dd3c93e" + resolved "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz" integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== sequelize-pool@^7.1.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-7.1.0.tgz#210b391af4002762f823188fd6ecfc7413020768" + resolved "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz" integrity sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg== sequelize-typescript@^2.1.5: version "2.1.6" - resolved "https://registry.yarnpkg.com/sequelize-typescript/-/sequelize-typescript-2.1.6.tgz#9476c8a2510114ed1c3a26b424c47e05c2e6284e" + resolved "https://registry.npmjs.org/sequelize-typescript/-/sequelize-typescript-2.1.6.tgz" integrity sha512-Vc2N++3en346RsbGjL3h7tgAl2Y7V+2liYTAOZ8XL0KTw3ahFHsyAUzOwct51n+g70I1TOUDgs06Oh6+XGcFkQ== dependencies: glob "7.2.0" -sequelize@^6.32.1: +sequelize@^6.32.1, sequelize@>=6.20.1: version "6.37.3" - resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.37.3.tgz#ed6212029a52c59a18638d2a703da84bc2f81311" + resolved "https://registry.npmjs.org/sequelize/-/sequelize-6.37.3.tgz" integrity sha512-V2FTqYpdZjPy3VQrZvjTPnOoLm0KudCRXfGWp48QwhyPPp2yW8z0p0sCYZd/em847Tl2dVxJJ1DR+hF+O77T7A== dependencies: "@types/debug" "^4.1.8" @@ -6020,14 +8291,14 @@ sequelize@^6.32.1: serialize-javascript@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" serve-static@1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -6037,12 +8308,12 @@ serve-static@1.15.0: set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-function-length@^1.2.1: version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: define-data-property "^1.1.4" @@ -6054,38 +8325,50 @@ set-function-length@^1.2.1: setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +shamsi-date-converter@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/shamsi-date-converter/-/shamsi-date-converter-1.0.5.tgz" + integrity sha512-Ip8E6WkSs7aa1Uud9jTuMpegIFU/9mOQBli6tTriBaaYU2ckuzXxZuJus24XtmW5EkXY7tieFBpsrAPD9N2nLQ== + dependencies: + shamsi "^1.1.6" + +shamsi@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/shamsi/-/shamsi-1.1.6.tgz" + integrity sha512-lTXsWGlPxY+AdkcoCJdwy4cFlqeULk0uPEBx+Mh7QIYEyfc+oPRFiChoxDHU3t2F2sL5J8gDJ6moD5sunOrWpg== + shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@0.8.5, shelljs@^0.8.5: +shelljs@^0.8.5, shelljs@0.8.5: version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== dependencies: glob "^7.0.0" interpret "^1.0.0" rechoir "^0.6.2" -shimmer@^1.1.0, shimmer@^1.2.0: +shimmer@^1.2.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + resolved "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz" integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: call-bind "^1.0.7" @@ -6093,35 +8376,61 @@ side-channel@^1.0.4, side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" -sift@16.0.1: - version "16.0.1" - resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.1.tgz#e9c2ccc72191585008cf3e36fc447b2d2633a053" - integrity sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ== +sift@17.1.3: + version "17.1.3" + resolved "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz" + integrity sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ== signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== soap@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/soap/-/soap-1.0.2.tgz#0e5f73495e03fe6b6667c60480b734bb4c13576d" - integrity sha512-7F93aRH2ykdF373XF1eIvo50xIWF0RDgTmvbDx89X5EA6jvbIKYCjChF5JS+1LHmNaNZSmmrhDfFyAdmBYxElg== + version "1.0.3" + resolved "https://registry.npmjs.org/soap/-/soap-1.0.3.tgz" + integrity sha512-ou+rhh8uG7YV9NjXE105Gtbg0PeNSybmJxNpMaMWTx5HUwvUX4xqdtLcHg52PWLE3HnRd42ERNH4C/H0d2I+1A== dependencies: axios "^1.6.8" axios-ntlm "^1.4.2" @@ -6136,16 +8445,16 @@ soap@^1.0.0: xml-crypto "^3.0.0" socket.io-adapter@~2.5.2: - version "2.5.4" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz#4fdb1358667f6d68f25343353bd99bd11ee41006" - integrity sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg== + version "2.5.5" + resolved "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz" + integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg== dependencies: debug "~4.3.4" - ws "~8.11.0" + ws "~8.17.1" socket.io-parser@~4.2.4: version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz" integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== dependencies: "@socket.io/component-emitter" "~3.1.0" @@ -6153,7 +8462,7 @@ socket.io-parser@~4.2.4: socket.io@4.7.5: version "4.7.5" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" + resolved "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz" integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== dependencies: accepts "~1.3.4" @@ -6166,7 +8475,7 @@ socket.io@4.7.5: socks-proxy-agent@^8.0.2: version "8.0.3" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz" integrity sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A== dependencies: agent-base "^7.1.1" @@ -6175,80 +8484,95 @@ socks-proxy-agent@^8.0.2: socks@^2.7.1: version "2.8.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + resolved "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz" integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== dependencies: ip-address "^9.0.5" smart-buffer "^4.2.0" -source-map-support@0.5.21, source-map-support@^0.5.20, source-map-support@^0.5.6, source-map-support@~0.5.20: +soft-delete-plugin-mongoose@^1.0.17: + version "1.0.17" + resolved "https://registry.npmjs.org/soft-delete-plugin-mongoose/-/soft-delete-plugin-mongoose-1.0.17.tgz" + integrity sha512-n/r4uefkR3msj6W5bmQCLnX0pAvAZHB/Dtw/0UXGz9lJ4W7U/XV1l+qmLNyBKwRt28v0XkXbKCTgAUnhhnexSA== + +source-map-support@^0.5.20, source-map-support@^0.5.6, source-map-support@~0.5.20, source-map-support@0.5.21: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@^0.7.4: +source-map@^0.7.3: version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== sourcemap-codec@^1.4.4: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== sparse-bitfield@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== dependencies: memory-pager "^1.0.2" split2@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== -sprintf-js@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== - sprintf-js@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sqlstring@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" - integrity sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ== +sprintf-js@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== sqlstring@^2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.3.tgz#2ddc21f03bce2c387ed60680e739922c65751d0c" + resolved "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz" integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz" + integrity sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ== + sshpk@^1.7.0: version "1.18.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz" integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" @@ -6263,82 +8587,152 @@ sshpk@^1.7.0: stack-utils@^2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" statuses@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +stdin-discarder@^0.2.1: + version "0.2.2" + resolved "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz" + integrity sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ== + streamsearch@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string-width@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz" + integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + dependencies: + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + superagent@^8.1.2: version "8.1.2" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.1.2.tgz#03cb7da3ec8b32472c9d20f6c2a57c7f3765f30b" + resolved "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz" integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== dependencies: component-emitter "^1.3.0" @@ -6354,36 +8748,48 @@ superagent@^8.1.2: supertest@^6.2.3: version "6.3.4" - resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.3.4.tgz#2145c250570c2ea5d337db3552dbfb78a2286218" + resolved "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz" integrity sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw== dependencies: methods "^1.1.2" superagent "^8.1.2" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: has-flag "^4.0.0" @@ -6391,57 +8797,69 @@ supports-hyperlinks@^2.0.0: supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +swagger-ui-dist@>=4.11.0: + version "5.17.14" + resolved "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.14.tgz" + integrity sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw== + swagger-ui-dist@5.11.2: version "5.11.2" - resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.11.2.tgz#b423e820928df703586ff58f80b09ffcf2434e08" + resolved "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.11.2.tgz" integrity sha512-jQG0cRgJNMZ7aCoiFofnoojeSaa/+KgWaDlfgs8QN+BXoGMpxeMVY5OEnjq4OlNvF3yjftO8c9GRAgcHlO+u7A== -swagger-ui-dist@>=4.11.0: - version "5.17.2" - resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.17.2.tgz#de31813b18ff34e9a428cd6b9ede521164621996" - integrity sha512-V/NqUw6QoTrjSpctp2oLQvxrl3vW29UsUtZyq7B1CF0v870KOFbYGDQw8rpKaKm0JxTwHpWnW1SN9YuKZdiCyw== - swagger-ui-express@^4.6.3: version "4.6.3" - resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz#870d0892654fe80e6970a2d680e22521acd2dc19" + resolved "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz" integrity sha512-CDje4PndhTD2HkgyKH3pab+LKspDeB/NhPN2OF1j+piYIamQqBYwAXWESOT1Yju2xFg51bRW9sUng2WxDjzArw== dependencies: swagger-ui-dist ">=4.11.0" symbol-observable@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== systeminformation@^5.7: - version "5.22.7" - resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.22.7.tgz#9a20810c7eacad4aebe7591cb7c78c0dd96dbd1a" - integrity sha512-AWxlP05KeHbpGdgvZkcudJpsmChc2Y5Eo/GvxG/iUA/Aws5LZKHAMSeAo+V+nD+nxWZaxrwpWcnx4SH3oxNL3A== + version "5.22.9" + resolved "https://registry.npmjs.org/systeminformation/-/systeminformation-5.22.9.tgz" + integrity sha512-qUWJhQ9JSBhdjzNUQywpvc0icxUAjMY3sZqUoS0GOtaJV9Ijq8s9zEP8Gaqmymn1dOefcICyPXK1L3kgKxlUpg== tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tar@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/tar/-/tar-7.1.0.tgz" + integrity sha512-ENhg4W6BmjYxl8GTaE7/h99f0aXiSWv4kikRZ9n2/JRxypZniE84ILZqimAhxxX7Zb8Px6pFdheW3EeHfhnXQQ== + dependencies: + "@isaacs/fs-minipass" "^4.0.0" + chownr "^3.0.0" + minipass "^7.1.0" + minizlib "^3.0.1" + mkdirp "^3.0.1" + yallist "^5.0.0" + terminal-link@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^5.1.3: +terser-webpack-plugin@^5.3.10: version "5.3.10" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== dependencies: "@jridgewell/trace-mapping" "^0.3.20" @@ -6451,9 +8869,9 @@ terser-webpack-plugin@^5.1.3: terser "^5.26.0" terser@^5.26.0: - version "5.30.4" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.4.tgz#62b4d16a819424e6317fd5ceffb4ee8dc769803a" - integrity sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ== + version "5.31.0" + resolved "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz" + integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -6462,7 +8880,7 @@ terser@^5.26.0: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -6471,57 +8889,57 @@ test-exclude@^6.0.0: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== throat@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== through@^2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmpl@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== toposort-class@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" + resolved "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" integrity sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg== tough-cookie@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + version "4.1.4" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== dependencies: psl "^1.1.33" punycode "^2.1.1" @@ -6530,7 +8948,7 @@ tough-cookie@^4.0.0: tough-cookie@~2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" @@ -6538,31 +8956,31 @@ tough-cookie@~2.5.0: tr46@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: punycode "^2.1.1" tr46@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" + resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz" integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== dependencies: punycode "^2.3.0" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== tree-kill@1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== ts-jest@^27.1.4: version "27.1.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz" integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== dependencies: bs-logger "0.x" @@ -6576,7 +8994,7 @@ ts-jest@^27.1.4: ts-loader@^9.4.2: version "9.5.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz" integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== dependencies: chalk "^4.1.0" @@ -6585,9 +9003,9 @@ ts-loader@^9.4.2: semver "^7.3.4" source-map "^0.7.4" -ts-node@^10.7.0: +ts-node@^10.7.0, ts-node@>=9.0.0: version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -6604,28 +9022,18 @@ ts-node@^10.7.0: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tsconfig-paths-webpack-plugin@3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz#01aafff59130c04a8c4ebc96a3045c43c376449a" - integrity sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw== +tsconfig-paths-webpack-plugin@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz" + integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA== dependencies: chalk "^4.1.0" enhanced-resolve "^5.7.0" - tsconfig-paths "^3.9.0" + tsconfig-paths "^4.1.2" -tsconfig-paths@3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: +tsconfig-paths@^3.14.1: version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" @@ -6633,82 +9041,120 @@ tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tsconfig-paths@4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.11.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.6.2, tslib@2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tslib@1.9.3: version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tslib@2.5.3: version "2.5.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz" integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== -tslib@2.6.2, tslib@^2.0.1, tslib@^2.1.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tv4@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/tv4/-/tv4-1.3.0.tgz#d020c846fadd50c855abb25ebaecc68fc10f7963" + resolved "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz" integrity sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw== tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== tx2@~1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/tx2/-/tx2-1.0.5.tgz#ee0b0e5e2c351f8d23e54bdf46dd60afa3bbc73d" + resolved "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz" integrity sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg== dependencies: json-stringify-safe "^5.0.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-detect@4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^1.0.1: + version "1.4.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.13.0: + version "2.19.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + type-is@^1.6.4, type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -6716,118 +9162,187 @@ type-is@^1.6.4, type-is@~1.6.18: typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -typescript@^5.1.6: +typescript@*, "typescript@^3.4.5 || ^4.3.5", typescript@^5.1.6, typescript@>=2.7, "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", "typescript@>=3.8 <5.0", typescript@>=4.9.5, typescript@>3.6.0: version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== +typescript@>=4.8.2, typescript@5.3.3: + version "5.3.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + +ua-parser-js@^1.0.37: + version "1.0.38" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.38.tgz" + integrity sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ== + uid-safe@~2.1.5: version "2.1.5" - resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" + resolved "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz" integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== dependencies: random-bytes "~1.0.0" uid@2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/uid/-/uid-2.0.2.tgz#4b5782abf0f2feeefc00fa88006b2b3b7af3e3b9" + resolved "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz" integrity sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g== dependencies: "@lukeed/csprng" "^1.0.0" undici-types@~5.26.4: version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== + dependencies: + crypto-random-string "^4.0.0" + universalify@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + version "1.0.16" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" + escalade "^3.1.2" + picocolors "^1.0.1" -uri-js@^4.2.2: +update-notifier@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-7.0.0.tgz" + integrity sha512-Hv25Bh+eAbOLlsjJreVPOs4vd51rrtCrmhyOJtbpAojro34jS4KQaEp4/EvlHJX7jSO42VvEFpkastVyXyIsdQ== + dependencies: + boxen "^7.1.1" + chalk "^5.3.0" + configstore "^6.0.0" + import-lazy "^4.0.0" + is-in-ci "^0.1.0" + is-installed-globally "^0.4.0" + is-npm "^6.0.0" + latest-version "^7.0.0" + pupa "^3.1.0" + semver "^7.5.4" + semver-diff "^4.0.0" + xdg-basedir "^5.1.0" + +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" +url@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/url/-/url-0.10.3.tgz" + integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util@^0.10.3: version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + resolved "https://registry.npmjs.org/util/-/util-0.10.4.tgz" integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" +util@^0.12.4: + version "0.12.5" + resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^3.2.1, uuid@^3.3.2: +uuid@^3.3.2: version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +uuid@8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz" + integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== + +uuid@9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + v8-compile-cache-lib@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== v8-to-istanbul@^8.1.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" @@ -6835,18 +9350,18 @@ v8-to-istanbul@^8.1.0: source-map "^0.7.3" validator@^13.9.0: - version "13.11.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b" - integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ== + version "13.12.0" + resolved "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz" + integrity sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg== vary@^1, vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" @@ -6855,7 +9370,7 @@ verror@1.10.0: vizion@~2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/vizion/-/vizion-2.2.1.tgz#04201ea45ffd145d5b5210e385a8f35170387fb2" + resolved "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz" integrity sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww== dependencies: async "^2.6.3" @@ -6865,28 +9380,28 @@ vizion@~2.2.1: w3c-hr-time@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" w3c-xmlserializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: xml-name-validator "^3.0.0" walker@^1.0.7: version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" -watchpack@^2.3.1: +watchpack@^2.4.0: version "2.4.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz" integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== dependencies: glob-to-regexp "^0.4.1" @@ -6894,57 +9409,57 @@ watchpack@^2.3.1: wcwidth@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== webidl-conversions@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webidl-conversions@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== webpack-node-externals@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917" + resolved "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== webpack-sources@^3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@5.73.0: - version "5.73.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== +webpack@^5.0.0, webpack@^5.1.0, webpack@^5.11.0, webpack@5.90.1: + version "5.90.1" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz" + integrity sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.9.0" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" @@ -6953,32 +9468,32 @@ webpack@5.73.0: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.0" + schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.0" webpack-sources "^3.2.3" whatwg-encoding@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - whatwg-mimetype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + whatwg-url@^13.0.0: version "13.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-13.0.0.tgz#b7b536aca48306394a34e44bda8e99f332410f8f" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz" integrity sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig== dependencies: tr46 "^4.1.1" @@ -6986,7 +9501,7 @@ whatwg-url@^13.0.0: whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -6994,7 +9509,7 @@ whatwg-url@^5.0.0: whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: lodash "^4.7.0" @@ -7003,38 +9518,70 @@ whatwg-url@^8.0.0, whatwg-url@^8.5.0: which-module@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== +which-typed-array@^1.1.14, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -windows-release@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-4.0.0.tgz#4725ec70217d1bf6e02c7772413b29cdde9ec377" - integrity sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg== +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: - execa "^4.0.2" + string-width "^4.0.0" + +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" wkx@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.5.0.tgz#c6c37019acf40e517cc6b94657a25a3d4aa33e8c" + resolved "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz" integrity sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg== dependencies: "@types/node" "*" word-wrap@^1.2.5: version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -7043,21 +9590,30 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^3.0.0: +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -7065,24 +9621,29 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.0.0, ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^7.0.0, ws@^7.4.6, ws@~7.5.10: + version "7.5.10" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@~7.4.0: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@^8.16.0: + version "8.17.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== -ws@~8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== xml-crypto@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/xml-crypto/-/xml-crypto-3.2.0.tgz#a9debab572c8e895cff5fb351a8d8be3f6e1962e" + resolved "https://registry.npmjs.org/xml-crypto/-/xml-crypto-3.2.0.tgz" integrity sha512-qVurBUOQrmvlgmZqIVBqmb06TD2a/PpEUfFPgD7BuBfjmoH4zgkqaWSIJrnymlCvM2GGt9x+XtJFA+ttoAufqg== dependencies: "@xmldom/xmldom" "^0.8.8" @@ -7090,73 +9651,83 @@ xml-crypto@^3.0.0: xml-name-validator@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml2js@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== xpath@0.0.32: version "0.0.32" - resolved "https://registry.yarnpkg.com/xpath/-/xpath-0.0.32.tgz#1b73d3351af736e17ec078d6da4b8175405c48af" + resolved "https://registry.npmjs.org/xpath/-/xpath-0.0.32.tgz" integrity sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw== xtend@^4.0.0: version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^3.0.2: version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yamljs@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" - integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== - dependencies: - argparse "^1.0.7" - glob "^7.0.5" - -yargs-parser@20.x, yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yallist@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz" + integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== yargs-parser@^18.1.2: version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2, yargs-parser@20.x: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs@^15.3.1: version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" @@ -7173,7 +9744,7 @@ yargs@^15.3.1: yargs@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -7186,10 +9757,10 @@ yargs@^16.2.0: yn@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==