From 665e25264cbd9245457022b5a6195fe70dc5629b Mon Sep 17 00:00:00 2001 From: Jason Park <93040528+Autogod@users.noreply.github.com> Date: Fri, 11 Nov 2022 13:42:09 +0900 Subject: [PATCH 1/3] fix: configuring-rest-api (#219) * chore(deps): update dependency eslint to v8.9.0 (#141) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.2.0 (#140) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.70 (#138) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.71 (#145) Co-authored-by: Renovate Bot * chore(deps): update pnpm/action-setup action to v2.2.0 (#142) Co-authored-by: Renovate Bot * feat: lambda for put-timetable (#144) * feat: lambda for put-timetable * deleted newline for put-timetable. * changed file name for consistency * chore(deps): update actions/setup-node action to v3 (#148) Co-authored-by: Renovate Bot * chore(deps): update pnpm/action-setup action to v2.2.1 (#147) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.72 (#146) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.12.1 (#143) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.14.0 (#133) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.74 (#150) Co-authored-by: Renovate Bot * chore(deps): update dependency eslint to v8.10.0 (#149) Co-authored-by: Renovate Bot * chore(deps): update dependency typescript to v4.6.2 (#153) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.15.0 (#154) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.75 (#152) Co-authored-by: Renovate Bot * chore(deps): update dependency ts-node to v10.6.0 (#155) Co-authored-by: Renovate Bot * chore(deps): update actions/checkout action to v3 (#156) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.13.0 (#151) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.76 (#157) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.77 (#158) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.79 (#159) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.14.0 (#162) Co-authored-by: Renovate Bot * chore(deps): update dependency ts-node to v10.7.0 (#161) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.81 (#160) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.82 (#163) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.83 (#164) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.16.0 (#168) Co-authored-by: Renovate Bot * chore(deps): update endbug/add-and-commit action to v9 (#167) Co-authored-by: Renovate Bot * chore(deps): update dependency @commitlint/cli to v16.2.3 (#170) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.15.0 (#169) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.90 (#165) Co-authored-by: Renovate Bot * chore(deps): update peter-evans/find-comment action to v2 (#175) Co-authored-by: Renovate Bot * chore(deps): update peter-evans/create-or-update-comment action to v2 (#174) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.17.0 (#171) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.92 (#172) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.16.0 (#173) Co-authored-by: Renovate Bot * chore(deps): update dependency eslint-import-resolver-typescript to v2.7.0 (#176) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.19.0 (#183) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.17.0 (#182) Co-authored-by: Renovate Bot * feat: api for put-timetable lambda. (#179) * feat: api for put-timetable lambda. * feat: fixed syntax errors * feat: fixed syntax error (2) * chore(deps): update dependencies * chore: add lint-staged * chore(deps): update codecov/codecov-action action to v3 (#186) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.3.0 (#189) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.22.0 * chore(deps): update github/codeql-action action to v2 (#192) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.4.0 (#190) Co-authored-by: Renovate Bot * chore(deps): update dependencies * chore(deps): update amannn/action-semantic-pull-request action to v4.5.0 * chore(deps): update dependency husky to v8 * chore(deps): update dependency @commitlint/cli to v16.3.0 * chore(deps): update dependency standard-version to v9.5.0 * chore(deps): update aws-cdk monorepo to v2.27.0 * chore(deps): update dependency ts-jest to v28.0.4 * chore(deps): update dependency eslint to v8.17.0 * chore(deps): update dependency ts-node to v10.8.1 * chore(deps): update typescript-eslint monorepo to v5.27.1 * chore(deps): update jest monorepo * chore(deps): update dependency constructs to v10.1.32 * chore(deps): update dependencies * chore(deps): update pnpm/action-setup action to v2.2.2 * chore(deps): update dependency typescript to v4.7.3 * chore(deps): update dependencies * f:added Put method into default Headers for new api function put-timetable (#216) * feat: updated pnpm-lock file to latest * feat: uploading updated package file * feat: updating package-lock file * fix: modified jest config file * fix: update jest config * fix: config rest api * fix: update jest config * fix: jest types * fix: update pnpm lock * fix: deleted package-lock Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Renovate Bot Co-authored-by: AustinZhu --- .github/actions/install-deps/action.yml | 4 +- .github/workflows/codeql-analysis.yml | 8 +- .github/workflows/deploy.yml | 6 +- .github/workflows/pr-lint.yml | 2 +- .github/workflows/pr.yml | 14 +- .github/workflows/push.yml | 8 +- .gitignore | 3 - .husky/.gitignore | 1 + .husky/pre-commit | 2 + jest.config.ts | 3 +- lib/configs/api-gateway/cors.ts | 2 +- lib/constructs/business/rest-api-service.ts | 17 +- lib/constructs/common/lambda-functions.ts | 13 + package.json | 57 +- pnpm-lock.yaml | 3067 +++++++++---------- src/lambda/put-timetable/index.py | 32 + src/lambda/put-timetable/utils.py | 66 + 17 files changed, 1672 insertions(+), 1633 deletions(-) create mode 100644 .husky/.gitignore create mode 100644 src/lambda/put-timetable/index.py create mode 100644 src/lambda/put-timetable/utils.py diff --git a/.github/actions/install-deps/action.yml b/.github/actions/install-deps/action.yml index c9e93a401..51b3a816a 100644 --- a/.github/actions/install-deps/action.yml +++ b/.github/actions/install-deps/action.yml @@ -3,11 +3,11 @@ description: 'Workflow for installing dependencies' runs: using: "composite" steps: - - uses: pnpm/action-setup@v2.0.1 + - uses: pnpm/action-setup@v2.2.2 with: version: latest - name: Use Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: 16.x cache: 'pnpm' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index bc5866987..2dba69ebc 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -52,11 +52,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -67,7 +67,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 # ℹ️ Command-line programs to run using the OS shell. # πŸ“š https://git.io/JvXDl @@ -81,4 +81,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d1f73d09d..10117670f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -28,7 +28,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Setup AWS uses: Fooji/create-aws-profile-action@v2 @@ -54,7 +54,7 @@ jobs: runs-on: ubuntu-latest needs: [ deploy ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: repository: wasedatime/wasedatime.github.io token: ${{ env.GITHUB_OAUTH_TOKEN }} @@ -69,7 +69,7 @@ jobs: aws apigateway get-export --rest-api-id 'anvonkl0fd' --stage-name 'dev' --export-type 'swagger' --accepts 'application/yaml' ./dev.yml aws apigateway get-export --rest-api-id 'anvonkl0fd' --stage-name 'prod' --export-type 'swagger' --accepts 'application/yaml' ./prod.yml - name: Push - uses: EndBug/add-and-commit@v7 + uses: EndBug/add-and-commit@v9 with: author_name: GitHub Actions author_email: actions@github.com diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml index 08e2294aa..6f40f80f9 100644 --- a/.github/workflows/pr-lint.yml +++ b/.github/workflows/pr-lint.yml @@ -15,7 +15,7 @@ jobs: permissions: pull-requests: write steps: - - uses: amannn/action-semantic-pull-request@v4.1.0 + - uses: amannn/action-semantic-pull-request@v4.5.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index abd3386b7..e2275bcce 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -35,7 +35,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Lint run: pnpm run lint @@ -44,7 +44,7 @@ jobs: runs-on: ubuntu-latest needs: [ lint ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Synth run: cdk synth @@ -53,7 +53,7 @@ jobs: runs-on: ubuntu-latest needs: [ synth ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Test run: pnpm test @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest needs: [ test ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Diff id: diff @@ -74,7 +74,7 @@ jobs: LOG="${LOG//$'\r'/'%0D'}" echo "::set-output name=log::$LOG" - name: Find Comment - uses: peter-evans/find-comment@v1 + uses: peter-evans/find-comment@v2 id: fc with: issue-number: ${{ github.event.pull_request.number }} @@ -82,7 +82,7 @@ jobs: body-includes: "### Diff Output:" - name: Comment if: steps.fc.outputs.comment-id == '' - uses: peter-evans/create-or-update-comment@v1 + uses: peter-evans/create-or-update-comment@v2 with: issue-number: ${{ github.event.pull_request.number }} body: | @@ -93,7 +93,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Update Comment if: steps.fc.outputs.comment-id != '' - uses: peter-evans/create-or-update-comment@v1 + uses: peter-evans/create-or-update-comment@v2 with: comment-id: ${{ steps.fc.outputs.comment-id }} edit-mode: replace diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 6aa57528a..6ee2433ed 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -33,7 +33,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Lint run: pnpm run lint @@ -42,7 +42,7 @@ jobs: runs-on: ubuntu-latest needs: [ lint ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Build run: pnpm run build @@ -51,9 +51,9 @@ jobs: runs-on: ubuntu-latest needs: [ build ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Test run: pnpm test -- --coverage - name: Test Coverage - uses: codecov/codecov-action@v2 + uses: codecov/codecov-action@v3 diff --git a/.gitignore b/.gitignore index d909b0669..ba43fe921 100644 --- a/.gitignore +++ b/.gitignore @@ -97,6 +97,3 @@ node_modules # CDK asset staging directory .cdk.staging cdk.out - -# husky -.husky/_/ diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 000000000..31354ec13 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit index bed71bce8..2965f34bb 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -14,3 +14,5 @@ if [ ! -z "$js_diff" ]; then else echo "Seems you haven't changed any JavaScript, skip checks. " fi + +npx lint-staged diff --git a/jest.config.ts b/jest.config.ts index d4cc2df90..287e9df69 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,4 +1,4 @@ -import type { Config } from '@jest/types'; +import { Config } from '@jest/types'; const config: Config.InitialOptions = { testEnvironment: 'node', @@ -7,6 +7,7 @@ const config: Config.InitialOptions = { transform: { '^.+\\.tsx?$': 'ts-jest', }, + moduleDirectories: ['/node_modules'], }; export default config; diff --git a/lib/configs/api-gateway/cors.ts b/lib/configs/api-gateway/cors.ts index 4e36f3690..966a05163 100644 --- a/lib/configs/api-gateway/cors.ts +++ b/lib/configs/api-gateway/cors.ts @@ -13,6 +13,6 @@ export const allowHeaders = [ export const defaultHeaders = { 'Access-Control-Allow-Headers': '\'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token\'', - 'Access-Control-Allow-Methods': '\'GET,POST,OPTIONS\'', + 'Access-Control-Allow-Methods': '\'GET,POST,PUT,OPTIONS\'', 'Access-Control-Allow-Origin': '\'*\'', }; diff --git a/lib/constructs/business/rest-api-service.ts b/lib/constructs/business/rest-api-service.ts index ee599e918..6c6c62a3e 100644 --- a/lib/constructs/business/rest-api-service.ts +++ b/lib/constructs/business/rest-api-service.ts @@ -408,6 +408,9 @@ export class TimetableApiService extends RestApiService { const patchIntegration = new apigw.LambdaIntegration( timetableFunctions.patchFunction, { proxy: true }, ); + const putIntergation = new apigw.LambdaIntegration( + timetableFunctions.putFunction, { proxy: true }, + ); // const importIntegration = new apigw.LambdaIntegration( // timetableFunctions.importFunction, {proxy: true}, // ); @@ -415,10 +418,12 @@ export class TimetableApiService extends RestApiService { // timetableFunctions.exportFunction, {proxy: true}, // ); + // , apigw2.HttpMethod.DELETE + const optionsTimetable = root.addCorsPreflight({ allowOrigins: allowOrigins, allowHeaders: allowHeaders, - allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.POST, apigw2.HttpMethod.PATCH, apigw2.HttpMethod.OPTIONS, apigw2.HttpMethod.DELETE], + allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.PUT, apigw2.HttpMethod.POST, apigw2.HttpMethod.PATCH, apigw2.HttpMethod.OPTIONS], }); const getTimetable = root.addMethod(apigw2.HttpMethod.GET, getIntegration, { operationName: 'GetTimetable', @@ -447,6 +452,15 @@ export class TimetableApiService extends RestApiService { authorizer: props.authorizer, requestValidator: props.validator, }); + const putTimetable = root.addMethod(apigw2.HttpMethod.PUT, putIntergation, { + operationName: 'PutTimetable', + methodResponses: [{ + statusCode: '200', + responseParameters: lambdaRespParams, + }], + authorizer: props.authorizer, + requestValidator: props.validator, + }); // [timetableImport, timetableExport].forEach(value => value.addCorsPreflight({ // allowOrigins: allowOrigins, @@ -476,6 +490,7 @@ export class TimetableApiService extends RestApiService { [apigw2.HttpMethod.GET]: getTimetable, [apigw2.HttpMethod.PATCH]: patchTimetable, [apigw2.HttpMethod.POST]: postTimetable, + [apigw2.HttpMethod.PUT]: putTimetable, }, // "/timetable/export": { // [apigw2.HttpMethod.POST]: exportTimetable, diff --git a/lib/constructs/common/lambda-functions.ts b/lib/constructs/common/lambda-functions.ts index 78cc99344..f24182f4c 100644 --- a/lib/constructs/common/lambda-functions.ts +++ b/lib/constructs/common/lambda-functions.ts @@ -189,6 +189,7 @@ export class TimetableFunctions extends Construct { readonly postFunction: lambda.Function; readonly patchFunction: lambda.Function; readonly deleteFunction: lambda.Function; + readonly putFunction: lambda.Function; // readonly importFunction: lambda.Function; // readonly exportFunction: lambda.Function; @@ -257,6 +258,18 @@ export class TimetableFunctions extends Construct { environment: props.envVars, }); + this.putFunction = new lambda_py.PythonFunction(this, 'put-timetable', { + entry: 'src/lambda/put-timetable', + description: 'Put timetable in the database.', + functionName: 'put-timetable', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 128, + role: dynamoDBPutRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(3), + environment: props.envVars, + }); + // this.importFunction = new lambda_py.PythonFunction(this, 'import-timetable', { // entry: 'src/lambda/import-timetable', // description: "Import timetable from pdf.", diff --git a/package.json b/package.json index dc90a253e..0c2ba68a8 100644 --- a/package.json +++ b/package.json @@ -15,40 +15,45 @@ "lint": "eslint . --ext .ts" }, "peerDependencies": { - "aws-cdk-lib": "2.13.0", - "constructs": "10.0.66" + "aws-cdk-lib": "2.27.0", + "constructs": "10.1.32" }, "devDependencies": { - "@aws-cdk/assert": "2.13.0", - "@commitlint/cli": "16.2.1", - "@commitlint/config-conventional": "16.2.1", - "@types/jest": "27.4.1", - "@types/node": "17.0.18", + "@aws-cdk/assert": "2.27.0", + "@commitlint/cli": "17.0.2", + "@commitlint/config-conventional": "17.0.2", + "@types/jest": "28.1.1", + "@types/node": "17.0.41", "@types/pluralize": "0.0.29", - "@typescript-eslint/eslint-plugin": "5.10.2", - "@typescript-eslint/parser": "5.10.2", - "aws-cdk-lib": "2.13.0", - "constructs": "10.0.66", - "eslint": "8.8.0", + "@typescript-eslint/eslint-plugin": "5.27.1", + "@typescript-eslint/parser": "5.27.1", + "aws-cdk-lib": "2.27.0", + "constructs": "10.1.32", + "esbuild": "^0.15.12", + "eslint": "8.17.0", "eslint-import-resolver-node": "0.3.6", - "eslint-import-resolver-typescript": "2.5.0", - "eslint-plugin-import": "2.25.4", - "husky": "7.0.4", - "jest": "27.5.1", - "standard-version": "9.3.2", - "ts-jest": "27.1.3", - "ts-node": "10.5.0", - "typescript": "4.5.5" + "eslint-import-resolver-typescript": "2.7.1", + "eslint-plugin-import": "2.26.0", + "husky": "8.0.1", + "jest": "28.1.1", + "standard-version": "9.5.0", + "ts-jest": "28.0.4", + "ts-node": "10.8.1", + "typescript": "4.7.3" }, "dependencies": { - "@aws-cdk/aws-amplify-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-authorizers-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-integrations-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-appsync-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-lambda-python-alpha": "2.13.0-alpha.0", + "@aws-cdk/aws-amplify-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-authorizers-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-integrations-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-appsync-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-lambda-python-alpha": "2.27.0-alpha.0", + "@jest/types": "^29.3.1", "flatted": "3.2.5", "pluralize": "8.0.0", "source-map-support": "0.5.21" + }, + "lint-staged": { + "*.ts": "eslint --cache --fix" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d480e578..f9a1a8928 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,170 +1,178 @@ lockfileVersion: 5.3 specifiers: - '@aws-cdk/assert': 2.13.0 - '@aws-cdk/aws-amplify-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-appsync-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-lambda-python-alpha': 2.13.0-alpha.0 - '@commitlint/cli': 16.2.1 - '@commitlint/config-conventional': 16.2.1 - '@types/jest': 27.4.1 - '@types/node': 17.0.18 + '@aws-cdk/assert': 2.27.0 + '@aws-cdk/aws-amplify-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-appsync-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-lambda-python-alpha': 2.27.0-alpha.0 + '@commitlint/cli': 17.0.2 + '@commitlint/config-conventional': 17.0.2 + '@jest/types': ^29.3.1 + '@types/jest': 28.1.1 + '@types/node': 17.0.41 '@types/pluralize': 0.0.29 - '@typescript-eslint/eslint-plugin': 5.10.2 - '@typescript-eslint/parser': 5.10.2 - aws-cdk-lib: 2.13.0 - constructs: 10.0.66 - eslint: 8.8.0 + '@typescript-eslint/eslint-plugin': 5.27.1 + '@typescript-eslint/parser': 5.27.1 + aws-cdk-lib: 2.27.0 + constructs: 10.1.32 + esbuild: ^0.15.12 + eslint: 8.17.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.5.0 - eslint-plugin-import: 2.25.4 + eslint-import-resolver-typescript: 2.7.1 + eslint-plugin-import: 2.26.0 flatted: 3.2.5 - husky: 7.0.4 - jest: 27.5.1 + husky: 8.0.1 + jest: 28.1.1 pluralize: 8.0.0 source-map-support: 0.5.21 - standard-version: 9.3.2 - ts-jest: 27.1.3 - ts-node: 10.5.0 - typescript: 4.5.5 + standard-version: 9.5.0 + ts-jest: 28.0.4 + ts-node: 10.8.1 + typescript: 4.7.3 dependencies: - '@aws-cdk/aws-amplify-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e - '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e - '@aws-cdk/aws-appsync-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - '@aws-cdk/aws-lambda-python-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a + '@aws-cdk/aws-amplify-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c + '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.27.0-alpha.0_ba3f00dfefe49087b99b7f2caa78c655 + '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.27.0-alpha.0_ba3f00dfefe49087b99b7f2caa78c655 + '@aws-cdk/aws-appsync-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c + '@aws-cdk/aws-lambda-python-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c + '@jest/types': 29.3.1 flatted: 3.2.5 pluralize: 8.0.0 source-map-support: 0.5.21 devDependencies: - '@aws-cdk/assert': 2.13.0_e899eddb210d099498d0df86b34847a7 - '@commitlint/cli': 16.2.1 - '@commitlint/config-conventional': 16.2.1 - '@types/jest': 27.4.1 - '@types/node': 17.0.18 + '@aws-cdk/assert': 2.27.0_022a461049faa5b34fedfbe097b6ee4a + '@commitlint/cli': 17.0.2 + '@commitlint/config-conventional': 17.0.2 + '@types/jest': 28.1.1 + '@types/node': 17.0.41 '@types/pluralize': 0.0.29 - '@typescript-eslint/eslint-plugin': 5.10.2_2595c2126aec4d4b6e944b931dabb4c2 - '@typescript-eslint/parser': 5.10.2_eslint@8.8.0+typescript@4.5.5 - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 - eslint: 8.8.0 + '@typescript-eslint/eslint-plugin': 5.27.1_043f48e0ee10c350c28cdede89899bc7 + '@typescript-eslint/parser': 5.27.1_eslint@8.17.0+typescript@4.7.3 + aws-cdk-lib: 2.27.0_constructs@10.1.32 + constructs: 10.1.32 + esbuild: 0.15.13 + eslint: 8.17.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.5.0_392f898cec7735a5f7a99430cbc0b4f4 - eslint-plugin-import: 2.25.4_eslint@8.8.0 - husky: 7.0.4 - jest: 27.5.1_ts-node@10.5.0 - standard-version: 9.3.2 - ts-jest: 27.1.3_8fa130d172bf7d71653f05507c50c5a3 - ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 - typescript: 4.5.5 + eslint-import-resolver-typescript: 2.7.1_de2e8b5f32821e366389b4575f54c566 + eslint-plugin-import: 2.26.0_eslint@8.17.0 + husky: 8.0.1 + jest: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 + standard-version: 9.5.0 + ts-jest: 28.0.4_fc6c8d6d53ecb8477a2480d0844756ba + ts-node: 10.8.1_2f4904d2ea745e9acb99fb2a8412b575 + typescript: 4.7.3 packages: - /@aws-cdk/assert/2.13.0_e899eddb210d099498d0df86b34847a7: - resolution: {integrity: sha512-Q4tRx/g/XWbqLd/L1YgJZTXWmNbNI161RYl0CmwkTRWm1rKQfgkwQ3VqmxjCxcT9gQxJBzKlSe6j5tAG1UpaNg==} + /@ampproject/remapping/2.1.2: + resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@aws-cdk/assert/2.27.0_022a461049faa5b34fedfbe097b6ee4a: + resolution: {integrity: sha512-OU3k7fwhduUl1tAFvIKvsoW7F2Lz+Aq6rxR2enPSBX9aCWk59VCoPV8xDe3RzvGEj2iALYunp7s202S3ai+eVg==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 jest: '>=26.6.3' dependencies: - '@aws-cdk/cloudformation-diff': 2.13.0 - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 - jest: 27.5.1_ts-node@10.5.0 + '@aws-cdk/cloudformation-diff': 2.27.0 + aws-cdk-lib: 2.27.0_constructs@10.1.32 + constructs: 10.1.32 + jest: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 dev: true - /@aws-cdk/aws-amplify-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: - resolution: {integrity: sha512-wDRc0dblM7onOUGk9CxMchBOGnieapmFNwWEIH5yZJ6KCufUR1RpjfVL0QVF/1XKGI/G3MtHNSt7ogzQljUHig==} + /@aws-cdk/aws-amplify-alpha/2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c: + resolution: {integrity: sha512-cuP5V7AoQHXsiPcn5YPHntPeD+22j6Oe0yb6hQPN2L8hZZGSysqsn12nVEVvg7Wtx8xDDSOzvNnU7VeY87fS4g==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 - yaml: 1.10.2 + aws-cdk-lib: 2.27.0_constructs@10.1.32 + constructs: 10.1.32 dev: false - bundledDependencies: - - yaml - /@aws-cdk/aws-apigatewayv2-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: - resolution: {integrity: sha512-IEMJzaoov/qxvWLCN+hLv+mowmGLlNxodSeApYJJdbvk9E6OkdWN9bDfmJWnqdBuuQAqjJCUl/377LLB9lHnvw==} + /@aws-cdk/aws-apigatewayv2-alpha/2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c: + resolution: {integrity: sha512-e0VsZANE8qNiAznRW5m7soHivcsyJoKhkHSVg9WRTTIwS0rZEty7qZH0UjDxq7M2lgIZICaLWAyJOWvGpHEqIA==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + aws-cdk-lib: 2.27.0_constructs@10.1.32 + constructs: 10.1.32 dev: false - /@aws-cdk/aws-apigatewayv2-authorizers-alpha/2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e: - resolution: {integrity: sha512-7Ii1Ed0++eEIWKtzbm4DSh/yGKXMSjhzeywC6tCGsMKj9mns9hKqmHPr2RvLML4HywdtMUWwH7LP7a6nWWR8MQ==} + /@aws-cdk/aws-apigatewayv2-authorizers-alpha/2.27.0-alpha.0_ba3f00dfefe49087b99b7f2caa78c655: + resolution: {integrity: sha512-RSMvF/l6v50eKDoEZj7rKDdxOv+DSfx+mkWsHPqSkYU70UeWZNJ4a7jRqJ/tzbajxX5GSoRMcEdR1GsrRXTfuw==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 - aws-cdk-lib: ^2.13.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c + aws-cdk-lib: 2.27.0_constructs@10.1.32 + constructs: 10.1.32 dev: false - /@aws-cdk/aws-apigatewayv2-integrations-alpha/2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e: - resolution: {integrity: sha512-Tq38ftHdcZIFsuiSfUzhZKrq7mvGyDU5D1pSEZNwgfWEuYnAHGBRQELuyEHUWvXIQNoC11axV/7i2Wh/2y+USQ==} + /@aws-cdk/aws-apigatewayv2-integrations-alpha/2.27.0-alpha.0_ba3f00dfefe49087b99b7f2caa78c655: + resolution: {integrity: sha512-AL3Ps0hPV8zRcI8k2wW4uTh+k9ZfvjgyUouDOZBaEW0U8PoQOgRj7b0FJbE+zmgbnw3YY2ycoCSpTfVbN3Akdg==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 - aws-cdk-lib: ^2.13.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c + aws-cdk-lib: 2.27.0_constructs@10.1.32 + constructs: 10.1.32 dev: false - /@aws-cdk/aws-appsync-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: - resolution: {integrity: sha512-/wAT5azT6H867uczIqFIeJxS4GrtghkqN5J9QlNOHASDyBRkQOvH6EBjk6WHii4fqql1stbEA92ae07+jRKLJQ==} + /@aws-cdk/aws-appsync-alpha/2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c: + resolution: {integrity: sha512-z7JNdK1BUGbe70KaDa2Hu69uIn3FG9GUJZ+mKyL0HW7r4PAtdmXSPKVumRa5niR/x6eaxtWvcAXaADNEYht4VQ==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + aws-cdk-lib: 2.27.0_constructs@10.1.32 + constructs: 10.1.32 dev: false - /@aws-cdk/aws-lambda-python-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: - resolution: {integrity: sha512-V+aGUkmbpvSRb6ik8CEyRaE6VnVRfHxDDcBm1lkilgIMBWZtGxLBY6bjYVNBliHfMroeXbTYjObttj36hDz6/w==} + /@aws-cdk/aws-lambda-python-alpha/2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c: + resolution: {integrity: sha512-dgiwY4pjTMxAB1IlsyH+dmAgM/g+sfGfrdgsdr6rlHvR/ROE/MGbGBg70YBGZlhiW+qSjeWepp6jgDWxtkN50A==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + aws-cdk-lib: 2.27.0_constructs@10.1.32 + constructs: 10.1.32 dev: false - /@aws-cdk/cfnspec/2.13.0: - resolution: {integrity: sha512-+ZV6egnKjLtuLxK0kOd+WRQ8lDiQF+Ll1UYTuf47WyF0xoAkuJxV2sFm36tGGLtEgV3bY452m1Aiik5i25pWJw==} + /@aws-cdk/cfnspec/2.27.0: + resolution: {integrity: sha512-ankMDOeTijS1hVM668eJP7SDLlWI3cfZIN/Khx88je16IH6nSe4EbcvR4dTswMC4aTwcrJt/IMh202T3qdLQgA==} dependencies: fs-extra: 9.1.0 md5: 2.3.0 dev: true - /@aws-cdk/cloudformation-diff/2.13.0: - resolution: {integrity: sha512-TMxM5h6eME30j0XTlnJPdXO8zobQJdSiFTHJfS/4MwV2ee/ILsJoGz53Pd/5l030hIct9H54R/UpXSW7DUBXUA==} + /@aws-cdk/cloudformation-diff/2.27.0: + resolution: {integrity: sha512-4yRycQQYtYbPmWaXJv8K1CVmJ4gWJc+3aPBecdr2DdM+brNASlDuu+VeuSKd+xrYSRgDSlj9eWGQIMIig4yEXg==} engines: {node: '>= 14.15.0'} dependencies: - '@aws-cdk/cfnspec': 2.13.0 + '@aws-cdk/cfnspec': 2.27.0 '@types/node': 10.17.60 chalk: 4.1.2 diff: 5.0.0 @@ -173,340 +181,316 @@ packages: table: 6.8.0 dev: true - /@babel/code-frame/7.14.5: - resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} + /@babel/code-frame/7.16.7: + resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.14.5 + '@babel/highlight': 7.17.9 dev: true - /@babel/compat-data/7.15.0: - resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} + /@babel/compat-data/7.17.7: + resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.15.5: - resolution: {integrity: sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==} + /@babel/core/7.17.9: + resolution: {integrity: sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/generator': 7.15.4 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.5 - '@babel/helper-module-transforms': 7.15.4 - '@babel/helpers': 7.15.4 - '@babel/parser': 7.15.6 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@ampproject/remapping': 2.1.2 + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.17.9 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.9 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helpers': 7.17.9 + '@babel/parser': 7.17.9 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.9 + '@babel/types': 7.17.0 convert-source-map: 1.8.0 - debug: 4.3.2 + debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.0 + json5: 2.2.1 semver: 6.3.0 - source-map: 0.5.7 transitivePeerDependencies: - supports-color dev: true - /@babel/generator/7.15.4: - resolution: {integrity: sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==} + /@babel/generator/7.17.9: + resolution: {integrity: sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 jsesc: 2.5.2 source-map: 0.5.7 dev: true - /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.5: - resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} + /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.9: + resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.5 - '@babel/helper-validator-option': 7.14.5 - browserslist: 4.17.0 + '@babel/compat-data': 7.17.7 + '@babel/core': 7.17.9 + '@babel/helper-validator-option': 7.16.7 + browserslist: 4.20.2 semver: 6.3.0 dev: true - /@babel/helper-function-name/7.15.4: - resolution: {integrity: sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==} + /@babel/helper-environment-visitor/7.16.7: + resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-get-function-arity': 7.15.4 - '@babel/template': 7.15.4 - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-get-function-arity/7.15.4: - resolution: {integrity: sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==} + /@babel/helper-function-name/7.17.9: + resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/template': 7.16.7 + '@babel/types': 7.17.0 dev: true - /@babel/helper-hoist-variables/7.15.4: - resolution: {integrity: sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==} + /@babel/helper-hoist-variables/7.16.7: + resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-member-expression-to-functions/7.15.4: - resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} + /@babel/helper-module-imports/7.16.7: + resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-module-imports/7.15.4: - resolution: {integrity: sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==} + /@babel/helper-module-transforms/7.17.7: + resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 - dev: true - - /@babel/helper-module-transforms/7.15.4: - resolution: {integrity: sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-module-imports': 7.15.4 - '@babel/helper-replace-supers': 7.15.4 - '@babel/helper-simple-access': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 - '@babel/helper-validator-identifier': 7.14.9 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-simple-access': 7.17.7 + '@babel/helper-split-export-declaration': 7.16.7 + '@babel/helper-validator-identifier': 7.16.7 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.9 + '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-optimise-call-expression/7.15.4: - resolution: {integrity: sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.15.6 - dev: true - - /@babel/helper-plugin-utils/7.14.5: - resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} + /@babel/helper-plugin-utils/7.16.7: + resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-replace-supers/7.15.4: - resolution: {integrity: sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==} + /@babel/helper-simple-access/7.17.7: + resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-member-expression-to-functions': 7.15.4 - '@babel/helper-optimise-call-expression': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.17.0 dev: true - /@babel/helper-simple-access/7.15.4: - resolution: {integrity: sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==} + /@babel/helper-split-export-declaration/7.16.7: + resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-split-export-declaration/7.15.4: - resolution: {integrity: sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==} + /@babel/helper-validator-identifier/7.16.7: + resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.15.6 dev: true - /@babel/helper-validator-identifier/7.14.9: - resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} + /@babel/helper-validator-option/7.16.7: + resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.14.5: - resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers/7.15.4: - resolution: {integrity: sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==} + /@babel/helpers/7.17.9: + resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.9 + '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight/7.14.5: - resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} + /@babel/highlight/7.17.9: + resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.14.9 + '@babel/helper-validator-identifier': 7.16.7 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser/7.15.6: - resolution: {integrity: sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==} + /@babel/parser/7.17.9: + resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.17.0 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.15.5: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.9: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.15.5: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.9: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.15.5: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.9: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.15.5: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.9: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.15.5: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.9: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.15.5: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.9: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.15.5: - resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==} + /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.9: + resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/template/7.15.4: - resolution: {integrity: sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==} + /@babel/template/7.16.7: + resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/parser': 7.15.6 - '@babel/types': 7.15.6 + '@babel/code-frame': 7.16.7 + '@babel/parser': 7.17.9 + '@babel/types': 7.17.0 dev: true - /@babel/traverse/7.15.4: - resolution: {integrity: sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==} + /@babel/traverse/7.17.9: + resolution: {integrity: sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/generator': 7.15.4 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-hoist-variables': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 - '@babel/parser': 7.15.6 - '@babel/types': 7.15.6 - debug: 4.3.2 + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.17.9 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.17.9 + '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + '@babel/parser': 7.17.9 + '@babel/types': 7.17.0 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.15.6: - resolution: {integrity: sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==} + /@babel/types/7.17.0: + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.14.9 + '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 dev: true @@ -518,186 +502,202 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@commitlint/cli/16.2.1: - resolution: {integrity: sha512-zfKf+B9osuiDbxGMJ7bWFv7XFCW8wlQYPtCffNp7Ukdb7mdrep5R9e03vPUZysnwp8NX6hg05kPEvnD/wRIGWw==} - engines: {node: '>=v12'} + /@commitlint/cli/17.0.2: + resolution: {integrity: sha512-Axe89Js0YzGGd4gxo3JLlF7yIdjOVpG1LbOorGc6PfYF+drBh14PvarSDLzyd2TNqdylUCq9wb9/A88ZjIdyhA==} + engines: {node: '>=v14'} hasBin: true dependencies: - '@commitlint/format': 16.2.1 - '@commitlint/lint': 16.2.1 - '@commitlint/load': 16.2.1 - '@commitlint/read': 16.2.1 - '@commitlint/types': 16.2.1 + '@commitlint/format': 17.0.0 + '@commitlint/lint': 17.2.0 + '@commitlint/load': 17.2.0 + '@commitlint/read': 17.2.0 + '@commitlint/types': 17.0.0 + execa: 5.1.1 lodash: 4.17.21 resolve-from: 5.0.0 resolve-global: 1.0.0 - yargs: 17.3.1 + yargs: 17.4.1 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/config-conventional/16.2.1: - resolution: {integrity: sha512-cP9gArx7gnaj4IqmtCIcHdRjTYdRUi6lmGE+lOzGGjGe45qGOS8nyQQNvkNy2Ey2VqoSWuXXkD8zCUh6EHf1Ww==} - engines: {node: '>=v12'} + /@commitlint/config-conventional/17.0.2: + resolution: {integrity: sha512-MfP0I/JbxKkzo+HXWB7B3WstGS4BiniotU3d3xQ9gK8cR0DbeZ4MuyGCWF65YDyrcDTS3WlrJ3ndSPA1pqhoPw==} + engines: {node: '>=v14'} dependencies: - conventional-changelog-conventionalcommits: 4.6.3 + conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/16.2.1: - resolution: {integrity: sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw==} - engines: {node: '>=v12'} + /@commitlint/config-validator/17.1.0: + resolution: {integrity: sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 - ajv: 6.12.6 + '@commitlint/types': 17.0.0 + ajv: 8.11.0 dev: true - /@commitlint/ensure/16.2.1: - resolution: {integrity: sha512-/h+lBTgf1r5fhbDNHOViLuej38i3rZqTQnBTk+xEg+ehOwQDXUuissQ5GsYXXqI5uGy+261ew++sT4EA3uBJ+A==} - engines: {node: '>=v12'} + /@commitlint/ensure/17.0.0: + resolution: {integrity: sha512-M2hkJnNXvEni59S0QPOnqCKIK52G1XyXBGw51mvh7OXDudCmZ9tZiIPpU882p475Mhx48Ien1MbWjCP1zlyC0A==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 + '@commitlint/types': 17.0.0 lodash: 4.17.21 dev: true - /@commitlint/execute-rule/16.2.1: - resolution: {integrity: sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g==} - engines: {node: '>=v12'} + /@commitlint/execute-rule/17.0.0: + resolution: {integrity: sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==} + engines: {node: '>=v14'} dev: true - /@commitlint/format/16.2.1: - resolution: {integrity: sha512-Yyio9bdHWmNDRlEJrxHKglamIk3d6hC0NkEUW6Ti6ipEh2g0BAhy8Od6t4vLhdZRa1I2n+gY13foy+tUgk0i1Q==} - engines: {node: '>=v12'} + /@commitlint/format/17.0.0: + resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 + '@commitlint/types': 17.0.0 chalk: 4.1.2 dev: true - /@commitlint/is-ignored/16.2.1: - resolution: {integrity: sha512-exl8HRzTIfb1YvDJp2b2HU5z1BT+9tmgxR2XF0YEzkMiCIuEKh+XLeocPr1VcvAKXv3Cmv5X/OfNRp+i+/HIhQ==} - engines: {node: '>=v12'} + /@commitlint/is-ignored/17.2.0: + resolution: {integrity: sha512-rgUPUQraHxoMLxiE8GK430HA7/R2vXyLcOT4fQooNrZq9ERutNrP6dw3gdKLkq22Nede3+gEHQYUzL4Wu75ndg==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 - semver: 7.3.5 + '@commitlint/types': 17.0.0 + semver: 7.3.7 dev: true - /@commitlint/lint/16.2.1: - resolution: {integrity: sha512-fNINQ3X2ZqsCkNB3Z0Z8ElmhewqrS3gy2wgBTx97BkcjOWiyPAGwDJ752hwrsUnWAVBRztgw826n37xPzxsOgg==} - engines: {node: '>=v12'} + /@commitlint/lint/17.2.0: + resolution: {integrity: sha512-N2oLn4Dj672wKH5qJ4LGO+73UkYXGHO+NTVUusGw83SjEv7GjpqPGKU6KALW2kFQ/GsDefSvOjpSi3CzWHQBDg==} + engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 16.2.1 - '@commitlint/parse': 16.2.1 - '@commitlint/rules': 16.2.1 - '@commitlint/types': 16.2.1 + '@commitlint/is-ignored': 17.2.0 + '@commitlint/parse': 17.2.0 + '@commitlint/rules': 17.2.0 + '@commitlint/types': 17.0.0 dev: true - /@commitlint/load/16.2.1: - resolution: {integrity: sha512-oSpz0jTyVI/A1AIImxJINTLDOMB8YF7lWGm+Jg5wVWM0r7ucpuhyViVvpSRTgvL0z09oIxlctyFGWUQQpI42uw==} - engines: {node: '>=v12'} + /@commitlint/load/17.2.0: + resolution: {integrity: sha512-HDD57qSqNrk399R4TIjw31AWBG8dBjNj1MrDKZKmC/wvimtnIFlqzcu1+sxfXIOHj/+M6tcMWDtvknGUd7SU+g==} + engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 16.2.1 - '@commitlint/execute-rule': 16.2.1 - '@commitlint/resolve-extends': 16.2.1 - '@commitlint/types': 16.2.1 - '@types/node': 17.0.18 + '@commitlint/config-validator': 17.1.0 + '@commitlint/execute-rule': 17.0.0 + '@commitlint/resolve-extends': 17.1.0 + '@commitlint/types': 17.0.0 + '@types/node': 14.18.33 chalk: 4.1.2 cosmiconfig: 7.0.1 - cosmiconfig-typescript-loader: 1.0.5_f3bd4037939c2ed2942ba074291f8ef2 + cosmiconfig-typescript-loader: 4.2.0_d125882cb23688d4a62106962c534e3b lodash: 4.17.21 resolve-from: 5.0.0 - typescript: 4.5.5 + ts-node: 10.8.1_cf2a114464063a7ac56422e5bb88c1db + typescript: 4.7.3 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/16.2.1: - resolution: {integrity: sha512-2eWX/47rftViYg7a3axYDdrgwKv32mxbycBJT6OQY/MJM7SUfYNYYvbMFOQFaA4xIVZt7t2Alyqslbl6blVwWw==} - engines: {node: '>=v12'} + /@commitlint/message/17.2.0: + resolution: {integrity: sha512-/4l2KFKxBOuoEn1YAuuNNlAU05Zt7sNsC9H0mPdPm3chOrT4rcX0pOqrQcLtdMrMkJz0gC7b3SF80q2+LtdL9Q==} + engines: {node: '>=v14'} dev: true - /@commitlint/parse/16.2.1: - resolution: {integrity: sha512-2NP2dDQNL378VZYioLrgGVZhWdnJO4nAxQl5LXwYb08nEcN+cgxHN1dJV8OLJ5uxlGJtDeR8UZZ1mnQ1gSAD/g==} - engines: {node: '>=v12'} + /@commitlint/parse/17.2.0: + resolution: {integrity: sha512-vLzLznK9Y21zQ6F9hf8D6kcIJRb2haAK5T/Vt1uW2CbHYOIfNsR/hJs0XnF/J9ctM20Tfsqv4zBitbYvVw7F6Q==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 + '@commitlint/types': 17.0.0 conventional-changelog-angular: 5.0.13 conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/16.2.1: - resolution: {integrity: sha512-tViXGuaxLTrw2r7PiYMQOFA2fueZxnnt0lkOWqKyxT+n2XdEMGYcI9ID5ndJKXnfPGPppD0w/IItKsIXlZ+alw==} - engines: {node: '>=v12'} + /@commitlint/read/17.2.0: + resolution: {integrity: sha512-bbblBhrHkjxra3ptJNm0abxu7yeAaxumQ8ZtD6GIVqzURCETCP7Dm0tlVvGRDyXBuqX6lIJxh3W7oyKqllDsHQ==} + engines: {node: '>=v14'} dependencies: - '@commitlint/top-level': 16.2.1 - '@commitlint/types': 16.2.1 - fs-extra: 10.0.0 + '@commitlint/top-level': 17.0.0 + '@commitlint/types': 17.0.0 + fs-extra: 10.1.0 git-raw-commits: 2.0.11 + minimist: 1.2.6 dev: true - /@commitlint/resolve-extends/16.2.1: - resolution: {integrity: sha512-NbbCMPKTFf2J805kwfP9EO+vV+XvnaHRcBy6ud5dF35dxMsvdJqke54W3XazXF1ZAxC4a3LBy4i/GNVBAthsEg==} - engines: {node: '>=v12'} + /@commitlint/resolve-extends/17.1.0: + resolution: {integrity: sha512-jqKm00LJ59T0O8O4bH4oMa4XyJVEOK4GzH8Qye9XKji+Q1FxhZznxMV/bDLyYkzbTodBt9sL0WLql8wMtRTbqQ==} + engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 16.2.1 - '@commitlint/types': 16.2.1 + '@commitlint/config-validator': 17.1.0 + '@commitlint/types': 17.0.0 import-fresh: 3.3.0 lodash: 4.17.21 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules/16.2.1: - resolution: {integrity: sha512-ZFezJXQaBBso+BOTre/+1dGCuCzlWVaeLiVRGypI53qVgPMzQqZhkCcrxBFeqB87qeyzr4A4EoG++IvITwwpIw==} - engines: {node: '>=v12'} + /@commitlint/rules/17.2.0: + resolution: {integrity: sha512-1YynwD4Eh7HXZNpqG8mtUlL2pSX2jBy61EejYJv4ooZPcg50Ak7LPOyD3a9UZnsE76AXWFBz+yo9Hv4MIpAa0Q==} + engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 16.2.1 - '@commitlint/message': 16.2.1 - '@commitlint/to-lines': 16.2.1 - '@commitlint/types': 16.2.1 + '@commitlint/ensure': 17.0.0 + '@commitlint/message': 17.2.0 + '@commitlint/to-lines': 17.0.0 + '@commitlint/types': 17.0.0 execa: 5.1.1 dev: true - /@commitlint/to-lines/16.2.1: - resolution: {integrity: sha512-9/VjpYj5j1QeY3eiog1zQWY6axsdWAc0AonUUfyZ7B0MVcRI0R56YsHAfzF6uK/g/WwPZaoe4Lb1QCyDVnpVaQ==} - engines: {node: '>=v12'} + /@commitlint/to-lines/17.0.0: + resolution: {integrity: sha512-nEi4YEz04Rf2upFbpnEorG8iymyH7o9jYIVFBG1QdzebbIFET3ir+8kQvCZuBE5pKCtViE4XBUsRZz139uFrRQ==} + engines: {node: '>=v14'} dev: true - /@commitlint/top-level/16.2.1: - resolution: {integrity: sha512-lS6GSieHW9y6ePL73ied71Z9bOKyK+Ib9hTkRsB8oZFAyQZcyRwq2w6nIa6Fngir1QW51oKzzaXfJL94qwImyw==} - engines: {node: '>=v12'} + /@commitlint/top-level/17.0.0: + resolution: {integrity: sha512-dZrEP1PBJvodNWYPOYiLWf6XZergdksKQaT6i1KSROLdjf5Ai0brLOv5/P+CPxBeoj3vBxK4Ax8H1Pg9t7sHIQ==} + engines: {node: '>=v14'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/16.2.1: - resolution: {integrity: sha512-7/z7pA7BM0i8XvMSBynO7xsB3mVQPUZbVn6zMIlp/a091XJ3qAXRXc+HwLYhiIdzzS5fuxxNIHZMGHVD4HJxdA==} - engines: {node: '>=v12'} + /@commitlint/types/17.0.0: + resolution: {integrity: sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==} + engines: {node: '>=v14'} dependencies: chalk: 4.1.2 dev: true - /@cspotcode/source-map-consumer/0.8.0: - resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} - engines: {node: '>= 12'} + /@cspotcode/source-map-support/0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 dev: true - /@cspotcode/source-map-support/0.7.0: - resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} + /@esbuild/android-arm/0.15.13: + resolution: {integrity: sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==} engines: {node: '>=12'} - dependencies: - '@cspotcode/source-map-consumer': 0.8.0 + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.13: + resolution: {integrity: sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@eslint/eslintrc/1.1.0: - resolution: {integrity: sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==} + /@eslint/eslintrc/1.3.0: + resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.2 - espree: 9.3.1 - globals: 13.12.1 - ignore: 4.0.6 + debug: 4.3.4 + espree: 9.3.2 + globals: 13.15.0 + ignore: 5.2.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -706,12 +706,12 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array/0.9.3: - resolution: {integrity: sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==} + /@humanwhocodes/config-array/0.9.5: + resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.2 + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -742,97 +742,114 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/27.5.1: - resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/console/28.1.1: + resolution: {integrity: sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 + jest-message-util: 28.1.1 + jest-util: 28.1.1 slash: 3.0.0 dev: true - /@jest/core/27.5.1_ts-node@10.5.0: - resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/core/28.1.1_ts-node@10.8.1: + resolution: {integrity: sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/console': 28.1.1 + '@jest/reporters': 28.1.1 + '@jest/test-result': 28.1.1 + '@jest/transform': 28.1.1 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 ansi-escapes: 4.3.2 chalk: 4.1.2 - emittery: 0.8.1 + ci-info: 3.3.0 exit: 0.1.2 - graceful-fs: 4.2.9 - jest-changed-files: 27.5.1 - jest-config: 27.5.1_ts-node@10.5.0 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.4 + graceful-fs: 4.2.10 + jest-changed-files: 28.0.2 + jest-config: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 + jest-haste-map: 28.1.1 + jest-message-util: 28.1.1 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.1 + jest-resolve-dependencies: 28.1.1 + jest-runner: 28.1.1 + jest-runtime: 28.1.1 + jest-snapshot: 28.1.1 + jest-util: 28.1.1 + jest-validate: 28.1.1 + jest-watcher: 28.1.1 + micromatch: 4.0.5 + pretty-format: 28.1.1 rimraf: 3.0.2 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - ts-node - - utf-8-validate dev: true - /@jest/environment/27.5.1: - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/environment/28.1.1: + resolution: {integrity: sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - jest-mock: 27.5.1 + '@jest/fake-timers': 28.1.1 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 + jest-mock: 28.1.1 dev: true - /@jest/fake-timers/27.5.1: - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/expect-utils/28.1.1: + resolution: {integrity: sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.0.1 - '@types/node': 17.0.18 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 + jest-get-type: 28.0.2 dev: true - /@jest/globals/27.5.1: - resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/expect/28.1.1: + resolution: {integrity: sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 + expect: 28.1.1 + jest-snapshot: 28.1.1 + transitivePeerDependencies: + - supports-color dev: true - /@jest/reporters/27.5.1: - resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/fake-timers/28.1.1: + resolution: {integrity: sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.1 + '@sinonjs/fake-timers': 9.1.2 + '@types/node': 17.0.41 + jest-message-util: 28.1.1 + jest-mock: 28.1.1 + jest-util: 28.1.1 + dev: true + + /@jest/globals/28.1.1: + resolution: {integrity: sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/environment': 28.1.1 + '@jest/expect': 28.1.1 + '@jest/types': 28.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters/28.1.1: + resolution: {integrity: sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -840,97 +857,138 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/console': 28.1.1 + '@jest/test-result': 28.1.1 + '@jest/transform': 28.1.1 + '@jest/types': 28.1.1 + '@jridgewell/trace-mapping': 0.3.9 + '@types/node': 17.0.41 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.0 - graceful-fs: 4.2.9 - istanbul-lib-coverage: 3.0.0 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 5.1.0 istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.0 + istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.4 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 + jest-message-util: 28.1.1 + jest-util: 28.1.1 + jest-worker: 28.1.1 slash: 3.0.0 - source-map: 0.6.1 string-length: 4.0.2 + strip-ansi: 6.0.1 terminal-link: 2.1.1 - v8-to-istanbul: 8.1.0 + v8-to-istanbul: 9.0.0 transitivePeerDependencies: - supports-color dev: true - /@jest/source-map/27.5.1: - resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/schemas/28.0.2: + resolution: {integrity: sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@sinclair/typebox': 0.23.5 + dev: true + + /@jest/schemas/29.0.0: + resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.24.51 + dev: false + + /@jest/source-map/28.0.2: + resolution: {integrity: sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: + '@jridgewell/trace-mapping': 0.3.9 callsites: 3.1.0 - graceful-fs: 4.2.9 - source-map: 0.6.1 + graceful-fs: 4.2.10 dev: true - /@jest/test-result/27.5.1: - resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/test-result/28.1.1: + resolution: {integrity: sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 - '@types/istanbul-lib-coverage': 2.0.3 + '@jest/console': 28.1.1 + '@jest/types': 28.1.1 + '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/27.5.1: - resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/test-sequencer/28.1.1: + resolution: {integrity: sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/test-result': 27.5.1 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 - transitivePeerDependencies: - - supports-color + '@jest/test-result': 28.1.1 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.1 + slash: 3.0.0 dev: true - /@jest/transform/27.5.1: - resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/transform/28.1.1: + resolution: {integrity: sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.15.5 - '@jest/types': 27.5.1 + '@babel/core': 7.17.9 + '@jest/types': 28.1.1 + '@jridgewell/trace-mapping': 0.3.9 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.4 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.1 + jest-regex-util: 28.0.2 + jest-util: 28.1.1 + micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 + write-file-atomic: 4.0.1 transitivePeerDependencies: - supports-color dev: true - /@jest/types/27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/types/28.1.1: + resolution: {integrity: sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.0.2 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 17.0.41 + '@types/yargs': 17.0.10 + chalk: 4.1.2 + dev: true + + /@jest/types/29.3.1: + resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 + '@jest/schemas': 29.0.0 + '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.18 - '@types/yargs': 16.0.4 + '@types/node': 17.0.41 + '@types/yargs': 17.0.10 chalk: 4.1.2 + dev: false + + /@jridgewell/resolve-uri/3.0.5: + resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.11: + resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} + dev: true + + /@jridgewell/trace-mapping/0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.0.5 + '@jridgewell/sourcemap-codec': 1.4.11 dev: true /@nodelib/fs.scandir/2.1.5: @@ -954,23 +1012,26 @@ packages: fastq: 1.13.0 dev: true + /@sinclair/typebox/0.23.5: + resolution: {integrity: sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==} + dev: true + + /@sinclair/typebox/0.24.51: + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + dev: false + /@sinonjs/commons/1.8.3: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/8.0.1: - resolution: {integrity: sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==} + /@sinonjs/fake-timers/9.1.2: + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: '@sinonjs/commons': 1.8.3 dev: true - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - dev: true - /@tsconfig/node10/1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} dev: true @@ -987,66 +1048,63 @@ packages: resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} dev: true - /@types/babel__core/7.1.16: - resolution: {integrity: sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==} + /@types/babel__core/7.1.19: + resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.15.6 - '@babel/types': 7.15.6 - '@types/babel__generator': 7.6.3 + '@babel/parser': 7.17.9 + '@babel/types': 7.17.0 + '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.14.2 + '@types/babel__traverse': 7.17.0 dev: true - /@types/babel__generator/7.6.3: - resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.15.6 - '@babel/types': 7.15.6 + '@babel/parser': 7.17.9 + '@babel/types': 7.17.0 dev: true - /@types/babel__traverse/7.14.2: - resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} + /@types/babel__traverse/7.17.0: + resolution: {integrity: sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 17.0.18 + '@types/node': 17.0.41 dev: true - /@types/istanbul-lib-coverage/2.0.3: - resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==} - dev: true + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} /@types/istanbul-lib-report/3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 - dev: true + '@types/istanbul-lib-coverage': 2.0.4 /@types/istanbul-reports/3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 - dev: true - /@types/jest/27.4.1: - resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} + /@types/jest/28.1.1: + resolution: {integrity: sha512-C2p7yqleUKtCkVjlOur9BWVA4HgUQmEj/HWCt5WzZ5mLXrWnyIfl0wGuArc+kBXsy0ZZfLp+7dywB4HtSVYGVA==} dependencies: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 dev: true - /@types/json-schema/7.0.9: - resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true /@types/json5/0.0.29: @@ -1061,10 +1119,13 @@ packages: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true - /@types/node/17.0.18: - resolution: {integrity: sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==} + /@types/node/14.18.33: + resolution: {integrity: sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==} dev: true + /@types/node/17.0.41: + resolution: {integrity: sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw==} + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -1077,26 +1138,24 @@ packages: resolution: {integrity: sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==} dev: true - /@types/prettier/2.3.2: - resolution: {integrity: sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==} + /@types/prettier/2.6.0: + resolution: {integrity: sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==} dev: true /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/yargs-parser/20.2.1: - resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==} - dev: true + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - /@types/yargs/16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} + /@types/yargs/17.0.10: + resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} dependencies: - '@types/yargs-parser': 20.2.1 - dev: true + '@types/yargs-parser': 21.0.0 - /@typescript-eslint/eslint-plugin/5.10.2_2595c2126aec4d4b6e944b931dabb4c2: - resolution: {integrity: sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==} + /@typescript-eslint/eslint-plugin/5.27.1_043f48e0ee10c350c28cdede89899bc7: + resolution: {integrity: sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1106,24 +1165,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.10.2_eslint@8.8.0+typescript@4.5.5 - '@typescript-eslint/scope-manager': 5.10.2 - '@typescript-eslint/type-utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 - '@typescript-eslint/utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 - debug: 4.3.2 - eslint: 8.8.0 + '@typescript-eslint/parser': 5.27.1_eslint@8.17.0+typescript@4.7.3 + '@typescript-eslint/scope-manager': 5.27.1 + '@typescript-eslint/type-utils': 5.27.1_eslint@8.17.0+typescript@4.7.3 + '@typescript-eslint/utils': 5.27.1_eslint@8.17.0+typescript@4.7.3 + debug: 4.3.4 + eslint: 8.17.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.7.3 + typescript: 4.7.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.10.2_eslint@8.8.0+typescript@4.5.5: - resolution: {integrity: sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==} + /@typescript-eslint/parser/5.27.1_eslint@8.17.0+typescript@4.7.3: + resolution: {integrity: sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1132,26 +1191,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.10.2 - '@typescript-eslint/types': 5.10.2 - '@typescript-eslint/typescript-estree': 5.10.2_typescript@4.5.5 - debug: 4.3.2 - eslint: 8.8.0 - typescript: 4.5.5 + '@typescript-eslint/scope-manager': 5.27.1 + '@typescript-eslint/types': 5.27.1 + '@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.3 + debug: 4.3.4 + eslint: 8.17.0 + typescript: 4.7.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.10.2: - resolution: {integrity: sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==} + /@typescript-eslint/scope-manager/5.27.1: + resolution: {integrity: sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.10.2 - '@typescript-eslint/visitor-keys': 5.10.2 + '@typescript-eslint/types': 5.27.1 + '@typescript-eslint/visitor-keys': 5.27.1 dev: true - /@typescript-eslint/type-utils/5.10.2_eslint@8.8.0+typescript@4.5.5: - resolution: {integrity: sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==} + /@typescript-eslint/type-utils/5.27.1_eslint@8.17.0+typescript@4.7.3: + resolution: {integrity: sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1160,22 +1219,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 - debug: 4.3.2 - eslint: 8.8.0 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 + '@typescript-eslint/utils': 5.27.1_eslint@8.17.0+typescript@4.7.3 + debug: 4.3.4 + eslint: 8.17.0 + tsutils: 3.21.0_typescript@4.7.3 + typescript: 4.7.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.10.2: - resolution: {integrity: sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==} + /@typescript-eslint/types/5.27.1: + resolution: {integrity: sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.10.2_typescript@4.5.5: - resolution: {integrity: sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==} + /@typescript-eslint/typescript-estree/5.27.1_typescript@4.7.3: + resolution: {integrity: sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1183,41 +1242,41 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.10.2 - '@typescript-eslint/visitor-keys': 5.10.2 - debug: 4.3.2 + '@typescript-eslint/types': 5.27.1 + '@typescript-eslint/visitor-keys': 5.27.1 + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.7.3 + typescript: 4.7.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.10.2_eslint@8.8.0+typescript@4.5.5: - resolution: {integrity: sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==} + /@typescript-eslint/utils/5.27.1_eslint@8.17.0+typescript@4.7.3: + resolution: {integrity: sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.10.2 - '@typescript-eslint/types': 5.10.2 - '@typescript-eslint/typescript-estree': 5.10.2_typescript@4.5.5 - eslint: 8.8.0 + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.27.1 + '@typescript-eslint/types': 5.27.1 + '@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.3 + eslint: 8.17.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.8.0 + eslint-utils: 3.0.0_eslint@8.17.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.10.2: - resolution: {integrity: sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==} + /@typescript-eslint/visitor-keys/5.27.1: + resolution: {integrity: sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/types': 5.27.1 eslint-visitor-keys: 3.3.0 dev: true @@ -1229,28 +1288,12 @@ packages: through: 2.3.8 dev: true - /abab/2.0.5: - resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} - dev: true - - /acorn-globals/6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - dev: true - - /acorn-jsx/5.3.2_acorn@8.7.0: + /acorn-jsx/5.3.2_acorn@8.7.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.7.0 - dev: true - - /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} + acorn: 8.7.1 dev: true /acorn-walk/8.2.0: @@ -1258,35 +1301,20 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn/8.5.0: - resolution: {integrity: sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==} + /acorn/8.7.0: + resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /acorn/8.7.0: - resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} + /acorn/8.7.1: + resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} engines: {node: '>=0.4.0'} hasBin: true dev: true /add-stream/1.0.0: - resolution: {integrity: sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=} - dev: true - - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.2 - transitivePeerDependencies: - - supports-color + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} dev: true /ajv/6.12.6: @@ -1298,8 +1326,8 @@ packages: uri-js: 4.4.1 dev: true - /ajv/8.6.3: - resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==} + /ajv/8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -1331,7 +1359,6 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -1343,7 +1370,7 @@ packages: engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 - picomatch: 2.3.0 + picomatch: 2.3.1 dev: true /arg/4.1.3: @@ -1361,7 +1388,7 @@ packages: dev: true /array-ify/1.0.0: - resolution: {integrity: sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=} + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true /array-includes/3.1.4: @@ -1369,8 +1396,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.19.5 get-intrinsic: 1.1.1 is-string: 1.0.7 dev: true @@ -1380,17 +1407,18 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.flat/1.2.5: - resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} + /array.prototype.flat/1.3.0: + resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.19.5 + es-shim-unscopables: 1.0.0 dev: true /arrify/1.0.1: - resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true @@ -1399,30 +1427,26 @@ packages: engines: {node: '>=8'} dev: true - /asynckit/0.4.0: - resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} - dev: true - /at-least-node/1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} dev: true - /aws-cdk-lib/2.13.0_constructs@10.0.66: - resolution: {integrity: sha512-nKpQk+9H7T128gpzl+7XTu+19Yzj6kmCMrvSwTXLa/qr4/soEpXI68/+19ymEAHOYEL4Dd3eyk490P+y0wzi6A==} + /aws-cdk-lib/2.27.0_constructs@10.1.32: + resolution: {integrity: sha512-CsTy/+RIBMvP9LlZjkQakkKPpwU50+HAMCMaGOcyIHADDQdXobGcZXTO+Tq00sH2DoQjPV1ZhhBim5z3k/2KXw==} engines: {node: '>= 14.15.0'} peerDependencies: constructs: ^10.0.0 dependencies: '@balena/dockerignore': 1.0.2 case: 1.6.3 - constructs: 10.0.66 + constructs: 10.1.32 fs-extra: 9.1.0 ignore: 5.2.0 - jsonschema: 1.4.0 + jsonschema: 1.4.1 minimatch: 3.1.2 punycode: 2.1.1 - semver: 7.3.5 + semver: 7.3.7 yaml: 1.10.2 dev: true bundledDependencies: @@ -1436,20 +1460,19 @@ packages: - semver - yaml - /babel-jest/27.5.1_@babel+core@7.15.5: - resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /babel-jest/28.1.1_@babel+core@7.17.9: + resolution: {integrity: sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.15.5 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__core': 7.1.16 + '@babel/core': 7.17.9 + '@jest/transform': 28.1.1 + '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1_@babel+core@7.15.5 + babel-preset-jest: 28.1.1_@babel+core@7.17.9 chalk: 4.1.2 - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 slash: 3.0.0 transitivePeerDependencies: - supports-color @@ -1459,7 +1482,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.1.0 @@ -1468,45 +1491,45 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/27.5.1: - resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /babel-plugin-jest-hoist/28.1.1: + resolution: {integrity: sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/template': 7.15.4 - '@babel/types': 7.15.6 - '@types/babel__core': 7.1.16 - '@types/babel__traverse': 7.14.2 + '@babel/template': 7.16.7 + '@babel/types': 7.17.0 + '@types/babel__core': 7.1.19 + '@types/babel__traverse': 7.17.0 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.15.5: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.17.9: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.15.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.15.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.15.5 - dev: true - - /babel-preset-jest/27.5.1_@babel+core@7.15.5: - resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@babel/core': 7.17.9 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.9 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.9 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.9 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.9 + dev: true + + /babel-preset-jest/28.1.1_@babel+core@7.17.9: + resolution: {integrity: sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.15.5 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 + '@babel/core': 7.17.9 + babel-plugin-jest-hoist: 28.1.1 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.9 dev: true /balanced-match/1.0.2: @@ -1527,20 +1550,16 @@ packages: fill-range: 7.0.1 dev: true - /browser-process-hrtime/1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: true - - /browserslist/4.17.0: - resolution: {integrity: sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==} + /browserslist/4.20.2: + resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001257 - colorette: 1.4.0 - electron-to-chromium: 1.3.838 + caniuse-lite: 1.0.30001332 + electron-to-chromium: 1.4.111 escalade: 3.1.1 - node-releases: 1.1.75 + node-releases: 2.0.3 + picocolors: 1.0.0 dev: true /bs-logger/0.2.6: @@ -1590,8 +1609,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001257: - resolution: {integrity: sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==} + /caniuse-lite/1.0.30001332: + resolution: {integrity: sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==} dev: true /case/1.6.3: @@ -1614,7 +1633,6 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true /char-regex/1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} @@ -1625,8 +1643,8 @@ packages: resolution: {integrity: sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=} dev: true - /ci-info/3.2.0: - resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==} + /ci-info/3.3.0: + resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} dev: true /cjs-module-lexer/1.2.2: @@ -1642,7 +1660,7 @@ packages: dev: true /co/4.6.0: - resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true @@ -1661,26 +1679,13 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /colorette/1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - dev: true - - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true /compare-func/2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -1690,7 +1695,7 @@ packages: dev: true /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true /concat-stream/2.0.0: @@ -1703,9 +1708,9 @@ packages: typedarray: 0.0.6 dev: true - /constructs/10.0.66: - resolution: {integrity: sha512-luFprSllFDm8iEt/irxsWnm8PHNKNNnZ3pV+5PRXDUOnLaWCv6Vwm+7E0IX6pfgiSphOSsWqhA4ReJA+xe0YHg==} - engines: {node: '>= 12.7.0'} + /constructs/10.1.32: + resolution: {integrity: sha512-ztRzzQqeqfj/LNaw46ctcR/mirjnnj8dVMd5edibwFa1Ih7J0NK2+BHbRhYE93W7Flvhk2cyLE2bNIu1cByHAQ==} + engines: {node: '>= 14.17.0'} dev: true /conventional-changelog-angular/5.0.13: @@ -1734,8 +1739,8 @@ packages: resolution: {integrity: sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==} dev: true - /conventional-changelog-conventionalcommits/4.6.1: - resolution: {integrity: sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==} + /conventional-changelog-conventionalcommits/4.6.3: + resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -1743,8 +1748,8 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-conventionalcommits/4.6.3: - resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} + /conventional-changelog-conventionalcommits/5.0.0: + resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -1829,8 +1834,8 @@ packages: through2: 4.0.2 dev: true - /conventional-changelog/3.1.24: - resolution: {integrity: sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==} + /conventional-changelog/3.1.25: + resolution: {integrity: sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==} engines: {node: '>=10'} dependencies: conventional-changelog-angular: 5.0.13 @@ -1892,20 +1897,19 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader/1.0.5_f3bd4037939c2ed2942ba074291f8ef2: - resolution: {integrity: sha512-FL/YR1nb8hyN0bAcP3MBaIoZravfZtVsN/RuPnoo6UVjqIrDxSNIpXHCGgJe0ZWy5yImpyD6jq5wCJ5f1nUv8g==} + /cosmiconfig-typescript-loader/4.2.0_d125882cb23688d4a62106962c534e3b: + resolution: {integrity: sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 17.0.18 + '@types/node': 14.18.33 cosmiconfig: 7.0.1 - ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 - typescript: 4.5.5 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + ts-node: 10.8.1_cf2a114464063a7ac56422e5bb88c1db + typescript: 4.7.3 dev: true /cosmiconfig/7.0.1: @@ -1936,35 +1940,11 @@ packages: resolution: {integrity: sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=} dev: true - /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom/0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: true - - /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 - dev: true - /dargs/7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} dev: true - /data-urls/2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} - dependencies: - abab: 2.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - dev: true - /dateformat/3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true @@ -1978,11 +1958,11 @@ packages: /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} dependencies: - ms: 2.1.2 + ms: 2.1.3 dev: true - /debug/4.3.2: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1994,7 +1974,7 @@ packages: dev: true /decamelize-keys/1.1.0: - resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} + resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 @@ -2002,16 +1982,12 @@ packages: dev: true /decamelize/1.2.0: - resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /decimal.js/10.3.1: - resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} - dev: true - /dedent/0.7.0: - resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true /deep-is/0.1.4: @@ -2023,18 +1999,14 @@ packages: engines: {node: '>=0.10.0'} dev: true - /define-properties/1.1.3: - resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: + has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true - /delayed-stream/1.0.0: - resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} - engines: {node: '>=0.4.0'} - dev: true - /detect-indent/6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2050,6 +2022,11 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true + /diff-sequences/28.1.1: + resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -2081,13 +2058,6 @@ packages: esutils: 2.0.3 dev: true - /domexception/2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - dependencies: - webidl-conversions: 5.0.0 - dev: true - /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2103,13 +2073,13 @@ packages: minimatch: 3.1.2 dev: true - /electron-to-chromium/1.3.838: - resolution: {integrity: sha512-65O6UJiyohFAdX/nc6KJ0xG/4zOn7XCO03kQNNbCeMRGxlWTLzc6Uyi0tFNQuuGWqySZJi8CD2KXPXySVYmzMA==} + /electron-to-chromium/1.4.111: + resolution: {integrity: sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==} dev: true - /emittery/0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} + /emittery/0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} dev: true /emoji-regex/8.0.0: @@ -2122,8 +2092,8 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract/1.19.1: - resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} + /es-abstract/1.19.5: + resolution: {integrity: sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -2132,12 +2102,12 @@ packages: get-intrinsic: 1.1.1 get-symbol-description: 1.0.0 has: 1.0.3 - has-symbols: 1.0.2 + has-symbols: 1.0.3 internal-slot: 1.0.3 is-callable: 1.2.4 is-negative-zero: 2.0.2 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.1 + is-shared-array-buffer: 1.0.2 is-string: 1.0.7 is-weakref: 1.0.2 object-inspect: 1.12.0 @@ -2148,6 +2118,12 @@ packages: unbox-primitive: 1.0.1 dev: true + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -2157,13 +2133,223 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild-android-64/0.15.13: + resolution: {integrity: sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.15.13: + resolution: {integrity: sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.15.13: + resolution: {integrity: sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.13: + resolution: {integrity: sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.13: + resolution: {integrity: sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.13: + resolution: {integrity: sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.13: + resolution: {integrity: sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.13: + resolution: {integrity: sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.13: + resolution: {integrity: sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.13: + resolution: {integrity: sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.13: + resolution: {integrity: sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.13: + resolution: {integrity: sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.13: + resolution: {integrity: sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.13: + resolution: {integrity: sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.13: + resolution: {integrity: sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.13: + resolution: {integrity: sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.13: + resolution: {integrity: sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.13: + resolution: {integrity: sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.13: + resolution: {integrity: sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.13: + resolution: {integrity: sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.15.13: + resolution: {integrity: sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.13 + '@esbuild/linux-loong64': 0.15.13 + esbuild-android-64: 0.15.13 + esbuild-android-arm64: 0.15.13 + esbuild-darwin-64: 0.15.13 + esbuild-darwin-arm64: 0.15.13 + esbuild-freebsd-64: 0.15.13 + esbuild-freebsd-arm64: 0.15.13 + esbuild-linux-32: 0.15.13 + esbuild-linux-64: 0.15.13 + esbuild-linux-arm: 0.15.13 + esbuild-linux-arm64: 0.15.13 + esbuild-linux-mips64le: 0.15.13 + esbuild-linux-ppc64le: 0.15.13 + esbuild-linux-riscv64: 0.15.13 + esbuild-linux-s390x: 0.15.13 + esbuild-netbsd-64: 0.15.13 + esbuild-openbsd-64: 0.15.13 + esbuild-sunos-64: 0.15.13 + esbuild-windows-32: 0.15.13 + esbuild-windows-64: 0.15.13 + esbuild-windows-arm64: 0.15.13 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true @@ -2177,40 +2363,27 @@ packages: engines: {node: '>=10'} dev: true - /escodegen/2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.2.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 - resolve: 1.20.0 + resolve: 1.22.0 dev: true - /eslint-import-resolver-typescript/2.5.0_392f898cec7735a5f7a99430cbc0b4f4: - resolution: {integrity: sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==} + /eslint-import-resolver-typescript/2.7.1_de2e8b5f32821e366389b4575f54c566: + resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} engines: {node: '>=4'} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.2 - eslint: 8.8.0 - eslint-plugin-import: 2.25.4_eslint@8.8.0 + debug: 4.3.4 + eslint: 8.17.0 + eslint-plugin-import: 2.26.0_eslint@8.17.0 glob: 7.2.0 is-glob: 4.0.3 - resolve: 1.20.0 - tsconfig-paths: 3.12.0 + resolve: 1.22.0 + tsconfig-paths: 3.14.1 transitivePeerDependencies: - supports-color dev: true @@ -2223,26 +2396,26 @@ packages: find-up: 2.1.0 dev: true - /eslint-plugin-import/2.25.4_eslint@8.8.0: - resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} + /eslint-plugin-import/2.26.0_eslint@8.17.0: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: array-includes: 3.1.4 - array.prototype.flat: 1.2.5 + array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.8.0 + eslint: 8.17.0 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.3 has: 1.0.3 is-core-module: 2.8.1 is-glob: 4.0.3 - minimatch: 3.0.4 + minimatch: 3.1.2 object.values: 1.1.5 - resolve: 1.20.0 - tsconfig-paths: 3.12.0 + resolve: 1.22.0 + tsconfig-paths: 3.14.1 dev: true /eslint-scope/5.1.1: @@ -2258,16 +2431,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.8.0: + /eslint-utils/3.0.0_eslint@8.17.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.8.0 + eslint: 8.17.0 eslint-visitor-keys: 2.1.0 dev: true @@ -2281,30 +2454,30 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.8.0: - resolution: {integrity: sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==} + /eslint/8.17.0: + resolution: {integrity: sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.1.0 - '@humanwhocodes/config-array': 0.9.3 + '@eslint/eslintrc': 1.3.0 + '@humanwhocodes/config-array': 0.9.5 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.2 + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.8.0 + eslint-utils: 3.0.0_eslint@8.17.0 eslint-visitor-keys: 3.3.0 - espree: 9.3.1 + espree: 9.3.2 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 - globals: 13.12.1 + globals: 13.15.0 ignore: 5.2.0 import-fresh: 3.3.0 imurmurhash: 0.1.4 @@ -2313,7 +2486,7 @@ packages: json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.0.4 + minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 regexpp: 3.2.0 @@ -2325,12 +2498,12 @@ packages: - supports-color dev: true - /espree/9.3.1: - resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} + /espree/9.3.2: + resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.7.0 - acorn-jsx: 5.3.2_acorn@8.7.0 + acorn: 8.7.1 + acorn-jsx: 5.3.2_acorn@8.7.1 eslint-visitor-keys: 3.3.0 dev: true @@ -2344,14 +2517,14 @@ packages: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true /estraverse/4.3.0: @@ -2359,8 +2532,8 @@ packages: engines: {node: '>=4.0'} dev: true - /estraverse/5.2.0: - resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true @@ -2380,23 +2553,24 @@ packages: merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 - signal-exit: 3.0.3 + signal-exit: 3.0.7 strip-final-newline: 2.0.0 dev: true /exit/0.1.2: - resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect/27.5.1: - resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /expect/28.1.1: + resolution: {integrity: sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - jest-get-type: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 + '@jest/expect-utils': 28.1.1 + jest-get-type: 28.0.2 + jest-matcher-utils: 28.1.1 + jest-message-util: 28.1.1 + jest-util: 28.1.1 dev: true /fast-deep-equal/3.1.3: @@ -2411,7 +2585,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.4 + micromatch: 4.0.5 dev: true /fast-json-stable-stringify/2.1.0: @@ -2419,7 +2593,7 @@ packages: dev: true /fast-levenshtein/2.0.6: - resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true /fastq/1.13.0: @@ -2456,7 +2630,7 @@ packages: dev: true /find-up/2.1.0: - resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} dependencies: locate-path: 2.0.0 @@ -2496,27 +2670,11 @@ packages: /flatted/3.2.5: resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.32 - dev: true - - /fs-access/1.0.1: - resolution: {integrity: sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=} - engines: {node: '>=0.10.0'} - dependencies: - null-check: 1.0.0 - dev: true - - /fs-extra/10.0.0: - resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -2526,13 +2684,13 @@ packages: engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 dev: true /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true /fsevents/2.3.2: @@ -2548,7 +2706,7 @@ packages: dev: true /functional-red-black-tree/1.0.1: - resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} dev: true /gensync/1.0.0-beta.2: @@ -2566,7 +2724,7 @@ packages: dependencies: function-bind: 1.1.1 has: 1.0.3 - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: true /get-package-type/0.1.0: @@ -2611,7 +2769,7 @@ packages: dev: true /git-remote-origin-url/2.0.0: - resolution: {integrity: sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=} + resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} engines: {node: '>=4'} dependencies: gitconfiglocal: 1.0.0 @@ -2628,7 +2786,7 @@ packages: dev: true /gitconfiglocal/1.0.0: - resolution: {integrity: sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=} + resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} dependencies: ini: 1.3.8 dev: true @@ -2659,7 +2817,7 @@ packages: dev: true /global-dirs/0.1.1: - resolution: {integrity: sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=} + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} dependencies: ini: 1.3.8 @@ -2670,8 +2828,8 @@ packages: engines: {node: '>=4'} dev: true - /globals/13.12.1: - resolution: {integrity: sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==} + /globals/13.15.0: + resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -2689,8 +2847,8 @@ packages: slash: 3.0.0 dev: true - /graceful-fs/4.2.9: - resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true /handlebars/4.7.7: @@ -2698,12 +2856,12 @@ packages: engines: {node: '>=0.4.7'} hasBin: true dependencies: - minimist: 1.2.5 + minimist: 1.2.6 neo-async: 2.6.2 source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.15.1 + uglify-js: 3.15.4 dev: true /hard-rejection/2.1.0: @@ -2716,17 +2874,22 @@ packages: dev: true /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.1 dev: true - /has-symbols/1.0.2: - resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true @@ -2734,7 +2897,7 @@ packages: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: true /has/1.0.3: @@ -2752,39 +2915,11 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: - lru-cache: 6.0.0 - dev: true - - /html-encoding-sniffer/2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - dependencies: - whatwg-encoding: 1.0.5 - dev: true - - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /http-proxy-agent/4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.2 - transitivePeerDependencies: - - supports-color + lru-cache: 6.0.0 dev: true - /https-proxy-agent/5.0.0: - resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.2 - transitivePeerDependencies: - - supports-color + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true /human-signals/2.1.0: @@ -2792,24 +2927,12 @@ packages: engines: {node: '>=10.17.0'} dev: true - /husky/7.0.4: - resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} - engines: {node: '>=12'} + /husky/8.0.1: + resolution: {integrity: sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==} + engines: {node: '>=14'} hasBin: true dev: true - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /ignore/4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true - /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -2823,8 +2946,8 @@ packages: resolve-from: 4.0.0 dev: true - /import-local/3.0.2: - resolution: {integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==} + /import-local/3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true dependencies: @@ -2833,7 +2956,7 @@ packages: dev: true /imurmurhash/0.1.4: - resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true @@ -2843,7 +2966,7 @@ packages: dev: true /inflight/1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -2867,7 +2990,7 @@ packages: dev: true /is-arrayish/0.2.1: - resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true /is-bigint/1.0.4: @@ -2907,7 +3030,7 @@ packages: dev: true /is-extglob/2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true @@ -2933,8 +3056,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.6: - resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 @@ -2951,14 +3074,10 @@ packages: dev: true /is-plain-obj/1.1.0: - resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-potential-custom-element-name/1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -2967,8 +3086,10 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-shared-array-buffer/1.0.1: - resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 dev: true /is-stream/2.0.1: @@ -2987,20 +3108,16 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: true /is-text-path/1.0.1: - resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} dependencies: text-extensions: 1.9.0 dev: true - /is-typedarray/1.0.0: - resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} - dev: true - /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: @@ -3008,16 +3125,11 @@ packages: dev: true /isarray/1.0.0: - resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true - - /istanbul-lib-coverage/3.0.0: - resolution: {integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==} - engines: {node: '>=8'} + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true /istanbul-lib-coverage/3.2.0: @@ -3029,8 +3141,8 @@ packages: resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.15.5 - '@babel/parser': 7.15.6 + '@babel/core': 7.17.9 + '@babel/parser': 7.17.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -3047,12 +3159,12 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.0: - resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} - engines: {node: '>=8'} + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: - debug: 4.3.2 - istanbul-lib-coverage: 3.0.0 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -3066,45 +3178,44 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/27.5.1: - resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-changed-files/28.0.2: + resolution: {integrity: sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 execa: 5.1.1 throat: 6.0.1 dev: true - /jest-circus/27.5.1: - resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-circus/28.1.1: + resolution: {integrity: sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/environment': 28.1.1 + '@jest/expect': 28.1.1 + '@jest/test-result': 28.1.1 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 - expect: 27.5.1 is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 + jest-each: 28.1.1 + jest-matcher-utils: 28.1.1 + jest-message-util: 28.1.1 + jest-runtime: 28.1.1 + jest-snapshot: 28.1.1 + jest-util: 28.1.1 + pretty-format: 28.1.1 slash: 3.0.0 - stack-utils: 2.0.3 + stack-utils: 2.0.5 throat: 6.0.1 transitivePeerDependencies: - supports-color dev: true - /jest-cli/27.5.1_ts-node@10.5.0: - resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-cli/28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654: + resolution: {integrity: sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3112,65 +3223,62 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.5.1_ts-node@10.5.0 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 + '@jest/core': 28.1.1_ts-node@10.8.1 + '@jest/test-result': 28.1.1 + '@jest/types': 28.1.1 chalk: 4.1.2 exit: 0.1.2 - graceful-fs: 4.2.9 - import-local: 3.0.2 - jest-config: 27.5.1_ts-node@10.5.0 - jest-util: 27.5.1 - jest-validate: 27.5.1 - prompts: 2.4.1 - yargs: 16.2.0 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 + jest-util: 28.1.1 + jest-validate: 28.1.1 + prompts: 2.4.2 + yargs: 17.4.1 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' - supports-color - ts-node - - utf-8-validate dev: true - /jest-config/27.5.1_ts-node@10.5.0: - resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-config/28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654: + resolution: {integrity: sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: + '@types/node': '*' ts-node: '>=9.0.0' peerDependenciesMeta: + '@types/node': + optional: true ts-node: optional: true dependencies: - '@babel/core': 7.15.5 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.15.5 + '@babel/core': 7.17.9 + '@jest/test-sequencer': 28.1.1 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 + babel-jest: 28.1.1_@babel+core@7.17.9 chalk: 4.1.2 - ci-info: 3.2.0 + ci-info: 3.3.0 deepmerge: 4.2.2 glob: 7.2.0 - graceful-fs: 4.2.9 - jest-circus: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-get-type: 27.5.1 - jest-jasmine2: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runner: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - micromatch: 4.0.4 + graceful-fs: 4.2.10 + jest-circus: 28.1.1 + jest-environment-node: 28.1.1 + jest-get-type: 28.0.2 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.1 + jest-runner: 28.1.1 + jest-util: 28.1.1 + jest-validate: 28.1.1 + micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 27.5.1 + pretty-format: 28.1.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 + ts-node: 10.8.1_2f4904d2ea745e9acb99fb2a8412b575 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - utf-8-validate dev: true /jest-diff/27.5.1: @@ -3183,52 +3291,44 @@ packages: pretty-format: 27.5.1 dev: true - /jest-docblock/27.5.1: - resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-diff/28.1.1: + resolution: {integrity: sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - detect-newline: 3.1.0 + chalk: 4.1.2 + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.1 dev: true - /jest-each/27.5.1: - resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-docblock/28.1.1: + resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - chalk: 4.1.2 - jest-get-type: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 + detect-newline: 3.1.0 dev: true - /jest-environment-jsdom/27.5.1: - resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-each/28.1.1: + resolution: {integrity: sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jsdom: 16.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate + '@jest/types': 28.1.1 + chalk: 4.1.2 + jest-get-type: 28.0.2 + jest-util: 28.1.1 + pretty-format: 28.1.1 dev: true - /jest-environment-node/27.5.1: - resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-environment-node/28.1.1: + resolution: {integrity: sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - jest-mock: 27.5.1 - jest-util: 27.5.1 + '@jest/environment': 28.1.1 + '@jest/fake-timers': 28.1.1 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 + jest-mock: 28.1.1 + jest-util: 28.1.1 dev: true /jest-get-type/27.5.1: @@ -3236,57 +3336,36 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-haste-map/27.5.1: - resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-get-type/28.0.2: + resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /jest-haste-map/28.1.1: + resolution: {integrity: sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 28.1.1 '@types/graceful-fs': 4.1.5 - '@types/node': 17.0.18 + '@types/node': 17.0.41 anymatch: 3.1.2 fb-watchman: 2.0.1 - graceful-fs: 4.2.9 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.4 - walker: 1.0.7 + graceful-fs: 4.2.10 + jest-regex-util: 28.0.2 + jest-util: 28.1.1 + jest-worker: 28.1.1 + micromatch: 4.0.5 + walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-jasmine2/27.5.1: - resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-leak-detector/27.5.1: - resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-leak-detector/28.1.1: + resolution: {integrity: sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.1 dev: true /jest-matcher-utils/27.5.1: @@ -3299,30 +3378,40 @@ packages: pretty-format: 27.5.1 dev: true - /jest-message-util/27.5.1: - resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-matcher-utils/28.1.1: + resolution: {integrity: sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.1 + dev: true + + /jest-message-util/28.1.1: + resolution: {integrity: sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/code-frame': 7.14.5 - '@jest/types': 27.5.1 + '@babel/code-frame': 7.16.7 + '@jest/types': 28.1.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 - graceful-fs: 4.2.9 - micromatch: 4.0.4 - pretty-format: 27.5.1 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 28.1.1 slash: 3.0.0 - stack-utils: 2.0.3 + stack-utils: 2.0.5 dev: true - /jest-mock/27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-mock/28.1.1: + resolution: {integrity: sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: + /jest-pnp-resolver/1.2.2_jest-resolve@28.1.1: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -3331,202 +3420,179 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 27.5.1 + jest-resolve: 28.1.1 dev: true - /jest-regex-util/27.5.1: - resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-regex-util/28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dev: true - /jest-resolve-dependencies/27.5.1: - resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-resolve-dependencies/28.1.1: + resolution: {integrity: sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 + jest-regex-util: 28.0.2 + jest-snapshot: 28.1.1 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/27.5.1: - resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-resolve/28.1.1: + resolution: {integrity: sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 chalk: 4.1.2 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - resolve: 1.20.0 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.1 + jest-pnp-resolver: 1.2.2_jest-resolve@28.1.1 + jest-util: 28.1.1 + jest-validate: 28.1.1 + resolve: 1.22.0 resolve.exports: 1.1.0 slash: 3.0.0 dev: true - /jest-runner/27.5.1: - resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-runner/28.1.1: + resolution: {integrity: sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/console': 28.1.1 + '@jest/environment': 28.1.1 + '@jest/test-result': 28.1.1 + '@jest/transform': 28.1.1 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 chalk: 4.1.2 - emittery: 0.8.1 - graceful-fs: 4.2.9 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 + emittery: 0.10.2 + graceful-fs: 4.2.10 + jest-docblock: 28.1.1 + jest-environment-node: 28.1.1 + jest-haste-map: 28.1.1 + jest-leak-detector: 28.1.1 + jest-message-util: 28.1.1 + jest-resolve: 28.1.1 + jest-runtime: 28.1.1 + jest-util: 28.1.1 + jest-watcher: 28.1.1 + jest-worker: 28.1.1 + source-map-support: 0.5.13 throat: 6.0.1 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - utf-8-validate dev: true - /jest-runtime/27.5.1: - resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-runtime/28.1.1: + resolution: {integrity: sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/globals': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/environment': 28.1.1 + '@jest/fake-timers': 28.1.1 + '@jest/globals': 28.1.1 + '@jest/source-map': 28.0.2 + '@jest/test-result': 28.1.1 + '@jest/transform': 28.1.1 + '@jest/types': 28.1.1 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 execa: 5.1.1 glob: 7.2.0 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.1 + jest-message-util: 28.1.1 + jest-mock: 28.1.1 + jest-regex-util: 28.0.2 + jest-resolve: 28.1.1 + jest-snapshot: 28.1.1 + jest-util: 28.1.1 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-serializer/27.5.1: - resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/node': 17.0.18 - graceful-fs: 4.2.9 - dev: true - - /jest-snapshot/27.5.1: - resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.15.5 - '@babel/generator': 7.15.4 - '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.5 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.14.2 - '@types/prettier': 2.3.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 + /jest-snapshot/28.1.1: + resolution: {integrity: sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/core': 7.17.9 + '@babel/generator': 7.17.9 + '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.9 + '@babel/traverse': 7.17.9 + '@babel/types': 7.17.0 + '@jest/expect-utils': 28.1.1 + '@jest/transform': 28.1.1 + '@jest/types': 28.1.1 + '@types/babel__traverse': 7.17.0 + '@types/prettier': 2.6.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.9 chalk: 4.1.2 - expect: 27.5.1 - graceful-fs: 4.2.9 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-util: 27.5.1 + expect: 28.1.1 + graceful-fs: 4.2.10 + jest-diff: 28.1.1 + jest-get-type: 28.0.2 + jest-haste-map: 28.1.1 + jest-matcher-utils: 28.1.1 + jest-message-util: 28.1.1 + jest-util: 28.1.1 natural-compare: 1.4.0 - pretty-format: 27.5.1 - semver: 7.3.5 + pretty-format: 28.1.1 + semver: 7.3.7 transitivePeerDependencies: - supports-color dev: true - /jest-util/27.4.2: - resolution: {integrity: sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - chalk: 4.1.2 - ci-info: 3.2.0 - graceful-fs: 4.2.9 - picomatch: 2.3.0 - dev: true - - /jest-util/27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-util/28.1.1: + resolution: {integrity: sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 chalk: 4.1.2 - ci-info: 3.2.0 - graceful-fs: 4.2.9 - picomatch: 2.3.0 + ci-info: 3.3.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 dev: true - /jest-validate/27.5.1: - resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-validate/28.1.1: + resolution: {integrity: sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 28.1.1 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 27.5.1 + jest-get-type: 28.0.2 leven: 3.1.0 - pretty-format: 27.5.1 + pretty-format: 28.1.1 dev: true - /jest-watcher/27.5.1: - resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-watcher/28.1.1: + resolution: {integrity: sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/test-result': 28.1.1 + '@jest/types': 28.1.1 + '@types/node': 17.0.41 ansi-escapes: 4.3.2 chalk: 4.1.2 - jest-util: 27.5.1 + emittery: 0.10.2 + jest-util: 28.1.1 string-length: 4.0.2 dev: true - /jest-worker/27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + /jest-worker/28.1.1: + resolution: {integrity: sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@types/node': 17.0.18 + '@types/node': 17.0.41 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/27.5.1_ts-node@10.5.0: - resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest/28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654: + resolution: {integrity: sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3534,15 +3600,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.5.1_ts-node@10.5.0 - import-local: 3.0.2 - jest-cli: 27.5.1_ts-node@10.5.0 + '@jest/core': 28.1.1_ts-node@10.8.1 + '@jest/types': 28.1.1 + import-local: 3.1.0 + jest-cli: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' - supports-color - ts-node - - utf-8-validate dev: true /js-tokens/4.0.0: @@ -3564,48 +3629,6 @@ packages: argparse: 2.0.1 dev: true - /jsdom/16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.5 - acorn: 8.7.0 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.3.1 - domexception: 2.0.1 - escodegen: 2.0.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.0 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.0 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.0.0 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.5 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -3629,26 +3652,24 @@ packages: dev: true /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true /json-stringify-safe/5.0.1: - resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: - minimist: 1.2.5 + minimist: 1.2.6 dev: true - /json5/2.2.0: - resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} + /json5/2.2.1: + resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} hasBin: true - dependencies: - minimist: 1.2.5 dev: true /jsonfile/6.1.0: @@ -3656,16 +3677,16 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 dev: true /jsonparse/1.3.1: - resolution: {integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=} + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} dev: true - /jsonschema/1.4.0: - resolution: {integrity: sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==} + /jsonschema/1.4.1: + resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} dev: true /kind-of/6.0.3: @@ -3683,14 +3704,6 @@ packages: engines: {node: '>=6'} dev: true - /levn/0.3.0: - resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: true - /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3704,17 +3717,17 @@ packages: dev: true /load-json-file/4.0.0: - resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=} + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} dependencies: - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 dev: true /locate-path/2.0.0: - resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} dependencies: p-locate: 2.0.0 @@ -3744,11 +3757,11 @@ packages: dev: true /lodash.ismatch/4.4.0: - resolution: {integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=} + resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} dev: true /lodash.memoize/4.1.2: - resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true /lodash.merge/4.6.2: @@ -3756,7 +3769,7 @@ packages: dev: true /lodash.truncate/4.4.2: - resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true /lodash/4.17.21: @@ -3781,14 +3794,14 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.11: - resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=} + /makeerror/1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true /map-obj/1.0.1: - resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true @@ -3831,24 +3844,12 @@ packages: engines: {node: '>= 8'} dev: true - /micromatch/4.0.4: - resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 - picomatch: 2.3.0 - dev: true - - /mime-db/1.49.0: - resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types/2.1.32: - resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.49.0 + picomatch: 2.3.1 dev: true /mimic-fn/2.1.0: @@ -3861,12 +3862,6 @@ packages: engines: {node: '>=4'} dev: true - /minimatch/3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} - dependencies: - brace-expansion: 1.1.11 - dev: true - /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -3882,8 +3877,8 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.5: - resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: true /modify-values/1.0.1: @@ -3892,15 +3887,19 @@ packages: dev: true /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + /natural-compare/1.4.0: - resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true /neo-async/2.6.2: @@ -3908,18 +3907,18 @@ packages: dev: true /node-int64/0.4.0: - resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/1.1.75: - resolution: {integrity: sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==} + /node-releases/2.0.3: + resolution: {integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==} dev: true /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.20.0 + resolve: 1.22.0 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -3930,7 +3929,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.8.1 - semver: 7.3.5 + semver: 7.3.7 validate-npm-package-license: 3.0.4 dev: true @@ -3946,15 +3945,6 @@ packages: path-key: 3.1.1 dev: true - /null-check/1.0.0: - resolution: {integrity: sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=} - engines: {node: '>=0.10.0'} - dev: true - - /nwsapi/2.2.0: - resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} - dev: true - /object-inspect/1.12.0: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} dev: true @@ -3969,8 +3959,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - has-symbols: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -3979,12 +3969,12 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.19.5 dev: true /once/1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true @@ -3996,18 +3986,6 @@ packages: mimic-fn: 2.1.0 dev: true - /optionator/0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 - dev: true - /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -4042,7 +4020,7 @@ packages: dev: true /p-locate/2.0.0: - resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} dependencies: p-limit: 1.3.0 @@ -4087,7 +4065,7 @@ packages: dev: true /parse-json/4.0.0: - resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} dependencies: error-ex: 1.3.2 @@ -4098,18 +4076,14 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.14.5 + '@babel/code-frame': 7.16.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 dev: true - /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true - /path-exists/3.0.0: - resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} dev: true @@ -4119,7 +4093,7 @@ packages: dev: true /path-is-absolute/1.0.1: - resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true @@ -4144,18 +4118,22 @@ packages: engines: {node: '>=8'} dev: true - /picomatch/2.3.0: - resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true /pify/2.3.0: - resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: true /pify/3.0.0: - resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} dev: true @@ -4176,11 +4154,6 @@ packages: engines: {node: '>=4'} dev: false - /prelude-ls/1.1.2: - resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} - engines: {node: '>= 0.8.0'} - dev: true - /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4195,29 +4168,35 @@ packages: react-is: 17.0.2 dev: true + /pretty-format/28.1.1: + resolution: {integrity: sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.0.2 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.1.0 + dev: true + /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /prompts/2.4.1: - resolution: {integrity: sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==} + /prompts/2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 dev: true - /psl/1.8.0: - resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} - dev: true - /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true /q/1.5.1: - resolution: {integrity: sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=} + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true @@ -4234,8 +4213,12 @@ packages: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true + /react-is/18.1.0: + resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} + dev: true + /read-pkg-up/3.0.0: - resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=} + resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} dependencies: find-up: 2.1.0 @@ -4252,7 +4235,7 @@ packages: dev: true /read-pkg/3.0.0: - resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=} + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} dependencies: load-json-file: 4.0.0 @@ -4305,7 +4288,7 @@ packages: dev: true /require-directory/2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true @@ -4343,11 +4326,13 @@ packages: engines: {node: '>=10'} dev: true - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} + /resolve/1.22.0: + resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + hasBin: true dependencies: is-core-module: 2.8.1 path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: true /reusify/1.0.4: @@ -4376,17 +4361,6 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - - /saxes/5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - dependencies: - xmlchars: 2.2.0 - dev: true - /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -4397,8 +4371,8 @@ packages: hasBin: true dev: true - /semver/7.3.5: - resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + /semver/7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} engines: {node: '>=10'} hasBin: true dependencies: @@ -4425,8 +4399,8 @@ packages: object-inspect: 1.12.0 dev: true - /signal-exit/3.0.3: - resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true /sisteransi/1.0.5: @@ -4447,11 +4421,19 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true + /source-map-support/0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: false /source-map/0.5.7: resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} @@ -4462,11 +4444,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - /source-map/0.7.3: - resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} - engines: {node: '>= 8'} - dev: true - /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: @@ -4505,31 +4482,30 @@ packages: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} dev: true - /stack-utils/2.0.3: - resolution: {integrity: sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==} + /stack-utils/2.0.5: + resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /standard-version/9.3.2: - resolution: {integrity: sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==} + /standard-version/9.5.0: + resolution: {integrity: sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q==} engines: {node: '>=10'} hasBin: true dependencies: chalk: 2.4.2 - conventional-changelog: 3.1.24 + conventional-changelog: 3.1.25 conventional-changelog-config-spec: 2.1.0 - conventional-changelog-conventionalcommits: 4.6.1 + conventional-changelog-conventionalcommits: 4.6.3 conventional-recommended-bump: 6.1.0 detect-indent: 6.1.0 detect-newline: 3.1.0 dotgitignore: 2.1.0 figures: 3.2.0 find-up: 5.0.0 - fs-access: 1.0.1 git-semver-tags: 4.1.1 - semver: 7.3.5 + semver: 7.3.7 stringify-package: 1.0.1 yargs: 16.2.0 dev: true @@ -4555,14 +4531,14 @@ packages: resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: true /string.prototype.trimstart/1.0.4: resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: true /string_decoder/1.1.1: @@ -4627,7 +4603,6 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true /supports-color/8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} @@ -4644,15 +4619,16 @@ packages: supports-color: 7.2.0 dev: true - /symbol-tree/3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} dev: true /table/6.8.0: resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} engines: {node: '>=10.0.0'} dependencies: - ajv: 8.6.3 + ajv: 8.11.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -4690,7 +4666,7 @@ packages: dev: true /through/2.3.8: - resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true /through2/2.0.5: @@ -4722,63 +4698,75 @@ packages: is-number: 7.0.0 dev: true - /tough-cookie/4.0.0: - resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} - engines: {node: '>=6'} - dependencies: - psl: 1.8.0 - punycode: 2.1.1 - universalify: 0.1.2 - dev: true - - /tr46/2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - dependencies: - punycode: 2.1.1 - dev: true - /trim-newlines/3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /ts-jest/27.1.3_8fa130d172bf7d71653f05507c50c5a3: - resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /ts-jest/28.0.4_fc6c8d6d53ecb8477a2480d0844756ba: + resolution: {integrity: sha512-S6uRDDdCJBvnZqyGjB4VCnwbQrbgdL8WPeP4jevVSpYsBaeGRQAIS08o3Svav2Ex+oXwLgJ/m7F24TNq62kA1A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' - '@types/jest': ^27.0.0 - babel-jest: '>=27.0.0 <28' - esbuild: ~0.14.0 - jest: ^27.0.0 - typescript: '>=3.8 <5.0' + babel-jest: ^28.0.0 + esbuild: '*' + jest: ^28.0.0 + typescript: '>=4.3' peerDependenciesMeta: '@babel/core': optional: true - '@types/jest': - optional: true babel-jest: optional: true esbuild: optional: true dependencies: - '@types/jest': 27.4.1 bs-logger: 0.2.6 + esbuild: 0.15.13 fast-json-stable-stringify: 2.1.0 - jest: 27.5.1_ts-node@10.5.0 - jest-util: 27.4.2 - json5: 2.2.0 + jest: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 + jest-util: 28.1.1 + json5: 2.2.1 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.5 - typescript: 4.5.5 + semver: 7.3.7 + typescript: 4.7.3 yargs-parser: 20.2.9 dev: true - /ts-node/10.5.0_f3bd4037939c2ed2942ba074291f8ef2: - resolution: {integrity: sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==} + /ts-node/10.8.1_2f4904d2ea745e9acb99fb2a8412b575: + resolution: {integrity: sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.8 + '@tsconfig/node12': 1.0.9 + '@tsconfig/node14': 1.0.1 + '@tsconfig/node16': 1.0.2 + '@types/node': 17.0.41 + acorn: 8.7.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.7.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node/10.8.1_cf2a114464063a7ac56422e5bb88c1db: + resolution: {integrity: sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -4791,29 +4779,29 @@ packages: '@swc/wasm': optional: true dependencies: - '@cspotcode/source-map-support': 0.7.0 + '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 17.0.18 - acorn: 8.5.0 + '@types/node': 14.18.33 + acorn: 8.7.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.5.5 - v8-compile-cache-lib: 3.0.0 + typescript: 4.7.3 + v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsconfig-paths/3.12.0: - resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} + /tsconfig-paths/3.14.1: + resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: '@types/json5': 0.0.29 json5: 1.0.1 - minimist: 1.2.5 + minimist: 1.2.6 strip-bom: 3.0.0 dev: true @@ -4821,21 +4809,14 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils/3.21.0_typescript@4.5.5: + /tsutils/3.21.0_typescript@4.7.3: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.5.5 - dev: true - - /type-check/0.3.2: - resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 + typescript: 4.7.3 dev: true /type-check/0.4.0: @@ -4875,24 +4856,18 @@ packages: engines: {node: '>=8'} dev: true - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - /typedarray/0.0.6: resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} dev: true - /typescript/4.5.5: - resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==} + /typescript/4.7.3: + resolution: {integrity: sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /uglify-js/3.15.1: - resolution: {integrity: sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==} + /uglify-js/3.15.4: + resolution: {integrity: sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -4904,15 +4879,10 @@ packages: dependencies: function-bind: 1.1.1 has-bigints: 1.0.1 - has-symbols: 1.0.2 + has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 dev: true - /universalify/0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true - /universalify/2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} @@ -4925,24 +4895,24 @@ packages: dev: true /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /v8-compile-cache-lib/3.0.0: - resolution: {integrity: sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==} + /v8-compile-cache-lib/3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/8.1.0: - resolution: {integrity: sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==} + /v8-to-istanbul/9.0.0: + resolution: {integrity: sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==} engines: {node: '>=10.12.0'} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 + '@jridgewell/trace-mapping': 0.3.9 + '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 - source-map: 0.7.3 dev: true /validate-npm-package-license/3.0.4: @@ -4952,52 +4922,10 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /w3c-hr-time/1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - dependencies: - browser-process-hrtime: 1.0.0 - dev: true - - /w3c-xmlserializer/2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - dependencies: - xml-name-validator: 3.0.0 - dev: true - - /walker/1.0.7: - resolution: {integrity: sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=} - dependencies: - makeerror: 1.0.11 - dev: true - - /webidl-conversions/5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - - /webidl-conversions/6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - dev: true - - /whatwg-encoding/1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - dependencies: - iconv-lite: 0.4.24 - dev: true - - /whatwg-mimetype/2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: true - - /whatwg-url/8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} + /walker/1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 + makeerror: 1.0.12 dev: true /which-boxed-primitive/1.0.2: @@ -5005,7 +4933,7 @@ packages: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 - is-number-object: 1.0.6 + is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 dev: true @@ -5040,34 +4968,12 @@ packages: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} dev: true - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + /write-file-atomic/4.0.1: + resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} dependencies: imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.3 - typedarray-to-buffer: 3.1.5 - dev: true - - /ws/7.5.5: - resolution: {integrity: sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - - /xml-name-validator/3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - dev: true - - /xmlchars/2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + signal-exit: 3.0.7 dev: true /xtend/4.0.2: @@ -5087,14 +4993,15 @@ packages: /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + dev: true /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.0.0: - resolution: {integrity: sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==} + /yargs-parser/21.0.1: + resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} engines: {node: '>=12'} dev: true @@ -5111,8 +5018,8 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.3.1: - resolution: {integrity: sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==} + /yargs/17.4.1: + resolution: {integrity: sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==} engines: {node: '>=12'} dependencies: cliui: 7.0.4 @@ -5121,7 +5028,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 21.0.0 + yargs-parser: 21.0.1 dev: true /yn/3.1.1: diff --git a/src/lambda/put-timetable/index.py b/src/lambda/put-timetable/index.py new file mode 100644 index 000000000..6c44a0b0f --- /dev/null +++ b/src/lambda/put-timetable/index.py @@ -0,0 +1,32 @@ +import json +from datetime import datetime +from utils import JsonPayloadBuilder +from utils import resp_handler +from utils import table + +@resp_handler +def put_timetable(uid, content): + dt_now = datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' + table.update_item( + Key = { + "uid": uid + }, + UpdateExpression = 'SET courses = :info, update_at = :ts', + ExpressionAtrributeValues = { + ":info" : [content['courses']], + ":ts" : dt_now + } + ) + + body = JsonPayloadBuilder().add_status(True).add_data(None).add_message('').compile() + return body + + +def handler(event, context): + req = json.loads(event['body']) + params = { + "uid": event['requestContext']['authorizer']['claims']['sub'], + "content": req["data"] + } + + return put_timetable(**params) \ No newline at end of file diff --git a/src/lambda/put-timetable/utils.py b/src/lambda/put-timetable/utils.py new file mode 100644 index 000000000..47fea0834 --- /dev/null +++ b/src/lambda/put-timetable/utils.py @@ -0,0 +1,66 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE", "PUT"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle From e337e01e50b7146645e24e05c31896c091c2f67f Mon Sep 17 00:00:00 2001 From: Jason Park <93040528+Autogod@users.noreply.github.com> Date: Fri, 11 Nov 2022 13:46:08 +0900 Subject: [PATCH 2/3] Revert "fix: configuring-rest-api (#219)" (#220) This reverts commit 665e25264cbd9245457022b5a6195fe70dc5629b. --- .github/actions/install-deps/action.yml | 4 +- .github/workflows/codeql-analysis.yml | 8 +- .github/workflows/deploy.yml | 6 +- .github/workflows/pr-lint.yml | 2 +- .github/workflows/pr.yml | 14 +- .github/workflows/push.yml | 8 +- .gitignore | 3 + .husky/.gitignore | 1 - .husky/pre-commit | 2 - jest.config.ts | 3 +- lib/configs/api-gateway/cors.ts | 2 +- lib/constructs/business/rest-api-service.ts | 17 +- lib/constructs/common/lambda-functions.ts | 13 - package.json | 57 +- pnpm-lock.yaml | 3065 ++++++++++--------- src/lambda/put-timetable/index.py | 32 - src/lambda/put-timetable/utils.py | 66 - 17 files changed, 1632 insertions(+), 1671 deletions(-) delete mode 100644 .husky/.gitignore delete mode 100644 src/lambda/put-timetable/index.py delete mode 100644 src/lambda/put-timetable/utils.py diff --git a/.github/actions/install-deps/action.yml b/.github/actions/install-deps/action.yml index 51b3a816a..c9e93a401 100644 --- a/.github/actions/install-deps/action.yml +++ b/.github/actions/install-deps/action.yml @@ -3,11 +3,11 @@ description: 'Workflow for installing dependencies' runs: using: "composite" steps: - - uses: pnpm/action-setup@v2.2.2 + - uses: pnpm/action-setup@v2.0.1 with: version: latest - name: Use Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v2 with: node-version: 16.x cache: 'pnpm' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 2dba69ebc..bc5866987 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -52,11 +52,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v2 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v1 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -67,7 +67,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v1 # ℹ️ Command-line programs to run using the OS shell. # πŸ“š https://git.io/JvXDl @@ -81,4 +81,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 10117670f..d1f73d09d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -28,7 +28,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - uses: ./.github/actions/install-deps - name: Setup AWS uses: Fooji/create-aws-profile-action@v2 @@ -54,7 +54,7 @@ jobs: runs-on: ubuntu-latest needs: [ deploy ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 with: repository: wasedatime/wasedatime.github.io token: ${{ env.GITHUB_OAUTH_TOKEN }} @@ -69,7 +69,7 @@ jobs: aws apigateway get-export --rest-api-id 'anvonkl0fd' --stage-name 'dev' --export-type 'swagger' --accepts 'application/yaml' ./dev.yml aws apigateway get-export --rest-api-id 'anvonkl0fd' --stage-name 'prod' --export-type 'swagger' --accepts 'application/yaml' ./prod.yml - name: Push - uses: EndBug/add-and-commit@v9 + uses: EndBug/add-and-commit@v7 with: author_name: GitHub Actions author_email: actions@github.com diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml index 6f40f80f9..08e2294aa 100644 --- a/.github/workflows/pr-lint.yml +++ b/.github/workflows/pr-lint.yml @@ -15,7 +15,7 @@ jobs: permissions: pull-requests: write steps: - - uses: amannn/action-semantic-pull-request@v4.5.0 + - uses: amannn/action-semantic-pull-request@v4.1.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e2275bcce..abd3386b7 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -35,7 +35,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - uses: ./.github/actions/install-deps - name: Lint run: pnpm run lint @@ -44,7 +44,7 @@ jobs: runs-on: ubuntu-latest needs: [ lint ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - uses: ./.github/actions/install-deps - name: Synth run: cdk synth @@ -53,7 +53,7 @@ jobs: runs-on: ubuntu-latest needs: [ synth ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - uses: ./.github/actions/install-deps - name: Test run: pnpm test @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest needs: [ test ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - uses: ./.github/actions/install-deps - name: Diff id: diff @@ -74,7 +74,7 @@ jobs: LOG="${LOG//$'\r'/'%0D'}" echo "::set-output name=log::$LOG" - name: Find Comment - uses: peter-evans/find-comment@v2 + uses: peter-evans/find-comment@v1 id: fc with: issue-number: ${{ github.event.pull_request.number }} @@ -82,7 +82,7 @@ jobs: body-includes: "### Diff Output:" - name: Comment if: steps.fc.outputs.comment-id == '' - uses: peter-evans/create-or-update-comment@v2 + uses: peter-evans/create-or-update-comment@v1 with: issue-number: ${{ github.event.pull_request.number }} body: | @@ -93,7 +93,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Update Comment if: steps.fc.outputs.comment-id != '' - uses: peter-evans/create-or-update-comment@v2 + uses: peter-evans/create-or-update-comment@v1 with: comment-id: ${{ steps.fc.outputs.comment-id }} edit-mode: replace diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 6ee2433ed..6aa57528a 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -33,7 +33,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - uses: ./.github/actions/install-deps - name: Lint run: pnpm run lint @@ -42,7 +42,7 @@ jobs: runs-on: ubuntu-latest needs: [ lint ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - uses: ./.github/actions/install-deps - name: Build run: pnpm run build @@ -51,9 +51,9 @@ jobs: runs-on: ubuntu-latest needs: [ build ] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v2 - uses: ./.github/actions/install-deps - name: Test run: pnpm test -- --coverage - name: Test Coverage - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v2 diff --git a/.gitignore b/.gitignore index ba43fe921..d909b0669 100644 --- a/.gitignore +++ b/.gitignore @@ -97,3 +97,6 @@ node_modules # CDK asset staging directory .cdk.staging cdk.out + +# husky +.husky/_/ diff --git a/.husky/.gitignore b/.husky/.gitignore deleted file mode 100644 index 31354ec13..000000000 --- a/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/.husky/pre-commit b/.husky/pre-commit index 2965f34bb..bed71bce8 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -14,5 +14,3 @@ if [ ! -z "$js_diff" ]; then else echo "Seems you haven't changed any JavaScript, skip checks. " fi - -npx lint-staged diff --git a/jest.config.ts b/jest.config.ts index 287e9df69..d4cc2df90 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,4 +1,4 @@ -import { Config } from '@jest/types'; +import type { Config } from '@jest/types'; const config: Config.InitialOptions = { testEnvironment: 'node', @@ -7,7 +7,6 @@ const config: Config.InitialOptions = { transform: { '^.+\\.tsx?$': 'ts-jest', }, - moduleDirectories: ['/node_modules'], }; export default config; diff --git a/lib/configs/api-gateway/cors.ts b/lib/configs/api-gateway/cors.ts index 966a05163..4e36f3690 100644 --- a/lib/configs/api-gateway/cors.ts +++ b/lib/configs/api-gateway/cors.ts @@ -13,6 +13,6 @@ export const allowHeaders = [ export const defaultHeaders = { 'Access-Control-Allow-Headers': '\'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token\'', - 'Access-Control-Allow-Methods': '\'GET,POST,PUT,OPTIONS\'', + 'Access-Control-Allow-Methods': '\'GET,POST,OPTIONS\'', 'Access-Control-Allow-Origin': '\'*\'', }; diff --git a/lib/constructs/business/rest-api-service.ts b/lib/constructs/business/rest-api-service.ts index 6c6c62a3e..ee599e918 100644 --- a/lib/constructs/business/rest-api-service.ts +++ b/lib/constructs/business/rest-api-service.ts @@ -408,9 +408,6 @@ export class TimetableApiService extends RestApiService { const patchIntegration = new apigw.LambdaIntegration( timetableFunctions.patchFunction, { proxy: true }, ); - const putIntergation = new apigw.LambdaIntegration( - timetableFunctions.putFunction, { proxy: true }, - ); // const importIntegration = new apigw.LambdaIntegration( // timetableFunctions.importFunction, {proxy: true}, // ); @@ -418,12 +415,10 @@ export class TimetableApiService extends RestApiService { // timetableFunctions.exportFunction, {proxy: true}, // ); - // , apigw2.HttpMethod.DELETE - const optionsTimetable = root.addCorsPreflight({ allowOrigins: allowOrigins, allowHeaders: allowHeaders, - allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.PUT, apigw2.HttpMethod.POST, apigw2.HttpMethod.PATCH, apigw2.HttpMethod.OPTIONS], + allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.POST, apigw2.HttpMethod.PATCH, apigw2.HttpMethod.OPTIONS, apigw2.HttpMethod.DELETE], }); const getTimetable = root.addMethod(apigw2.HttpMethod.GET, getIntegration, { operationName: 'GetTimetable', @@ -452,15 +447,6 @@ export class TimetableApiService extends RestApiService { authorizer: props.authorizer, requestValidator: props.validator, }); - const putTimetable = root.addMethod(apigw2.HttpMethod.PUT, putIntergation, { - operationName: 'PutTimetable', - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], - authorizer: props.authorizer, - requestValidator: props.validator, - }); // [timetableImport, timetableExport].forEach(value => value.addCorsPreflight({ // allowOrigins: allowOrigins, @@ -490,7 +476,6 @@ export class TimetableApiService extends RestApiService { [apigw2.HttpMethod.GET]: getTimetable, [apigw2.HttpMethod.PATCH]: patchTimetable, [apigw2.HttpMethod.POST]: postTimetable, - [apigw2.HttpMethod.PUT]: putTimetable, }, // "/timetable/export": { // [apigw2.HttpMethod.POST]: exportTimetable, diff --git a/lib/constructs/common/lambda-functions.ts b/lib/constructs/common/lambda-functions.ts index f24182f4c..78cc99344 100644 --- a/lib/constructs/common/lambda-functions.ts +++ b/lib/constructs/common/lambda-functions.ts @@ -189,7 +189,6 @@ export class TimetableFunctions extends Construct { readonly postFunction: lambda.Function; readonly patchFunction: lambda.Function; readonly deleteFunction: lambda.Function; - readonly putFunction: lambda.Function; // readonly importFunction: lambda.Function; // readonly exportFunction: lambda.Function; @@ -258,18 +257,6 @@ export class TimetableFunctions extends Construct { environment: props.envVars, }); - this.putFunction = new lambda_py.PythonFunction(this, 'put-timetable', { - entry: 'src/lambda/put-timetable', - description: 'Put timetable in the database.', - functionName: 'put-timetable', - logRetention: logs.RetentionDays.ONE_MONTH, - memorySize: 128, - role: dynamoDBPutRole, - runtime: lambda.Runtime.PYTHON_3_9, - timeout: Duration.seconds(3), - environment: props.envVars, - }); - // this.importFunction = new lambda_py.PythonFunction(this, 'import-timetable', { // entry: 'src/lambda/import-timetable', // description: "Import timetable from pdf.", diff --git a/package.json b/package.json index 0c2ba68a8..dc90a253e 100644 --- a/package.json +++ b/package.json @@ -15,45 +15,40 @@ "lint": "eslint . --ext .ts" }, "peerDependencies": { - "aws-cdk-lib": "2.27.0", - "constructs": "10.1.32" + "aws-cdk-lib": "2.13.0", + "constructs": "10.0.66" }, "devDependencies": { - "@aws-cdk/assert": "2.27.0", - "@commitlint/cli": "17.0.2", - "@commitlint/config-conventional": "17.0.2", - "@types/jest": "28.1.1", - "@types/node": "17.0.41", + "@aws-cdk/assert": "2.13.0", + "@commitlint/cli": "16.2.1", + "@commitlint/config-conventional": "16.2.1", + "@types/jest": "27.4.1", + "@types/node": "17.0.18", "@types/pluralize": "0.0.29", - "@typescript-eslint/eslint-plugin": "5.27.1", - "@typescript-eslint/parser": "5.27.1", - "aws-cdk-lib": "2.27.0", - "constructs": "10.1.32", - "esbuild": "^0.15.12", - "eslint": "8.17.0", + "@typescript-eslint/eslint-plugin": "5.10.2", + "@typescript-eslint/parser": "5.10.2", + "aws-cdk-lib": "2.13.0", + "constructs": "10.0.66", + "eslint": "8.8.0", "eslint-import-resolver-node": "0.3.6", - "eslint-import-resolver-typescript": "2.7.1", - "eslint-plugin-import": "2.26.0", - "husky": "8.0.1", - "jest": "28.1.1", - "standard-version": "9.5.0", - "ts-jest": "28.0.4", - "ts-node": "10.8.1", - "typescript": "4.7.3" + "eslint-import-resolver-typescript": "2.5.0", + "eslint-plugin-import": "2.25.4", + "husky": "7.0.4", + "jest": "27.5.1", + "standard-version": "9.3.2", + "ts-jest": "27.1.3", + "ts-node": "10.5.0", + "typescript": "4.5.5" }, "dependencies": { - "@aws-cdk/aws-amplify-alpha": "2.27.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-alpha": "2.27.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-authorizers-alpha": "2.27.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-integrations-alpha": "2.27.0-alpha.0", - "@aws-cdk/aws-appsync-alpha": "2.27.0-alpha.0", - "@aws-cdk/aws-lambda-python-alpha": "2.27.0-alpha.0", - "@jest/types": "^29.3.1", + "@aws-cdk/aws-amplify-alpha": "2.13.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-alpha": "2.13.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-authorizers-alpha": "2.13.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-integrations-alpha": "2.13.0-alpha.0", + "@aws-cdk/aws-appsync-alpha": "2.13.0-alpha.0", + "@aws-cdk/aws-lambda-python-alpha": "2.13.0-alpha.0", "flatted": "3.2.5", "pluralize": "8.0.0", "source-map-support": "0.5.21" - }, - "lint-staged": { - "*.ts": "eslint --cache --fix" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9a1a8928..1d480e578 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,178 +1,170 @@ lockfileVersion: 5.3 specifiers: - '@aws-cdk/assert': 2.27.0 - '@aws-cdk/aws-amplify-alpha': 2.27.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.27.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.27.0-alpha.0 - '@aws-cdk/aws-appsync-alpha': 2.27.0-alpha.0 - '@aws-cdk/aws-lambda-python-alpha': 2.27.0-alpha.0 - '@commitlint/cli': 17.0.2 - '@commitlint/config-conventional': 17.0.2 - '@jest/types': ^29.3.1 - '@types/jest': 28.1.1 - '@types/node': 17.0.41 + '@aws-cdk/assert': 2.13.0 + '@aws-cdk/aws-amplify-alpha': 2.13.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.13.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.13.0-alpha.0 + '@aws-cdk/aws-appsync-alpha': 2.13.0-alpha.0 + '@aws-cdk/aws-lambda-python-alpha': 2.13.0-alpha.0 + '@commitlint/cli': 16.2.1 + '@commitlint/config-conventional': 16.2.1 + '@types/jest': 27.4.1 + '@types/node': 17.0.18 '@types/pluralize': 0.0.29 - '@typescript-eslint/eslint-plugin': 5.27.1 - '@typescript-eslint/parser': 5.27.1 - aws-cdk-lib: 2.27.0 - constructs: 10.1.32 - esbuild: ^0.15.12 - eslint: 8.17.0 + '@typescript-eslint/eslint-plugin': 5.10.2 + '@typescript-eslint/parser': 5.10.2 + aws-cdk-lib: 2.13.0 + constructs: 10.0.66 + eslint: 8.8.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.7.1 - eslint-plugin-import: 2.26.0 + eslint-import-resolver-typescript: 2.5.0 + eslint-plugin-import: 2.25.4 flatted: 3.2.5 - husky: 8.0.1 - jest: 28.1.1 + husky: 7.0.4 + jest: 27.5.1 pluralize: 8.0.0 source-map-support: 0.5.21 - standard-version: 9.5.0 - ts-jest: 28.0.4 - ts-node: 10.8.1 - typescript: 4.7.3 + standard-version: 9.3.2 + ts-jest: 27.1.3 + ts-node: 10.5.0 + typescript: 4.5.5 dependencies: - '@aws-cdk/aws-amplify-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c - '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c - '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.27.0-alpha.0_ba3f00dfefe49087b99b7f2caa78c655 - '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.27.0-alpha.0_ba3f00dfefe49087b99b7f2caa78c655 - '@aws-cdk/aws-appsync-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c - '@aws-cdk/aws-lambda-python-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c - '@jest/types': 29.3.1 + '@aws-cdk/aws-amplify-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a + '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a + '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e + '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e + '@aws-cdk/aws-appsync-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a + '@aws-cdk/aws-lambda-python-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a flatted: 3.2.5 pluralize: 8.0.0 source-map-support: 0.5.21 devDependencies: - '@aws-cdk/assert': 2.27.0_022a461049faa5b34fedfbe097b6ee4a - '@commitlint/cli': 17.0.2 - '@commitlint/config-conventional': 17.0.2 - '@types/jest': 28.1.1 - '@types/node': 17.0.41 + '@aws-cdk/assert': 2.13.0_e899eddb210d099498d0df86b34847a7 + '@commitlint/cli': 16.2.1 + '@commitlint/config-conventional': 16.2.1 + '@types/jest': 27.4.1 + '@types/node': 17.0.18 '@types/pluralize': 0.0.29 - '@typescript-eslint/eslint-plugin': 5.27.1_043f48e0ee10c350c28cdede89899bc7 - '@typescript-eslint/parser': 5.27.1_eslint@8.17.0+typescript@4.7.3 - aws-cdk-lib: 2.27.0_constructs@10.1.32 - constructs: 10.1.32 - esbuild: 0.15.13 - eslint: 8.17.0 + '@typescript-eslint/eslint-plugin': 5.10.2_2595c2126aec4d4b6e944b931dabb4c2 + '@typescript-eslint/parser': 5.10.2_eslint@8.8.0+typescript@4.5.5 + aws-cdk-lib: 2.13.0_constructs@10.0.66 + constructs: 10.0.66 + eslint: 8.8.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.7.1_de2e8b5f32821e366389b4575f54c566 - eslint-plugin-import: 2.26.0_eslint@8.17.0 - husky: 8.0.1 - jest: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 - standard-version: 9.5.0 - ts-jest: 28.0.4_fc6c8d6d53ecb8477a2480d0844756ba - ts-node: 10.8.1_2f4904d2ea745e9acb99fb2a8412b575 - typescript: 4.7.3 + eslint-import-resolver-typescript: 2.5.0_392f898cec7735a5f7a99430cbc0b4f4 + eslint-plugin-import: 2.25.4_eslint@8.8.0 + husky: 7.0.4 + jest: 27.5.1_ts-node@10.5.0 + standard-version: 9.3.2 + ts-jest: 27.1.3_8fa130d172bf7d71653f05507c50c5a3 + ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 + typescript: 4.5.5 packages: - /@ampproject/remapping/2.1.2: - resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - - /@aws-cdk/assert/2.27.0_022a461049faa5b34fedfbe097b6ee4a: - resolution: {integrity: sha512-OU3k7fwhduUl1tAFvIKvsoW7F2Lz+Aq6rxR2enPSBX9aCWk59VCoPV8xDe3RzvGEj2iALYunp7s202S3ai+eVg==} + /@aws-cdk/assert/2.13.0_e899eddb210d099498d0df86b34847a7: + resolution: {integrity: sha512-Q4tRx/g/XWbqLd/L1YgJZTXWmNbNI161RYl0CmwkTRWm1rKQfgkwQ3VqmxjCxcT9gQxJBzKlSe6j5tAG1UpaNg==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.27.0 + aws-cdk-lib: ^2.13.0 constructs: ^10.0.0 jest: '>=26.6.3' dependencies: - '@aws-cdk/cloudformation-diff': 2.27.0 - aws-cdk-lib: 2.27.0_constructs@10.1.32 - constructs: 10.1.32 - jest: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 + '@aws-cdk/cloudformation-diff': 2.13.0 + aws-cdk-lib: 2.13.0_constructs@10.0.66 + constructs: 10.0.66 + jest: 27.5.1_ts-node@10.5.0 dev: true - /@aws-cdk/aws-amplify-alpha/2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c: - resolution: {integrity: sha512-cuP5V7AoQHXsiPcn5YPHntPeD+22j6Oe0yb6hQPN2L8hZZGSysqsn12nVEVvg7Wtx8xDDSOzvNnU7VeY87fS4g==} + /@aws-cdk/aws-amplify-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: + resolution: {integrity: sha512-wDRc0dblM7onOUGk9CxMchBOGnieapmFNwWEIH5yZJ6KCufUR1RpjfVL0QVF/1XKGI/G3MtHNSt7ogzQljUHig==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.27.0 + aws-cdk-lib: ^2.13.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.27.0_constructs@10.1.32 - constructs: 10.1.32 + aws-cdk-lib: 2.13.0_constructs@10.0.66 + constructs: 10.0.66 + yaml: 1.10.2 dev: false + bundledDependencies: + - yaml - /@aws-cdk/aws-apigatewayv2-alpha/2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c: - resolution: {integrity: sha512-e0VsZANE8qNiAznRW5m7soHivcsyJoKhkHSVg9WRTTIwS0rZEty7qZH0UjDxq7M2lgIZICaLWAyJOWvGpHEqIA==} + /@aws-cdk/aws-apigatewayv2-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: + resolution: {integrity: sha512-IEMJzaoov/qxvWLCN+hLv+mowmGLlNxodSeApYJJdbvk9E6OkdWN9bDfmJWnqdBuuQAqjJCUl/377LLB9lHnvw==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.27.0 + aws-cdk-lib: ^2.13.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.27.0_constructs@10.1.32 - constructs: 10.1.32 + aws-cdk-lib: 2.13.0_constructs@10.0.66 + constructs: 10.0.66 dev: false - /@aws-cdk/aws-apigatewayv2-authorizers-alpha/2.27.0-alpha.0_ba3f00dfefe49087b99b7f2caa78c655: - resolution: {integrity: sha512-RSMvF/l6v50eKDoEZj7rKDdxOv+DSfx+mkWsHPqSkYU70UeWZNJ4a7jRqJ/tzbajxX5GSoRMcEdR1GsrRXTfuw==} + /@aws-cdk/aws-apigatewayv2-authorizers-alpha/2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e: + resolution: {integrity: sha512-7Ii1Ed0++eEIWKtzbm4DSh/yGKXMSjhzeywC6tCGsMKj9mns9hKqmHPr2RvLML4HywdtMUWwH7LP7a6nWWR8MQ==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 - aws-cdk-lib: ^2.27.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 + aws-cdk-lib: ^2.13.0 constructs: ^10.0.0 dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c - aws-cdk-lib: 2.27.0_constructs@10.1.32 - constructs: 10.1.32 + '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a + aws-cdk-lib: 2.13.0_constructs@10.0.66 + constructs: 10.0.66 dev: false - /@aws-cdk/aws-apigatewayv2-integrations-alpha/2.27.0-alpha.0_ba3f00dfefe49087b99b7f2caa78c655: - resolution: {integrity: sha512-AL3Ps0hPV8zRcI8k2wW4uTh+k9ZfvjgyUouDOZBaEW0U8PoQOgRj7b0FJbE+zmgbnw3YY2ycoCSpTfVbN3Akdg==} + /@aws-cdk/aws-apigatewayv2-integrations-alpha/2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e: + resolution: {integrity: sha512-Tq38ftHdcZIFsuiSfUzhZKrq7mvGyDU5D1pSEZNwgfWEuYnAHGBRQELuyEHUWvXIQNoC11axV/7i2Wh/2y+USQ==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 - aws-cdk-lib: ^2.27.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 + aws-cdk-lib: ^2.13.0 constructs: ^10.0.0 dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c - aws-cdk-lib: 2.27.0_constructs@10.1.32 - constructs: 10.1.32 + '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a + aws-cdk-lib: 2.13.0_constructs@10.0.66 + constructs: 10.0.66 dev: false - /@aws-cdk/aws-appsync-alpha/2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c: - resolution: {integrity: sha512-z7JNdK1BUGbe70KaDa2Hu69uIn3FG9GUJZ+mKyL0HW7r4PAtdmXSPKVumRa5niR/x6eaxtWvcAXaADNEYht4VQ==} + /@aws-cdk/aws-appsync-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: + resolution: {integrity: sha512-/wAT5azT6H867uczIqFIeJxS4GrtghkqN5J9QlNOHASDyBRkQOvH6EBjk6WHii4fqql1stbEA92ae07+jRKLJQ==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.27.0 + aws-cdk-lib: ^2.13.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.27.0_constructs@10.1.32 - constructs: 10.1.32 + aws-cdk-lib: 2.13.0_constructs@10.0.66 + constructs: 10.0.66 dev: false - /@aws-cdk/aws-lambda-python-alpha/2.27.0-alpha.0_0980ab4a18f5f17ba07f2a19d1590f1c: - resolution: {integrity: sha512-dgiwY4pjTMxAB1IlsyH+dmAgM/g+sfGfrdgsdr6rlHvR/ROE/MGbGBg70YBGZlhiW+qSjeWepp6jgDWxtkN50A==} + /@aws-cdk/aws-lambda-python-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: + resolution: {integrity: sha512-V+aGUkmbpvSRb6ik8CEyRaE6VnVRfHxDDcBm1lkilgIMBWZtGxLBY6bjYVNBliHfMroeXbTYjObttj36hDz6/w==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.27.0 + aws-cdk-lib: ^2.13.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.27.0_constructs@10.1.32 - constructs: 10.1.32 + aws-cdk-lib: 2.13.0_constructs@10.0.66 + constructs: 10.0.66 dev: false - /@aws-cdk/cfnspec/2.27.0: - resolution: {integrity: sha512-ankMDOeTijS1hVM668eJP7SDLlWI3cfZIN/Khx88je16IH6nSe4EbcvR4dTswMC4aTwcrJt/IMh202T3qdLQgA==} + /@aws-cdk/cfnspec/2.13.0: + resolution: {integrity: sha512-+ZV6egnKjLtuLxK0kOd+WRQ8lDiQF+Ll1UYTuf47WyF0xoAkuJxV2sFm36tGGLtEgV3bY452m1Aiik5i25pWJw==} dependencies: fs-extra: 9.1.0 md5: 2.3.0 dev: true - /@aws-cdk/cloudformation-diff/2.27.0: - resolution: {integrity: sha512-4yRycQQYtYbPmWaXJv8K1CVmJ4gWJc+3aPBecdr2DdM+brNASlDuu+VeuSKd+xrYSRgDSlj9eWGQIMIig4yEXg==} + /@aws-cdk/cloudformation-diff/2.13.0: + resolution: {integrity: sha512-TMxM5h6eME30j0XTlnJPdXO8zobQJdSiFTHJfS/4MwV2ee/ILsJoGz53Pd/5l030hIct9H54R/UpXSW7DUBXUA==} engines: {node: '>= 14.15.0'} dependencies: - '@aws-cdk/cfnspec': 2.27.0 + '@aws-cdk/cfnspec': 2.13.0 '@types/node': 10.17.60 chalk: 4.1.2 diff: 5.0.0 @@ -181,316 +173,340 @@ packages: table: 6.8.0 dev: true - /@babel/code-frame/7.16.7: - resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} + /@babel/code-frame/7.14.5: + resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.17.9 + '@babel/highlight': 7.14.5 dev: true - /@babel/compat-data/7.17.7: - resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} + /@babel/compat-data/7.15.0: + resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.17.9: - resolution: {integrity: sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==} + /@babel/core/7.15.5: + resolution: {integrity: sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.1.2 - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.9 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.9 - '@babel/helper-module-transforms': 7.17.7 - '@babel/helpers': 7.17.9 - '@babel/parser': 7.17.9 - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/code-frame': 7.14.5 + '@babel/generator': 7.15.4 + '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.5 + '@babel/helper-module-transforms': 7.15.4 + '@babel/helpers': 7.15.4 + '@babel/parser': 7.15.6 + '@babel/template': 7.15.4 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.6 convert-source-map: 1.8.0 - debug: 4.3.4 + debug: 4.3.2 gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.0 semver: 6.3.0 + source-map: 0.5.7 transitivePeerDependencies: - supports-color dev: true - /@babel/generator/7.17.9: - resolution: {integrity: sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==} + /@babel/generator/7.15.4: + resolution: {integrity: sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 jsesc: 2.5.2 source-map: 0.5.7 dev: true - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.9: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} + /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.5: + resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.17.9 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.2 + '@babel/compat-data': 7.15.0 + '@babel/core': 7.15.5 + '@babel/helper-validator-option': 7.14.5 + browserslist: 4.17.0 semver: 6.3.0 dev: true - /@babel/helper-environment-visitor/7.16.7: - resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} + /@babel/helper-function-name/7.15.4: + resolution: {integrity: sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-get-function-arity': 7.15.4 + '@babel/template': 7.15.4 + '@babel/types': 7.15.6 + dev: true + + /@babel/helper-get-function-arity/7.15.4: + resolution: {integrity: sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 dev: true - /@babel/helper-function-name/7.17.9: - resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} + /@babel/helper-hoist-variables/7.15.4: + resolution: {integrity: sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.16.7 - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 dev: true - /@babel/helper-hoist-variables/7.16.7: - resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} + /@babel/helper-member-expression-to-functions/7.15.4: + resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 dev: true - /@babel/helper-module-imports/7.16.7: - resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} + /@babel/helper-module-imports/7.15.4: + resolution: {integrity: sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 dev: true - /@babel/helper-module-transforms/7.17.7: - resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} + /@babel/helper-module-transforms/7.15.4: + resolution: {integrity: sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.17.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/helper-validator-identifier': 7.16.7 - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/helper-module-imports': 7.15.4 + '@babel/helper-replace-supers': 7.15.4 + '@babel/helper-simple-access': 7.15.4 + '@babel/helper-split-export-declaration': 7.15.4 + '@babel/helper-validator-identifier': 7.14.9 + '@babel/template': 7.15.4 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-plugin-utils/7.16.7: - resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} + /@babel/helper-optimise-call-expression/7.15.4: + resolution: {integrity: sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.6 + dev: true + + /@babel/helper-plugin-utils/7.14.5: + resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.17.7: - resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} + /@babel/helper-replace-supers/7.15.4: + resolution: {integrity: sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-member-expression-to-functions': 7.15.4 + '@babel/helper-optimise-call-expression': 7.15.4 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.15.4: + resolution: {integrity: sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 dev: true - /@babel/helper-split-export-declaration/7.16.7: - resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} + /@babel/helper-split-export-declaration/7.15.4: + resolution: {integrity: sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 dev: true - /@babel/helper-validator-identifier/7.16.7: - resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + /@babel/helper-validator-identifier/7.14.9: + resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.16.7: - resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} + /@babel/helper-validator-option/7.14.5: + resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.17.9: - resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} + /@babel/helpers/7.15.4: + resolution: {integrity: sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/template': 7.15.4 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.6 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight/7.17.9: - resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} + /@babel/highlight/7.14.5: + resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-validator-identifier': 7.14.9 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser/7.17.9: - resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==} + /@babel/parser/7.15.6: + resolution: {integrity: sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.17.0 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.9: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.15.5: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.17.9: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.15.5: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.9: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.15.5: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.9: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.15.5: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.9: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.15.5: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.9: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.15.5: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.9: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.15.5: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.9: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.15.5: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.9: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.15.5: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.9: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.15.5: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.9: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.15.5: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.9: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.15.5: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.9: - resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} + /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.15.5: + resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.9 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.15.5 + '@babel/helper-plugin-utils': 7.14.5 dev: true - /@babel/template/7.16.7: - resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} + /@babel/template/7.15.4: + resolution: {integrity: sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/parser': 7.17.9 - '@babel/types': 7.17.0 + '@babel/code-frame': 7.14.5 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 dev: true - /@babel/traverse/7.17.9: - resolution: {integrity: sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==} + /@babel/traverse/7.15.4: + resolution: {integrity: sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.9 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.17.9 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.17.9 - '@babel/types': 7.17.0 - debug: 4.3.4 + '@babel/code-frame': 7.14.5 + '@babel/generator': 7.15.4 + '@babel/helper-function-name': 7.15.4 + '@babel/helper-hoist-variables': 7.15.4 + '@babel/helper-split-export-declaration': 7.15.4 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 + debug: 4.3.2 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.17.0: - resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + /@babel/types/7.15.6: + resolution: {integrity: sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-validator-identifier': 7.14.9 to-fast-properties: 2.0.0 dev: true @@ -502,202 +518,186 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@commitlint/cli/17.0.2: - resolution: {integrity: sha512-Axe89Js0YzGGd4gxo3JLlF7yIdjOVpG1LbOorGc6PfYF+drBh14PvarSDLzyd2TNqdylUCq9wb9/A88ZjIdyhA==} - engines: {node: '>=v14'} + /@commitlint/cli/16.2.1: + resolution: {integrity: sha512-zfKf+B9osuiDbxGMJ7bWFv7XFCW8wlQYPtCffNp7Ukdb7mdrep5R9e03vPUZysnwp8NX6hg05kPEvnD/wRIGWw==} + engines: {node: '>=v12'} hasBin: true dependencies: - '@commitlint/format': 17.0.0 - '@commitlint/lint': 17.2.0 - '@commitlint/load': 17.2.0 - '@commitlint/read': 17.2.0 - '@commitlint/types': 17.0.0 - execa: 5.1.1 + '@commitlint/format': 16.2.1 + '@commitlint/lint': 16.2.1 + '@commitlint/load': 16.2.1 + '@commitlint/read': 16.2.1 + '@commitlint/types': 16.2.1 lodash: 4.17.21 resolve-from: 5.0.0 resolve-global: 1.0.0 - yargs: 17.4.1 + yargs: 17.3.1 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/config-conventional/17.0.2: - resolution: {integrity: sha512-MfP0I/JbxKkzo+HXWB7B3WstGS4BiniotU3d3xQ9gK8cR0DbeZ4MuyGCWF65YDyrcDTS3WlrJ3ndSPA1pqhoPw==} - engines: {node: '>=v14'} + /@commitlint/config-conventional/16.2.1: + resolution: {integrity: sha512-cP9gArx7gnaj4IqmtCIcHdRjTYdRUi6lmGE+lOzGGjGe45qGOS8nyQQNvkNy2Ey2VqoSWuXXkD8zCUh6EHf1Ww==} + engines: {node: '>=v12'} dependencies: - conventional-changelog-conventionalcommits: 5.0.0 + conventional-changelog-conventionalcommits: 4.6.3 dev: true - /@commitlint/config-validator/17.1.0: - resolution: {integrity: sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==} - engines: {node: '>=v14'} + /@commitlint/config-validator/16.2.1: + resolution: {integrity: sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw==} + engines: {node: '>=v12'} dependencies: - '@commitlint/types': 17.0.0 - ajv: 8.11.0 + '@commitlint/types': 16.2.1 + ajv: 6.12.6 dev: true - /@commitlint/ensure/17.0.0: - resolution: {integrity: sha512-M2hkJnNXvEni59S0QPOnqCKIK52G1XyXBGw51mvh7OXDudCmZ9tZiIPpU882p475Mhx48Ien1MbWjCP1zlyC0A==} - engines: {node: '>=v14'} + /@commitlint/ensure/16.2.1: + resolution: {integrity: sha512-/h+lBTgf1r5fhbDNHOViLuej38i3rZqTQnBTk+xEg+ehOwQDXUuissQ5GsYXXqI5uGy+261ew++sT4EA3uBJ+A==} + engines: {node: '>=v12'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 16.2.1 lodash: 4.17.21 dev: true - /@commitlint/execute-rule/17.0.0: - resolution: {integrity: sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==} - engines: {node: '>=v14'} + /@commitlint/execute-rule/16.2.1: + resolution: {integrity: sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g==} + engines: {node: '>=v12'} dev: true - /@commitlint/format/17.0.0: - resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==} - engines: {node: '>=v14'} + /@commitlint/format/16.2.1: + resolution: {integrity: sha512-Yyio9bdHWmNDRlEJrxHKglamIk3d6hC0NkEUW6Ti6ipEh2g0BAhy8Od6t4vLhdZRa1I2n+gY13foy+tUgk0i1Q==} + engines: {node: '>=v12'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 16.2.1 chalk: 4.1.2 dev: true - /@commitlint/is-ignored/17.2.0: - resolution: {integrity: sha512-rgUPUQraHxoMLxiE8GK430HA7/R2vXyLcOT4fQooNrZq9ERutNrP6dw3gdKLkq22Nede3+gEHQYUzL4Wu75ndg==} - engines: {node: '>=v14'} + /@commitlint/is-ignored/16.2.1: + resolution: {integrity: sha512-exl8HRzTIfb1YvDJp2b2HU5z1BT+9tmgxR2XF0YEzkMiCIuEKh+XLeocPr1VcvAKXv3Cmv5X/OfNRp+i+/HIhQ==} + engines: {node: '>=v12'} dependencies: - '@commitlint/types': 17.0.0 - semver: 7.3.7 + '@commitlint/types': 16.2.1 + semver: 7.3.5 dev: true - /@commitlint/lint/17.2.0: - resolution: {integrity: sha512-N2oLn4Dj672wKH5qJ4LGO+73UkYXGHO+NTVUusGw83SjEv7GjpqPGKU6KALW2kFQ/GsDefSvOjpSi3CzWHQBDg==} - engines: {node: '>=v14'} + /@commitlint/lint/16.2.1: + resolution: {integrity: sha512-fNINQ3X2ZqsCkNB3Z0Z8ElmhewqrS3gy2wgBTx97BkcjOWiyPAGwDJ752hwrsUnWAVBRztgw826n37xPzxsOgg==} + engines: {node: '>=v12'} dependencies: - '@commitlint/is-ignored': 17.2.0 - '@commitlint/parse': 17.2.0 - '@commitlint/rules': 17.2.0 - '@commitlint/types': 17.0.0 + '@commitlint/is-ignored': 16.2.1 + '@commitlint/parse': 16.2.1 + '@commitlint/rules': 16.2.1 + '@commitlint/types': 16.2.1 dev: true - /@commitlint/load/17.2.0: - resolution: {integrity: sha512-HDD57qSqNrk399R4TIjw31AWBG8dBjNj1MrDKZKmC/wvimtnIFlqzcu1+sxfXIOHj/+M6tcMWDtvknGUd7SU+g==} - engines: {node: '>=v14'} + /@commitlint/load/16.2.1: + resolution: {integrity: sha512-oSpz0jTyVI/A1AIImxJINTLDOMB8YF7lWGm+Jg5wVWM0r7ucpuhyViVvpSRTgvL0z09oIxlctyFGWUQQpI42uw==} + engines: {node: '>=v12'} dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/execute-rule': 17.0.0 - '@commitlint/resolve-extends': 17.1.0 - '@commitlint/types': 17.0.0 - '@types/node': 14.18.33 + '@commitlint/config-validator': 16.2.1 + '@commitlint/execute-rule': 16.2.1 + '@commitlint/resolve-extends': 16.2.1 + '@commitlint/types': 16.2.1 + '@types/node': 17.0.18 chalk: 4.1.2 cosmiconfig: 7.0.1 - cosmiconfig-typescript-loader: 4.2.0_d125882cb23688d4a62106962c534e3b + cosmiconfig-typescript-loader: 1.0.5_f3bd4037939c2ed2942ba074291f8ef2 lodash: 4.17.21 resolve-from: 5.0.0 - ts-node: 10.8.1_cf2a114464063a7ac56422e5bb88c1db - typescript: 4.7.3 + typescript: 4.5.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/17.2.0: - resolution: {integrity: sha512-/4l2KFKxBOuoEn1YAuuNNlAU05Zt7sNsC9H0mPdPm3chOrT4rcX0pOqrQcLtdMrMkJz0gC7b3SF80q2+LtdL9Q==} - engines: {node: '>=v14'} + /@commitlint/message/16.2.1: + resolution: {integrity: sha512-2eWX/47rftViYg7a3axYDdrgwKv32mxbycBJT6OQY/MJM7SUfYNYYvbMFOQFaA4xIVZt7t2Alyqslbl6blVwWw==} + engines: {node: '>=v12'} dev: true - /@commitlint/parse/17.2.0: - resolution: {integrity: sha512-vLzLznK9Y21zQ6F9hf8D6kcIJRb2haAK5T/Vt1uW2CbHYOIfNsR/hJs0XnF/J9ctM20Tfsqv4zBitbYvVw7F6Q==} - engines: {node: '>=v14'} + /@commitlint/parse/16.2.1: + resolution: {integrity: sha512-2NP2dDQNL378VZYioLrgGVZhWdnJO4nAxQl5LXwYb08nEcN+cgxHN1dJV8OLJ5uxlGJtDeR8UZZ1mnQ1gSAD/g==} + engines: {node: '>=v12'} dependencies: - '@commitlint/types': 17.0.0 + '@commitlint/types': 16.2.1 conventional-changelog-angular: 5.0.13 conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/17.2.0: - resolution: {integrity: sha512-bbblBhrHkjxra3ptJNm0abxu7yeAaxumQ8ZtD6GIVqzURCETCP7Dm0tlVvGRDyXBuqX6lIJxh3W7oyKqllDsHQ==} - engines: {node: '>=v14'} + /@commitlint/read/16.2.1: + resolution: {integrity: sha512-tViXGuaxLTrw2r7PiYMQOFA2fueZxnnt0lkOWqKyxT+n2XdEMGYcI9ID5ndJKXnfPGPppD0w/IItKsIXlZ+alw==} + engines: {node: '>=v12'} dependencies: - '@commitlint/top-level': 17.0.0 - '@commitlint/types': 17.0.0 - fs-extra: 10.1.0 + '@commitlint/top-level': 16.2.1 + '@commitlint/types': 16.2.1 + fs-extra: 10.0.0 git-raw-commits: 2.0.11 - minimist: 1.2.6 dev: true - /@commitlint/resolve-extends/17.1.0: - resolution: {integrity: sha512-jqKm00LJ59T0O8O4bH4oMa4XyJVEOK4GzH8Qye9XKji+Q1FxhZznxMV/bDLyYkzbTodBt9sL0WLql8wMtRTbqQ==} - engines: {node: '>=v14'} + /@commitlint/resolve-extends/16.2.1: + resolution: {integrity: sha512-NbbCMPKTFf2J805kwfP9EO+vV+XvnaHRcBy6ud5dF35dxMsvdJqke54W3XazXF1ZAxC4a3LBy4i/GNVBAthsEg==} + engines: {node: '>=v12'} dependencies: - '@commitlint/config-validator': 17.1.0 - '@commitlint/types': 17.0.0 + '@commitlint/config-validator': 16.2.1 + '@commitlint/types': 16.2.1 import-fresh: 3.3.0 lodash: 4.17.21 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules/17.2.0: - resolution: {integrity: sha512-1YynwD4Eh7HXZNpqG8mtUlL2pSX2jBy61EejYJv4ooZPcg50Ak7LPOyD3a9UZnsE76AXWFBz+yo9Hv4MIpAa0Q==} - engines: {node: '>=v14'} + /@commitlint/rules/16.2.1: + resolution: {integrity: sha512-ZFezJXQaBBso+BOTre/+1dGCuCzlWVaeLiVRGypI53qVgPMzQqZhkCcrxBFeqB87qeyzr4A4EoG++IvITwwpIw==} + engines: {node: '>=v12'} dependencies: - '@commitlint/ensure': 17.0.0 - '@commitlint/message': 17.2.0 - '@commitlint/to-lines': 17.0.0 - '@commitlint/types': 17.0.0 + '@commitlint/ensure': 16.2.1 + '@commitlint/message': 16.2.1 + '@commitlint/to-lines': 16.2.1 + '@commitlint/types': 16.2.1 execa: 5.1.1 dev: true - /@commitlint/to-lines/17.0.0: - resolution: {integrity: sha512-nEi4YEz04Rf2upFbpnEorG8iymyH7o9jYIVFBG1QdzebbIFET3ir+8kQvCZuBE5pKCtViE4XBUsRZz139uFrRQ==} - engines: {node: '>=v14'} + /@commitlint/to-lines/16.2.1: + resolution: {integrity: sha512-9/VjpYj5j1QeY3eiog1zQWY6axsdWAc0AonUUfyZ7B0MVcRI0R56YsHAfzF6uK/g/WwPZaoe4Lb1QCyDVnpVaQ==} + engines: {node: '>=v12'} dev: true - /@commitlint/top-level/17.0.0: - resolution: {integrity: sha512-dZrEP1PBJvodNWYPOYiLWf6XZergdksKQaT6i1KSROLdjf5Ai0brLOv5/P+CPxBeoj3vBxK4Ax8H1Pg9t7sHIQ==} - engines: {node: '>=v14'} + /@commitlint/top-level/16.2.1: + resolution: {integrity: sha512-lS6GSieHW9y6ePL73ied71Z9bOKyK+Ib9hTkRsB8oZFAyQZcyRwq2w6nIa6Fngir1QW51oKzzaXfJL94qwImyw==} + engines: {node: '>=v12'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/17.0.0: - resolution: {integrity: sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==} - engines: {node: '>=v14'} + /@commitlint/types/16.2.1: + resolution: {integrity: sha512-7/z7pA7BM0i8XvMSBynO7xsB3mVQPUZbVn6zMIlp/a091XJ3qAXRXc+HwLYhiIdzzS5fuxxNIHZMGHVD4HJxdA==} + engines: {node: '>=v12'} dependencies: chalk: 4.1.2 dev: true - /@cspotcode/source-map-support/0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - - /@esbuild/android-arm/0.15.13: - resolution: {integrity: sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true + /@cspotcode/source-map-consumer/0.8.0: + resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} + engines: {node: '>= 12'} dev: true - optional: true - /@esbuild/linux-loong64/0.15.13: - resolution: {integrity: sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==} + /@cspotcode/source-map-support/0.7.0: + resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true + dependencies: + '@cspotcode/source-map-consumer': 0.8.0 dev: true - optional: true - /@eslint/eslintrc/1.3.0: - resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} + /@eslint/eslintrc/1.1.0: + resolution: {integrity: sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 - espree: 9.3.2 - globals: 13.15.0 - ignore: 5.2.0 + debug: 4.3.2 + espree: 9.3.1 + globals: 13.12.1 + ignore: 4.0.6 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -706,12 +706,12 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array/0.9.5: - resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} + /@humanwhocodes/config-array/0.9.3: + resolution: {integrity: sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.2 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -742,114 +742,97 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/28.1.1: - resolution: {integrity: sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/console/27.5.1: + resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 28.1.1 - '@types/node': 17.0.41 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 chalk: 4.1.2 - jest-message-util: 28.1.1 - jest-util: 28.1.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 slash: 3.0.0 dev: true - /@jest/core/28.1.1_ts-node@10.8.1: - resolution: {integrity: sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/core/27.5.1_ts-node@10.5.0: + resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true dependencies: - '@jest/console': 28.1.1 - '@jest/reporters': 28.1.1 - '@jest/test-result': 28.1.1 - '@jest/transform': 28.1.1 - '@jest/types': 28.1.1 - '@types/node': 17.0.41 + '@jest/console': 27.5.1 + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.3.0 + emittery: 0.8.1 exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 28.0.2 - jest-config: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 - jest-haste-map: 28.1.1 - jest-message-util: 28.1.1 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.1 - jest-resolve-dependencies: 28.1.1 - jest-runner: 28.1.1 - jest-runtime: 28.1.1 - jest-snapshot: 28.1.1 - jest-util: 28.1.1 - jest-validate: 28.1.1 - jest-watcher: 28.1.1 - micromatch: 4.0.5 - pretty-format: 28.1.1 + graceful-fs: 4.2.9 + jest-changed-files: 27.5.1 + jest-config: 27.5.1_ts-node@10.5.0 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-resolve-dependencies: 27.5.1 + jest-runner: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + jest-watcher: 27.5.1 + micromatch: 4.0.4 rimraf: 3.0.2 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: + - bufferutil + - canvas - supports-color - ts-node + - utf-8-validate dev: true - /@jest/environment/28.1.1: - resolution: {integrity: sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/fake-timers': 28.1.1 - '@jest/types': 28.1.1 - '@types/node': 17.0.41 - jest-mock: 28.1.1 - dev: true - - /@jest/expect-utils/28.1.1: - resolution: {integrity: sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - jest-get-type: 28.0.2 - dev: true - - /@jest/expect/28.1.1: - resolution: {integrity: sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/environment/27.5.1: + resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - expect: 28.1.1 - jest-snapshot: 28.1.1 - transitivePeerDependencies: - - supports-color + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 + jest-mock: 27.5.1 dev: true - /@jest/fake-timers/28.1.1: - resolution: {integrity: sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/fake-timers/27.5.1: + resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 28.1.1 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 17.0.41 - jest-message-util: 28.1.1 - jest-mock: 28.1.1 - jest-util: 28.1.1 + '@jest/types': 27.5.1 + '@sinonjs/fake-timers': 8.0.1 + '@types/node': 17.0.18 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-util: 27.5.1 dev: true - /@jest/globals/28.1.1: - resolution: {integrity: sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/globals/27.5.1: + resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 28.1.1 - '@jest/expect': 28.1.1 - '@jest/types': 28.1.1 - transitivePeerDependencies: - - supports-color + '@jest/environment': 27.5.1 + '@jest/types': 27.5.1 + expect: 27.5.1 dev: true - /@jest/reporters/28.1.1: - resolution: {integrity: sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/reporters/27.5.1: + resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -857,138 +840,97 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 28.1.1 - '@jest/test-result': 28.1.1 - '@jest/transform': 28.1.1 - '@jest/types': 28.1.1 - '@jridgewell/trace-mapping': 0.3.9 - '@types/node': 17.0.41 + '@jest/console': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.0 - graceful-fs: 4.2.10 - istanbul-lib-coverage: 3.2.0 + graceful-fs: 4.2.9 + istanbul-lib-coverage: 3.0.0 istanbul-lib-instrument: 5.1.0 istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 + istanbul-lib-source-maps: 4.0.0 istanbul-reports: 3.1.4 - jest-message-util: 28.1.1 - jest-util: 28.1.1 - jest-worker: 28.1.1 + jest-haste-map: 27.5.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 slash: 3.0.0 + source-map: 0.6.1 string-length: 4.0.2 - strip-ansi: 6.0.1 terminal-link: 2.1.1 - v8-to-istanbul: 9.0.0 + v8-to-istanbul: 8.1.0 transitivePeerDependencies: - supports-color dev: true - /@jest/schemas/28.0.2: - resolution: {integrity: sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@sinclair/typebox': 0.23.5 - dev: true - - /@jest/schemas/29.0.0: - resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.24.51 - dev: false - - /@jest/source-map/28.0.2: - resolution: {integrity: sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/source-map/27.5.1: + resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.9 callsites: 3.1.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.9 + source-map: 0.6.1 dev: true - /@jest/test-result/28.1.1: - resolution: {integrity: sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/test-result/27.5.1: + resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/console': 28.1.1 - '@jest/types': 28.1.1 - '@types/istanbul-lib-coverage': 2.0.4 + '@jest/console': 27.5.1 + '@jest/types': 27.5.1 + '@types/istanbul-lib-coverage': 2.0.3 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/28.1.1: - resolution: {integrity: sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/test-sequencer/27.5.1: + resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/test-result': 28.1.1 - graceful-fs: 4.2.10 - jest-haste-map: 28.1.1 - slash: 3.0.0 + '@jest/test-result': 27.5.1 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-runtime: 27.5.1 + transitivePeerDependencies: + - supports-color dev: true - /@jest/transform/28.1.1: - resolution: {integrity: sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/transform/27.5.1: + resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.17.9 - '@jest/types': 28.1.1 - '@jridgewell/trace-mapping': 0.3.9 + '@babel/core': 7.15.5 + '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 28.1.1 - jest-regex-util: 28.0.2 - jest-util: 28.1.1 - micromatch: 4.0.5 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + micromatch: 4.0.4 pirates: 4.0.5 slash: 3.0.0 - write-file-atomic: 4.0.1 + source-map: 0.6.1 + write-file-atomic: 3.0.3 transitivePeerDependencies: - supports-color dev: true - /@jest/types/28.1.1: - resolution: {integrity: sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/schemas': 28.0.2 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.41 - '@types/yargs': 17.0.10 - chalk: 4.1.2 - dev: true - - /@jest/types/29.3.1: - resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@jest/types/27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/schemas': 29.0.0 - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.3 '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.41 - '@types/yargs': 17.0.10 + '@types/node': 17.0.18 + '@types/yargs': 16.0.4 chalk: 4.1.2 - dev: false - - /@jridgewell/resolve-uri/3.0.5: - resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec/1.4.11: - resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} - dev: true - - /@jridgewell/trace-mapping/0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.0.5 - '@jridgewell/sourcemap-codec': 1.4.11 dev: true /@nodelib/fs.scandir/2.1.5: @@ -1012,26 +954,23 @@ packages: fastq: 1.13.0 dev: true - /@sinclair/typebox/0.23.5: - resolution: {integrity: sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==} - dev: true - - /@sinclair/typebox/0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} - dev: false - /@sinonjs/commons/1.8.3: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + /@sinonjs/fake-timers/8.0.1: + resolution: {integrity: sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==} dependencies: '@sinonjs/commons': 1.8.3 dev: true + /@tootallnate/once/1.1.2: + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + dev: true + /@tsconfig/node10/1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} dev: true @@ -1048,63 +987,66 @@ packages: resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} dev: true - /@types/babel__core/7.1.19: - resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} + /@types/babel__core/7.1.16: + resolution: {integrity: sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==} dependencies: - '@babel/parser': 7.17.9 - '@babel/types': 7.17.0 - '@types/babel__generator': 7.6.4 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 + '@types/babel__generator': 7.6.3 '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.17.0 + '@types/babel__traverse': 7.14.2 dev: true - /@types/babel__generator/7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@types/babel__generator/7.6.3: + resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.17.9 - '@babel/types': 7.17.0 + '@babel/parser': 7.15.6 + '@babel/types': 7.15.6 dev: true - /@types/babel__traverse/7.17.0: - resolution: {integrity: sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==} + /@types/babel__traverse/7.14.2: + resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.15.6 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 17.0.41 + '@types/node': 17.0.18 dev: true - /@types/istanbul-lib-coverage/2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + /@types/istanbul-lib-coverage/2.0.3: + resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==} + dev: true /@types/istanbul-lib-report/3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.3 + dev: true /@types/istanbul-reports/3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 + dev: true - /@types/jest/28.1.1: - resolution: {integrity: sha512-C2p7yqleUKtCkVjlOur9BWVA4HgUQmEj/HWCt5WzZ5mLXrWnyIfl0wGuArc+kBXsy0ZZfLp+7dywB4HtSVYGVA==} + /@types/jest/27.4.1: + resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} dependencies: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 dev: true - /@types/json-schema/7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + /@types/json-schema/7.0.9: + resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} dev: true /@types/json5/0.0.29: @@ -1119,13 +1061,10 @@ packages: resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} dev: true - /@types/node/14.18.33: - resolution: {integrity: sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==} + /@types/node/17.0.18: + resolution: {integrity: sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==} dev: true - /@types/node/17.0.41: - resolution: {integrity: sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw==} - /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -1138,24 +1077,26 @@ packages: resolution: {integrity: sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==} dev: true - /@types/prettier/2.6.0: - resolution: {integrity: sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==} + /@types/prettier/2.3.2: + resolution: {integrity: sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==} dev: true /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + /@types/yargs-parser/20.2.1: + resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==} + dev: true - /@types/yargs/17.0.10: - resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} + /@types/yargs/16.0.4: + resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} dependencies: - '@types/yargs-parser': 21.0.0 + '@types/yargs-parser': 20.2.1 + dev: true - /@typescript-eslint/eslint-plugin/5.27.1_043f48e0ee10c350c28cdede89899bc7: - resolution: {integrity: sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==} + /@typescript-eslint/eslint-plugin/5.10.2_2595c2126aec4d4b6e944b931dabb4c2: + resolution: {integrity: sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1165,24 +1106,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.27.1_eslint@8.17.0+typescript@4.7.3 - '@typescript-eslint/scope-manager': 5.27.1 - '@typescript-eslint/type-utils': 5.27.1_eslint@8.17.0+typescript@4.7.3 - '@typescript-eslint/utils': 5.27.1_eslint@8.17.0+typescript@4.7.3 - debug: 4.3.4 - eslint: 8.17.0 + '@typescript-eslint/parser': 5.10.2_eslint@8.8.0+typescript@4.5.5 + '@typescript-eslint/scope-manager': 5.10.2 + '@typescript-eslint/type-utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 + '@typescript-eslint/utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 + debug: 4.3.2 + eslint: 8.8.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.3 - typescript: 4.7.3 + semver: 7.3.5 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.27.1_eslint@8.17.0+typescript@4.7.3: - resolution: {integrity: sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==} + /@typescript-eslint/parser/5.10.2_eslint@8.8.0+typescript@4.5.5: + resolution: {integrity: sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1191,26 +1132,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.27.1 - '@typescript-eslint/types': 5.27.1 - '@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.3 - debug: 4.3.4 - eslint: 8.17.0 - typescript: 4.7.3 + '@typescript-eslint/scope-manager': 5.10.2 + '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/typescript-estree': 5.10.2_typescript@4.5.5 + debug: 4.3.2 + eslint: 8.8.0 + typescript: 4.5.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.27.1: - resolution: {integrity: sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==} + /@typescript-eslint/scope-manager/5.10.2: + resolution: {integrity: sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.27.1 - '@typescript-eslint/visitor-keys': 5.27.1 + '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/visitor-keys': 5.10.2 dev: true - /@typescript-eslint/type-utils/5.27.1_eslint@8.17.0+typescript@4.7.3: - resolution: {integrity: sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==} + /@typescript-eslint/type-utils/5.10.2_eslint@8.8.0+typescript@4.5.5: + resolution: {integrity: sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1219,22 +1160,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.27.1_eslint@8.17.0+typescript@4.7.3 - debug: 4.3.4 - eslint: 8.17.0 - tsutils: 3.21.0_typescript@4.7.3 - typescript: 4.7.3 + '@typescript-eslint/utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 + debug: 4.3.2 + eslint: 8.8.0 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.27.1: - resolution: {integrity: sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==} + /@typescript-eslint/types/5.10.2: + resolution: {integrity: sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.27.1_typescript@4.7.3: - resolution: {integrity: sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==} + /@typescript-eslint/typescript-estree/5.10.2_typescript@4.5.5: + resolution: {integrity: sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1242,41 +1183,41 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.27.1 - '@typescript-eslint/visitor-keys': 5.27.1 - debug: 4.3.4 + '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/visitor-keys': 5.10.2 + debug: 4.3.2 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.3 - typescript: 4.7.3 + semver: 7.3.5 + tsutils: 3.21.0_typescript@4.5.5 + typescript: 4.5.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.27.1_eslint@8.17.0+typescript@4.7.3: - resolution: {integrity: sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==} + /@typescript-eslint/utils/5.10.2_eslint@8.8.0+typescript@4.5.5: + resolution: {integrity: sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.27.1 - '@typescript-eslint/types': 5.27.1 - '@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.3 - eslint: 8.17.0 + '@types/json-schema': 7.0.9 + '@typescript-eslint/scope-manager': 5.10.2 + '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/typescript-estree': 5.10.2_typescript@4.5.5 + eslint: 8.8.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.17.0 + eslint-utils: 3.0.0_eslint@8.8.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.27.1: - resolution: {integrity: sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==} + /@typescript-eslint/visitor-keys/5.10.2: + resolution: {integrity: sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.27.1 + '@typescript-eslint/types': 5.10.2 eslint-visitor-keys: 3.3.0 dev: true @@ -1288,12 +1229,28 @@ packages: through: 2.3.8 dev: true - /acorn-jsx/5.3.2_acorn@8.7.1: + /abab/2.0.5: + resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} + dev: true + + /acorn-globals/6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + dev: true + + /acorn-jsx/5.3.2_acorn@8.7.0: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.7.1 + acorn: 8.7.0 + dev: true + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} dev: true /acorn-walk/8.2.0: @@ -1301,20 +1258,35 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn/8.7.0: - resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn/8.5.0: + resolution: {integrity: sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /acorn/8.7.1: - resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} + /acorn/8.7.0: + resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} engines: {node: '>=0.4.0'} hasBin: true dev: true /add-stream/1.0.0: - resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} + resolution: {integrity: sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=} + dev: true + + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.2 + transitivePeerDependencies: + - supports-color dev: true /ajv/6.12.6: @@ -1326,8 +1298,8 @@ packages: uri-js: 4.4.1 dev: true - /ajv/8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + /ajv/8.6.3: + resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -1359,6 +1331,7 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 + dev: true /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -1370,7 +1343,7 @@ packages: engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.0 dev: true /arg/4.1.3: @@ -1388,7 +1361,7 @@ packages: dev: true /array-ify/1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + resolution: {integrity: sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=} dev: true /array-includes/3.1.4: @@ -1396,8 +1369,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.19.5 + define-properties: 1.1.3 + es-abstract: 1.19.1 get-intrinsic: 1.1.1 is-string: 1.0.7 dev: true @@ -1407,18 +1380,17 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.flat/1.3.0: - resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} + /array.prototype.flat/1.2.5: + resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.19.5 - es-shim-unscopables: 1.0.0 + define-properties: 1.1.3 + es-abstract: 1.19.1 dev: true /arrify/1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} engines: {node: '>=0.10.0'} dev: true @@ -1427,26 +1399,30 @@ packages: engines: {node: '>=8'} dev: true + /asynckit/0.4.0: + resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} + dev: true + /at-least-node/1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} dev: true - /aws-cdk-lib/2.27.0_constructs@10.1.32: - resolution: {integrity: sha512-CsTy/+RIBMvP9LlZjkQakkKPpwU50+HAMCMaGOcyIHADDQdXobGcZXTO+Tq00sH2DoQjPV1ZhhBim5z3k/2KXw==} + /aws-cdk-lib/2.13.0_constructs@10.0.66: + resolution: {integrity: sha512-nKpQk+9H7T128gpzl+7XTu+19Yzj6kmCMrvSwTXLa/qr4/soEpXI68/+19ymEAHOYEL4Dd3eyk490P+y0wzi6A==} engines: {node: '>= 14.15.0'} peerDependencies: constructs: ^10.0.0 dependencies: '@balena/dockerignore': 1.0.2 case: 1.6.3 - constructs: 10.1.32 + constructs: 10.0.66 fs-extra: 9.1.0 ignore: 5.2.0 - jsonschema: 1.4.1 + jsonschema: 1.4.0 minimatch: 3.1.2 punycode: 2.1.1 - semver: 7.3.7 + semver: 7.3.5 yaml: 1.10.2 dev: true bundledDependencies: @@ -1460,19 +1436,20 @@ packages: - semver - yaml - /babel-jest/28.1.1_@babel+core@7.17.9: - resolution: {integrity: sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /babel-jest/27.5.1_@babel+core@7.15.5: + resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.17.9 - '@jest/transform': 28.1.1 - '@types/babel__core': 7.1.19 + '@babel/core': 7.15.5 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__core': 7.1.16 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.1_@babel+core@7.17.9 + babel-preset-jest: 27.5.1_@babel+core@7.15.5 chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.9 slash: 3.0.0 transitivePeerDependencies: - supports-color @@ -1482,7 +1459,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.16.7 + '@babel/helper-plugin-utils': 7.14.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.1.0 @@ -1491,45 +1468,45 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/28.1.1: - resolution: {integrity: sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /babel-plugin-jest-hoist/27.5.1: + resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.16.7 - '@babel/types': 7.17.0 - '@types/babel__core': 7.1.19 - '@types/babel__traverse': 7.17.0 + '@babel/template': 7.15.4 + '@babel/types': 7.15.6 + '@types/babel__core': 7.1.16 + '@types/babel__traverse': 7.14.2 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.17.9: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.15.5: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.9 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.9 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.17.9 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.9 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.9 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.9 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.9 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.9 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.9 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.9 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.9 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.9 - dev: true - - /babel-preset-jest/28.1.1_@babel+core@7.17.9: - resolution: {integrity: sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/core': 7.15.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.5 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.15.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.15.5 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.15.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.15.5 + dev: true + + /babel-preset-jest/27.5.1_@babel+core@7.15.5: + resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.9 - babel-plugin-jest-hoist: 28.1.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.9 + '@babel/core': 7.15.5 + babel-plugin-jest-hoist: 27.5.1 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 dev: true /balanced-match/1.0.2: @@ -1550,16 +1527,20 @@ packages: fill-range: 7.0.1 dev: true - /browserslist/4.20.2: - resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} + /browser-process-hrtime/1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + dev: true + + /browserslist/4.17.0: + resolution: {integrity: sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001332 - electron-to-chromium: 1.4.111 + caniuse-lite: 1.0.30001257 + colorette: 1.4.0 + electron-to-chromium: 1.3.838 escalade: 3.1.1 - node-releases: 2.0.3 - picocolors: 1.0.0 + node-releases: 1.1.75 dev: true /bs-logger/0.2.6: @@ -1609,8 +1590,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001332: - resolution: {integrity: sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==} + /caniuse-lite/1.0.30001257: + resolution: {integrity: sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==} dev: true /case/1.6.3: @@ -1633,6 +1614,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true /char-regex/1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} @@ -1643,8 +1625,8 @@ packages: resolution: {integrity: sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=} dev: true - /ci-info/3.3.0: - resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} + /ci-info/3.2.0: + resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==} dev: true /cjs-module-lexer/1.2.2: @@ -1660,7 +1642,7 @@ packages: dev: true /co/4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true @@ -1679,13 +1661,26 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + dev: true /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} dev: true /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette/1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true /compare-func/2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -1695,7 +1690,7 @@ packages: dev: true /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true /concat-stream/2.0.0: @@ -1708,9 +1703,9 @@ packages: typedarray: 0.0.6 dev: true - /constructs/10.1.32: - resolution: {integrity: sha512-ztRzzQqeqfj/LNaw46ctcR/mirjnnj8dVMd5edibwFa1Ih7J0NK2+BHbRhYE93W7Flvhk2cyLE2bNIu1cByHAQ==} - engines: {node: '>= 14.17.0'} + /constructs/10.0.66: + resolution: {integrity: sha512-luFprSllFDm8iEt/irxsWnm8PHNKNNnZ3pV+5PRXDUOnLaWCv6Vwm+7E0IX6pfgiSphOSsWqhA4ReJA+xe0YHg==} + engines: {node: '>= 12.7.0'} dev: true /conventional-changelog-angular/5.0.13: @@ -1739,8 +1734,8 @@ packages: resolution: {integrity: sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==} dev: true - /conventional-changelog-conventionalcommits/4.6.3: - resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} + /conventional-changelog-conventionalcommits/4.6.1: + resolution: {integrity: sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -1748,8 +1743,8 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-conventionalcommits/5.0.0: - resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} + /conventional-changelog-conventionalcommits/4.6.3: + resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -1834,8 +1829,8 @@ packages: through2: 4.0.2 dev: true - /conventional-changelog/3.1.25: - resolution: {integrity: sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==} + /conventional-changelog/3.1.24: + resolution: {integrity: sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==} engines: {node: '>=10'} dependencies: conventional-changelog-angular: 5.0.13 @@ -1897,19 +1892,20 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader/4.2.0_d125882cb23688d4a62106962c534e3b: - resolution: {integrity: sha512-NkANeMnaHrlaSSlpKGyvn2R4rqUDeE/9E5YHx+b4nwo0R8dZyAqcih8/gxpCZvqWP9Vf6xuLpMSzSgdVEIM78g==} + /cosmiconfig-typescript-loader/1.0.5_f3bd4037939c2ed2942ba074291f8ef2: + resolution: {integrity: sha512-FL/YR1nb8hyN0bAcP3MBaIoZravfZtVsN/RuPnoo6UVjqIrDxSNIpXHCGgJe0ZWy5yImpyD6jq5wCJ5f1nUv8g==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 14.18.33 + '@types/node': 17.0.18 cosmiconfig: 7.0.1 - ts-node: 10.8.1_cf2a114464063a7ac56422e5bb88c1db - typescript: 4.7.3 + ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 + typescript: 4.5.5 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' dev: true /cosmiconfig/7.0.1: @@ -1940,11 +1936,35 @@ packages: resolution: {integrity: sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=} dev: true + /cssom/0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom/0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + dev: true + + /cssstyle/2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + /dargs/7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} dev: true + /data-urls/2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + dependencies: + abab: 2.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + dev: true + /dateformat/3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true @@ -1958,11 +1978,11 @@ packages: /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} dependencies: - ms: 2.1.3 + ms: 2.1.2 dev: true - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + /debug/4.3.2: + resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1974,7 +1994,7 @@ packages: dev: true /decamelize-keys/1.1.0: - resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} + resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 @@ -1982,12 +2002,16 @@ packages: dev: true /decamelize/1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} engines: {node: '>=0.10.0'} dev: true + /decimal.js/10.3.1: + resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} + dev: true + /dedent/0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} dev: true /deep-is/0.1.4: @@ -1999,14 +2023,18 @@ packages: engines: {node: '>=0.10.0'} dev: true - /define-properties/1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + /define-properties/1.1.3: + resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} engines: {node: '>= 0.4'} dependencies: - has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true + /delayed-stream/1.0.0: + resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + engines: {node: '>=0.4.0'} + dev: true + /detect-indent/6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2022,11 +2050,6 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /diff-sequences/28.1.1: - resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dev: true - /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -2058,6 +2081,13 @@ packages: esutils: 2.0.3 dev: true + /domexception/2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + dependencies: + webidl-conversions: 5.0.0 + dev: true + /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2073,13 +2103,13 @@ packages: minimatch: 3.1.2 dev: true - /electron-to-chromium/1.4.111: - resolution: {integrity: sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==} + /electron-to-chromium/1.3.838: + resolution: {integrity: sha512-65O6UJiyohFAdX/nc6KJ0xG/4zOn7XCO03kQNNbCeMRGxlWTLzc6Uyi0tFNQuuGWqySZJi8CD2KXPXySVYmzMA==} dev: true - /emittery/0.10.2: - resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} - engines: {node: '>=12'} + /emittery/0.8.1: + resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} + engines: {node: '>=10'} dev: true /emoji-regex/8.0.0: @@ -2092,8 +2122,8 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract/1.19.5: - resolution: {integrity: sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==} + /es-abstract/1.19.1: + resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -2102,12 +2132,12 @@ packages: get-intrinsic: 1.1.1 get-symbol-description: 1.0.0 has: 1.0.3 - has-symbols: 1.0.3 + has-symbols: 1.0.2 internal-slot: 1.0.3 is-callable: 1.2.4 is-negative-zero: 2.0.2 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.1 is-string: 1.0.7 is-weakref: 1.0.2 object-inspect: 1.12.0 @@ -2118,12 +2148,6 @@ packages: unbox-primitive: 1.0.1 dev: true - /es-shim-unscopables/1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: true - /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -2133,223 +2157,13 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-android-64/0.15.13: - resolution: {integrity: sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-arm64/0.15.13: - resolution: {integrity: sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64/0.15.13: - resolution: {integrity: sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64/0.15.13: - resolution: {integrity: sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64/0.15.13: - resolution: {integrity: sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64/0.15.13: - resolution: {integrity: sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32/0.15.13: - resolution: {integrity: sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-64/0.15.13: - resolution: {integrity: sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm/0.15.13: - resolution: {integrity: sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.15.13: - resolution: {integrity: sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-mips64le/0.15.13: - resolution: {integrity: sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-ppc64le/0.15.13: - resolution: {integrity: sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-riscv64/0.15.13: - resolution: {integrity: sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-s390x/0.15.13: - resolution: {integrity: sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-netbsd-64/0.15.13: - resolution: {integrity: sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-openbsd-64/0.15.13: - resolution: {integrity: sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-sunos-64/0.15.13: - resolution: {integrity: sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32/0.15.13: - resolution: {integrity: sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-64/0.15.13: - resolution: {integrity: sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-arm64/0.15.13: - resolution: {integrity: sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild/0.15.13: - resolution: {integrity: sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.15.13 - '@esbuild/linux-loong64': 0.15.13 - esbuild-android-64: 0.15.13 - esbuild-android-arm64: 0.15.13 - esbuild-darwin-64: 0.15.13 - esbuild-darwin-arm64: 0.15.13 - esbuild-freebsd-64: 0.15.13 - esbuild-freebsd-arm64: 0.15.13 - esbuild-linux-32: 0.15.13 - esbuild-linux-64: 0.15.13 - esbuild-linux-arm: 0.15.13 - esbuild-linux-arm64: 0.15.13 - esbuild-linux-mips64le: 0.15.13 - esbuild-linux-ppc64le: 0.15.13 - esbuild-linux-riscv64: 0.15.13 - esbuild-linux-s390x: 0.15.13 - esbuild-netbsd-64: 0.15.13 - esbuild-openbsd-64: 0.15.13 - esbuild-sunos-64: 0.15.13 - esbuild-windows-32: 0.15.13 - esbuild-windows-64: 0.15.13 - esbuild-windows-arm64: 0.15.13 - dev: true - /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} engines: {node: '>=0.8.0'} dev: true @@ -2363,27 +2177,40 @@ packages: engines: {node: '>=10'} dev: true + /escodegen/2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.2.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 - resolve: 1.22.0 + resolve: 1.20.0 dev: true - /eslint-import-resolver-typescript/2.7.1_de2e8b5f32821e366389b4575f54c566: - resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} + /eslint-import-resolver-typescript/2.5.0_392f898cec7735a5f7a99430cbc0b4f4: + resolution: {integrity: sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==} engines: {node: '>=4'} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 - eslint: 8.17.0 - eslint-plugin-import: 2.26.0_eslint@8.17.0 + debug: 4.3.2 + eslint: 8.8.0 + eslint-plugin-import: 2.25.4_eslint@8.8.0 glob: 7.2.0 is-glob: 4.0.3 - resolve: 1.22.0 - tsconfig-paths: 3.14.1 + resolve: 1.20.0 + tsconfig-paths: 3.12.0 transitivePeerDependencies: - supports-color dev: true @@ -2396,26 +2223,26 @@ packages: find-up: 2.1.0 dev: true - /eslint-plugin-import/2.26.0_eslint@8.17.0: - resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + /eslint-plugin-import/2.25.4_eslint@8.8.0: + resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} engines: {node: '>=4'} peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 dependencies: array-includes: 3.1.4 - array.prototype.flat: 1.3.0 + array.prototype.flat: 1.2.5 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.17.0 + eslint: 8.8.0 eslint-import-resolver-node: 0.3.6 eslint-module-utils: 2.7.3 has: 1.0.3 is-core-module: 2.8.1 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.0.4 object.values: 1.1.5 - resolve: 1.22.0 - tsconfig-paths: 3.14.1 + resolve: 1.20.0 + tsconfig-paths: 3.12.0 dev: true /eslint-scope/5.1.1: @@ -2431,16 +2258,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 - estraverse: 5.3.0 + estraverse: 5.2.0 dev: true - /eslint-utils/3.0.0_eslint@8.17.0: + /eslint-utils/3.0.0_eslint@8.8.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.17.0 + eslint: 8.8.0 eslint-visitor-keys: 2.1.0 dev: true @@ -2454,30 +2281,30 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.17.0: - resolution: {integrity: sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==} + /eslint/8.8.0: + resolution: {integrity: sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.3.0 - '@humanwhocodes/config-array': 0.9.5 + '@eslint/eslintrc': 1.1.0 + '@humanwhocodes/config-array': 0.9.3 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.2 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.17.0 + eslint-utils: 3.0.0_eslint@8.8.0 eslint-visitor-keys: 3.3.0 - espree: 9.3.2 + espree: 9.3.1 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 - globals: 13.15.0 + globals: 13.12.1 ignore: 5.2.0 import-fresh: 3.3.0 imurmurhash: 0.1.4 @@ -2486,7 +2313,7 @@ packages: json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.0.4 natural-compare: 1.4.0 optionator: 0.9.1 regexpp: 3.2.0 @@ -2498,12 +2325,12 @@ packages: - supports-color dev: true - /espree/9.3.2: - resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} + /espree/9.3.1: + resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.7.1 - acorn-jsx: 5.3.2_acorn@8.7.1 + acorn: 8.7.0 + acorn-jsx: 5.3.2_acorn@8.7.0 eslint-visitor-keys: 3.3.0 dev: true @@ -2517,14 +2344,14 @@ packages: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: - estraverse: 5.3.0 + estraverse: 5.2.0 dev: true /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: - estraverse: 5.3.0 + estraverse: 5.2.0 dev: true /estraverse/4.3.0: @@ -2532,8 +2359,8 @@ packages: engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + /estraverse/5.2.0: + resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} engines: {node: '>=4.0'} dev: true @@ -2553,24 +2380,23 @@ packages: merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 - signal-exit: 3.0.7 + signal-exit: 3.0.3 strip-final-newline: 2.0.0 dev: true /exit/0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} engines: {node: '>= 0.8.0'} dev: true - /expect/28.1.1: - resolution: {integrity: sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /expect/27.5.1: + resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/expect-utils': 28.1.1 - jest-get-type: 28.0.2 - jest-matcher-utils: 28.1.1 - jest-message-util: 28.1.1 - jest-util: 28.1.1 + '@jest/types': 27.5.1 + jest-get-type: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 dev: true /fast-deep-equal/3.1.3: @@ -2585,7 +2411,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.4 dev: true /fast-json-stable-stringify/2.1.0: @@ -2593,7 +2419,7 @@ packages: dev: true /fast-levenshtein/2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} dev: true /fastq/1.13.0: @@ -2630,7 +2456,7 @@ packages: dev: true /find-up/2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} engines: {node: '>=4'} dependencies: locate-path: 2.0.0 @@ -2670,11 +2496,27 @@ packages: /flatted/3.2.5: resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + /form-data/3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.32 + dev: true + + /fs-access/1.0.1: + resolution: {integrity: sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=} + engines: {node: '>=0.10.0'} + dependencies: + null-check: 1.0.0 + dev: true + + /fs-extra/10.0.0: + resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} engines: {node: '>=12'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.9 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -2684,13 +2526,13 @@ packages: engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.9 jsonfile: 6.1.0 universalify: 2.0.0 dev: true /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} dev: true /fsevents/2.3.2: @@ -2706,7 +2548,7 @@ packages: dev: true /functional-red-black-tree/1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} dev: true /gensync/1.0.0-beta.2: @@ -2724,7 +2566,7 @@ packages: dependencies: function-bind: 1.1.1 has: 1.0.3 - has-symbols: 1.0.3 + has-symbols: 1.0.2 dev: true /get-package-type/0.1.0: @@ -2769,7 +2611,7 @@ packages: dev: true /git-remote-origin-url/2.0.0: - resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} + resolution: {integrity: sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=} engines: {node: '>=4'} dependencies: gitconfiglocal: 1.0.0 @@ -2786,7 +2628,7 @@ packages: dev: true /gitconfiglocal/1.0.0: - resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} + resolution: {integrity: sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=} dependencies: ini: 1.3.8 dev: true @@ -2817,7 +2659,7 @@ packages: dev: true /global-dirs/0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + resolution: {integrity: sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=} engines: {node: '>=4'} dependencies: ini: 1.3.8 @@ -2828,8 +2670,8 @@ packages: engines: {node: '>=4'} dev: true - /globals/13.15.0: - resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} + /globals/13.12.1: + resolution: {integrity: sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -2847,8 +2689,8 @@ packages: slash: 3.0.0 dev: true - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + /graceful-fs/4.2.9: + resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} dev: true /handlebars/4.7.7: @@ -2856,12 +2698,12 @@ packages: engines: {node: '>=0.4.7'} hasBin: true dependencies: - minimist: 1.2.6 + minimist: 1.2.5 neo-async: 2.6.2 source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.15.4 + uglify-js: 3.15.1 dev: true /hard-rejection/2.1.0: @@ -2874,22 +2716,17 @@ packages: dev: true /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} engines: {node: '>=4'} dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - - /has-property-descriptors/1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.1.1 dev: true - /has-symbols/1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + /has-symbols/1.0.2: + resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} engines: {node: '>= 0.4'} dev: true @@ -2897,7 +2734,7 @@ packages: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.3 + has-symbols: 1.0.2 dev: true /has/1.0.3: @@ -2918,8 +2755,36 @@ packages: lru-cache: 6.0.0 dev: true - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + /html-encoding-sniffer/2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + dependencies: + whatwg-encoding: 1.0.5 + dev: true + + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-proxy-agent/4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.2 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent/5.0.0: + resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.2 + transitivePeerDependencies: + - supports-color dev: true /human-signals/2.1.0: @@ -2927,12 +2792,24 @@ packages: engines: {node: '>=10.17.0'} dev: true - /husky/8.0.1: - resolution: {integrity: sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==} - engines: {node: '>=14'} + /husky/7.0.4: + resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} + engines: {node: '>=12'} hasBin: true dev: true + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -2946,8 +2823,8 @@ packages: resolve-from: 4.0.0 dev: true - /import-local/3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + /import-local/3.0.2: + resolution: {integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==} engines: {node: '>=8'} hasBin: true dependencies: @@ -2956,7 +2833,7 @@ packages: dev: true /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} dev: true @@ -2966,7 +2843,7 @@ packages: dev: true /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -2990,7 +2867,7 @@ packages: dev: true /is-arrayish/0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} dev: true /is-bigint/1.0.4: @@ -3030,7 +2907,7 @@ packages: dev: true /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} dev: true @@ -3056,8 +2933,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + /is-number-object/1.0.6: + resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 @@ -3074,10 +2951,14 @@ packages: dev: true /is-plain-obj/1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} engines: {node: '>=0.10.0'} dev: true + /is-potential-custom-element-name/1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -3086,10 +2967,8 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-shared-array-buffer/1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 + /is-shared-array-buffer/1.0.1: + resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} dev: true /is-stream/2.0.1: @@ -3108,16 +2987,20 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.3 + has-symbols: 1.0.2 dev: true /is-text-path/1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} engines: {node: '>=0.10.0'} dependencies: text-extensions: 1.9.0 dev: true + /is-typedarray/1.0.0: + resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} + dev: true + /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: @@ -3125,11 +3008,16 @@ packages: dev: true /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} dev: true /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + dev: true + + /istanbul-lib-coverage/3.0.0: + resolution: {integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==} + engines: {node: '>=8'} dev: true /istanbul-lib-coverage/3.2.0: @@ -3141,8 +3029,8 @@ packages: resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.17.9 - '@babel/parser': 7.17.9 + '@babel/core': 7.15.5 + '@babel/parser': 7.15.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -3159,12 +3047,12 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} + /istanbul-lib-source-maps/4.0.0: + resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} + engines: {node: '>=8'} dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 + debug: 4.3.2 + istanbul-lib-coverage: 3.0.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -3178,44 +3066,45 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/28.0.2: - resolution: {integrity: sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-changed-files/27.5.1: + resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: + '@jest/types': 27.5.1 execa: 5.1.1 throat: 6.0.1 dev: true - /jest-circus/28.1.1: - resolution: {integrity: sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-circus/27.5.1: + resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 28.1.1 - '@jest/expect': 28.1.1 - '@jest/test-result': 28.1.1 - '@jest/types': 28.1.1 - '@types/node': 17.0.41 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 + expect: 27.5.1 is-generator-fn: 2.1.0 - jest-each: 28.1.1 - jest-matcher-utils: 28.1.1 - jest-message-util: 28.1.1 - jest-runtime: 28.1.1 - jest-snapshot: 28.1.1 - jest-util: 28.1.1 - pretty-format: 28.1.1 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 slash: 3.0.0 - stack-utils: 2.0.5 + stack-utils: 2.0.3 throat: 6.0.1 transitivePeerDependencies: - supports-color dev: true - /jest-cli/28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654: - resolution: {integrity: sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-cli/27.5.1_ts-node@10.5.0: + resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3223,62 +3112,65 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 28.1.1_ts-node@10.8.1 - '@jest/test-result': 28.1.1 - '@jest/types': 28.1.1 + '@jest/core': 27.5.1_ts-node@10.5.0 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 chalk: 4.1.2 exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 - jest-util: 28.1.1 - jest-validate: 28.1.1 - prompts: 2.4.2 - yargs: 17.4.1 + graceful-fs: 4.2.9 + import-local: 3.0.2 + jest-config: 27.5.1_ts-node@10.5.0 + jest-util: 27.5.1 + jest-validate: 27.5.1 + prompts: 2.4.1 + yargs: 16.2.0 transitivePeerDependencies: - - '@types/node' + - bufferutil + - canvas - supports-color - ts-node + - utf-8-validate dev: true - /jest-config/28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654: - resolution: {integrity: sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-config/27.5.1_ts-node@10.5.0: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: - '@types/node': '*' ts-node: '>=9.0.0' peerDependenciesMeta: - '@types/node': - optional: true ts-node: optional: true dependencies: - '@babel/core': 7.17.9 - '@jest/test-sequencer': 28.1.1 - '@jest/types': 28.1.1 - '@types/node': 17.0.41 - babel-jest: 28.1.1_@babel+core@7.17.9 + '@babel/core': 7.15.5 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1_@babel+core@7.15.5 chalk: 4.1.2 - ci-info: 3.3.0 + ci-info: 3.2.0 deepmerge: 4.2.2 glob: 7.2.0 - graceful-fs: 4.2.10 - jest-circus: 28.1.1 - jest-environment-node: 28.1.1 - jest-get-type: 28.0.2 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.1 - jest-runner: 28.1.1 - jest-util: 28.1.1 - jest-validate: 28.1.1 - micromatch: 4.0.5 + graceful-fs: 4.2.9 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.4 parse-json: 5.2.0 - pretty-format: 28.1.1 + pretty-format: 27.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.8.1_2f4904d2ea745e9acb99fb2a8412b575 + ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 transitivePeerDependencies: + - bufferutil + - canvas - supports-color + - utf-8-validate dev: true /jest-diff/27.5.1: @@ -3291,44 +3183,52 @@ packages: pretty-format: 27.5.1 dev: true - /jest-diff/28.1.1: - resolution: {integrity: sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-docblock/27.5.1: + resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - chalk: 4.1.2 - diff-sequences: 28.1.1 - jest-get-type: 28.0.2 - pretty-format: 28.1.1 + detect-newline: 3.1.0 dev: true - /jest-docblock/28.1.1: - resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-each/27.5.1: + resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - detect-newline: 3.1.0 + '@jest/types': 27.5.1 + chalk: 4.1.2 + jest-get-type: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 dev: true - /jest-each/28.1.1: - resolution: {integrity: sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-environment-jsdom/27.5.1: + resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 28.1.1 - chalk: 4.1.2 - jest-get-type: 28.0.2 - jest-util: 28.1.1 - pretty-format: 28.1.1 + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 + jest-mock: 27.5.1 + jest-util: 27.5.1 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate dev: true - /jest-environment-node/28.1.1: - resolution: {integrity: sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-environment-node/27.5.1: + resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 28.1.1 - '@jest/fake-timers': 28.1.1 - '@jest/types': 28.1.1 - '@types/node': 17.0.41 - jest-mock: 28.1.1 - jest-util: 28.1.1 + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 + jest-mock: 27.5.1 + jest-util: 27.5.1 dev: true /jest-get-type/27.5.1: @@ -3336,82 +3236,93 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-get-type/28.0.2: - resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dev: true - - /jest-haste-map/28.1.1: - resolution: {integrity: sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-haste-map/27.5.1: + resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 28.1.1 + '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.5 - '@types/node': 17.0.41 + '@types/node': 17.0.18 anymatch: 3.1.2 fb-watchman: 2.0.1 - graceful-fs: 4.2.10 - jest-regex-util: 28.0.2 - jest-util: 28.1.1 - jest-worker: 28.1.1 - micromatch: 4.0.5 - walker: 1.0.8 + graceful-fs: 4.2.9 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.4 + walker: 1.0.7 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/28.1.1: - resolution: {integrity: sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-jasmine2/27.5.1: + resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - jest-get-type: 28.0.2 - pretty-format: 28.1.1 + '@jest/environment': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 + chalk: 4.1.2 + co: 4.6.0 + expect: 27.5.1 + is-generator-fn: 2.1.0 + jest-each: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-runtime: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 + pretty-format: 27.5.1 + throat: 6.0.1 + transitivePeerDependencies: + - supports-color dev: true - /jest-matcher-utils/27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + /jest-leak-detector/27.5.1: + resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - chalk: 4.1.2 - jest-diff: 27.5.1 jest-get-type: 27.5.1 pretty-format: 27.5.1 dev: true - /jest-matcher-utils/28.1.1: - resolution: {integrity: sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-matcher-utils/27.5.1: + resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: chalk: 4.1.2 - jest-diff: 28.1.1 - jest-get-type: 28.0.2 - pretty-format: 28.1.1 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + pretty-format: 27.5.1 dev: true - /jest-message-util/28.1.1: - resolution: {integrity: sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-message-util/27.5.1: + resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/code-frame': 7.16.7 - '@jest/types': 28.1.1 + '@babel/code-frame': 7.14.5 + '@jest/types': 27.5.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 28.1.1 + graceful-fs: 4.2.9 + micromatch: 4.0.4 + pretty-format: 27.5.1 slash: 3.0.0 - stack-utils: 2.0.5 + stack-utils: 2.0.3 dev: true - /jest-mock/28.1.1: - resolution: {integrity: sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-mock/27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 28.1.1 - '@types/node': 17.0.41 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@28.1.1: + /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -3420,179 +3331,202 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 28.1.1 + jest-resolve: 27.5.1 dev: true - /jest-regex-util/28.0.2: - resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-regex-util/27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-resolve-dependencies/28.1.1: - resolution: {integrity: sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-resolve-dependencies/27.5.1: + resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - jest-regex-util: 28.0.2 - jest-snapshot: 28.1.1 + '@jest/types': 27.5.1 + jest-regex-util: 27.5.1 + jest-snapshot: 27.5.1 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/28.1.1: - resolution: {integrity: sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-resolve/27.5.1: + resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: + '@jest/types': 27.5.1 chalk: 4.1.2 - graceful-fs: 4.2.10 - jest-haste-map: 28.1.1 - jest-pnp-resolver: 1.2.2_jest-resolve@28.1.1 - jest-util: 28.1.1 - jest-validate: 28.1.1 - resolve: 1.22.0 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + resolve: 1.20.0 resolve.exports: 1.1.0 slash: 3.0.0 dev: true - /jest-runner/28.1.1: - resolution: {integrity: sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-runner/27.5.1: + resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/console': 28.1.1 - '@jest/environment': 28.1.1 - '@jest/test-result': 28.1.1 - '@jest/transform': 28.1.1 - '@jest/types': 28.1.1 - '@types/node': 17.0.41 + '@jest/console': 27.5.1 + '@jest/environment': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 chalk: 4.1.2 - emittery: 0.10.2 - graceful-fs: 4.2.10 - jest-docblock: 28.1.1 - jest-environment-node: 28.1.1 - jest-haste-map: 28.1.1 - jest-leak-detector: 28.1.1 - jest-message-util: 28.1.1 - jest-resolve: 28.1.1 - jest-runtime: 28.1.1 - jest-util: 28.1.1 - jest-watcher: 28.1.1 - jest-worker: 28.1.1 - source-map-support: 0.5.13 + emittery: 0.8.1 + graceful-fs: 4.2.9 + jest-docblock: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-haste-map: 27.5.1 + jest-leak-detector: 27.5.1 + jest-message-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runtime: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + source-map-support: 0.5.21 throat: 6.0.1 transitivePeerDependencies: + - bufferutil + - canvas - supports-color + - utf-8-validate dev: true - /jest-runtime/28.1.1: - resolution: {integrity: sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-runtime/27.5.1: + resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/environment': 28.1.1 - '@jest/fake-timers': 28.1.1 - '@jest/globals': 28.1.1 - '@jest/source-map': 28.0.2 - '@jest/test-result': 28.1.1 - '@jest/transform': 28.1.1 - '@jest/types': 28.1.1 + '@jest/environment': 27.5.1 + '@jest/fake-timers': 27.5.1 + '@jest/globals': 27.5.1 + '@jest/source-map': 27.5.1 + '@jest/test-result': 27.5.1 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 execa: 5.1.1 glob: 7.2.0 - graceful-fs: 4.2.10 - jest-haste-map: 28.1.1 - jest-message-util: 28.1.1 - jest-mock: 28.1.1 - jest-regex-util: 28.0.2 - jest-resolve: 28.1.1 - jest-snapshot: 28.1.1 - jest-util: 28.1.1 + graceful-fs: 4.2.9 + jest-haste-map: 27.5.1 + jest-message-util: 27.5.1 + jest-mock: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-snapshot: 27.5.1 + jest-util: 27.5.1 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot/28.1.1: - resolution: {integrity: sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@babel/core': 7.17.9 - '@babel/generator': 7.17.9 - '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.9 - '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 - '@jest/expect-utils': 28.1.1 - '@jest/transform': 28.1.1 - '@jest/types': 28.1.1 - '@types/babel__traverse': 7.17.0 - '@types/prettier': 2.6.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.9 + /jest-serializer/27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/node': 17.0.18 + graceful-fs: 4.2.9 + dev: true + + /jest-snapshot/27.5.1: + resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@babel/core': 7.15.5 + '@babel/generator': 7.15.4 + '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.5 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.6 + '@jest/transform': 27.5.1 + '@jest/types': 27.5.1 + '@types/babel__traverse': 7.14.2 + '@types/prettier': 2.3.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 chalk: 4.1.2 - expect: 28.1.1 - graceful-fs: 4.2.10 - jest-diff: 28.1.1 - jest-get-type: 28.0.2 - jest-haste-map: 28.1.1 - jest-matcher-utils: 28.1.1 - jest-message-util: 28.1.1 - jest-util: 28.1.1 + expect: 27.5.1 + graceful-fs: 4.2.9 + jest-diff: 27.5.1 + jest-get-type: 27.5.1 + jest-haste-map: 27.5.1 + jest-matcher-utils: 27.5.1 + jest-message-util: 27.5.1 + jest-util: 27.5.1 natural-compare: 1.4.0 - pretty-format: 28.1.1 - semver: 7.3.7 + pretty-format: 27.5.1 + semver: 7.3.5 transitivePeerDependencies: - supports-color dev: true - /jest-util/28.1.1: - resolution: {integrity: sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-util/27.4.2: + resolution: {integrity: sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 17.0.18 + chalk: 4.1.2 + ci-info: 3.2.0 + graceful-fs: 4.2.9 + picomatch: 2.3.0 + dev: true + + /jest-util/27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 28.1.1 - '@types/node': 17.0.41 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 chalk: 4.1.2 - ci-info: 3.3.0 - graceful-fs: 4.2.10 - picomatch: 2.3.1 + ci-info: 3.2.0 + graceful-fs: 4.2.9 + picomatch: 2.3.0 dev: true - /jest-validate/28.1.1: - resolution: {integrity: sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-validate/27.5.1: + resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/types': 28.1.1 + '@jest/types': 27.5.1 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 28.0.2 + jest-get-type: 27.5.1 leven: 3.1.0 - pretty-format: 28.1.1 + pretty-format: 27.5.1 dev: true - /jest-watcher/28.1.1: - resolution: {integrity: sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-watcher/27.5.1: + resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@jest/test-result': 28.1.1 - '@jest/types': 28.1.1 - '@types/node': 17.0.41 + '@jest/test-result': 27.5.1 + '@jest/types': 27.5.1 + '@types/node': 17.0.18 ansi-escapes: 4.3.2 chalk: 4.1.2 - emittery: 0.10.2 - jest-util: 28.1.1 + jest-util: 27.5.1 string-length: 4.0.2 dev: true - /jest-worker/28.1.1: - resolution: {integrity: sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest-worker/27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 17.0.41 + '@types/node': 17.0.18 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654: - resolution: {integrity: sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /jest/27.5.1_ts-node@10.5.0: + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3600,14 +3534,15 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 28.1.1_ts-node@10.8.1 - '@jest/types': 28.1.1 - import-local: 3.1.0 - jest-cli: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 + '@jest/core': 27.5.1_ts-node@10.5.0 + import-local: 3.0.2 + jest-cli: 27.5.1_ts-node@10.5.0 transitivePeerDependencies: - - '@types/node' + - bufferutil + - canvas - supports-color - ts-node + - utf-8-validate dev: true /js-tokens/4.0.0: @@ -3629,6 +3564,48 @@ packages: argparse: 2.0.1 dev: true + /jsdom/16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.5 + acorn: 8.7.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.3.1 + domexception: 2.0.1 + escodegen: 2.0.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.0 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.0 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.0.0 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.5 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -3652,24 +3629,26 @@ packages: dev: true /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} dev: true /json-stringify-safe/5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} dev: true /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: - minimist: 1.2.6 + minimist: 1.2.5 dev: true - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + /json5/2.2.0: + resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} engines: {node: '>=6'} hasBin: true + dependencies: + minimist: 1.2.5 dev: true /jsonfile/6.1.0: @@ -3677,16 +3656,16 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.9 dev: true /jsonparse/1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + resolution: {integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=} engines: {'0': node >= 0.2.0} dev: true - /jsonschema/1.4.1: - resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} + /jsonschema/1.4.0: + resolution: {integrity: sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==} dev: true /kind-of/6.0.3: @@ -3704,6 +3683,14 @@ packages: engines: {node: '>=6'} dev: true + /levn/0.3.0: + resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3717,17 +3704,17 @@ packages: dev: true /load-json-file/4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=} engines: {node: '>=4'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.9 parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 dev: true /locate-path/2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} engines: {node: '>=4'} dependencies: p-locate: 2.0.0 @@ -3757,11 +3744,11 @@ packages: dev: true /lodash.ismatch/4.4.0: - resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} + resolution: {integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=} dev: true /lodash.memoize/4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} dev: true /lodash.merge/4.6.2: @@ -3769,7 +3756,7 @@ packages: dev: true /lodash.truncate/4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} dev: true /lodash/4.17.21: @@ -3794,14 +3781,14 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + /makeerror/1.0.11: + resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=} dependencies: tmpl: 1.0.5 dev: true /map-obj/1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} engines: {node: '>=0.10.0'} dev: true @@ -3844,12 +3831,24 @@ packages: engines: {node: '>= 8'} dev: true - /micromatch/4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + /micromatch/4.0.4: + resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 - picomatch: 2.3.1 + picomatch: 2.3.0 + dev: true + + /mime-db/1.49.0: + resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.32: + resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.49.0 dev: true /mimic-fn/2.1.0: @@ -3862,6 +3861,12 @@ packages: engines: {node: '>=4'} dev: true + /minimatch/3.0.4: + resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -3877,8 +3882,8 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + /minimist/1.2.5: + resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} dev: true /modify-values/1.0.1: @@ -3887,19 +3892,15 @@ packages: dev: true /ms/2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - /natural-compare/1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: true /neo-async/2.6.2: @@ -3907,18 +3908,18 @@ packages: dev: true /node-int64/0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} dev: true - /node-releases/2.0.3: - resolution: {integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==} + /node-releases/1.1.75: + resolution: {integrity: sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==} dev: true /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.0 + resolve: 1.20.0 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -3929,7 +3930,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.8.1 - semver: 7.3.7 + semver: 7.3.5 validate-npm-package-license: 3.0.4 dev: true @@ -3945,6 +3946,15 @@ packages: path-key: 3.1.1 dev: true + /null-check/1.0.0: + resolution: {integrity: sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=} + engines: {node: '>=0.10.0'} + dev: true + + /nwsapi/2.2.0: + resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} + dev: true + /object-inspect/1.12.0: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} dev: true @@ -3959,8 +3969,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - has-symbols: 1.0.3 + define-properties: 1.1.3 + has-symbols: 1.0.2 object-keys: 1.1.1 dev: true @@ -3969,12 +3979,12 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.19.5 + define-properties: 1.1.3 + es-abstract: 1.19.1 dev: true /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: wrappy: 1.0.2 dev: true @@ -3986,6 +3996,18 @@ packages: mimic-fn: 2.1.0 dev: true + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -4020,7 +4042,7 @@ packages: dev: true /p-locate/2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} engines: {node: '>=4'} dependencies: p-limit: 1.3.0 @@ -4065,7 +4087,7 @@ packages: dev: true /parse-json/4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} engines: {node: '>=4'} dependencies: error-ex: 1.3.2 @@ -4076,14 +4098,18 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.16.7 + '@babel/code-frame': 7.14.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 dev: true + /parse5/6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: true + /path-exists/3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} engines: {node: '>=4'} dev: true @@ -4093,7 +4119,7 @@ packages: dev: true /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} engines: {node: '>=0.10.0'} dev: true @@ -4118,22 +4144,18 @@ packages: engines: {node: '>=8'} dev: true - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + /picomatch/2.3.0: + resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} engines: {node: '>=8.6'} dev: true /pify/2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} engines: {node: '>=0.10.0'} dev: true /pify/3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} engines: {node: '>=4'} dev: true @@ -4154,6 +4176,11 @@ packages: engines: {node: '>=4'} dev: false + /prelude-ls/1.1.2: + resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} + engines: {node: '>= 0.8.0'} + dev: true + /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4168,35 +4195,29 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/28.1.1: - resolution: {integrity: sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/schemas': 28.0.2 - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 18.1.0 - dev: true - /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + /prompts/2.4.1: + resolution: {integrity: sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 dev: true + /psl/1.8.0: + resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} + dev: true + /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: true /q/1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + resolution: {integrity: sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true @@ -4213,12 +4234,8 @@ packages: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is/18.1.0: - resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} - dev: true - /read-pkg-up/3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} + resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=} engines: {node: '>=4'} dependencies: find-up: 2.1.0 @@ -4235,7 +4252,7 @@ packages: dev: true /read-pkg/3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=} engines: {node: '>=4'} dependencies: load-json-file: 4.0.0 @@ -4288,7 +4305,7 @@ packages: dev: true /require-directory/2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} engines: {node: '>=0.10.0'} dev: true @@ -4326,13 +4343,11 @@ packages: engines: {node: '>=10'} dev: true - /resolve/1.22.0: - resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} - hasBin: true + /resolve/1.20.0: + resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} dependencies: is-core-module: 2.8.1 path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 dev: true /reusify/1.0.4: @@ -4361,6 +4376,17 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /saxes/5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + dependencies: + xmlchars: 2.2.0 + dev: true + /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -4371,8 +4397,8 @@ packages: hasBin: true dev: true - /semver/7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + /semver/7.3.5: + resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -4399,8 +4425,8 @@ packages: object-inspect: 1.12.0 dev: true - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit/3.0.3: + resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} dev: true /sisteransi/1.0.5: @@ -4421,19 +4447,11 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /source-map-support/0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: false /source-map/0.5.7: resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} @@ -4444,6 +4462,11 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + /source-map/0.7.3: + resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} + engines: {node: '>= 8'} + dev: true + /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: @@ -4482,30 +4505,31 @@ packages: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} dev: true - /stack-utils/2.0.5: - resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} + /stack-utils/2.0.3: + resolution: {integrity: sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /standard-version/9.5.0: - resolution: {integrity: sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q==} + /standard-version/9.3.2: + resolution: {integrity: sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==} engines: {node: '>=10'} hasBin: true dependencies: chalk: 2.4.2 - conventional-changelog: 3.1.25 + conventional-changelog: 3.1.24 conventional-changelog-config-spec: 2.1.0 - conventional-changelog-conventionalcommits: 4.6.3 + conventional-changelog-conventionalcommits: 4.6.1 conventional-recommended-bump: 6.1.0 detect-indent: 6.1.0 detect-newline: 3.1.0 dotgitignore: 2.1.0 figures: 3.2.0 find-up: 5.0.0 + fs-access: 1.0.1 git-semver-tags: 4.1.1 - semver: 7.3.7 + semver: 7.3.5 stringify-package: 1.0.1 yargs: 16.2.0 dev: true @@ -4531,14 +4555,14 @@ packages: resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.1.3 dev: true /string.prototype.trimstart/1.0.4: resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.1.3 dev: true /string_decoder/1.1.1: @@ -4603,6 +4627,7 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: true /supports-color/8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} @@ -4619,16 +4644,15 @@ packages: supports-color: 7.2.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + /symbol-tree/3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true /table/6.8.0: resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} engines: {node: '>=10.0.0'} dependencies: - ajv: 8.11.0 + ajv: 8.6.3 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -4666,7 +4690,7 @@ packages: dev: true /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} dev: true /through2/2.0.5: @@ -4698,75 +4722,63 @@ packages: is-number: 7.0.0 dev: true + /tough-cookie/4.0.0: + resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} + engines: {node: '>=6'} + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + universalify: 0.1.2 + dev: true + + /tr46/2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + dependencies: + punycode: 2.1.1 + dev: true + /trim-newlines/3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /ts-jest/28.0.4_fc6c8d6d53ecb8477a2480d0844756ba: - resolution: {integrity: sha512-S6uRDDdCJBvnZqyGjB4VCnwbQrbgdL8WPeP4jevVSpYsBaeGRQAIS08o3Svav2Ex+oXwLgJ/m7F24TNq62kA1A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /ts-jest/27.1.3_8fa130d172bf7d71653f05507c50c5a3: + resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' - babel-jest: ^28.0.0 - esbuild: '*' - jest: ^28.0.0 - typescript: '>=4.3' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: ~0.14.0 + jest: ^27.0.0 + typescript: '>=3.8 <5.0' peerDependenciesMeta: '@babel/core': optional: true + '@types/jest': + optional: true babel-jest: optional: true esbuild: optional: true dependencies: + '@types/jest': 27.4.1 bs-logger: 0.2.6 - esbuild: 0.15.13 fast-json-stable-stringify: 2.1.0 - jest: 28.1.1_cdf6f73f7695c0fb6cc1b54573bf6654 - jest-util: 28.1.1 - json5: 2.2.1 + jest: 27.5.1_ts-node@10.5.0 + jest-util: 27.4.2 + json5: 2.2.0 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.7 - typescript: 4.7.3 + semver: 7.3.5 + typescript: 4.5.5 yargs-parser: 20.2.9 dev: true - /ts-node/10.8.1_2f4904d2ea745e9acb99fb2a8412b575: - resolution: {integrity: sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.8 - '@tsconfig/node12': 1.0.9 - '@tsconfig/node14': 1.0.1 - '@tsconfig/node16': 1.0.2 - '@types/node': 17.0.41 - acorn: 8.7.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.7.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /ts-node/10.8.1_cf2a114464063a7ac56422e5bb88c1db: - resolution: {integrity: sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==} + /ts-node/10.5.0_f3bd4037939c2ed2942ba074291f8ef2: + resolution: {integrity: sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -4779,29 +4791,29 @@ packages: '@swc/wasm': optional: true dependencies: - '@cspotcode/source-map-support': 0.8.1 + '@cspotcode/source-map-support': 0.7.0 '@tsconfig/node10': 1.0.8 '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 14.18.33 - acorn: 8.7.0 + '@types/node': 17.0.18 + acorn: 8.5.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.7.3 - v8-compile-cache-lib: 3.0.1 + typescript: 4.5.5 + v8-compile-cache-lib: 3.0.0 yn: 3.1.1 dev: true - /tsconfig-paths/3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + /tsconfig-paths/3.12.0: + resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.1 - minimist: 1.2.6 + minimist: 1.2.5 strip-bom: 3.0.0 dev: true @@ -4809,14 +4821,21 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils/3.21.0_typescript@4.7.3: + /tsutils/3.21.0_typescript@4.5.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.7.3 + typescript: 4.5.5 + dev: true + + /type-check/0.3.2: + resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 dev: true /type-check/0.4.0: @@ -4856,18 +4875,24 @@ packages: engines: {node: '>=8'} dev: true + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + /typedarray/0.0.6: resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} dev: true - /typescript/4.7.3: - resolution: {integrity: sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==} + /typescript/4.5.5: + resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /uglify-js/3.15.4: - resolution: {integrity: sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==} + /uglify-js/3.15.1: + resolution: {integrity: sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -4879,10 +4904,15 @@ packages: dependencies: function-bind: 1.1.1 has-bigints: 1.0.1 - has-symbols: 1.0.3 + has-symbols: 1.0.2 which-boxed-primitive: 1.0.2 dev: true + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + /universalify/2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} @@ -4895,24 +4925,24 @@ packages: dev: true /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} dev: true - /v8-compile-cache-lib/3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + /v8-compile-cache-lib/3.0.0: + resolution: {integrity: sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==} dev: true /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/9.0.0: - resolution: {integrity: sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==} + /v8-to-istanbul/8.1.0: + resolution: {integrity: sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.9 - '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-lib-coverage': 2.0.3 convert-source-map: 1.8.0 + source-map: 0.7.3 dev: true /validate-npm-package-license/3.0.4: @@ -4922,10 +4952,52 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /walker/1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + /w3c-hr-time/1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + dependencies: + browser-process-hrtime: 1.0.0 + dev: true + + /w3c-xmlserializer/2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + dependencies: + xml-name-validator: 3.0.0 + dev: true + + /walker/1.0.7: + resolution: {integrity: sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=} + dependencies: + makeerror: 1.0.11 + dev: true + + /webidl-conversions/5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + dev: true + + /webidl-conversions/6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + dev: true + + /whatwg-encoding/1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + dependencies: + iconv-lite: 0.4.24 + dev: true + + /whatwg-mimetype/2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + dev: true + + /whatwg-url/8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} dependencies: - makeerror: 1.0.12 + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 dev: true /which-boxed-primitive/1.0.2: @@ -4933,7 +5005,7 @@ packages: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 - is-number-object: 1.0.7 + is-number-object: 1.0.6 is-string: 1.0.7 is-symbol: 1.0.4 dev: true @@ -4968,12 +5040,34 @@ packages: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} dev: true - /write-file-atomic/4.0.1: - resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16} + /write-file-atomic/3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 - signal-exit: 3.0.7 + is-typedarray: 1.0.0 + signal-exit: 3.0.3 + typedarray-to-buffer: 3.1.5 + dev: true + + /ws/7.5.5: + resolution: {integrity: sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator/3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + dev: true + + /xmlchars/2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true /xtend/4.0.2: @@ -4993,15 +5087,14 @@ packages: /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - dev: true /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.0.1: - resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} + /yargs-parser/21.0.0: + resolution: {integrity: sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==} engines: {node: '>=12'} dev: true @@ -5018,8 +5111,8 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.4.1: - resolution: {integrity: sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==} + /yargs/17.3.1: + resolution: {integrity: sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==} engines: {node: '>=12'} dependencies: cliui: 7.0.4 @@ -5028,7 +5121,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 21.0.1 + yargs-parser: 21.0.0 dev: true /yn/3.1.1: diff --git a/src/lambda/put-timetable/index.py b/src/lambda/put-timetable/index.py deleted file mode 100644 index 6c44a0b0f..000000000 --- a/src/lambda/put-timetable/index.py +++ /dev/null @@ -1,32 +0,0 @@ -import json -from datetime import datetime -from utils import JsonPayloadBuilder -from utils import resp_handler -from utils import table - -@resp_handler -def put_timetable(uid, content): - dt_now = datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' - table.update_item( - Key = { - "uid": uid - }, - UpdateExpression = 'SET courses = :info, update_at = :ts', - ExpressionAtrributeValues = { - ":info" : [content['courses']], - ":ts" : dt_now - } - ) - - body = JsonPayloadBuilder().add_status(True).add_data(None).add_message('').compile() - return body - - -def handler(event, context): - req = json.loads(event['body']) - params = { - "uid": event['requestContext']['authorizer']['claims']['sub'], - "content": req["data"] - } - - return put_timetable(**params) \ No newline at end of file diff --git a/src/lambda/put-timetable/utils.py b/src/lambda/put-timetable/utils.py deleted file mode 100644 index 47fea0834..000000000 --- a/src/lambda/put-timetable/utils.py +++ /dev/null @@ -1,66 +0,0 @@ -import boto3 -import json -import logging -import os -from decimal import Decimal - -db = boto3.resource("dynamodb", region_name="ap-northeast-1") -table = db.Table(os.getenv('TABLE_NAME')) - - -class DecimalEncoder(json.JSONEncoder): - def default(self, obj): - if isinstance(obj, Decimal): - return float(obj) - return json.JSONEncoder.default(self, obj) - - -class JsonPayloadBuilder: - payload = {} - - def add_status(self, success): - self.payload['success'] = success - return self - - def add_data(self, data): - self.payload['data'] = data - return self - - def add_message(self, msg): - self.payload['message'] = msg - return self - - def compile(self): - return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') - - -def api_response(code, body): - return { - "isBase64Encoded": False, - "statusCode": code, - 'headers': { - "Access-Control-Allow-Origin": '*', - "Content-Type": "application/json", - "Referrer-Policy": "origin" - }, - "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE", "PUT"]}, - "body": body - } - - -def resp_handler(func): - def handle(*args, **kwargs): - try: - resp = func(*args, **kwargs) - return api_response(200, resp) - except LookupError: - resp = JsonPayloadBuilder().add_status(False).add_data(None) \ - .add_message("Not found").compile() - return api_response(404, resp) - except Exception as e: - logging.error(str(e)) - resp = JsonPayloadBuilder().add_status(False).add_data(None) \ - .add_message("Internal error, please contact bugs@wasedatime.com.").compile() - return api_response(500, resp) - - return handle From 4810a6711f2126b6c96be919416733155f63dd9f Mon Sep 17 00:00:00 2001 From: Jason Park <93040528+JasonNotJson@users.noreply.github.com> Date: Sat, 18 Mar 2023 16:37:21 +0900 Subject: [PATCH 3/3] feat: fixed syllabus scraper and initiating forum tables apis and lambdas (#268) * chore(deps): update dependency eslint to v8.9.0 (#141) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.2.0 (#140) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.70 (#138) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.71 (#145) Co-authored-by: Renovate Bot * chore(deps): update pnpm/action-setup action to v2.2.0 (#142) Co-authored-by: Renovate Bot * feat: lambda for put-timetable (#144) * feat: lambda for put-timetable * deleted newline for put-timetable. * changed file name for consistency * chore(deps): update actions/setup-node action to v3 (#148) Co-authored-by: Renovate Bot * chore(deps): update pnpm/action-setup action to v2.2.1 (#147) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.72 (#146) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.12.1 (#143) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.14.0 (#133) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.74 (#150) Co-authored-by: Renovate Bot * chore(deps): update dependency eslint to v8.10.0 (#149) Co-authored-by: Renovate Bot * chore(deps): update dependency typescript to v4.6.2 (#153) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.15.0 (#154) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.75 (#152) Co-authored-by: Renovate Bot * chore(deps): update dependency ts-node to v10.6.0 (#155) Co-authored-by: Renovate Bot * chore(deps): update actions/checkout action to v3 (#156) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.13.0 (#151) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.76 (#157) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.77 (#158) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.79 (#159) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.14.0 (#162) Co-authored-by: Renovate Bot * chore(deps): update dependency ts-node to v10.7.0 (#161) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.81 (#160) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.82 (#163) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.83 (#164) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.16.0 (#168) Co-authored-by: Renovate Bot * chore(deps): update endbug/add-and-commit action to v9 (#167) Co-authored-by: Renovate Bot * chore(deps): update dependency @commitlint/cli to v16.2.3 (#170) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.15.0 (#169) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.90 (#165) Co-authored-by: Renovate Bot * chore(deps): update peter-evans/find-comment action to v2 (#175) Co-authored-by: Renovate Bot * chore(deps): update peter-evans/create-or-update-comment action to v2 (#174) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.17.0 (#171) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.92 (#172) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.16.0 (#173) Co-authored-by: Renovate Bot * chore(deps): update dependency eslint-import-resolver-typescript to v2.7.0 (#176) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.19.0 (#183) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.17.0 (#182) Co-authored-by: Renovate Bot * feat: api for put-timetable lambda. (#179) * feat: api for put-timetable lambda. * feat: fixed syntax errors * feat: fixed syntax error (2) * chore(deps): update dependencies * chore: add lint-staged * chore(deps): update codecov/codecov-action action to v3 (#186) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.3.0 (#189) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.22.0 * chore(deps): update github/codeql-action action to v2 (#192) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.4.0 (#190) Co-authored-by: Renovate Bot * chore(deps): update dependencies * chore(deps): update amannn/action-semantic-pull-request action to v4.5.0 * chore(deps): update dependency husky to v8 * chore(deps): update dependency @commitlint/cli to v16.3.0 * chore(deps): update dependency standard-version to v9.5.0 * chore(deps): update aws-cdk monorepo to v2.27.0 * chore(deps): update dependency ts-jest to v28.0.4 * chore(deps): update dependency eslint to v8.17.0 * chore(deps): update dependency ts-node to v10.8.1 * chore(deps): update typescript-eslint monorepo to v5.27.1 * chore(deps): update jest monorepo * chore(deps): update dependency constructs to v10.1.32 * chore(deps): update dependencies * chore(deps): update pnpm/action-setup action to v2.2.2 * chore(deps): update dependency typescript to v4.7.3 * chore(deps): update dependencies * f:added Put method into default Headers for new api function put-timetable (#216) * feat: updated pnpm-lock file to latest * feat: uploading updated package file * feat: updating package-lock file * fix: modified jest config file * fix: update jest config * fix: configured rest api settings (#221) * fix: config rest api * fix: update jest config * fix: jest types * fix: update pnpm lock * fix: deleted package-lock * feat: creating only database and not API (#225) * f:added Put method into default Headers for new api function put-timetable * feat: adding table and api * feat: for backup * feat: updated pnpm-lock * feat: initiating database creation * feat: redoing databases * feat: building database thread * fix: fix git branch merging error (#226) * fix: fix git branch merging error * fix: fixing minor issues * fix: hotfix * fix: fixing db * fix(deps): update dependency flatted to v3.2.7 (#215) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update jest monorepo (#210) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency husky to v8.0.2 (#227) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat: renamed forum database and fixed multiple api (#230) * feat: updated api get schema and renamed database * fix: fix lambda function * fix: fixed lambda get single thread and others * fix: changed already existing db role name (#231) * feat: updated api get schema and renamed database * fix: fix lambda function * fix: fixed lambda get single thread and others * fix: fix already existing db role * feat: editing forum restapi resources and added multiple CRUD lambda functions (#232) * feat: altered api resources Trying to resolve multiple trigger issue in one lambda function * feat: added lambdas delete patch and post fixed minor issues in other lambdas * fix: erased unused library * chore(deps): update dependency constructs to v10.1.205 (#206) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ts-jest to v28.0.8 (#208) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ts-node to v10.9.1 (#234) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency constructs to v10.1.206 (#235) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency esbuild to ^0.16.0 (#233) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-import-resolver-typescript to v3 (#214) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update commitlint monorepo to v17.3.0 (#213) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update jest monorepo to v29 (#239) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat: adding forum comment features (#240) * feat: initiating forum comments function * feat: added api gateway schemas for forum comment GET POST and PATCH * feat: added Forum Comment Api Service * feat: added GET POST PATCH DELETE lambda functions for forum comments * feat: finishing fourm comment lambda functions Now capable of conducting simple curd operations * fix: fix forum comment patch * fix: re-configuring options resource for forum threads * fix: renaming api resource * fix: issue with post forum thread fixing issue (#242) * fix: mistaken sortkey type * fix: trying to solve a problem * fix: changing db (#243) * fix: solving database issue * fix: still fixing issues * fix: reverting error (#244) * fix: fixing big time reverting whole thread feature * fix: trying my best to fix * fix: continuing fix * fix: continuing * fix: deleting lambda (#245) * feat: reverting * feat: idontknowwhatshappeningnow * feat: fixing mistakes * feat: retrieving db and api * chore(deps): update dependency constructs to v10.1.210 (#241) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: fixing cross stack referencing (#247) * fix: fixing cross stack referencing * fix: fixing export value * chore(deps): update dependency husky to v8.0.3 (#246) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: updating dependencies and syllabus structure (#249) * fix: configuring-rest-api (#219) * chore(deps): update dependency eslint to v8.9.0 (#141) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.2.0 (#140) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.70 (#138) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.71 (#145) Co-authored-by: Renovate Bot * chore(deps): update pnpm/action-setup action to v2.2.0 (#142) Co-authored-by: Renovate Bot * feat: lambda for put-timetable (#144) * feat: lambda for put-timetable * deleted newline for put-timetable. * changed file name for consistency * chore(deps): update actions/setup-node action to v3 (#148) Co-authored-by: Renovate Bot * chore(deps): update pnpm/action-setup action to v2.2.1 (#147) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.72 (#146) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.12.1 (#143) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.14.0 (#133) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.74 (#150) Co-authored-by: Renovate Bot * chore(deps): update dependency eslint to v8.10.0 (#149) Co-authored-by: Renovate Bot * chore(deps): update dependency typescript to v4.6.2 (#153) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.15.0 (#154) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.75 (#152) Co-authored-by: Renovate Bot * chore(deps): update dependency ts-node to v10.6.0 (#155) Co-authored-by: Renovate Bot * chore(deps): update actions/checkout action to v3 (#156) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.13.0 (#151) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.76 (#157) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.77 (#158) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.79 (#159) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.14.0 (#162) Co-authored-by: Renovate Bot * chore(deps): update dependency ts-node to v10.7.0 (#161) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.81 (#160) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.82 (#163) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.83 (#164) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.16.0 (#168) Co-authored-by: Renovate Bot * chore(deps): update endbug/add-and-commit action to v9 (#167) Co-authored-by: Renovate Bot * chore(deps): update dependency @commitlint/cli to v16.2.3 (#170) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.15.0 (#169) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.90 (#165) Co-authored-by: Renovate Bot * chore(deps): update peter-evans/find-comment action to v2 (#175) Co-authored-by: Renovate Bot * chore(deps): update peter-evans/create-or-update-comment action to v2 (#174) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.17.0 (#171) Co-authored-by: Renovate Bot * chore(deps): update dependency constructs to v10.0.92 (#172) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.16.0 (#173) Co-authored-by: Renovate Bot * chore(deps): update dependency eslint-import-resolver-typescript to v2.7.0 (#176) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.19.0 (#183) Co-authored-by: Renovate Bot * chore(deps): update typescript-eslint monorepo to v5.17.0 (#182) Co-authored-by: Renovate Bot * feat: api for put-timetable lambda. (#179) * feat: api for put-timetable lambda. * feat: fixed syntax errors * feat: fixed syntax error (2) * chore(deps): update dependencies * chore: add lint-staged * chore(deps): update codecov/codecov-action action to v3 (#186) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.3.0 (#189) Co-authored-by: Renovate Bot * chore(deps): update aws-cdk monorepo to v2.22.0 * chore(deps): update github/codeql-action action to v2 (#192) Co-authored-by: Renovate Bot * chore(deps): update amannn/action-semantic-pull-request action to v4.4.0 (#190) Co-authored-by: Renovate Bot * chore(deps): update dependencies * chore(deps): update amannn/action-semantic-pull-request action to v4.5.0 * chore(deps): update dependency husky to v8 * chore(deps): update dependency @commitlint/cli to v16.3.0 * chore(deps): update dependency standard-version to v9.5.0 * chore(deps): update aws-cdk monorepo to v2.27.0 * chore(deps): update dependency ts-jest to v28.0.4 * chore(deps): update dependency eslint to v8.17.0 * chore(deps): update dependency ts-node to v10.8.1 * chore(deps): update typescript-eslint monorepo to v5.27.1 * chore(deps): update jest monorepo * chore(deps): update dependency constructs to v10.1.32 * chore(deps): update dependencies * chore(deps): update pnpm/action-setup action to v2.2.2 * chore(deps): update dependency typescript to v4.7.3 * chore(deps): update dependencies * f:added Put method into default Headers for new api function put-timetable (#216) * feat: updated pnpm-lock file to latest * feat: uploading updated package file * feat: updating package-lock file * fix: modified jest config file * fix: update jest config * fix: config rest api * fix: update jest config * fix: jest types * fix: update pnpm lock * fix: deleted package-lock Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Renovate Bot Co-authored-by: AustinZhu * Revert "fix: configuring-rest-api (#219)" (#220) This reverts commit 665e25264cbd9245457022b5a6195fe70dc5629b. * fix: chaning syllabus constants * fix: fixing actions * fix: adding pnpm command * fix: reverting changes to original form --------- Co-authored-by: Jason Park <93040528+Autogod@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Renovate Bot Co-authored-by: AustinZhu * chore(deps): update dependency constructs to v10.1.279 (#250) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: establishing table (#252) * fix: minor changes (#253) * fix: renaming table (#254) * fix: renaming table * fix: might be an empty commit * fix: exporting table arn (#255) * fix: resolving already existing identifier (#256) * fix: rereferencing export (#258) * fix: removed conflicting service * fix: removing exporting value * fix: re connecting thread service * fix: adding lsi to table exporting arn with tablename (#259) * fix: deleting thread table (#260) * fix: recreating thread table with proper lsi (#261) * fix: recreating lambdas for forum threads (#262) * chore(deps): update typescript-eslint monorepo to v5.55.0 (#207) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v18 (#237) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update aws-cdk monorepo (#209) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: api service added (#266) * chore(deps): update dependency typescript to v4.9.5 (#211) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Renovate Bot Co-authored-by: Jason Park <93040528+Autogod@users.noreply.github.com> Co-authored-by: AustinZhu --- .github/actions/install-deps/action.yml | 10 +- .github/workflows/codeql-analysis.yml | 8 +- .github/workflows/deploy.yml | 6 +- .github/workflows/pr-lint.yml | 2 +- .github/workflows/pr.yml | 14 +- .github/workflows/push.yml | 8 +- .gitignore | 3 - .husky/.gitignore | 1 + .husky/pre-commit | 2 + jest.config.ts | 3 +- lib/configs/api-gateway/cors.ts | 2 +- lib/configs/api-gateway/schema.ts | 332 +- lib/configs/common/registry.ts | 6 +- lib/constructs/business/rest-api-service.ts | 918 ++++- lib/constructs/business/service.ts | 19 +- lib/constructs/common/lambda-functions.ts | 588 +++- lib/constructs/persistence/database.ts | 156 +- lib/stacks/business.ts | 66 +- lib/stacks/persistence.ts | 45 +- lib/stacks/presentation.ts | 28 +- package.json | 59 +- pnpm-lock.yaml | 3435 ++++++++++--------- src/lambda/delete-comment/index.py | 28 + src/lambda/delete-comment/utils.py | 67 + src/lambda/delete-thread/index.py | 31 + src/lambda/delete-thread/utils.py | 67 + src/lambda/get-all-threads/index.py | 20 + src/lambda/get-all-threads/utils.py | 66 + src/lambda/get-board-threads/index.py | 26 + src/lambda/get-board-threads/utils.py | 66 + src/lambda/get-comments/index.py | 29 + src/lambda/get-comments/utils.py | 66 + src/lambda/get-group-threads/index.py | 45 + src/lambda/get-group-threads/utils.py | 66 + src/lambda/get-reviews/index.py | 6 +- src/lambda/get-single-thread/index.py | 48 + src/lambda/get-single-thread/utils.py | 66 + src/lambda/patch-comment/index.py | 40 + src/lambda/patch-comment/utils.py | 68 + src/lambda/patch-thread/index.py | 43 + src/lambda/patch-thread/utils.py | 68 + src/lambda/post-comment/index.py | 36 + src/lambda/post-comment/utils.py | 50 + src/lambda/post-thread/index.py | 47 + src/lambda/post-thread/utils.py | 84 + src/lambda/put-timetable/index.py | 32 + src/lambda/put-timetable/utils.py | 66 + src/lambda/syllabus-scraper/const.py | 14 +- 48 files changed, 4751 insertions(+), 2205 deletions(-) create mode 100644 .husky/.gitignore create mode 100644 src/lambda/delete-comment/index.py create mode 100644 src/lambda/delete-comment/utils.py create mode 100644 src/lambda/delete-thread/index.py create mode 100644 src/lambda/delete-thread/utils.py create mode 100644 src/lambda/get-all-threads/index.py create mode 100644 src/lambda/get-all-threads/utils.py create mode 100644 src/lambda/get-board-threads/index.py create mode 100644 src/lambda/get-board-threads/utils.py create mode 100644 src/lambda/get-comments/index.py create mode 100644 src/lambda/get-comments/utils.py create mode 100644 src/lambda/get-group-threads/index.py create mode 100644 src/lambda/get-group-threads/utils.py create mode 100644 src/lambda/get-single-thread/index.py create mode 100644 src/lambda/get-single-thread/utils.py create mode 100644 src/lambda/patch-comment/index.py create mode 100644 src/lambda/patch-comment/utils.py create mode 100644 src/lambda/patch-thread/index.py create mode 100644 src/lambda/patch-thread/utils.py create mode 100644 src/lambda/post-comment/index.py create mode 100644 src/lambda/post-comment/utils.py create mode 100644 src/lambda/post-thread/index.py create mode 100644 src/lambda/post-thread/utils.py create mode 100644 src/lambda/put-timetable/index.py create mode 100644 src/lambda/put-timetable/utils.py diff --git a/.github/actions/install-deps/action.yml b/.github/actions/install-deps/action.yml index c9e93a401..be65095c1 100644 --- a/.github/actions/install-deps/action.yml +++ b/.github/actions/install-deps/action.yml @@ -1,16 +1,16 @@ -name: 'Install Dependencies' -description: 'Workflow for installing dependencies' +name: "Install Dependencies" +description: "Workflow for installing dependencies" runs: using: "composite" steps: - - uses: pnpm/action-setup@v2.0.1 + - uses: pnpm/action-setup@v2.2.2 with: version: latest - name: Use Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: 16.x - cache: 'pnpm' + cache: "pnpm" - name: Setup CDK shell: bash run: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index bc5866987..2dba69ebc 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -52,11 +52,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -67,7 +67,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 # ℹ️ Command-line programs to run using the OS shell. # πŸ“š https://git.io/JvXDl @@ -81,4 +81,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d1f73d09d..10117670f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -28,7 +28,7 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Setup AWS uses: Fooji/create-aws-profile-action@v2 @@ -54,7 +54,7 @@ jobs: runs-on: ubuntu-latest needs: [ deploy ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: repository: wasedatime/wasedatime.github.io token: ${{ env.GITHUB_OAUTH_TOKEN }} @@ -69,7 +69,7 @@ jobs: aws apigateway get-export --rest-api-id 'anvonkl0fd' --stage-name 'dev' --export-type 'swagger' --accepts 'application/yaml' ./dev.yml aws apigateway get-export --rest-api-id 'anvonkl0fd' --stage-name 'prod' --export-type 'swagger' --accepts 'application/yaml' ./prod.yml - name: Push - uses: EndBug/add-and-commit@v7 + uses: EndBug/add-and-commit@v9 with: author_name: GitHub Actions author_email: actions@github.com diff --git a/.github/workflows/pr-lint.yml b/.github/workflows/pr-lint.yml index 08e2294aa..6f40f80f9 100644 --- a/.github/workflows/pr-lint.yml +++ b/.github/workflows/pr-lint.yml @@ -15,7 +15,7 @@ jobs: permissions: pull-requests: write steps: - - uses: amannn/action-semantic-pull-request@v4.1.0 + - uses: amannn/action-semantic-pull-request@v4.5.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index abd3386b7..e2275bcce 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -35,7 +35,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Lint run: pnpm run lint @@ -44,7 +44,7 @@ jobs: runs-on: ubuntu-latest needs: [ lint ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Synth run: cdk synth @@ -53,7 +53,7 @@ jobs: runs-on: ubuntu-latest needs: [ synth ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Test run: pnpm test @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest needs: [ test ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Diff id: diff @@ -74,7 +74,7 @@ jobs: LOG="${LOG//$'\r'/'%0D'}" echo "::set-output name=log::$LOG" - name: Find Comment - uses: peter-evans/find-comment@v1 + uses: peter-evans/find-comment@v2 id: fc with: issue-number: ${{ github.event.pull_request.number }} @@ -82,7 +82,7 @@ jobs: body-includes: "### Diff Output:" - name: Comment if: steps.fc.outputs.comment-id == '' - uses: peter-evans/create-or-update-comment@v1 + uses: peter-evans/create-or-update-comment@v2 with: issue-number: ${{ github.event.pull_request.number }} body: | @@ -93,7 +93,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Update Comment if: steps.fc.outputs.comment-id != '' - uses: peter-evans/create-or-update-comment@v1 + uses: peter-evans/create-or-update-comment@v2 with: comment-id: ${{ steps.fc.outputs.comment-id }} edit-mode: replace diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 6aa57528a..6ee2433ed 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -33,7 +33,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Lint run: pnpm run lint @@ -42,7 +42,7 @@ jobs: runs-on: ubuntu-latest needs: [ lint ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Build run: pnpm run build @@ -51,9 +51,9 @@ jobs: runs-on: ubuntu-latest needs: [ build ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: ./.github/actions/install-deps - name: Test run: pnpm test -- --coverage - name: Test Coverage - uses: codecov/codecov-action@v2 + uses: codecov/codecov-action@v3 diff --git a/.gitignore b/.gitignore index d909b0669..ba43fe921 100644 --- a/.gitignore +++ b/.gitignore @@ -97,6 +97,3 @@ node_modules # CDK asset staging directory .cdk.staging cdk.out - -# husky -.husky/_/ diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 000000000..31354ec13 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit index bed71bce8..2965f34bb 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -14,3 +14,5 @@ if [ ! -z "$js_diff" ]; then else echo "Seems you haven't changed any JavaScript, skip checks. " fi + +npx lint-staged diff --git a/jest.config.ts b/jest.config.ts index d4cc2df90..287e9df69 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,4 +1,4 @@ -import type { Config } from '@jest/types'; +import { Config } from '@jest/types'; const config: Config.InitialOptions = { testEnvironment: 'node', @@ -7,6 +7,7 @@ const config: Config.InitialOptions = { transform: { '^.+\\.tsx?$': 'ts-jest', }, + moduleDirectories: ['/node_modules'], }; export default config; diff --git a/lib/configs/api-gateway/cors.ts b/lib/configs/api-gateway/cors.ts index 4e36f3690..966a05163 100644 --- a/lib/configs/api-gateway/cors.ts +++ b/lib/configs/api-gateway/cors.ts @@ -13,6 +13,6 @@ export const allowHeaders = [ export const defaultHeaders = { 'Access-Control-Allow-Headers': '\'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token\'', - 'Access-Control-Allow-Methods': '\'GET,POST,OPTIONS\'', + 'Access-Control-Allow-Methods': '\'GET,POST,PUT,OPTIONS\'', 'Access-Control-Allow-Origin': '\'*\'', }; diff --git a/lib/configs/api-gateway/schema.ts b/lib/configs/api-gateway/schema.ts index f8a7a8142..d5e39a3f8 100644 --- a/lib/configs/api-gateway/schema.ts +++ b/lib/configs/api-gateway/schema.ts @@ -47,12 +47,12 @@ export const syllabusSchema: apigw.JsonSchema = { d: { type: apigw.JsonSchemaType.STRING, title: 'Instructor', - description: 'Instructor\'s name in English.', + description: "Instructor's name in English.", }, e: { type: apigw.JsonSchemaType.STRING, title: 'Instructor JP', - description: 'Instructor\'s name in Japanese.', + description: "Instructor's name in Japanese.", }, f: { type: apigw.JsonSchemaType.ARRAY, @@ -61,43 +61,23 @@ export const syllabusSchema: apigw.JsonSchema = { items: { type: apigw.JsonSchemaType.INTEGER, title: 'Language', - description: '-1 N/A | 0 Japanese | 1 English | 2 German | 3 French | 4 Chinese | 5 Spanish | 6 Korean | 7 Russia | 8 Italian | 9 other', - enum: [ - -1, - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - ], + description: + '-1 N/A | 0 Japanese | 1 English | 2 German | 3 French | 4 Chinese | 5 Spanish | 6 Korean | 7 Russia | 8 Italian | 9 other', + enum: [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9], }, }, g: { type: apigw.JsonSchemaType.INTEGER, title: 'Type', - description: 'Type of the course\n-1 N/A | 0 Lecture | 1 Seminar | 2 Work | 3 Foreign Langauge | 4 On-demand | 5 Thesis | 6 Graduate Research | 7 Practice | 8 Blended', - enum: [ - -1, - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - ], + description: + 'Type of the course\n-1 N/A | 0 Lecture | 1 Seminar | 2 Work | 3 Foreign Langauge | 4 On-demand | 5 Thesis | 6 Graduate Research | 7 Practice | 8 Blended', + enum: [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8], }, h: { type: apigw.JsonSchemaType.STRING, title: 'Term', - description: 'The term in which the course is taught.\nseason := 0 Spring | 1 Summer | 2 Fall | 3 Winter\nperiod := \'s\' Semester| \'q\' Quarter | \'i\' Intensive Course | \'f\' Full Year | \'t\' Term\ndelimiter := \'/\' or | \'&\' and', + description: + "The term in which the course is taught.\nseason := 0 Spring | 1 Summer | 2 Fall | 3 Winter\nperiod := 's' Semester| 'q' Quarter | 'i' Intensive Course | 'f' Full Year | 't' Term\ndelimiter := '/' or | '&' and", enum: [ '0s', '2s', @@ -132,31 +112,20 @@ export const syllabusSchema: apigw.JsonSchema = { type: apigw.JsonSchemaType.OBJECT, title: 'Occurrence', description: 'Schedule and location', - required: [ - 'd', - 'p', - 'l', - ], + required: ['d', 'p', 'l'], properties: { d: { type: apigw.JsonSchemaType.INTEGER, title: 'Day', - description: 'The day on which the course is taught.\n-1 others | 0 Mon | 1 Tues | 2 Wed | 3 Thur | 4 Fri | 5 Sat | 6 Sun', - enum: [ - -1, - 0, - 1, - 2, - 3, - 4, - 5, - 6, - ], + description: + 'The day on which the course is taught.\n-1 others | 0 Mon | 1 Tues | 2 Wed | 3 Thur | 4 Fri | 5 Sat | 6 Sun', + enum: [-1, 0, 1, 2, 3, 4, 5, 6], }, p: { type: apigw.JsonSchemaType.INTEGER, title: 'Period', - description: 'The period on which the course is taught.\nstart_period := -1 others | 0 On-demand | 1 .. 9\nend_period := start_period ', + description: + 'The period on which the course is taught.\nstart_period := -1 others | 0 On-demand | 1 .. 9\nend_period := start_period ', }, l: { type: apigw.JsonSchemaType.STRING, @@ -170,13 +139,7 @@ export const syllabusSchema: apigw.JsonSchema = { type: apigw.JsonSchemaType.INTEGER, title: 'Minimum Eligible Year', description: 'Minimum eligible year.\n-1 unknown | 1 .. 4', - enum: [ - -1, - 1, - 2, - 3, - 4, - ], + enum: [-1, 1, 2, 3, 4], }, k: { type: apigw.JsonSchemaType.STRING, @@ -191,42 +154,27 @@ export const syllabusSchema: apigw.JsonSchema = { m: { type: apigw.JsonSchemaType.INTEGER, title: 'Level', - description: 'The level/difficulty of the course.\n-1 N/A | 0 Beginner | 1 Intermediate | 2 Advanced | 3 Final-stage | 4 Master | 5 Doctor', - enum: [ - -1, - 0, - 1, - 2, - 3, - 4, - 5, - ], + description: + 'The level/difficulty of the course.\n-1 N/A | 0 Beginner | 1 Intermediate | 2 Advanced | 3 Final-stage | 4 Master | 5 Doctor', + enum: [-1, 0, 1, 2, 3, 4, 5], }, n: { type: apigw.JsonSchemaType.ARRAY, title: 'Evaluations', - description: 'The distribution of evaluation criterion and their descriptions', + description: + 'The distribution of evaluation criterion and their descriptions', items: { type: apigw.JsonSchemaType.OBJECT, title: 'Evaluation', description: 'Criteria and description', - required: [ - 't', - 'p', - 'c', - ], + required: ['t', 'p', 'c'], properties: { t: { type: apigw.JsonSchemaType.INTEGER, title: 'Type', - description: 'Type of the evaluation\n-1 Unknown | 0 Exam | 1 Papers | 2 Class Participation | 3 Others', - enum: [ - -1, - 0, - 1, - 2, - 3, - ], + description: + 'Type of the evaluation\n-1 Unknown | 0 Exam | 1 Papers | 2 Class Participation | 3 Others', + enum: [-1, 0, 1, 2, 3], }, p: { type: apigw.JsonSchemaType.INTEGER, @@ -349,11 +297,7 @@ export const courseReviewGetRespSchema: apigw.JsonSchema = { type: apigw.JsonSchemaType.STRING, }, }, - required: [ - 'success', - 'data', - 'message', - ], + required: ['success', 'data', 'message'], }; export const courseReviewPostReqSchema: apigw.JsonSchema = { @@ -404,9 +348,7 @@ export const courseReviewPostReqSchema: apigw.JsonSchema = { ], }, }, - required: [ - 'data', - ], + required: ['data'], }; export const courseReviewPatchReqSchema: apigw.JsonSchema = { @@ -429,17 +371,211 @@ export const courseReviewPatchReqSchema: apigw.JsonSchema = { type: apigw.JsonSchemaType.STRING, }, }, - required: [ - 'benefit', - 'difficulty', - 'satisfaction', - 'comment', - ], + required: ['benefit', 'difficulty', 'satisfaction', 'comment'], + }, + }, + required: ['data'], +}; + +export const forumThreadGetRespSchema: apigw.JsonSchema = { + schema: apigw.JsonSchemaVersion.DRAFT7, + type: apigw.JsonSchemaType.OBJECT, + properties: { + success: { + type: apigw.JsonSchemaType.BOOLEAN, + }, + data: { + type: apigw.JsonSchemaType.ARRAY, + items: { + type: apigw.JsonSchemaType.OBJECT, + properties: { + univ_id: { + type: apigw.JsonSchemaType.INTEGER, + }, + board_id: { + type: apigw.JsonSchemaType.STRING, + }, + updated_at: { + type: apigw.JsonSchemaType.STRING, + }, + created_at: { + type: apigw.JsonSchemaType.STRING, + }, + tag_id: { + type: apigw.JsonSchemaType.STRING, + }, + group_id: { + type: apigw.JsonSchemaType.STRING, + }, + thread_id: { + type: apigw.JsonSchemaType.STRING, + }, + title: { + type: apigw.JsonSchemaType.STRING, + }, + body: { + type: apigw.JsonSchemaType.STRING, + }, + views: { + type: apigw.JsonSchemaType.INTEGER, + }, + mod: { + type: apigw.JsonSchemaType.BOOLEAN, + }, + }, + required: [ + 'univ_id', + 'board_id', + 'updated_at', + 'created_at', + 'tag_id', + 'group_id', + 'thread_id', + 'title', + 'body', + 'views', + 'mod', + ], + }, + }, + message: { + type: apigw.JsonSchemaType.STRING, + }, + }, + required: ['success', 'data', 'message'], +}; + +export const forumThreadPostReqSchema: apigw.JsonSchema = { + schema: apigw.JsonSchemaVersion.DRAFT7, + type: apigw.JsonSchemaType.OBJECT, + properties: { + data: { + type: apigw.JsonSchemaType.OBJECT, + properties: { + univ_id: { + type: apigw.JsonSchemaType.INTEGER, + }, + board_id: { + type: apigw.JsonSchemaType.STRING, + }, + tag_id: { + type: apigw.JsonSchemaType.STRING, + }, + group_id: { + type: apigw.JsonSchemaType.STRING, + }, + title: { + type: apigw.JsonSchemaType.STRING, + }, + body: { + type: apigw.JsonSchemaType.STRING, + }, + }, + required: ['univ_id', 'board_id', 'tag_id', 'group_id', 'title', 'body'], + }, + }, + required: ['data'], +}; + +export const forumThreadPatchReqSchema: apigw.JsonSchema = { + schema: apigw.JsonSchemaVersion.DRAFT7, + type: apigw.JsonSchemaType.OBJECT, + properties: { + data: { + type: apigw.JsonSchemaType.OBJECT, + properties: { + board_id: { + type: apigw.JsonSchemaType.STRING, + }, + tag_id: { + type: apigw.JsonSchemaType.STRING, + }, + thread_id: { + type: apigw.JsonSchemaType.STRING, + }, + title: { + type: apigw.JsonSchemaType.STRING, + }, + body: { + type: apigw.JsonSchemaType.STRING, + }, + }, + required: ['board_id', 'tag_id', 'thread_id', 'title', 'body'], + }, + }, + required: ['data'], +}; + +export const forumCommentGetRespSchema: apigw.JsonSchema = { + schema: apigw.JsonSchemaVersion.DRAFT7, + type: apigw.JsonSchemaType.OBJECT, + properties: { + data: { + type: apigw.JsonSchemaType.OBJECT, + properties: { + thread_id: { + type: apigw.JsonSchemaType.STRING, + }, + body: { + type: apigw.JsonSchemaType.STRING, + }, + created_at: { + type: apigw.JsonSchemaType.STRING, + }, + updated_at: { + type: apigw.JsonSchemaType.STRING, + }, + mod: { + type: apigw.JsonSchemaType.BOOLEAN, + }, + }, + required: ['thread_id', 'body', 'create_at', 'update_at', 'mod'], + }, + message: { + type: apigw.JsonSchemaType.STRING, + }, + }, + required: ['success', 'data', 'message'], +}; + +export const forumCommentPostReqSchema: apigw.JsonSchema = { + schema: apigw.JsonSchemaVersion.DRAFT7, + type: apigw.JsonSchemaType.OBJECT, + properties: { + data: { + type: apigw.JsonSchemaType.OBJECT, + properties: { + thread_id: { + type: apigw.JsonSchemaType.STRING, + }, + body: { + type: apigw.JsonSchemaType.STRING, + }, + }, + required: ['thread_id', 'body'], + }, + }, + required: ['data'], +}; + +export const forumCommentPatchReqSchema: apigw.JsonSchema = { + schema: apigw.JsonSchemaVersion.DRAFT7, + type: apigw.JsonSchemaType.OBJECT, + properties: { + data: { + type: apigw.JsonSchemaType.OBJECT, + properties: { + thread_id: { + type: apigw.JsonSchemaType.STRING, + }, + body: { + type: apigw.JsonSchemaType.STRING, + }, + }, + required: ['thread_id', 'body'], }, }, - required: [ - 'data', - ], + required: ['data'], }; export const baseJsonApiSchema: apigw.JsonSchema = { @@ -456,11 +592,7 @@ export const baseJsonApiSchema: apigw.JsonSchema = { type: apigw.JsonSchemaType.STRING, }, }, - required: [ - 'success', - 'data', - 'message', - ], + required: ['success', 'data', 'message'], }; export const careerInfoSchema: apigw.JsonSchema = {}; diff --git a/lib/configs/common/registry.ts b/lib/configs/common/registry.ts index ed03051e3..936047c89 100644 --- a/lib/configs/common/registry.ts +++ b/lib/configs/common/registry.ts @@ -1,7 +1,7 @@ export enum ServiceEndpoint { API_REST, AUTH, - API_GRAPHQL + API_GRAPHQL, } export const enum DataEndpoint { @@ -10,9 +10,11 @@ export const enum DataEndpoint { CAREER, TIMETABLE, COURSE, + THREAD, + COMMENT, } export enum OperationEndpoint { APP, - SYLLABUS + SYLLABUS, } diff --git a/lib/constructs/business/rest-api-service.ts b/lib/constructs/business/rest-api-service.ts index ee599e918..db4ba68d6 100644 --- a/lib/constructs/business/rest-api-service.ts +++ b/lib/constructs/business/rest-api-service.ts @@ -4,15 +4,31 @@ import * as iam from 'aws-cdk-lib/aws-iam'; import { Construct } from 'constructs'; import { allowHeaders, allowOrigins } from '../../configs/api-gateway/cors'; -import { lambdaRespParams, s3RespMapping, syllabusRespParams } from '../../configs/api-gateway/mapping'; +import { + lambdaRespParams, + s3RespMapping, + syllabusRespParams, +} from '../../configs/api-gateway/mapping'; import { courseReviewGetRespSchema, courseReviewPatchReqSchema, courseReviewPostReqSchema, + forumThreadGetRespSchema, + forumThreadPatchReqSchema, + forumThreadPostReqSchema, + forumCommentGetRespSchema, + forumCommentPostReqSchema, + forumCommentPatchReqSchema, syllabusSchema, } from '../../configs/api-gateway/schema'; import { AwsServicePrincipal } from '../../configs/common/aws'; -import { CourseReviewsFunctions, SyllabusFunctions, TimetableFunctions } from '../common/lambda-functions'; +import { + CourseReviewsFunctions, + SyllabusFunctions, + TimetableFunctions, + ForumThreadFunctions, + ForumCommentFunctions, +} from '../common/lambda-functions'; import { AbstractRestApiEndpoint } from './api-endpoint'; export interface RestApiServiceProps { @@ -22,17 +38,29 @@ export interface RestApiServiceProps { } export class RestApiService extends Construct { - readonly resourceMapping: { [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method } }; + readonly resourceMapping: { + [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method }; + }; - constructor(scope: AbstractRestApiEndpoint, id: string, props: RestApiServiceProps) { + constructor( + scope: AbstractRestApiEndpoint, + id: string, + props: RestApiServiceProps, + ) { super(scope, id); } } export class SyllabusApiService extends RestApiService { - readonly resourceMapping: { [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method } }; + readonly resourceMapping: { + [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method }; + }; - constructor(scope: AbstractRestApiEndpoint, id: string, props: RestApiServiceProps) { + constructor( + scope: AbstractRestApiEndpoint, + id: string, + props: RestApiServiceProps, + ) { super(scope, id, props); const root = scope.apiEndpoint.root.addResource('syllabus'); @@ -49,108 +77,147 @@ export class SyllabusApiService extends RestApiService { const apiGatewayRole = new iam.Role(this, 'rest-api-s3', { assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.API_GATEWAY), description: 'Allow API Gateway to fetch objects from s3 buckets.', - path: `/service-role/${ AwsServicePrincipal.API_GATEWAY }/`, + path: `/service-role/${AwsServicePrincipal.API_GATEWAY}/`, roleName: 's3-apigateway-read', - managedPolicies: [iam.ManagedPolicy.fromManagedPolicyArn(this, 's3-read-only', - 'arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess')], + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 's3-read-only', + 'arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess', + ), + ], }); - const getIntegration = new apigw.AwsIntegration( - { - service: 's3', - integrationHttpMethod: apigw2.HttpMethod.GET, - path: 'syllabus/{school}.json', - subdomain: props.dataSource, - options: { - credentialsRole: apiGatewayRole, - requestParameters: { ['integration.request.path.school']: 'method.request.path.school' }, - integrationResponses: [{ + const getIntegration = new apigw.AwsIntegration({ + service: 's3', + integrationHttpMethod: apigw2.HttpMethod.GET, + path: 'syllabus/{school}.json', + subdomain: props.dataSource, + options: { + credentialsRole: apiGatewayRole, + requestParameters: { + ['integration.request.path.school']: 'method.request.path.school', + }, + integrationResponses: [ + { statusCode: '200', responseParameters: s3RespMapping, - }], - }, + }, + ], }, - ); + }); - const headIntegration = new apigw.AwsIntegration( - { - service: 's3', - integrationHttpMethod: apigw2.HttpMethod.HEAD, - path: 'syllabus/{school}.json', - subdomain: props.dataSource, - options: { - credentialsRole: apiGatewayRole, - requestParameters: { ['integration.request.path.school']: 'method.request.path.school' }, - integrationResponses: [{ + const headIntegration = new apigw.AwsIntegration({ + service: 's3', + integrationHttpMethod: apigw2.HttpMethod.HEAD, + path: 'syllabus/{school}.json', + subdomain: props.dataSource, + options: { + credentialsRole: apiGatewayRole, + requestParameters: { + ['integration.request.path.school']: 'method.request.path.school', + }, + integrationResponses: [ + { statusCode: '200', responseParameters: s3RespMapping, - }], - }, + }, + ], }, - ); + }); const syllabusFunctions = new SyllabusFunctions(this, 'syllabus-function'); const courseGetIntegration = new apigw.LambdaIntegration( - syllabusFunctions.getFunction, { proxy: true }, + syllabusFunctions.getFunction, + { proxy: true }, ); const bookPostIntegration = new apigw.LambdaIntegration( - syllabusFunctions.postFunction, { proxy: true }, + syllabusFunctions.postFunction, + { proxy: true }, ); const optionsSyllabusSchools = syllabusSchools.addCorsPreflight({ allowOrigins: allowOrigins, allowHeaders: allowHeaders, - allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.OPTIONS, apigw2.HttpMethod.HEAD], - }); - const getSyllabusSchools = syllabusSchools.addMethod(apigw2.HttpMethod.GET, getIntegration, { - requestParameters: { ['method.request.path.school']: true }, - operationName: 'GetSyllabusBySchool', - methodResponses: [{ - statusCode: '200', - responseModels: { ['application/json']: getRespModel }, - responseParameters: syllabusRespParams, - }], - requestValidator: props.validator, - }); - const headSyllabusSchools = syllabusSchools.addMethod(apigw2.HttpMethod.HEAD, headIntegration, { - requestParameters: { ['method.request.path.school']: true }, - operationName: 'GetSyllabusMetadataBySchool', - methodResponses: [{ - statusCode: '200', - responseParameters: syllabusRespParams, - }], - requestValidator: props.validator, + allowMethods: [ + apigw2.HttpMethod.GET, + apigw2.HttpMethod.OPTIONS, + apigw2.HttpMethod.HEAD, + ], }); + const getSyllabusSchools = syllabusSchools.addMethod( + apigw2.HttpMethod.GET, + getIntegration, + { + requestParameters: { ['method.request.path.school']: true }, + operationName: 'GetSyllabusBySchool', + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: getRespModel }, + responseParameters: syllabusRespParams, + }, + ], + requestValidator: props.validator, + }, + ); + const headSyllabusSchools = syllabusSchools.addMethod( + apigw2.HttpMethod.HEAD, + headIntegration, + { + requestParameters: { ['method.request.path.school']: true }, + operationName: 'GetSyllabusMetadataBySchool', + methodResponses: [ + { + statusCode: '200', + responseParameters: syllabusRespParams, + }, + ], + requestValidator: props.validator, + }, + ); const optionsSyllabusCourse = root.addCorsPreflight({ allowOrigins: allowOrigins, allowHeaders: allowHeaders, allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.OPTIONS], }); - const getSyllabusCourse = root.addMethod(apigw2.HttpMethod.GET, courseGetIntegration, { - operationName: 'GetCourse', - requestParameters: { - 'method.request.querystring.id': true, + const getSyllabusCourse = root.addMethod( + apigw2.HttpMethod.GET, + courseGetIntegration, + { + operationName: 'GetCourse', + requestParameters: { + 'method.request.querystring.id': true, + }, + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + requestValidator: props.validator, }, - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], - requestValidator: props.validator, - }); + ); const optionsBookInfo = bookInfo.addCorsPreflight({ allowOrigins: allowOrigins, allowHeaders: allowHeaders, allowMethods: [apigw2.HttpMethod.POST, apigw2.HttpMethod.OPTIONS], }); - const postBookInfo = bookInfo.addMethod(apigw2.HttpMethod.POST, bookPostIntegration, { - operationName: 'GetBookInfo', - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], - requestValidator: props.validator, - }); + const postBookInfo = bookInfo.addMethod( + apigw2.HttpMethod.POST, + bookPostIntegration, + { + operationName: 'GetBookInfo', + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + requestValidator: props.validator, + }, + ); this.resourceMapping = { '/syllabus': { @@ -171,12 +238,20 @@ export class SyllabusApiService extends RestApiService { } export class CourseReviewsApiService extends RestApiService { - readonly resourceMapping: { [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method } }; + readonly resourceMapping: { + [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method }; + }; - constructor(scope: AbstractRestApiEndpoint, id: string, props: RestApiServiceProps) { + constructor( + scope: AbstractRestApiEndpoint, + id: string, + props: RestApiServiceProps, + ) { super(scope, id, props); - const root = scope.apiEndpoint.root.addResource('course-reviews').addResource('{key}'); + const root = scope.apiEndpoint.root + .addResource('course-reviews') + .addResource('{key}'); const getRespModel = scope.apiEndpoint.addModel('review-get-resp-model', { schema: courseReviewGetRespSchema, @@ -197,80 +272,110 @@ export class CourseReviewsApiService extends RestApiService { modelName: 'PatchReviewReq', }); - const courseReviewsFunctions = new CourseReviewsFunctions(this, 'crud-functions', { - envVars: { - TABLE_NAME: props.dataSource!, + const courseReviewsFunctions = new CourseReviewsFunctions( + this, + 'crud-functions', + { + envVars: { + TABLE_NAME: props.dataSource!, + }, }, - }); + ); const getIntegration = new apigw.LambdaIntegration( - courseReviewsFunctions.getFunction, { proxy: true }, + courseReviewsFunctions.getFunction, + { proxy: true }, ); const postIntegration = new apigw.LambdaIntegration( - courseReviewsFunctions.postFunction, { proxy: true }, + courseReviewsFunctions.postFunction, + { proxy: true }, ); const patchIntegration = new apigw.LambdaIntegration( - courseReviewsFunctions.patchFunction, { proxy: true }, + courseReviewsFunctions.patchFunction, + { proxy: true }, ); const deleteIntegration = new apigw.LambdaIntegration( - courseReviewsFunctions.deleteFunction, { proxy: true }, + courseReviewsFunctions.deleteFunction, + { proxy: true }, ); const optionsCourseReviews = root.addCorsPreflight({ allowOrigins: allowOrigins, allowHeaders: allowHeaders, - allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.POST, apigw2.HttpMethod.PATCH, apigw2.HttpMethod.DELETE, apigw2.HttpMethod.OPTIONS], + allowMethods: [ + apigw2.HttpMethod.GET, + apigw2.HttpMethod.POST, + apigw2.HttpMethod.PATCH, + apigw2.HttpMethod.DELETE, + apigw2.HttpMethod.OPTIONS, + ], }); - const getCourseReviews = root.addMethod(apigw2.HttpMethod.GET, getIntegration, + const getCourseReviews = root.addMethod( + apigw2.HttpMethod.GET, + getIntegration, { requestParameters: { 'method.request.querystring.uid': false, }, operationName: 'GetReviews', - methodResponses: [{ - statusCode: '200', - responseModels: { ['application/json']: getRespModel }, - responseParameters: lambdaRespParams, - }], + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: getRespModel }, + responseParameters: lambdaRespParams, + }, + ], requestValidator: props.validator, }, ); - const postCourseReviews = root.addMethod(apigw2.HttpMethod.POST, postIntegration, + const postCourseReviews = root.addMethod( + apigw2.HttpMethod.POST, + postIntegration, { operationName: 'PostReview', requestModels: { ['application/json']: postReqModel }, - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], authorizer: props.authorizer, requestValidator: props.validator, }, ); - const patchCourseReviews = root.addMethod(apigw2.HttpMethod.PATCH, patchIntegration, + const patchCourseReviews = root.addMethod( + apigw2.HttpMethod.PATCH, + patchIntegration, { operationName: 'UpdateReview', requestParameters: { 'method.request.querystring.ts': true, }, requestModels: { ['application/json']: patchReqModel }, - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], authorizer: props.authorizer, requestValidator: props.validator, }, ); - const deleteCourseReviews = root.addMethod(apigw2.HttpMethod.DELETE, deleteIntegration, + const deleteCourseReviews = root.addMethod( + apigw2.HttpMethod.DELETE, + deleteIntegration, { operationName: 'DeleteReview', requestParameters: { 'method.request.querystring.ts': true, }, - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], authorizer: props.authorizer, requestValidator: props.validator, }, @@ -289,9 +394,15 @@ export class CourseReviewsApiService extends RestApiService { } export class CareerApiService extends RestApiService { - readonly resourceMapping: { [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method } }; + readonly resourceMapping: { + [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method }; + }; - constructor(scope: AbstractRestApiEndpoint, id: string, props: RestApiServiceProps) { + constructor( + scope: AbstractRestApiEndpoint, + id: string, + props: RestApiServiceProps, + ) { super(scope, id, props); const root = scope.apiEndpoint.root.addResource('career'); @@ -302,33 +413,41 @@ export class CareerApiService extends RestApiService { const internGetIntegration = new apigw.MockIntegration({ requestTemplates: { ['application/json']: '{"statusCode": 200}' }, passthroughBehavior: apigw.PassthroughBehavior.WHEN_NO_TEMPLATES, - integrationResponses: [{ - statusCode: '200', - responseTemplates: { ['application/json']: '{}' }, - }], + integrationResponses: [ + { + statusCode: '200', + responseTemplates: { ['application/json']: '{}' }, + }, + ], }); const partGetIntegration = new apigw.MockIntegration({ requestTemplates: { ['application/json']: '{"statusCode": 200}' }, passthroughBehavior: apigw.PassthroughBehavior.WHEN_NO_TEMPLATES, - integrationResponses: [{ - statusCode: '200', - responseTemplates: { ['application/json']: '{}' }, - }], + integrationResponses: [ + { + statusCode: '200', + responseTemplates: { ['application/json']: '{}' }, + }, + ], }); const seminarGetIntegration = new apigw.MockIntegration({ requestTemplates: { ['application/json']: '{"statusCode": 200}' }, passthroughBehavior: apigw.PassthroughBehavior.WHEN_NO_TEMPLATES, - integrationResponses: [{ - statusCode: '200', - responseTemplates: { ['application/json']: '{}' }, - }], + integrationResponses: [ + { + statusCode: '200', + responseTemplates: { ['application/json']: '{}' }, + }, + ], }); - [intern, part, seminar].forEach((value => value.addCorsPreflight({ - allowOrigins: allowOrigins, - allowHeaders: allowHeaders, - allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.OPTIONS], - }))); + [intern, part, seminar].forEach((value) => + value.addCorsPreflight({ + allowOrigins: allowOrigins, + allowHeaders: allowHeaders, + allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.OPTIONS], + }), + ); intern.addMethod(apigw2.HttpMethod.GET, internGetIntegration, { requestParameters: { 'method.request.querystring.offset': true, @@ -338,11 +457,13 @@ export class CareerApiService extends RestApiService { 'method.request.querystring.lang': false, }, operationName: 'GetInternInfo', - methodResponses: [{ - statusCode: '200', - responseModels: { ['application/json']: apigw.Model.EMPTY_MODEL }, - responseParameters: lambdaRespParams, - }], + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: apigw.Model.EMPTY_MODEL }, + responseParameters: lambdaRespParams, + }, + ], requestValidator: props.validator, }); part.addMethod(apigw2.HttpMethod.GET, partGetIntegration, { @@ -356,11 +477,13 @@ export class CareerApiService extends RestApiService { 'method.request.querystring.freq': false, }, operationName: 'GetParttimeInfo', - methodResponses: [{ - statusCode: '200', - responseModels: { ['application/json']: apigw.Model.EMPTY_MODEL }, - responseParameters: lambdaRespParams, - }], + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: apigw.Model.EMPTY_MODEL }, + responseParameters: lambdaRespParams, + }, + ], requestValidator: props.validator, }); seminar.addMethod(apigw2.HttpMethod.GET, seminarGetIntegration, { @@ -374,20 +497,28 @@ export class CareerApiService extends RestApiService { 'method.request.querystring.major': false, }, operationName: 'GetSeminarInfo', - methodResponses: [{ - statusCode: '200', - responseModels: { ['application/json']: apigw.Model.EMPTY_MODEL }, - responseParameters: lambdaRespParams, - }], + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: apigw.Model.EMPTY_MODEL }, + responseParameters: lambdaRespParams, + }, + ], requestValidator: props.validator, }); } } export class TimetableApiService extends RestApiService { - readonly resourceMapping: { [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method } }; + readonly resourceMapping: { + [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method }; + }; - constructor(scope: AbstractRestApiEndpoint, id: string, props: RestApiServiceProps) { + constructor( + scope: AbstractRestApiEndpoint, + id: string, + props: RestApiServiceProps, + ) { super(scope, id, props); const root = scope.apiEndpoint.root.addResource('timetable'); @@ -400,13 +531,20 @@ export class TimetableApiService extends RestApiService { }, }); const getIntegration = new apigw.LambdaIntegration( - timetableFunctions.getFunction, { proxy: true }, + timetableFunctions.getFunction, + { proxy: true }, ); const postIntegration = new apigw.LambdaIntegration( - timetableFunctions.postFunction, { proxy: true }, + timetableFunctions.postFunction, + { proxy: true }, ); const patchIntegration = new apigw.LambdaIntegration( - timetableFunctions.patchFunction, { proxy: true }, + timetableFunctions.patchFunction, + { proxy: true }, + ); + const putIntergation = new apigw.LambdaIntegration( + timetableFunctions.putFunction, + { proxy: true }, ); // const importIntegration = new apigw.LambdaIntegration( // timetableFunctions.importFunction, {proxy: true}, @@ -415,35 +553,68 @@ export class TimetableApiService extends RestApiService { // timetableFunctions.exportFunction, {proxy: true}, // ); + // , apigw2.HttpMethod.DELETE + const optionsTimetable = root.addCorsPreflight({ allowOrigins: allowOrigins, allowHeaders: allowHeaders, - allowMethods: [apigw2.HttpMethod.GET, apigw2.HttpMethod.POST, apigw2.HttpMethod.PATCH, apigw2.HttpMethod.OPTIONS, apigw2.HttpMethod.DELETE], + allowMethods: [ + apigw2.HttpMethod.GET, + apigw2.HttpMethod.PUT, + apigw2.HttpMethod.POST, + apigw2.HttpMethod.PATCH, + apigw2.HttpMethod.OPTIONS, + ], }); const getTimetable = root.addMethod(apigw2.HttpMethod.GET, getIntegration, { operationName: 'GetTimetable', - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], - authorizer: props.authorizer, - requestValidator: props.validator, - }); - const postTimetable = root.addMethod(apigw2.HttpMethod.POST, postIntegration, { - operationName: 'PostTimetable', - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], authorizer: props.authorizer, requestValidator: props.validator, }); - const patchTimetable = root.addMethod(apigw2.HttpMethod.PATCH, patchIntegration, { - operationName: 'UpdateTimetable', - methodResponses: [{ - statusCode: '200', - responseParameters: lambdaRespParams, - }], + const postTimetable = root.addMethod( + apigw2.HttpMethod.POST, + postIntegration, + { + operationName: 'PostTimetable', + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + authorizer: props.authorizer, + requestValidator: props.validator, + }, + ); + const patchTimetable = root.addMethod( + apigw2.HttpMethod.PATCH, + patchIntegration, + { + operationName: 'UpdateTimetable', + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + authorizer: props.authorizer, + requestValidator: props.validator, + }, + ); + const putTimetable = root.addMethod(apigw2.HttpMethod.PUT, putIntergation, { + operationName: 'PutTimetable', + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], authorizer: props.authorizer, requestValidator: props.validator, }); @@ -476,6 +647,7 @@ export class TimetableApiService extends RestApiService { [apigw2.HttpMethod.GET]: getTimetable, [apigw2.HttpMethod.PATCH]: patchTimetable, [apigw2.HttpMethod.POST]: postTimetable, + [apigw2.HttpMethod.PUT]: putTimetable, }, // "/timetable/export": { // [apigw2.HttpMethod.POST]: exportTimetable, @@ -488,9 +660,15 @@ export class TimetableApiService extends RestApiService { } export class GraphqlApiService extends RestApiService { - readonly resourceMapping: { [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method } }; + readonly resourceMapping: { + [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method }; + }; - constructor(scope: AbstractRestApiEndpoint, id: string, props: RestApiServiceProps) { + constructor( + scope: AbstractRestApiEndpoint, + id: string, + props: RestApiServiceProps, + ) { super(scope, id, props); const root = scope.apiEndpoint.root.addResource('graphql'); @@ -507,9 +685,11 @@ export class GraphqlApiService extends RestApiService { }); const postGql = root.addMethod(apigw2.HttpMethod.POST, postIntegration, { operationName: 'PostGraphQL', - methodResponses: [{ - statusCode: '200', - }], + methodResponses: [ + { + statusCode: '200', + }, + ], }); this.resourceMapping = { @@ -520,3 +700,397 @@ export class GraphqlApiService extends RestApiService { }; } } + +export class ForumThreadsApiService extends RestApiService { + readonly resourceMapping: { + [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method }; + }; + + constructor( + scope: AbstractRestApiEndpoint, + id: string, + props: RestApiServiceProps, + ) { + super(scope, id, props); + + const root = scope.apiEndpoint.root.addResource('forum'); + const boardResource = root.addResource('{board_id}'); + const threadResource = boardResource.addResource('{thread_id}'); + + const optionsForumHome = root.addCorsPreflight({ + allowOrigins: allowOrigins, + allowHeaders: allowHeaders, + allowMethods: [ + apigw2.HttpMethod.GET, + apigw2.HttpMethod.POST, + apigw2.HttpMethod.PATCH, + apigw2.HttpMethod.DELETE, + apigw2.HttpMethod.OPTIONS, + ], + }); + + const optionsForumBoards = boardResource.addCorsPreflight({ + allowOrigins: allowOrigins, + allowHeaders: allowHeaders, + allowMethods: [ + apigw2.HttpMethod.GET, + apigw2.HttpMethod.POST, + apigw2.HttpMethod.PATCH, + apigw2.HttpMethod.DELETE, + apigw2.HttpMethod.OPTIONS, + ], + }); + + const optionsForumThreads = threadResource.addCorsPreflight({ + allowOrigins: allowOrigins, + allowHeaders: allowHeaders, + allowMethods: [ + apigw2.HttpMethod.GET, + apigw2.HttpMethod.POST, + apigw2.HttpMethod.PATCH, + apigw2.HttpMethod.DELETE, + apigw2.HttpMethod.OPTIONS, + ], + }); + + const getRespModel = scope.apiEndpoint.addModel('threads-get-resp-model', { + schema: forumThreadGetRespSchema, + contentType: 'application/json', + description: 'HTTP GET response body schema for fetching threads.', + modelName: 'GetThreadsResp', + }); + const postReqModel = scope.apiEndpoint.addModel('thread-post-req-model', { + schema: forumThreadPostReqSchema, + contentType: 'application/json', + description: 'HTTP POST request body schema for submitting a thread.', + modelName: 'PostThreadReq', + }); + const patchReqModel = scope.apiEndpoint.addModel('thread-patch-req-model', { + schema: forumThreadPatchReqSchema, + contentType: 'application/json', + description: 'HTTP PATCH request body schema for updating a thread', + modelName: 'PatchThreadReq', + }); + + const forumThreadsFunctions = new ForumThreadFunctions( + this, + 'crud-functions', + { + envVars: { + TABLE_NAME: props.dataSource!, + }, + }, + ); + + const getAllInegration = new apigw.LambdaIntegration( + forumThreadsFunctions.getAllFunction, + { proxy: true }, + ); + const getBoardIntegration = new apigw.LambdaIntegration( + forumThreadsFunctions.getBoardFunction, + { proxy: true }, + ); + const getThreadIntegration = new apigw.LambdaIntegration( + forumThreadsFunctions.getSingleFunction, + { proxy: true }, + ); + const postIntegration = new apigw.LambdaIntegration( + forumThreadsFunctions.postFunction, + { proxy: true }, + ); + const patchIntegration = new apigw.LambdaIntegration( + forumThreadsFunctions.patchFunction, + { proxy: true }, + ); + const deleteIntegration = new apigw.LambdaIntegration( + forumThreadsFunctions.deleteFunction, + { proxy: true }, + ); + + const getAllForumThreads = root.addMethod( + apigw2.HttpMethod.GET, + getAllInegration, + { + operationName: 'GetAllThreads', + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: getRespModel }, + responseParameters: lambdaRespParams, + }, + ], + requestValidator: props.validator, + }, + ); + + const getBoardForumThreads = boardResource.addMethod( + apigw2.HttpMethod.GET, + getBoardIntegration, + { + operationName: 'GetBoardThreads', + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: getRespModel }, + responseParameters: lambdaRespParams, + }, + ], + requestValidator: props.validator, + }, + ); + + const getForumThread = threadResource.addMethod( + apigw2.HttpMethod.GET, + getThreadIntegration, + { + requestParameters: { + 'method.request.path.thread_id': true, + }, + operationName: 'GetSingleThread', + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: getRespModel }, + responseParameters: lambdaRespParams, + }, + ], + requestValidator: props.validator, + }, + ); + const postForumThreads = boardResource.addMethod( + apigw2.HttpMethod.POST, + postIntegration, + { + operationName: 'PostThread', + requestModels: { ['application/json']: postReqModel }, + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + authorizer: props.authorizer, + requestValidator: props.validator, + }, + ); + const patchForumThreads = threadResource.addMethod( + apigw2.HttpMethod.PATCH, + patchIntegration, + { + operationName: 'UpdateThread', + requestParameters: { + 'method.request.querystring.ts': true, + }, + requestModels: { ['application/json']: patchReqModel }, + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + authorizer: props.authorizer, + requestValidator: props.validator, + }, + ); + const deleteForumThreads = threadResource.addMethod( + apigw2.HttpMethod.DELETE, + deleteIntegration, + { + operationName: 'DeleteThread', + requestParameters: { + 'method.request.querystring.ts': true, + }, + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + authorizer: props.authorizer, + requestValidator: props.validator, + }, + ); + + this.resourceMapping = { + '/forum': { + [apigw2.HttpMethod.GET]: getAllForumThreads, + [apigw2.HttpMethod.OPTIONS]: optionsForumHome, + }, + '/forum/{board_id}': { + [apigw2.HttpMethod.GET]: getBoardForumThreads, + [apigw2.HttpMethod.POST]: postForumThreads, + [apigw2.HttpMethod.OPTIONS]: optionsForumBoards, + }, + '/forum/{board_id}/{thread_id}': { + [apigw2.HttpMethod.GET]: getForumThread, + [apigw2.HttpMethod.OPTIONS]: optionsForumThreads, + [apigw2.HttpMethod.PATCH]: patchForumThreads, + [apigw2.HttpMethod.DELETE]: deleteForumThreads, + }, + }; + } +} + +export class ForumCommentsApiService extends RestApiService { + readonly resourceMapping: { + [path: string]: { [method in apigw2.HttpMethod]?: apigw.Method }; + }; + + constructor( + scope: AbstractRestApiEndpoint, + id: string, + props: RestApiServiceProps, + ) { + super(scope, id, props); + + const root = scope.apiEndpoint.root + .addResource('forum-comment') + .addResource('{thread_id}'); + + const optionsForumThreadComment = root.addCorsPreflight({ + allowOrigins: allowOrigins, + allowHeaders: allowHeaders, + allowMethods: [ + apigw2.HttpMethod.GET, + apigw2.HttpMethod.POST, + apigw2.HttpMethod.PATCH, + apigw2.HttpMethod.DELETE, + apigw2.HttpMethod.OPTIONS, + ], + }); + + const forumCommentsFunctions = new ForumCommentFunctions( + this, + 'crud-functions', + { + envVars: { + TABLE_NAME: props.dataSource!, + }, + }, + ); + + const getIntegration = new apigw.LambdaIntegration( + forumCommentsFunctions.getFunction, + { proxy: true }, + ); + const postIntegration = new apigw.LambdaIntegration( + forumCommentsFunctions.postFunction, + { proxy: true }, + ); + const patchIntegration = new apigw.LambdaIntegration( + forumCommentsFunctions.patchFunction, + { proxy: true }, + ); + const deleteIntegration = new apigw.LambdaIntegration( + forumCommentsFunctions.deleteFunction, + { proxy: true }, + ); + + const getRespModel = scope.apiEndpoint.addModel('comment-get-resp-model', { + schema: forumCommentGetRespSchema, + contentType: 'application/json', + description: + 'HTTP GET response body schema for fetching a comment of a thread.', + modelName: 'GetCommentsResp', + }); + const postReqModel = scope.apiEndpoint.addModel('comment-post-req-model', { + schema: forumCommentPostReqSchema, + contentType: 'application/json', + description: + 'HTTP POST request body schema for submitting a comment of a thread.', + modelName: 'PostCommentReq', + }); + const patchReqModel = scope.apiEndpoint.addModel( + 'comment-patch-req-model', + { + schema: forumCommentPatchReqSchema, + contentType: 'application/json', + description: + 'HTTP PATCH request body schema for updating a comment of a thread', + modelName: 'PatchCommentReq', + }, + ); + + const getForumComments = root.addMethod( + apigw2.HttpMethod.GET, + getIntegration, + { + requestParameters: { + 'method.request.querystring.uid': false, + }, + operationName: 'GetComments', + methodResponses: [ + { + statusCode: '200', + responseModels: { ['application/json']: getRespModel }, + responseParameters: lambdaRespParams, + }, + ], + requestValidator: props.validator, + }, + ); + const postForumComment = root.addMethod( + apigw2.HttpMethod.POST, + postIntegration, + { + operationName: 'PostComment', + requestModels: { ['application/json']: postReqModel }, + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + authorizer: props.authorizer, + requestValidator: props.validator, + }, + ); + const patchForumComment = root.addMethod( + apigw2.HttpMethod.PATCH, + patchIntegration, + { + operationName: 'UpdateComment', + requestParameters: { + 'method.request.querystring.ts': true, + }, + requestModels: { ['application/json']: patchReqModel }, + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + authorizer: props.authorizer, + requestValidator: props.validator, + }, + ); + const deleteForumComment = root.addMethod( + apigw2.HttpMethod.DELETE, + deleteIntegration, + { + operationName: 'DeleteComment', + requestParameters: { + 'method.request.querystring.ts': true, + }, + methodResponses: [ + { + statusCode: '200', + responseParameters: lambdaRespParams, + }, + ], + authorizer: props.authorizer, + requestValidator: props.validator, + }, + ); + + this.resourceMapping = { + '/forum-comment/{thread_id}': { + [apigw2.HttpMethod.GET]: getForumComments, + [apigw2.HttpMethod.OPTIONS]: optionsForumThreadComment, + [apigw2.HttpMethod.PATCH]: patchForumComment, + [apigw2.HttpMethod.POST]: postForumComment, + [apigw2.HttpMethod.DELETE]: deleteForumComment, + }, + }; + } +} diff --git a/lib/constructs/business/service.ts b/lib/constructs/business/service.ts index 66d414a11..c72e61c23 100644 --- a/lib/constructs/business/service.ts +++ b/lib/constructs/business/service.ts @@ -7,18 +7,31 @@ export enum ApiEndpoint { GRAPHQL, } -export type RestApiServiceId = 'syllabus' | 'course-reviews' | 'career' | 'timetable' | 'graphql'; +export type RestApiServiceId = + | 'syllabus' + | 'course-reviews' + | 'career' + | 'timetable' + | 'thread' + | 'comment' + | 'graphql'; -export const restApiServiceMap: { [name in RestApiServiceId]: typeof rest.RestApiService } = { +export const restApiServiceMap: { + [name in RestApiServiceId]: typeof rest.RestApiService; +} = { 'syllabus': rest.SyllabusApiService, 'course-reviews': rest.CourseReviewsApiService, 'career': rest.CareerApiService, 'timetable': rest.TimetableApiService, + 'thread': rest.ForumThreadsApiService, + 'comment': rest.ForumCommentsApiService, 'graphql': rest.GraphqlApiService, }; export type GraphqlApiServiceId = 'course'; -export const graphqlApiServiceMap: { [name in GraphqlApiServiceId]: typeof gql.GraphqlApiService } = { +export const graphqlApiServiceMap: { + [name in GraphqlApiServiceId]: typeof gql.GraphqlApiService; +} = { course: gql.CourseApiService, }; diff --git a/lib/constructs/common/lambda-functions.ts b/lib/constructs/common/lambda-functions.ts index 78cc99344..6190515b6 100644 --- a/lib/constructs/common/lambda-functions.ts +++ b/lib/constructs/common/lambda-functions.ts @@ -1,12 +1,16 @@ import * as lambda_py from '@aws-cdk/aws-lambda-python-alpha'; import { Duration } from 'aws-cdk-lib'; +import { ApiGateway } from 'aws-cdk-lib/aws-events-targets'; import * as iam from 'aws-cdk-lib/aws-iam'; import * as lambda from 'aws-cdk-lib/aws-lambda'; import * as lambda_js from 'aws-cdk-lib/aws-lambda-nodejs'; import * as logs from 'aws-cdk-lib/aws-logs'; import { Construct } from 'constructs'; import { AwsServicePrincipal } from '../../configs/common/aws'; -import { GOOGLE_API_SERVICE_ACCOUNT_INFO, SLACK_WEBHOOK_URL } from '../../configs/lambda/environment'; +import { + GOOGLE_API_SERVICE_ACCOUNT_INFO, + SLACK_WEBHOOK_URL, +} from '../../configs/lambda/environment'; interface FunctionsProps { envVars: { [name: string]: string }; @@ -21,31 +25,53 @@ export class CourseReviewsFunctions extends Construct { constructor(scope: Construct, id: string, props: FunctionsProps) { super(scope, id); - const dynamoDBReadRole: iam.LazyRole = new iam.LazyRole(this, 'dynamo-read-role', { - assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), - description: 'Allow lambda function to perform crud operation on dynamodb', - path: `/service-role/${ AwsServicePrincipal.LAMBDA }/`, - roleName: 'dynamodb-lambda-read', - managedPolicies: [ - iam.ManagedPolicy.fromManagedPolicyArn(this, 'basic-exec', - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 'db-read-only', - 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess'), - ], - }); - - const dynamoDBPutRole: iam.LazyRole = new iam.LazyRole(this, 'dynamo-put-role', { - assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), - description: 'Allow lambda function to perform crud operation on dynamodb', - path: `/service-role/${ AwsServicePrincipal.LAMBDA }/`, - roleName: 'dynamodb-lambda-write', - managedPolicies: [ - iam.ManagedPolicy.fromManagedPolicyArn(this, 'basic-exec1', - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 'db-full-access', - 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess'), - ], - }); + const dynamoDBReadRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-read-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-read', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-read-only', + 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess', + ), + ], + }, + ); + + const dynamoDBPutRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-put-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-write', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec1', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-full-access', + 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess', + ), + ], + }, + ); this.getFunction = new lambda_py.PythonFunction(this, 'get-reviews', { entry: 'src/lambda/get-reviews', @@ -69,7 +95,10 @@ export class CourseReviewsFunctions extends Construct { runtime: lambda.Runtime.PYTHON_3_9, timeout: Duration.seconds(5), environment: props.envVars, - }).addEnvironment('GOOGLE_API_SERVICE_ACCOUNT_INFO', GOOGLE_API_SERVICE_ACCOUNT_INFO); + }).addEnvironment( + 'GOOGLE_API_SERVICE_ACCOUNT_INFO', + GOOGLE_API_SERVICE_ACCOUNT_INFO, + ); this.patchFunction = new lambda_py.PythonFunction(this, 'patch-review', { entry: 'src/lambda/patch-review', @@ -81,7 +110,10 @@ export class CourseReviewsFunctions extends Construct { runtime: lambda.Runtime.PYTHON_3_9, timeout: Duration.seconds(5), environment: props.envVars, - }).addEnvironment('GOOGLE_API_SERVICE_ACCOUNT_INFO', GOOGLE_API_SERVICE_ACCOUNT_INFO); + }).addEnvironment( + 'GOOGLE_API_SERVICE_ACCOUNT_INFO', + GOOGLE_API_SERVICE_ACCOUNT_INFO, + ); this.deleteFunction = new lambda_py.PythonFunction(this, 'delete-review', { entry: 'src/lambda/delete-review', @@ -103,22 +135,33 @@ export class SyllabusScraper extends Construct { constructor(scope: Construct, id: string, props: FunctionsProps) { super(scope, id); - const s3AccessRole: iam.LazyRole = new iam.LazyRole(this, 's3-access-role', { - assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), - description: 'Allow lambda function to access s3 buckets', - path: `/service-role/${ AwsServicePrincipal.LAMBDA }/`, - roleName: 's3-lambda-full-access', - managedPolicies: [ - iam.ManagedPolicy.fromManagedPolicyArn(this, 'basic-exec', - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 's3-full-access', - 'arn:aws:iam::aws:policy/AmazonS3FullAccess'), - ], - }); + const s3AccessRole: iam.LazyRole = new iam.LazyRole( + this, + 's3-access-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: 'Allow lambda function to access s3 buckets', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 's3-lambda-full-access', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 's3-full-access', + 'arn:aws:iam::aws:policy/AmazonS3FullAccess', + ), + ], + }, + ); this.baseFunction = new lambda_py.PythonFunction(this, 'base-function', { entry: 'src/lambda/syllabus-scraper', - description: 'Base function for scraping syllabus data from Waseda University.', + description: + 'Base function for scraping syllabus data from Waseda University.', functionName: 'syllabus-scraper', logRetention: logs.RetentionDays.ONE_MONTH, memorySize: 4096, @@ -138,7 +181,8 @@ export class AmplifyStatusPublisher extends Construct { this.baseFunction = new lambda_js.NodejsFunction(this, 'base-function', { entry: 'src/lambda/amplify-status-publisher/index.js', - description: 'Forwards Amplify build status message from SNS to Slack Webhook.', + description: + 'Forwards Amplify build status message from SNS to Slack Webhook.', functionName: 'amplify-status-publisher', logRetention: logs.RetentionDays.ONE_MONTH, memorySize: 128, @@ -156,7 +200,8 @@ export class ScraperStatusPublisher extends Construct { this.baseFunction = new lambda_js.NodejsFunction(this, 'base-function', { entry: 'src/lambda/sfn-status-publisher/index.js', - description: 'Forwards scraper execution status message from SNS to Slack Webhook.', + description: + 'Forwards scraper execution status message from SNS to Slack Webhook.', functionName: 'scraper-status-publisher', logRetention: logs.RetentionDays.ONE_MONTH, memorySize: 128, @@ -189,37 +234,60 @@ export class TimetableFunctions extends Construct { readonly postFunction: lambda.Function; readonly patchFunction: lambda.Function; readonly deleteFunction: lambda.Function; + readonly putFunction: lambda.Function; // readonly importFunction: lambda.Function; // readonly exportFunction: lambda.Function; constructor(scope: Construct, id: string, props: FunctionsProps) { super(scope, id); - const dynamoDBReadRole: iam.LazyRole = new iam.LazyRole(this, 'dynamo-read-role', { - assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), - description: 'Allow lambda function to perform crud operation on dynamodb', - path: `/service-role/${ AwsServicePrincipal.LAMBDA }/`, - roleName: 'dynamodb-lambda-read-timetable', - managedPolicies: [ - iam.ManagedPolicy.fromManagedPolicyArn(this, 'basic-exec', - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 'db-read-only', - 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess'), - ], - }); - - const dynamoDBPutRole: iam.LazyRole = new iam.LazyRole(this, 'dynamo-put-role', { - assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), - description: 'Allow lambda function to perform crud operation on dynamodb', - path: `/service-role/${ AwsServicePrincipal.LAMBDA }/`, - roleName: 'dynamodb-lambda-write-timetable', - managedPolicies: [ - iam.ManagedPolicy.fromManagedPolicyArn(this, 'basic-exec1', - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 'db-full-access', - 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess'), - ], - }); + const dynamoDBReadRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-read-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-read-timetable', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-read-only', + 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess', + ), + ], + }, + ); + + const dynamoDBPutRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-put-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-write-timetable', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec1', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-full-access', + 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess', + ), + ], + }, + ); this.getFunction = new lambda_py.PythonFunction(this, 'get-timetable', { entry: 'src/lambda/get-timetable', @@ -257,6 +325,18 @@ export class TimetableFunctions extends Construct { environment: props.envVars, }); + this.putFunction = new lambda_py.PythonFunction(this, 'put-timetable', { + entry: 'src/lambda/put-timetable', + description: 'Put timetable in the database.', + functionName: 'put-timetable', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 128, + role: dynamoDBPutRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(3), + environment: props.envVars, + }); + // this.importFunction = new lambda_py.PythonFunction(this, 'import-timetable', { // entry: 'src/lambda/import-timetable', // description: "Import timetable from pdf.", @@ -286,18 +366,29 @@ export class SyllabusFunctions extends Construct { constructor(scope: Construct, id: string, props?: FunctionsProps) { super(scope, id); - const dynamoDBReadRole: iam.LazyRole = new iam.LazyRole(this, 'dynamo-read-role', { - assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), - description: 'Allow lambda function to perform crud operation on dynamodb', - path: `/service-role/${ AwsServicePrincipal.LAMBDA }/`, - roleName: 'dynamodb-lambda-read-syllabus', - managedPolicies: [ - iam.ManagedPolicy.fromManagedPolicyArn(this, 'basic-exec', - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 'db-read-only', - 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess'), - ], - }); + const dynamoDBReadRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-read-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-read-syllabus', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-read-only', + 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess', + ), + ], + }, + ); this.getFunction = new lambda_py.PythonFunction(this, 'get-course', { entry: 'src/lambda/get-course', @@ -309,18 +400,28 @@ export class SyllabusFunctions extends Construct { timeout: Duration.seconds(3), }); - const comprehendFullAccessRole: iam.LazyRole = new iam.LazyRole(this, 'comprehend-access-role', { - assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), - description: 'Allow lambda function to interact with AWS Comprehend', - path: `/service-role/${ AwsServicePrincipal.LAMBDA }/`, - roleName: 'lambda-comprehend-access', - managedPolicies: [ - iam.ManagedPolicy.fromManagedPolicyArn(this, 'basic-exec1', - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 'comprehend-full-access', - 'arn:aws:iam::aws:policy/ComprehendFullAccess'), - ], - }); + const comprehendFullAccessRole: iam.LazyRole = new iam.LazyRole( + this, + 'comprehend-access-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: 'Allow lambda function to interact with AWS Comprehend', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'lambda-comprehend-access', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec1', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'comprehend-full-access', + 'arn:aws:iam::aws:policy/ComprehendFullAccess', + ), + ], + }, + ); this.postFunction = new lambda_py.PythonFunction(this, 'post-book', { entry: 'src/lambda/get-book-info', @@ -344,27 +445,304 @@ export class SyllabusUpdateFunction extends Construct { const LambdaFullAccess = new iam.LazyRole(this, 'lambda-fullaccess-role', { assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), description: 'Allow lambda function to access s3 buckets and dynamodb', - path: `/service-role/${ AwsServicePrincipal.LAMBDA }/`, + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, roleName: 'lambda-full-access', managedPolicies: [ - iam.ManagedPolicy.fromManagedPolicyArn(this, 'basic-exec', - 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 'db-full-access', - 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess'), - iam.ManagedPolicy.fromManagedPolicyArn(this, 's3-read-only', - 'arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess'), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-full-access', + 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 's3-read-only', + 'arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess', + ), ], }); - this.updateFunction = new lambda_py.PythonFunction(this, 'update-syllabus', { - entry: 'src/lambda/update-syllabus', - description: 'Update syllabus when S3 bucket is updated.', - functionName: 'update-syllabus', - role: LambdaFullAccess, + this.updateFunction = new lambda_py.PythonFunction( + this, + 'update-syllabus', + { + entry: 'src/lambda/update-syllabus', + description: 'Update syllabus when S3 bucket is updated.', + functionName: 'update-syllabus', + role: LambdaFullAccess, + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 128, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(60), + environment: props.envVars, + }, + ); + } +} + +export class ForumThreadFunctions extends Construct { + readonly getAllFunction: lambda.Function; + readonly getBoardFunction: lambda.Function; + readonly getSingleFunction: lambda.Function; + readonly postFunction: lambda.Function; + readonly patchFunction: lambda.Function; + readonly deleteFunction: lambda.Function; + + constructor(scope: Construct, id: string, props: FunctionsProps) { + super(scope, id); + + const dynamoDBReadRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-read-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-read-thread', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-read-only', + 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess', + ), + ], + }, + ); + + const dynamoDBPutRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-put-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-write-thread', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec1', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-full-access', + 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess', + ), + ], + }, + ); + + this.getAllFunction = new lambda_py.PythonFunction( + this, + 'get-all-threads', + { + entry: 'src/lambda/get-all-threads', + description: 'Get all forum threads from the database.', + functionName: 'get-all-threads', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 128, + role: dynamoDBReadRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(3), + environment: props.envVars, + }, + ); + + this.getBoardFunction = new lambda_py.PythonFunction( + this, + 'get-board-threads', + { + entry: 'src/lambda/get-board-threads', + description: 'Get forum threads from the database.', + functionName: 'get-board-threads', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 128, + role: dynamoDBReadRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(3), + environment: props.envVars, + }, + ); + + this.getSingleFunction = new lambda_py.PythonFunction( + this, + 'get-single-thread', + { + entry: 'src/lambda/get-single-thread', + description: 'Gets a single forum thread from the database.', + functionName: 'get-single-thread', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 128, + role: dynamoDBReadRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(3), + environment: props.envVars, + }, + ); + + this.postFunction = new lambda_py.PythonFunction(this, 'post-thread', { + entry: 'src/lambda/post-thread', + description: 'Save forum thread into the database.', + functionName: 'post-forum-thread', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 256, + role: dynamoDBPutRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(5), + environment: props.envVars, + }).addEnvironment( + 'GOOGLE_API_SERVICE_ACCOUNT_INFO', + GOOGLE_API_SERVICE_ACCOUNT_INFO, + ); + + this.patchFunction = new lambda_py.PythonFunction(this, 'patch-thread', { + entry: 'src/lambda/patch-thread', + description: 'Update forum thread in the database.', + functionName: 'patch-forum-thread', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 256, + role: dynamoDBPutRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(5), + environment: props.envVars, + }).addEnvironment( + 'GOOGLE_API_SERVICE_ACCOUNT_INFO', + GOOGLE_API_SERVICE_ACCOUNT_INFO, + ); + + this.deleteFunction = new lambda_py.PythonFunction(this, 'delete-thread', { + entry: 'src/lambda/delete-thread', + description: 'Delete forum thread in the database.', + functionName: 'delete-forum-thread', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 128, + role: dynamoDBPutRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(3), + environment: props.envVars, + }); + } +} + +export class ForumCommentFunctions extends Construct { + readonly getFunction: lambda.Function; + readonly postFunction: lambda.Function; + readonly patchFunction: lambda.Function; + readonly deleteFunction: lambda.Function; + + constructor(scope: Construct, id: string, props: FunctionsProps) { + super(scope, id); + + const dynamoDBReadRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-read-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-read-comment', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-read-only', + 'arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess', + ), + ], + }, + ); + + const dynamoDBPutRole: iam.LazyRole = new iam.LazyRole( + this, + 'dynamo-put-role', + { + assumedBy: new iam.ServicePrincipal(AwsServicePrincipal.LAMBDA), + description: + 'Allow lambda function to perform crud operation on dynamodb', + path: `/service-role/${AwsServicePrincipal.LAMBDA}/`, + roleName: 'dynamodb-lambda-write-comment', + managedPolicies: [ + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'basic-exec1', + 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole', + ), + iam.ManagedPolicy.fromManagedPolicyArn( + this, + 'db-full-access', + 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess', + ), + ], + }, + ); + + this.getFunction = new lambda_py.PythonFunction(this, 'get-comment', { + entry: 'src/lambda/get-comments', + description: 'get forum comments from the database.', + functionName: 'get-forum-comments', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 128, + role: dynamoDBReadRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(3), + environment: props.envVars, + }); + + this.postFunction = new lambda_py.PythonFunction(this, 'post-comment', { + entry: 'src/lambda/post-comment', + description: 'Save forum comment into the database.', + functionName: 'post-forum-comment', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 256, + role: dynamoDBPutRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(5), + environment: props.envVars, + }).addEnvironment( + 'GOOGLE_API_SERVICE_ACCOUNT_INFO', + GOOGLE_API_SERVICE_ACCOUNT_INFO, + ); + + this.patchFunction = new lambda_py.PythonFunction(this, 'patch-comment', { + entry: 'src/lambda/patch-comment', + description: 'Update forum comment in the database.', + functionName: 'patch-forum-comment', + logRetention: logs.RetentionDays.ONE_MONTH, + memorySize: 256, + role: dynamoDBPutRole, + runtime: lambda.Runtime.PYTHON_3_9, + timeout: Duration.seconds(5), + environment: props.envVars, + }).addEnvironment( + 'GOOGLE_API_SERVICE_ACCOUNT_INFO', + GOOGLE_API_SERVICE_ACCOUNT_INFO, + ); + + this.deleteFunction = new lambda_py.PythonFunction(this, 'delete-comment', { + entry: 'src/lambda/delete-comment', + description: 'Delete forum comment in the database.', + functionName: 'delete-forum-comment', logRetention: logs.RetentionDays.ONE_MONTH, memorySize: 128, + role: dynamoDBPutRole, runtime: lambda.Runtime.PYTHON_3_9, - timeout: Duration.seconds(60), + timeout: Duration.seconds(3), environment: props.envVars, }); } diff --git a/lib/constructs/persistence/database.ts b/lib/constructs/persistence/database.ts index 73e2d6206..b5a13cac3 100644 --- a/lib/constructs/persistence/database.ts +++ b/lib/constructs/persistence/database.ts @@ -8,6 +8,8 @@ export enum Collection { FEEDS, SYLLABUS, TIMETABLE, + THREAD, + COMMENT, } export class DynamoDatabase extends Construct { @@ -16,49 +18,125 @@ export class DynamoDatabase extends Construct { constructor(scope: Construct, id: string) { super(scope, id); - this.tables[Collection.COURSE_REVIEW] = new dynamodb.Table(this, 'dynamodb-review-table', { - partitionKey: { name: 'course_key', type: dynamodb.AttributeType.STRING }, - billingMode: dynamodb.BillingMode.PROVISIONED, - encryption: dynamodb.TableEncryption.DEFAULT, - removalPolicy: RemovalPolicy.RETAIN, - sortKey: { name: 'created_at', type: dynamodb.AttributeType.STRING }, - tableName: 'course-review', - readCapacity: 10, - writeCapacity: 7, - pointInTimeRecovery: true, - }); + this.tables[Collection.COURSE_REVIEW] = new dynamodb.Table( + this, + 'dynamodb-review-table', + { + partitionKey: { + name: 'course_key', + type: dynamodb.AttributeType.STRING, + }, + billingMode: dynamodb.BillingMode.PROVISIONED, + encryption: dynamodb.TableEncryption.DEFAULT, + removalPolicy: RemovalPolicy.RETAIN, + sortKey: { name: 'created_at', type: dynamodb.AttributeType.STRING }, + tableName: 'course-review', + readCapacity: 10, + writeCapacity: 7, + pointInTimeRecovery: true, + }, + ); - this.tables[Collection.CAREER] = new dynamodb.Table(this, 'dynamodb-career-table', { - partitionKey: { name: 'type', type: dynamodb.AttributeType.STRING }, - billingMode: dynamodb.BillingMode.PROVISIONED, - encryption: dynamodb.TableEncryption.DEFAULT, - removalPolicy: RemovalPolicy.RETAIN, - sortKey: { name: 'created_at', type: dynamodb.AttributeType.STRING }, - tableName: 'career', - readCapacity: 1, - writeCapacity: 1, - }); + this.tables[Collection.CAREER] = new dynamodb.Table( + this, + 'dynamodb-career-table', + { + partitionKey: { name: 'type', type: dynamodb.AttributeType.STRING }, + billingMode: dynamodb.BillingMode.PROVISIONED, + encryption: dynamodb.TableEncryption.DEFAULT, + removalPolicy: RemovalPolicy.RETAIN, + sortKey: { name: 'created_at', type: dynamodb.AttributeType.STRING }, + tableName: 'career', + readCapacity: 1, + writeCapacity: 1, + }, + ); + + this.tables[Collection.FEEDS] = new dynamodb.Table( + this, + 'dynamodb-feeds-table', + { + partitionKey: { name: 'category', type: dynamodb.AttributeType.STRING }, + billingMode: dynamodb.BillingMode.PROVISIONED, + encryption: dynamodb.TableEncryption.DEFAULT, + removalPolicy: RemovalPolicy.RETAIN, + sortKey: { name: 'created_at', type: dynamodb.AttributeType.STRING }, + tableName: 'feeds', + readCapacity: 1, + writeCapacity: 1, + }, + ); + + this.tables[Collection.TIMETABLE] = new dynamodb.Table( + this, + 'dynamodb-timetable-table', + { + partitionKey: { name: 'uid', type: dynamodb.AttributeType.STRING }, + billingMode: dynamodb.BillingMode.PROVISIONED, + encryption: dynamodb.TableEncryption.DEFAULT, + removalPolicy: RemovalPolicy.RETAIN, + tableName: 'timetable', + readCapacity: 12, + writeCapacity: 15, + pointInTimeRecovery: true, + }, + ); - this.tables[Collection.FEEDS] = new dynamodb.Table(this, 'dynamodb-feeds-table', { - partitionKey: { name: 'category', type: dynamodb.AttributeType.STRING }, - billingMode: dynamodb.BillingMode.PROVISIONED, - encryption: dynamodb.TableEncryption.DEFAULT, - removalPolicy: RemovalPolicy.RETAIN, - sortKey: { name: 'created_at', type: dynamodb.AttributeType.STRING }, - tableName: 'feeds', - readCapacity: 1, - writeCapacity: 1, + this.tables[Collection.THREAD] = new dynamodb.Table( + this, + 'dynamodb-thread-table', + { + partitionKey: { + name: 'board_id', + type: dynamodb.AttributeType.STRING, + }, + billingMode: dynamodb.BillingMode.PROVISIONED, + encryption: dynamodb.TableEncryption.DEFAULT, + removalPolicy: RemovalPolicy.DESTROY, + sortKey: { name: 'created_at', type: dynamodb.AttributeType.STRING }, + tableName: 'forum-threads', + readCapacity: 15, + writeCapacity: 15, + pointInTimeRecovery: true, + }, + ); + + this.tables[Collection.THREAD].addLocalSecondaryIndex({ + indexName: 'GroupIndex', + sortKey: { name: 'group_id', type: dynamodb.AttributeType.STRING }, + projectionType: dynamodb.ProjectionType.ALL, }); - this.tables[Collection.TIMETABLE] = new dynamodb.Table(this, 'dynamodb-timetable-table', { - partitionKey: { name: 'uid', type: dynamodb.AttributeType.STRING }, - billingMode: dynamodb.BillingMode.PROVISIONED, - encryption: dynamodb.TableEncryption.DEFAULT, - removalPolicy: RemovalPolicy.RETAIN, - tableName: 'timetable', - readCapacity: 12, - writeCapacity: 15, - pointInTimeRecovery: true, + this.tables[Collection.THREAD].addLocalSecondaryIndex({ + indexName: 'TagIndex', + sortKey: { name: 'tag_id', type: dynamodb.AttributeType.STRING }, + projectionType: dynamodb.ProjectionType.ALL, }); + + // this.tables[Collection.THREAD].addGlobalSecondaryIndex({ + // indexName: "UidbyCreated_at", + // partitionKey: { name: "uid", type: dynamodb.AttributeType.STRING }, + // sortKey: { name: "created_at", type: dynamodb.AttributeType.NUMBER }, + // projectionType: dynamodb.ProjectionType.ALL, + // }); + + this.tables[Collection.COMMENT] = new dynamodb.Table( + this, + 'dynamodb-comment-table', + { + partitionKey: { + name: 'thread_id', + type: dynamodb.AttributeType.STRING, + }, + billingMode: dynamodb.BillingMode.PROVISIONED, + encryption: dynamodb.TableEncryption.DEFAULT, + removalPolicy: RemovalPolicy.RETAIN, + sortKey: { name: 'created_at', type: dynamodb.AttributeType.STRING }, + tableName: 'forum-comments', + readCapacity: 10, + writeCapacity: 7, + pointInTimeRecovery: true, + }, + ); } } diff --git a/lib/stacks/business.ts b/lib/stacks/business.ts index ce55a331e..aa4a225f6 100644 --- a/lib/stacks/business.ts +++ b/lib/stacks/business.ts @@ -9,22 +9,36 @@ import { AbstractRestApiEndpoint, WasedaTimeRestApiEndpoint, } from '../constructs/business/api-endpoint'; -import { AbstractAuthProvider, WasedaTimeUserAuth } from '../constructs/business/authentication'; +import { + AbstractAuthProvider, + WasedaTimeUserAuth, +} from '../constructs/business/authentication'; export class WasedaTimeBusinessLayer extends BusinessLayer { apiEndpoints: { [name: string]: AbstractApiEndpoint } = {}; authProvider: AbstractAuthProvider; - constructor(scope: Construct, id: string, dataInterface: DataInterface, hostedZone: route53.IHostedZone, props: StackProps) { + constructor( + scope: Construct, + id: string, + dataInterface: DataInterface, + hostedZone: route53.IHostedZone, + props: StackProps, + ) { super(scope, id, dataInterface, props); - const authEndpoint = new WasedaTimeUserAuth(this, 'cognito-endpoint', hostedZone); + const authEndpoint = new WasedaTimeUserAuth( + this, + 'cognito-endpoint', + hostedZone, + ); this.authProvider = authEndpoint; - const restApiEndpoint: AbstractRestApiEndpoint = new WasedaTimeRestApiEndpoint(this, 'rest-api-endpoint', { - zone: hostedZone, - authProvider: authEndpoint.pool, - }); + const restApiEndpoint: AbstractRestApiEndpoint = + new WasedaTimeRestApiEndpoint(this, 'rest-api-endpoint', { + zone: hostedZone, + authProvider: authEndpoint.pool, + }); this.apiEndpoints['rest-api'] = restApiEndpoint; // const graphqlApiEndpoint: AbstractGraphqlEndpoint = new WasedaTimeGraphqlEndpoint(this, 'graphql-api-endpoint', { @@ -35,15 +49,43 @@ export class WasedaTimeBusinessLayer extends BusinessLayer { // // graphqlApiEndpoint.addService("course", this.dataInterface.getEndpoint(DataEndpoint.COURSE)); - restApiEndpoint.addService('syllabus', this.dataInterface.getEndpoint(DataEndpoint.SYLLABUS)) - .addService('course-reviews', this.dataInterface.getEndpoint(DataEndpoint.COURSE_REVIEWS), true) + restApiEndpoint + .addService( + 'syllabus', + this.dataInterface.getEndpoint(DataEndpoint.SYLLABUS), + ) + .addService( + 'course-reviews', + this.dataInterface.getEndpoint(DataEndpoint.COURSE_REVIEWS), + true, + ) .addService('career') - .addService('timetable', this.dataInterface.getEndpoint(DataEndpoint.TIMETABLE), true); + .addService( + 'timetable', + this.dataInterface.getEndpoint(DataEndpoint.TIMETABLE), + true, + ) + .addService( + 'thread', + this.dataInterface.getEndpoint(DataEndpoint.THREAD), + true, + ) + .addService( + 'comment', + this.dataInterface.getEndpoint(DataEndpoint.COMMENT), + true, + ); // .addService("graphql", graphqlApiEndpoint.apiEndpoint.graphqlUrl); restApiEndpoint.deploy(); - this.serviceInterface.setEndpoint(ServiceEndpoint.API_REST, restApiEndpoint.getDomain()); + this.serviceInterface.setEndpoint( + ServiceEndpoint.API_REST, + restApiEndpoint.getDomain(), + ); // this.serviceInterface.setEndpoint(ServiceEndpoint.API_GRAPHQL, graphqlApiEndpoint.getDomain()); - this.serviceInterface.setEndpoint(ServiceEndpoint.AUTH, authEndpoint.getDomain()); + this.serviceInterface.setEndpoint( + ServiceEndpoint.AUTH, + authEndpoint.getDomain(), + ); } } diff --git a/lib/stacks/persistence.ts b/lib/stacks/persistence.ts index 803b2075b..f2018086e 100644 --- a/lib/stacks/persistence.ts +++ b/lib/stacks/persistence.ts @@ -18,19 +18,31 @@ export class WasedaTimePersistenceLayer extends PersistenceLayer { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); - const syllabusDataPipeline = new SyllabusDataPipeline(this, 'syllabus-datapipeline', {}); + const syllabusDataPipeline = new SyllabusDataPipeline( + this, + 'syllabus-datapipeline', + {}, + ); this.dataPipelines[Worker.SYLLABUS] = syllabusDataPipeline; - const syllabusSyncPipeline = new SyllabusSyncPipeline(this, 'syllabus-sync', { - dataSource: syllabusDataPipeline.dataWarehouse, - }); + const syllabusSyncPipeline = new SyllabusSyncPipeline( + this, + 'syllabus-sync', + { + dataSource: syllabusDataPipeline.dataWarehouse, + }, + ); const dynamoDatabase = new DynamoDatabase(this, 'dynamo-db'); this.databases['dynamo-main'] = dynamoDatabase; - this.dataPipelines[Worker.CAREER] = new CareerDataPipeline(this, 'career-datapipeline', { - dataWarehouse: dynamoDatabase.tables[Collection.CAREER], - }); + this.dataPipelines[Worker.CAREER] = new CareerDataPipeline( + this, + 'career-datapipeline', + { + dataWarehouse: dynamoDatabase.tables[Collection.CAREER], + }, + ); this.dataInterface.setEndpoint( DataEndpoint.COURSE_REVIEWS, @@ -48,16 +60,23 @@ export class WasedaTimePersistenceLayer extends PersistenceLayer { DataEndpoint.SYLLABUS, syllabusDataPipeline.dataWarehouse.bucketName, ); + + this.dataInterface.setEndpoint( + DataEndpoint.THREAD, + dynamoDatabase.tables[Collection.THREAD].tableName, + ); + + this.dataInterface.setEndpoint( + DataEndpoint.COMMENT, + dynamoDatabase.tables[Collection.COMMENT].tableName, + ); // this.dataInterface.setEndpoint( // DataEndpoint.COURSE, // syllabusSyncPipeline.dataWarehouse.tableName, // ); - this.operationInterface.setEndpoint( - OperationEndpoint.SYLLABUS, - { - [syllabusDataPipeline.processor.stateMachineArn]: 'scraper', - }, - ); + this.operationInterface.setEndpoint(OperationEndpoint.SYLLABUS, { + [syllabusDataPipeline.processor.stateMachineArn]: 'scraper', + }); } } diff --git a/lib/stacks/presentation.ts b/lib/stacks/presentation.ts index b1073d1e2..5272dc47a 100644 --- a/lib/stacks/presentation.ts +++ b/lib/stacks/presentation.ts @@ -5,12 +5,20 @@ import { PresentationLayer } from '../architecture/layers'; import { FEEDS_DEPLOY_KEY } from '../configs/amplify/build-setting'; import { webappSiteRules } from '../configs/amplify/website'; import { OperationEndpoint, ServiceEndpoint } from '../configs/common/registry'; -import { AbstractWebApp, AmplifyMonoWebApp } from '../constructs/presentation/web-app'; +import { + AbstractWebApp, + AmplifyMonoWebApp, +} from '../constructs/presentation/web-app'; export class WasedaTimePresentationLayer extends PresentationLayer { readonly app: AbstractWebApp; - constructor(scope: Construct, id: string, serviceInterface: ServiceInterface, props?: StackProps) { + constructor( + scope: Construct, + id: string, + serviceInterface: ServiceInterface, + props?: StackProps, + ) { super(scope, id, serviceInterface, props); const monoApp = new AmplifyMonoWebApp(this, 'amplify-monorepo-web-app', { @@ -23,15 +31,17 @@ export class WasedaTimePresentationLayer extends PresentationLayer { monoApp.microApps.feeds.addEnvironment('DEPLOY_KEY', FEEDS_DEPLOY_KEY); - webappSiteRules.forEach((value => monoApp.app.addCustomRule(value))); + webappSiteRules.forEach((value) => monoApp.app.addCustomRule(value)); this.app = monoApp; - const appDomains = Object.entries(monoApp.microApps).reduce( - function (result: { [key: string]: string }, [key, value]) { - result[value.appId] = key.toUpperCase(); - return result; - }, {}, - ); + const appDomains = Object.entries(monoApp.microApps).reduce(function ( + result: { [key: string]: string }, + [key, value], + ) { + result[value.appId] = key.toUpperCase(); + return result; + }, + {}); this.operationInterface.setEndpoint(OperationEndpoint.APP, appDomains); } diff --git a/package.json b/package.json index dc90a253e..db090d8ff 100644 --- a/package.json +++ b/package.json @@ -15,40 +15,45 @@ "lint": "eslint . --ext .ts" }, "peerDependencies": { - "aws-cdk-lib": "2.13.0", - "constructs": "10.0.66" + "aws-cdk-lib": "2.69.0", + "constructs": "10.1.279" }, "devDependencies": { - "@aws-cdk/assert": "2.13.0", - "@commitlint/cli": "16.2.1", - "@commitlint/config-conventional": "16.2.1", - "@types/jest": "27.4.1", - "@types/node": "17.0.18", + "@aws-cdk/assert": "2.68.0", + "@commitlint/cli": "17.3.0", + "@commitlint/config-conventional": "17.3.0", + "@types/jest": "29.2.5", + "@types/node": "18.15.3", "@types/pluralize": "0.0.29", - "@typescript-eslint/eslint-plugin": "5.10.2", - "@typescript-eslint/parser": "5.10.2", - "aws-cdk-lib": "2.13.0", - "constructs": "10.0.66", - "eslint": "8.8.0", + "@typescript-eslint/eslint-plugin": "5.55.0", + "@typescript-eslint/parser": "5.55.0", + "aws-cdk-lib": "2.69.0", + "constructs": "10.1.279", + "esbuild": "^0.16.0", + "eslint": "8.17.0", "eslint-import-resolver-node": "0.3.6", - "eslint-import-resolver-typescript": "2.5.0", - "eslint-plugin-import": "2.25.4", - "husky": "7.0.4", - "jest": "27.5.1", - "standard-version": "9.3.2", - "ts-jest": "27.1.3", - "ts-node": "10.5.0", - "typescript": "4.5.5" + "eslint-import-resolver-typescript": "3.5.2", + "eslint-plugin-import": "2.26.0", + "husky": "8.0.3", + "jest": "29.3.1", + "standard-version": "9.5.0", + "ts-jest": "29.0.3", + "ts-node": "10.9.1", + "typescript": "4.9.5" }, "dependencies": { - "@aws-cdk/aws-amplify-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-authorizers-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-apigatewayv2-integrations-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-appsync-alpha": "2.13.0-alpha.0", - "@aws-cdk/aws-lambda-python-alpha": "2.13.0-alpha.0", - "flatted": "3.2.5", + "@aws-cdk/aws-amplify-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-authorizers-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-integrations-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-appsync-alpha": "2.27.0-alpha.0", + "@aws-cdk/aws-lambda-python-alpha": "2.27.0-alpha.0", + "@jest/types": "^29.3.1", + "flatted": "3.2.7", "pluralize": "8.0.0", "source-map-support": "0.5.21" + }, + "lint-staged": { + "*.ts": "eslint --cache --fix" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1d480e578..3c3aea43f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,703 +1,926 @@ lockfileVersion: 5.3 specifiers: - '@aws-cdk/assert': 2.13.0 - '@aws-cdk/aws-amplify-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-appsync-alpha': 2.13.0-alpha.0 - '@aws-cdk/aws-lambda-python-alpha': 2.13.0-alpha.0 - '@commitlint/cli': 16.2.1 - '@commitlint/config-conventional': 16.2.1 - '@types/jest': 27.4.1 - '@types/node': 17.0.18 + '@aws-cdk/assert': 2.68.0 + '@aws-cdk/aws-amplify-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-appsync-alpha': 2.27.0-alpha.0 + '@aws-cdk/aws-lambda-python-alpha': 2.27.0-alpha.0 + '@commitlint/cli': 17.3.0 + '@commitlint/config-conventional': 17.3.0 + '@jest/types': ^29.3.1 + '@types/jest': 29.2.5 + '@types/node': 18.15.3 '@types/pluralize': 0.0.29 - '@typescript-eslint/eslint-plugin': 5.10.2 - '@typescript-eslint/parser': 5.10.2 - aws-cdk-lib: 2.13.0 - constructs: 10.0.66 - eslint: 8.8.0 + '@typescript-eslint/eslint-plugin': 5.55.0 + '@typescript-eslint/parser': 5.55.0 + aws-cdk-lib: 2.69.0 + constructs: 10.1.279 + esbuild: ^0.16.0 + eslint: 8.17.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.5.0 - eslint-plugin-import: 2.25.4 - flatted: 3.2.5 - husky: 7.0.4 - jest: 27.5.1 + eslint-import-resolver-typescript: 3.5.2 + eslint-plugin-import: 2.26.0 + flatted: 3.2.7 + husky: 8.0.3 + jest: 29.3.1 pluralize: 8.0.0 source-map-support: 0.5.21 - standard-version: 9.3.2 - ts-jest: 27.1.3 - ts-node: 10.5.0 - typescript: 4.5.5 + standard-version: 9.5.0 + ts-jest: 29.0.3 + ts-node: 10.9.1 + typescript: 4.9.5 dependencies: - '@aws-cdk/aws-amplify-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e - '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e - '@aws-cdk/aws-appsync-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - '@aws-cdk/aws-lambda-python-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - flatted: 3.2.5 + '@aws-cdk/aws-amplify-alpha': 2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791 + '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.27.0-alpha.0_af5880e994fa8a444ea47c2ba5878b20 + '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.27.0-alpha.0_af5880e994fa8a444ea47c2ba5878b20 + '@aws-cdk/aws-appsync-alpha': 2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791 + '@aws-cdk/aws-lambda-python-alpha': 2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791 + '@jest/types': 29.3.1 + flatted: 3.2.7 pluralize: 8.0.0 source-map-support: 0.5.21 devDependencies: - '@aws-cdk/assert': 2.13.0_e899eddb210d099498d0df86b34847a7 - '@commitlint/cli': 16.2.1 - '@commitlint/config-conventional': 16.2.1 - '@types/jest': 27.4.1 - '@types/node': 17.0.18 + '@aws-cdk/assert': 2.68.0_8f3b16a295a9391d619a98d3169593fd + '@commitlint/cli': 17.3.0 + '@commitlint/config-conventional': 17.3.0 + '@types/jest': 29.2.5 + '@types/node': 18.15.3 '@types/pluralize': 0.0.29 - '@typescript-eslint/eslint-plugin': 5.10.2_2595c2126aec4d4b6e944b931dabb4c2 - '@typescript-eslint/parser': 5.10.2_eslint@8.8.0+typescript@4.5.5 - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 - eslint: 8.8.0 + '@typescript-eslint/eslint-plugin': 5.55.0_282aa1c999dbaf4ba77b80785f7d1c83 + '@typescript-eslint/parser': 5.55.0_eslint@8.17.0+typescript@4.9.5 + aws-cdk-lib: 2.69.0_constructs@10.1.279 + constructs: 10.1.279 + esbuild: 0.16.12 + eslint: 8.17.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.5.0_392f898cec7735a5f7a99430cbc0b4f4 - eslint-plugin-import: 2.25.4_eslint@8.8.0 - husky: 7.0.4 - jest: 27.5.1_ts-node@10.5.0 - standard-version: 9.3.2 - ts-jest: 27.1.3_8fa130d172bf7d71653f05507c50c5a3 - ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 - typescript: 4.5.5 + eslint-import-resolver-typescript: 3.5.2_de2e8b5f32821e366389b4575f54c566 + eslint-plugin-import: 2.26.0_f73fe7c6fc857f678670db36aaba7d73 + husky: 8.0.3 + jest: 29.3.1_1e86b5833d1cc9f055a9677b65fcac95 + standard-version: 9.5.0 + ts-jest: 29.0.3_dc1cb27bf921fe6e4574654a8410e232 + ts-node: 10.9.1_104ac8e392084fca826c1c64c04ca6e8 + typescript: 4.9.5 packages: - /@aws-cdk/assert/2.13.0_e899eddb210d099498d0df86b34847a7: - resolution: {integrity: sha512-Q4tRx/g/XWbqLd/L1YgJZTXWmNbNI161RYl0CmwkTRWm1rKQfgkwQ3VqmxjCxcT9gQxJBzKlSe6j5tAG1UpaNg==} + /@ampproject/remapping/2.1.2: + resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@aws-cdk/assert/2.68.0_8f3b16a295a9391d619a98d3169593fd: + resolution: {integrity: sha512-bEztvoYdVp17I/ClYRGZa4wlEP/qNNq4Q+Z7EKwRL0cLDmvq4EI1m1N8LhUPAH7B6YXp5d1164gC6Nr0lV8bbA==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.68.0 constructs: ^10.0.0 jest: '>=26.6.3' dependencies: - '@aws-cdk/cloudformation-diff': 2.13.0 - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 - jest: 27.5.1_ts-node@10.5.0 + '@aws-cdk/cloudformation-diff': 2.68.0 + aws-cdk-lib: 2.69.0_constructs@10.1.279 + constructs: 10.1.279 + jest: 29.3.1_1e86b5833d1cc9f055a9677b65fcac95 dev: true - /@aws-cdk/aws-amplify-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: - resolution: {integrity: sha512-wDRc0dblM7onOUGk9CxMchBOGnieapmFNwWEIH5yZJ6KCufUR1RpjfVL0QVF/1XKGI/G3MtHNSt7ogzQljUHig==} + /@aws-cdk/asset-awscli-v1/2.2.108: + resolution: {integrity: sha512-ML3Z/m6D3biTcYFclx5ln3jmj2tR51LFrvqc4IXbraKr3CLsXvnrWHl3DYZQRgLbW1cauOAcoK1Lm5wGnc3pcQ==} + + /@aws-cdk/asset-kubectl-v20/2.1.1: + resolution: {integrity: sha512-U1ntiX8XiMRRRH5J1IdC+1t5CE89015cwyt5U63Cpk0GnMlN5+h9WsWMlKlPXZR4rdq/m806JRlBMRpBUB2Dhw==} + + /@aws-cdk/asset-node-proxy-agent-v5/2.0.87: + resolution: {integrity: sha512-e924ANUrtvv4drdR1bfYn1YigDUgfnUpJO7ygm/6t0VGjmmhXY2g43XT+NIKOrCpC0z2Aqk4o5px8fuPCfmQTw==} + + /@aws-cdk/aws-amplify-alpha/2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791: + resolution: {integrity: sha512-cuP5V7AoQHXsiPcn5YPHntPeD+22j6Oe0yb6hQPN2L8hZZGSysqsn12nVEVvg7Wtx8xDDSOzvNnU7VeY87fS4g==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 - yaml: 1.10.2 + aws-cdk-lib: 2.69.0_constructs@10.1.279 + constructs: 10.1.279 dev: false - bundledDependencies: - - yaml - /@aws-cdk/aws-apigatewayv2-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: - resolution: {integrity: sha512-IEMJzaoov/qxvWLCN+hLv+mowmGLlNxodSeApYJJdbvk9E6OkdWN9bDfmJWnqdBuuQAqjJCUl/377LLB9lHnvw==} + /@aws-cdk/aws-apigatewayv2-alpha/2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791: + resolution: {integrity: sha512-e0VsZANE8qNiAznRW5m7soHivcsyJoKhkHSVg9WRTTIwS0rZEty7qZH0UjDxq7M2lgIZICaLWAyJOWvGpHEqIA==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + aws-cdk-lib: 2.69.0_constructs@10.1.279 + constructs: 10.1.279 dev: false - /@aws-cdk/aws-apigatewayv2-authorizers-alpha/2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e: - resolution: {integrity: sha512-7Ii1Ed0++eEIWKtzbm4DSh/yGKXMSjhzeywC6tCGsMKj9mns9hKqmHPr2RvLML4HywdtMUWwH7LP7a6nWWR8MQ==} + /@aws-cdk/aws-apigatewayv2-authorizers-alpha/2.27.0-alpha.0_af5880e994fa8a444ea47c2ba5878b20: + resolution: {integrity: sha512-RSMvF/l6v50eKDoEZj7rKDdxOv+DSfx+mkWsHPqSkYU70UeWZNJ4a7jRqJ/tzbajxX5GSoRMcEdR1GsrRXTfuw==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 - aws-cdk-lib: ^2.13.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791 + aws-cdk-lib: 2.69.0_constructs@10.1.279 + constructs: 10.1.279 dev: false - /@aws-cdk/aws-apigatewayv2-integrations-alpha/2.13.0-alpha.0_38e1d0ca288c29c3fe6c8441fa96321e: - resolution: {integrity: sha512-Tq38ftHdcZIFsuiSfUzhZKrq7mvGyDU5D1pSEZNwgfWEuYnAHGBRQELuyEHUWvXIQNoC11axV/7i2Wh/2y+USQ==} + /@aws-cdk/aws-apigatewayv2-integrations-alpha/2.27.0-alpha.0_af5880e994fa8a444ea47c2ba5878b20: + resolution: {integrity: sha512-AL3Ps0hPV8zRcI8k2wW4uTh+k9ZfvjgyUouDOZBaEW0U8PoQOgRj7b0FJbE+zmgbnw3YY2ycoCSpTfVbN3Akdg==} engines: {node: '>= 14.15.0'} peerDependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0 - aws-cdk-lib: ^2.13.0 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - '@aws-cdk/aws-apigatewayv2-alpha': 2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + '@aws-cdk/aws-apigatewayv2-alpha': 2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791 + aws-cdk-lib: 2.69.0_constructs@10.1.279 + constructs: 10.1.279 dev: false - /@aws-cdk/aws-appsync-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: - resolution: {integrity: sha512-/wAT5azT6H867uczIqFIeJxS4GrtghkqN5J9QlNOHASDyBRkQOvH6EBjk6WHii4fqql1stbEA92ae07+jRKLJQ==} + /@aws-cdk/aws-appsync-alpha/2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791: + resolution: {integrity: sha512-z7JNdK1BUGbe70KaDa2Hu69uIn3FG9GUJZ+mKyL0HW7r4PAtdmXSPKVumRa5niR/x6eaxtWvcAXaADNEYht4VQ==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + aws-cdk-lib: 2.69.0_constructs@10.1.279 + constructs: 10.1.279 dev: false - /@aws-cdk/aws-lambda-python-alpha/2.13.0-alpha.0_eba106009bf600c17a3e87151e76f37a: - resolution: {integrity: sha512-V+aGUkmbpvSRb6ik8CEyRaE6VnVRfHxDDcBm1lkilgIMBWZtGxLBY6bjYVNBliHfMroeXbTYjObttj36hDz6/w==} + /@aws-cdk/aws-lambda-python-alpha/2.27.0-alpha.0_c1a5adb25067b15d79cd3a783c8b4791: + resolution: {integrity: sha512-dgiwY4pjTMxAB1IlsyH+dmAgM/g+sfGfrdgsdr6rlHvR/ROE/MGbGBg70YBGZlhiW+qSjeWepp6jgDWxtkN50A==} engines: {node: '>= 14.15.0'} peerDependencies: - aws-cdk-lib: ^2.13.0 + aws-cdk-lib: ^2.27.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.13.0_constructs@10.0.66 - constructs: 10.0.66 + aws-cdk-lib: 2.69.0_constructs@10.1.279 + constructs: 10.1.279 dev: false - /@aws-cdk/cfnspec/2.13.0: - resolution: {integrity: sha512-+ZV6egnKjLtuLxK0kOd+WRQ8lDiQF+Ll1UYTuf47WyF0xoAkuJxV2sFm36tGGLtEgV3bY452m1Aiik5i25pWJw==} + /@aws-cdk/cfnspec/2.68.0: + resolution: {integrity: sha512-g062ljKOvMaeEgp2GR2ewoF3BzeGYpu+AA7UvN/SN+2S0detSwU+qHlxSFeTe0DLyCFaMttNEh81VmYCfiHtpg==} dependencies: fs-extra: 9.1.0 md5: 2.3.0 dev: true - /@aws-cdk/cloudformation-diff/2.13.0: - resolution: {integrity: sha512-TMxM5h6eME30j0XTlnJPdXO8zobQJdSiFTHJfS/4MwV2ee/ILsJoGz53Pd/5l030hIct9H54R/UpXSW7DUBXUA==} + /@aws-cdk/cloudformation-diff/2.68.0: + resolution: {integrity: sha512-JnX0sygxNHWU3aKdzSus25B1TuKYWDwnNL2tw3svZvfHcw3Nwz857JTOn/yNOJxT7cZbCbOqNPrOT6Xv+LrxTQ==} engines: {node: '>= 14.15.0'} dependencies: - '@aws-cdk/cfnspec': 2.13.0 - '@types/node': 10.17.60 + '@aws-cdk/cfnspec': 2.68.0 chalk: 4.1.2 - diff: 5.0.0 + diff: 5.1.0 fast-deep-equal: 3.1.3 string-width: 4.2.3 - table: 6.8.0 + table: 6.8.1 dev: true - /@babel/code-frame/7.14.5: - resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} + /@babel/code-frame/7.16.7: + resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.14.5 + '@babel/highlight': 7.17.9 dev: true - /@babel/compat-data/7.15.0: - resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} + /@babel/compat-data/7.17.7: + resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.15.5: - resolution: {integrity: sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==} + /@babel/core/7.17.9: + resolution: {integrity: sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/generator': 7.15.4 - '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.5 - '@babel/helper-module-transforms': 7.15.4 - '@babel/helpers': 7.15.4 - '@babel/parser': 7.15.6 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@ampproject/remapping': 2.1.2 + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.17.9 + '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.9 + '@babel/helper-module-transforms': 7.17.7 + '@babel/helpers': 7.17.9 + '@babel/parser': 7.17.9 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.9 + '@babel/types': 7.17.0 convert-source-map: 1.8.0 - debug: 4.3.2 + debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.0 + json5: 2.2.1 semver: 6.3.0 - source-map: 0.5.7 transitivePeerDependencies: - supports-color dev: true - /@babel/generator/7.15.4: - resolution: {integrity: sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==} + /@babel/generator/7.17.9: + resolution: {integrity: sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 jsesc: 2.5.2 source-map: 0.5.7 dev: true - /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.5: - resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} + /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.9: + resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.15.0 - '@babel/core': 7.15.5 - '@babel/helper-validator-option': 7.14.5 - browserslist: 4.17.0 + '@babel/compat-data': 7.17.7 + '@babel/core': 7.17.9 + '@babel/helper-validator-option': 7.16.7 + browserslist: 4.20.2 semver: 6.3.0 dev: true - /@babel/helper-function-name/7.15.4: - resolution: {integrity: sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-get-function-arity': 7.15.4 - '@babel/template': 7.15.4 - '@babel/types': 7.15.6 - dev: true - - /@babel/helper-get-function-arity/7.15.4: - resolution: {integrity: sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==} + /@babel/helper-environment-visitor/7.16.7: + resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-hoist-variables/7.15.4: - resolution: {integrity: sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==} + /@babel/helper-function-name/7.17.9: + resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/template': 7.16.7 + '@babel/types': 7.17.0 dev: true - /@babel/helper-member-expression-to-functions/7.15.4: - resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} + /@babel/helper-hoist-variables/7.16.7: + resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-module-imports/7.15.4: - resolution: {integrity: sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==} + /@babel/helper-module-imports/7.16.7: + resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-module-transforms/7.15.4: - resolution: {integrity: sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==} + /@babel/helper-module-transforms/7.17.7: + resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-module-imports': 7.15.4 - '@babel/helper-replace-supers': 7.15.4 - '@babel/helper-simple-access': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 - '@babel/helper-validator-identifier': 7.14.9 - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-module-imports': 7.16.7 + '@babel/helper-simple-access': 7.17.7 + '@babel/helper-split-export-declaration': 7.16.7 + '@babel/helper-validator-identifier': 7.16.7 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.9 + '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-optimise-call-expression/7.15.4: - resolution: {integrity: sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.15.6 - dev: true - - /@babel/helper-plugin-utils/7.14.5: - resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} + /@babel/helper-plugin-utils/7.16.7: + resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-replace-supers/7.15.4: - resolution: {integrity: sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==} + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-member-expression-to-functions': 7.15.4 - '@babel/helper-optimise-call-expression': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 - transitivePeerDependencies: - - supports-color dev: true - /@babel/helper-simple-access/7.15.4: - resolution: {integrity: sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==} + /@babel/helper-simple-access/7.17.7: + resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-split-export-declaration/7.15.4: - resolution: {integrity: sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==} + /@babel/helper-split-export-declaration/7.16.7: + resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true - /@babel/helper-validator-identifier/7.14.9: - resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} + /@babel/helper-validator-identifier/7.16.7: + resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.14.5: - resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} + /@babel/helper-validator-option/7.16.7: + resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.15.4: - resolution: {integrity: sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==} + /@babel/helpers/7.17.9: + resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.15.4 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 + '@babel/template': 7.16.7 + '@babel/traverse': 7.17.9 + '@babel/types': 7.17.0 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight/7.14.5: - resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} + /@babel/highlight/7.17.9: + resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.14.9 + '@babel/helper-validator-identifier': 7.16.7 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser/7.15.6: - resolution: {integrity: sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==} + /@babel/parser/7.17.9: + resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.17.0 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.15.5: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.9: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.15.5: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.17.9: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.15.5: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.9: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.17.9: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.15.5: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.17.9: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.15.5: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.17.9: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.15.5: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.17.9: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.15.5: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.17.9: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.15.5: - resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==} + /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.9: + resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.15.5 - '@babel/helper-plugin-utils': 7.14.5 + '@babel/core': 7.17.9 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/template/7.15.4: - resolution: {integrity: sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==} + /@babel/template/7.16.7: + resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/parser': 7.15.6 - '@babel/types': 7.15.6 + '@babel/code-frame': 7.16.7 + '@babel/parser': 7.17.9 + '@babel/types': 7.17.0 dev: true - /@babel/traverse/7.15.4: - resolution: {integrity: sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==} + /@babel/traverse/7.17.9: + resolution: {integrity: sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.14.5 - '@babel/generator': 7.15.4 - '@babel/helper-function-name': 7.15.4 - '@babel/helper-hoist-variables': 7.15.4 - '@babel/helper-split-export-declaration': 7.15.4 - '@babel/parser': 7.15.6 - '@babel/types': 7.15.6 - debug: 4.3.2 + '@babel/code-frame': 7.16.7 + '@babel/generator': 7.17.9 + '@babel/helper-environment-visitor': 7.16.7 + '@babel/helper-function-name': 7.17.9 + '@babel/helper-hoist-variables': 7.16.7 + '@babel/helper-split-export-declaration': 7.16.7 + '@babel/parser': 7.17.9 + '@babel/types': 7.17.0 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.15.6: - resolution: {integrity: sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==} + /@babel/types/7.17.0: + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.14.9 + '@babel/helper-validator-identifier': 7.16.7 to-fast-properties: 2.0.0 dev: true /@balena/dockerignore/1.0.2: resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} - dev: true /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@commitlint/cli/16.2.1: - resolution: {integrity: sha512-zfKf+B9osuiDbxGMJ7bWFv7XFCW8wlQYPtCffNp7Ukdb7mdrep5R9e03vPUZysnwp8NX6hg05kPEvnD/wRIGWw==} - engines: {node: '>=v12'} + /@commitlint/cli/17.3.0: + resolution: {integrity: sha512-/H0md7TsKflKzVPz226VfXzVafJFO1f9+r2KcFvmBu08V0T56lZU1s8WL7/xlxqLMqBTVaBf7Ixtc4bskdEEZg==} + engines: {node: '>=v14'} hasBin: true dependencies: - '@commitlint/format': 16.2.1 - '@commitlint/lint': 16.2.1 - '@commitlint/load': 16.2.1 - '@commitlint/read': 16.2.1 - '@commitlint/types': 16.2.1 - lodash: 4.17.21 + '@commitlint/format': 17.0.0 + '@commitlint/lint': 17.3.0 + '@commitlint/load': 17.3.0 + '@commitlint/read': 17.2.0 + '@commitlint/types': 17.0.0 + execa: 5.1.1 + lodash.isfunction: 3.0.9 resolve-from: 5.0.0 resolve-global: 1.0.0 - yargs: 17.3.1 + yargs: 17.4.1 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/config-conventional/16.2.1: - resolution: {integrity: sha512-cP9gArx7gnaj4IqmtCIcHdRjTYdRUi6lmGE+lOzGGjGe45qGOS8nyQQNvkNy2Ey2VqoSWuXXkD8zCUh6EHf1Ww==} - engines: {node: '>=v12'} + /@commitlint/config-conventional/17.3.0: + resolution: {integrity: sha512-hgI+fN5xF8nhS9uG/V06xyT0nlcyvHHMkq0kwRSr96vl5BFlRGaL2C0/YY4kQagfU087tmj01bJkG9Ek98Wllw==} + engines: {node: '>=v14'} dependencies: - conventional-changelog-conventionalcommits: 4.6.3 + conventional-changelog-conventionalcommits: 5.0.0 dev: true - /@commitlint/config-validator/16.2.1: - resolution: {integrity: sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw==} - engines: {node: '>=v12'} + /@commitlint/config-validator/17.1.0: + resolution: {integrity: sha512-Q1rRRSU09ngrTgeTXHq6ePJs2KrI+axPTgkNYDWSJIuS1Op4w3J30vUfSXjwn5YEJHklK3fSqWNHmBhmTR7Vdg==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 - ajv: 6.12.6 + '@commitlint/types': 17.0.0 + ajv: 8.11.0 dev: true - /@commitlint/ensure/16.2.1: - resolution: {integrity: sha512-/h+lBTgf1r5fhbDNHOViLuej38i3rZqTQnBTk+xEg+ehOwQDXUuissQ5GsYXXqI5uGy+261ew++sT4EA3uBJ+A==} - engines: {node: '>=v12'} + /@commitlint/ensure/17.3.0: + resolution: {integrity: sha512-kWbrQHDoW5veIUQx30gXoLOCjWvwC6OOEofhPCLl5ytRPBDAQObMbxTha1Bt2aSyNE/IrJ0s0xkdZ1Gi3wJwQg==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 - lodash: 4.17.21 + '@commitlint/types': 17.0.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule/16.2.1: - resolution: {integrity: sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g==} - engines: {node: '>=v12'} + /@commitlint/execute-rule/17.0.0: + resolution: {integrity: sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ==} + engines: {node: '>=v14'} dev: true - /@commitlint/format/16.2.1: - resolution: {integrity: sha512-Yyio9bdHWmNDRlEJrxHKglamIk3d6hC0NkEUW6Ti6ipEh2g0BAhy8Od6t4vLhdZRa1I2n+gY13foy+tUgk0i1Q==} - engines: {node: '>=v12'} + /@commitlint/format/17.0.0: + resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 + '@commitlint/types': 17.0.0 chalk: 4.1.2 dev: true - /@commitlint/is-ignored/16.2.1: - resolution: {integrity: sha512-exl8HRzTIfb1YvDJp2b2HU5z1BT+9tmgxR2XF0YEzkMiCIuEKh+XLeocPr1VcvAKXv3Cmv5X/OfNRp+i+/HIhQ==} - engines: {node: '>=v12'} + /@commitlint/is-ignored/17.2.0: + resolution: {integrity: sha512-rgUPUQraHxoMLxiE8GK430HA7/R2vXyLcOT4fQooNrZq9ERutNrP6dw3gdKLkq22Nede3+gEHQYUzL4Wu75ndg==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 - semver: 7.3.5 + '@commitlint/types': 17.0.0 + semver: 7.3.7 dev: true - /@commitlint/lint/16.2.1: - resolution: {integrity: sha512-fNINQ3X2ZqsCkNB3Z0Z8ElmhewqrS3gy2wgBTx97BkcjOWiyPAGwDJ752hwrsUnWAVBRztgw826n37xPzxsOgg==} - engines: {node: '>=v12'} + /@commitlint/lint/17.3.0: + resolution: {integrity: sha512-VilOTPg0i9A7CCWM49E9bl5jytfTvfTxf9iwbWAWNjxJ/A5mhPKbm3sHuAdwJ87tDk1k4j8vomYfH23iaY+1Rw==} + engines: {node: '>=v14'} dependencies: - '@commitlint/is-ignored': 16.2.1 - '@commitlint/parse': 16.2.1 - '@commitlint/rules': 16.2.1 - '@commitlint/types': 16.2.1 + '@commitlint/is-ignored': 17.2.0 + '@commitlint/parse': 17.2.0 + '@commitlint/rules': 17.3.0 + '@commitlint/types': 17.0.0 dev: true - /@commitlint/load/16.2.1: - resolution: {integrity: sha512-oSpz0jTyVI/A1AIImxJINTLDOMB8YF7lWGm+Jg5wVWM0r7ucpuhyViVvpSRTgvL0z09oIxlctyFGWUQQpI42uw==} - engines: {node: '>=v12'} + /@commitlint/load/17.3.0: + resolution: {integrity: sha512-u/pV6rCAJrCUN+HylBHLzZ4qj1Ew3+eN9GBPhNi9otGxtOfA8b+8nJSxaNbcC23Ins/kcpjGf9zPSVW7628Umw==} + engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 16.2.1 - '@commitlint/execute-rule': 16.2.1 - '@commitlint/resolve-extends': 16.2.1 - '@commitlint/types': 16.2.1 - '@types/node': 17.0.18 + '@commitlint/config-validator': 17.1.0 + '@commitlint/execute-rule': 17.0.0 + '@commitlint/resolve-extends': 17.3.0 + '@commitlint/types': 17.0.0 + '@types/node': 14.18.35 chalk: 4.1.2 cosmiconfig: 7.0.1 - cosmiconfig-typescript-loader: 1.0.5_f3bd4037939c2ed2942ba074291f8ef2 - lodash: 4.17.21 + cosmiconfig-typescript-loader: 4.3.0_04c39602c4e2bcfe9468451d3e11c53f + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 resolve-from: 5.0.0 - typescript: 4.5.5 + ts-node: 10.9.1_9b27be74be632a9dd46d90205d242bbc + typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true - /@commitlint/message/16.2.1: - resolution: {integrity: sha512-2eWX/47rftViYg7a3axYDdrgwKv32mxbycBJT6OQY/MJM7SUfYNYYvbMFOQFaA4xIVZt7t2Alyqslbl6blVwWw==} - engines: {node: '>=v12'} + /@commitlint/message/17.2.0: + resolution: {integrity: sha512-/4l2KFKxBOuoEn1YAuuNNlAU05Zt7sNsC9H0mPdPm3chOrT4rcX0pOqrQcLtdMrMkJz0gC7b3SF80q2+LtdL9Q==} + engines: {node: '>=v14'} dev: true - /@commitlint/parse/16.2.1: - resolution: {integrity: sha512-2NP2dDQNL378VZYioLrgGVZhWdnJO4nAxQl5LXwYb08nEcN+cgxHN1dJV8OLJ5uxlGJtDeR8UZZ1mnQ1gSAD/g==} - engines: {node: '>=v12'} + /@commitlint/parse/17.2.0: + resolution: {integrity: sha512-vLzLznK9Y21zQ6F9hf8D6kcIJRb2haAK5T/Vt1uW2CbHYOIfNsR/hJs0XnF/J9ctM20Tfsqv4zBitbYvVw7F6Q==} + engines: {node: '>=v14'} dependencies: - '@commitlint/types': 16.2.1 + '@commitlint/types': 17.0.0 conventional-changelog-angular: 5.0.13 conventional-commits-parser: 3.2.4 dev: true - /@commitlint/read/16.2.1: - resolution: {integrity: sha512-tViXGuaxLTrw2r7PiYMQOFA2fueZxnnt0lkOWqKyxT+n2XdEMGYcI9ID5ndJKXnfPGPppD0w/IItKsIXlZ+alw==} - engines: {node: '>=v12'} + /@commitlint/read/17.2.0: + resolution: {integrity: sha512-bbblBhrHkjxra3ptJNm0abxu7yeAaxumQ8ZtD6GIVqzURCETCP7Dm0tlVvGRDyXBuqX6lIJxh3W7oyKqllDsHQ==} + engines: {node: '>=v14'} dependencies: - '@commitlint/top-level': 16.2.1 - '@commitlint/types': 16.2.1 - fs-extra: 10.0.0 + '@commitlint/top-level': 17.0.0 + '@commitlint/types': 17.0.0 + fs-extra: 10.1.0 git-raw-commits: 2.0.11 + minimist: 1.2.6 dev: true - /@commitlint/resolve-extends/16.2.1: - resolution: {integrity: sha512-NbbCMPKTFf2J805kwfP9EO+vV+XvnaHRcBy6ud5dF35dxMsvdJqke54W3XazXF1ZAxC4a3LBy4i/GNVBAthsEg==} - engines: {node: '>=v12'} + /@commitlint/resolve-extends/17.3.0: + resolution: {integrity: sha512-Lf3JufJlc5yVEtJWC8o4IAZaB8FQAUaVlhlAHRACd0TTFizV2Lk2VH70et23KgvbQNf7kQzHs/2B4QZalBv6Cg==} + engines: {node: '>=v14'} dependencies: - '@commitlint/config-validator': 16.2.1 - '@commitlint/types': 16.2.1 + '@commitlint/config-validator': 17.1.0 + '@commitlint/types': 17.0.0 import-fresh: 3.3.0 - lodash: 4.17.21 + lodash.mergewith: 4.6.2 resolve-from: 5.0.0 resolve-global: 1.0.0 dev: true - /@commitlint/rules/16.2.1: - resolution: {integrity: sha512-ZFezJXQaBBso+BOTre/+1dGCuCzlWVaeLiVRGypI53qVgPMzQqZhkCcrxBFeqB87qeyzr4A4EoG++IvITwwpIw==} - engines: {node: '>=v12'} + /@commitlint/rules/17.3.0: + resolution: {integrity: sha512-s2UhDjC5yP2utx3WWqsnZRzjgzAX8BMwr1nltC0u0p8T/nzpkx4TojEfhlsOUj1t7efxzZRjUAV0NxNwdJyk+g==} + engines: {node: '>=v14'} dependencies: - '@commitlint/ensure': 16.2.1 - '@commitlint/message': 16.2.1 - '@commitlint/to-lines': 16.2.1 - '@commitlint/types': 16.2.1 + '@commitlint/ensure': 17.3.0 + '@commitlint/message': 17.2.0 + '@commitlint/to-lines': 17.0.0 + '@commitlint/types': 17.0.0 execa: 5.1.1 dev: true - /@commitlint/to-lines/16.2.1: - resolution: {integrity: sha512-9/VjpYj5j1QeY3eiog1zQWY6axsdWAc0AonUUfyZ7B0MVcRI0R56YsHAfzF6uK/g/WwPZaoe4Lb1QCyDVnpVaQ==} - engines: {node: '>=v12'} + /@commitlint/to-lines/17.0.0: + resolution: {integrity: sha512-nEi4YEz04Rf2upFbpnEorG8iymyH7o9jYIVFBG1QdzebbIFET3ir+8kQvCZuBE5pKCtViE4XBUsRZz139uFrRQ==} + engines: {node: '>=v14'} dev: true - /@commitlint/top-level/16.2.1: - resolution: {integrity: sha512-lS6GSieHW9y6ePL73ied71Z9bOKyK+Ib9hTkRsB8oZFAyQZcyRwq2w6nIa6Fngir1QW51oKzzaXfJL94qwImyw==} - engines: {node: '>=v12'} + /@commitlint/top-level/17.0.0: + resolution: {integrity: sha512-dZrEP1PBJvodNWYPOYiLWf6XZergdksKQaT6i1KSROLdjf5Ai0brLOv5/P+CPxBeoj3vBxK4Ax8H1Pg9t7sHIQ==} + engines: {node: '>=v14'} dependencies: find-up: 5.0.0 dev: true - /@commitlint/types/16.2.1: - resolution: {integrity: sha512-7/z7pA7BM0i8XvMSBynO7xsB3mVQPUZbVn6zMIlp/a091XJ3qAXRXc+HwLYhiIdzzS5fuxxNIHZMGHVD4HJxdA==} - engines: {node: '>=v12'} + /@commitlint/types/17.0.0: + resolution: {integrity: sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ==} + engines: {node: '>=v14'} dependencies: chalk: 4.1.2 dev: true - /@cspotcode/source-map-consumer/0.8.0: - resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} - engines: {node: '>= 12'} + /@cspotcode/source-map-support/0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@esbuild/android-arm/0.16.12: + resolution: {integrity: sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.16.12: + resolution: {integrity: sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.16.12: + resolution: {integrity: sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.16.12: + resolution: {integrity: sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.16.12: + resolution: {integrity: sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.16.12: + resolution: {integrity: sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.16.12: + resolution: {integrity: sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.16.12: + resolution: {integrity: sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.16.12: + resolution: {integrity: sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.16.12: + resolution: {integrity: sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.16.12: + resolution: {integrity: sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.16.12: + resolution: {integrity: sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.16.12: + resolution: {integrity: sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.16.12: + resolution: {integrity: sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.16.12: + resolution: {integrity: sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.16.12: + resolution: {integrity: sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.16.12: + resolution: {integrity: sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.16.12: + resolution: {integrity: sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.16.12: + resolution: {integrity: sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.16.12: + resolution: {integrity: sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.16.12: + resolution: {integrity: sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true dev: true + optional: true - /@cspotcode/source-map-support/0.7.0: - resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} + /@esbuild/win32-x64/0.16.12: + resolution: {integrity: sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==} engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils/4.3.0_eslint@8.17.0: + resolution: {integrity: sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - '@cspotcode/source-map-consumer': 0.8.0 + eslint: 8.17.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /@eslint-community/regexpp/4.4.0: + resolution: {integrity: sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc/1.1.0: - resolution: {integrity: sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==} + /@eslint/eslintrc/1.3.0: + resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.2 - espree: 9.3.1 - globals: 13.12.1 - ignore: 4.0.6 + debug: 4.3.4 + espree: 9.3.2 + globals: 13.15.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -706,12 +929,12 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array/0.9.3: - resolution: {integrity: sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==} + /@humanwhocodes/config-array/0.9.5: + resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.2 + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -742,97 +965,114 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/27.5.1: - resolution: {integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/console/29.3.1: + resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 chalk: 4.1.2 - jest-message-util: 27.5.1 - jest-util: 27.5.1 + jest-message-util: 29.3.1 + jest-util: 29.3.1 slash: 3.0.0 dev: true - /@jest/core/27.5.1_ts-node@10.5.0: - resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/core/29.3.1_ts-node@10.9.1: + resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true dependencies: - '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/console': 29.3.1 + '@jest/reporters': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 ansi-escapes: 4.3.2 chalk: 4.1.2 - emittery: 0.8.1 + ci-info: 3.3.0 exit: 0.1.2 - graceful-fs: 4.2.9 - jest-changed-files: 27.5.1 - jest-config: 27.5.1_ts-node@10.5.0 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-resolve-dependencies: 27.5.1 - jest-runner: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - jest-watcher: 27.5.1 - micromatch: 4.0.4 - rimraf: 3.0.2 + graceful-fs: 4.2.10 + jest-changed-files: 29.2.0 + jest-config: 29.3.1_1e86b5833d1cc9f055a9677b65fcac95 + jest-haste-map: 29.3.1 + jest-message-util: 29.3.1 + jest-regex-util: 29.2.0 + jest-resolve: 29.3.1 + jest-resolve-dependencies: 29.3.1 + jest-runner: 29.3.1 + jest-runtime: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + jest-watcher: 29.3.1 + micromatch: 4.0.5 + pretty-format: 29.3.1 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - ts-node - - utf-8-validate dev: true - /@jest/environment/27.5.1: - resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/environment/29.3.1: + resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 + jest-mock: 29.3.1 + dev: true + + /@jest/expect-utils/29.3.1: + resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.2.0 + dev: true + + /@jest/expect/29.3.1: + resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - jest-mock: 27.5.1 + expect: 29.3.1 + jest-snapshot: 29.3.1 + transitivePeerDependencies: + - supports-color dev: true - /@jest/fake-timers/27.5.1: - resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/fake-timers/29.3.1: + resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 - '@sinonjs/fake-timers': 8.0.1 - '@types/node': 17.0.18 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-util: 27.5.1 + '@jest/types': 29.3.1 + '@sinonjs/fake-timers': 9.1.2 + '@types/node': 18.15.3 + jest-message-util: 29.3.1 + jest-mock: 29.3.1 + jest-util: 29.3.1 dev: true - /@jest/globals/27.5.1: - resolution: {integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/globals/29.3.1: + resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/types': 27.5.1 - expect: 27.5.1 + '@jest/environment': 29.3.1 + '@jest/expect': 29.3.1 + '@jest/types': 29.3.1 + jest-mock: 29.3.1 + transitivePeerDependencies: + - supports-color dev: true - /@jest/reporters/27.5.1: - resolution: {integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/reporters/29.3.1: + resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -840,97 +1080,123 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/console': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@jridgewell/trace-mapping': 0.3.17 + '@types/node': 18.15.3 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.0 - graceful-fs: 4.2.9 - istanbul-lib-coverage: 3.0.0 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 5.1.0 istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.0 + istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.4 - jest-haste-map: 27.5.1 - jest-resolve: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 + jest-message-util: 29.3.1 + jest-util: 29.3.1 + jest-worker: 29.3.1 slash: 3.0.0 - source-map: 0.6.1 string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.0 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.0.1 transitivePeerDependencies: - supports-color dev: true - /@jest/source-map/27.5.1: - resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/schemas/29.0.0: + resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.24.51 + + /@jest/source-map/29.2.0: + resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: + '@jridgewell/trace-mapping': 0.3.17 callsites: 3.1.0 - graceful-fs: 4.2.9 - source-map: 0.6.1 + graceful-fs: 4.2.10 dev: true - /@jest/test-result/27.5.1: - resolution: {integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/test-result/29.3.1: + resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 27.5.1 - '@jest/types': 27.5.1 - '@types/istanbul-lib-coverage': 2.0.3 + '@jest/console': 29.3.1 + '@jest/types': 29.3.1 + '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/27.5.1: - resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/test-sequencer/29.3.1: + resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 27.5.1 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-runtime: 27.5.1 - transitivePeerDependencies: - - supports-color + '@jest/test-result': 29.3.1 + graceful-fs: 4.2.10 + jest-haste-map: 29.3.1 + slash: 3.0.0 dev: true - /@jest/transform/27.5.1: - resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/transform/29.3.1: + resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.15.5 - '@jest/types': 27.5.1 + '@babel/core': 7.17.9 + '@jest/types': 29.3.1 + '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 - convert-source-map: 1.8.0 + convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-regex-util: 27.5.1 - jest-util: 27.5.1 - micromatch: 4.0.4 + graceful-fs: 4.2.10 + jest-haste-map: 29.3.1 + jest-regex-util: 29.2.0 + jest-util: 29.3.1 + micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 + write-file-atomic: 4.0.1 transitivePeerDependencies: - supports-color dev: true - /@jest/types/27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/types/29.3.1: + resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 + '@jest/schemas': 29.0.0 + '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.18 - '@types/yargs': 16.0.4 + '@types/node': 18.15.3 + '@types/yargs': 17.0.10 chalk: 4.1.2 + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@jridgewell/trace-mapping/0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true /@nodelib/fs.scandir/2.1.5: @@ -954,23 +1220,33 @@ packages: fastq: 1.13.0 dev: true + /@pkgr/utils/2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.0 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.4.1 + dev: true + + /@sinclair/typebox/0.24.51: + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + /@sinonjs/commons/1.8.3: resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/8.0.1: - resolution: {integrity: sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==} + /@sinonjs/fake-timers/9.1.2: + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: '@sinonjs/commons': 1.8.3 dev: true - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - dev: true - /@tsconfig/node10/1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} dev: true @@ -987,66 +1263,63 @@ packages: resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} dev: true - /@types/babel__core/7.1.16: - resolution: {integrity: sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==} + /@types/babel__core/7.1.19: + resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.15.6 - '@babel/types': 7.15.6 - '@types/babel__generator': 7.6.3 + '@babel/parser': 7.17.9 + '@babel/types': 7.17.0 + '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.14.2 + '@types/babel__traverse': 7.17.0 dev: true - /@types/babel__generator/7.6.3: - resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.15.6 - '@babel/types': 7.15.6 + '@babel/parser': 7.17.9 + '@babel/types': 7.17.0 dev: true - /@types/babel__traverse/7.14.2: - resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} + /@types/babel__traverse/7.17.0: + resolution: {integrity: sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==} dependencies: - '@babel/types': 7.15.6 + '@babel/types': 7.17.0 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 17.0.18 + '@types/node': 18.15.3 dev: true - /@types/istanbul-lib-coverage/2.0.3: - resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==} - dev: true + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} /@types/istanbul-lib-report/3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 - dev: true + '@types/istanbul-lib-coverage': 2.0.4 /@types/istanbul-reports/3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 - dev: true - /@types/jest/27.4.1: - resolution: {integrity: sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==} + /@types/jest/29.2.5: + resolution: {integrity: sha512-H2cSxkKgVmqNHXP7TC2L/WUorrZu8ZigyRywfVzv6EyBlxj39n4C00hjXYQWsbwqgElaj/CiAeSRmk5GoaKTgw==} dependencies: - jest-matcher-utils: 27.5.1 - pretty-format: 27.5.1 + expect: 29.3.1 + pretty-format: 29.3.1 dev: true - /@types/json-schema/7.0.9: - resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true /@types/json5/0.0.29: @@ -1057,13 +1330,12 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/10.17.60: - resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + /@types/node/14.18.35: + resolution: {integrity: sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw==} dev: true - /@types/node/17.0.18: - resolution: {integrity: sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==} - dev: true + /@types/node/18.15.3: + resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -1077,26 +1349,28 @@ packages: resolution: {integrity: sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==} dev: true - /@types/prettier/2.3.2: - resolution: {integrity: sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==} + /@types/prettier/2.6.0: + resolution: {integrity: sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==} + dev: true + + /@types/semver/7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/yargs-parser/20.2.1: - resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==} - dev: true + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - /@types/yargs/16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} + /@types/yargs/17.0.10: + resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} dependencies: - '@types/yargs-parser': 20.2.1 - dev: true + '@types/yargs-parser': 21.0.0 - /@typescript-eslint/eslint-plugin/5.10.2_2595c2126aec4d4b6e944b931dabb4c2: - resolution: {integrity: sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==} + /@typescript-eslint/eslint-plugin/5.55.0_282aa1c999dbaf4ba77b80785f7d1c83: + resolution: {integrity: sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1106,24 +1380,25 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.10.2_eslint@8.8.0+typescript@4.5.5 - '@typescript-eslint/scope-manager': 5.10.2 - '@typescript-eslint/type-utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 - '@typescript-eslint/utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 - debug: 4.3.2 - eslint: 8.8.0 - functional-red-black-tree: 1.0.1 + '@eslint-community/regexpp': 4.4.0 + '@typescript-eslint/parser': 5.55.0_eslint@8.17.0+typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/type-utils': 5.55.0_eslint@8.17.0+typescript@4.9.5 + '@typescript-eslint/utils': 5.55.0_eslint@8.17.0+typescript@4.9.5 + debug: 4.3.4 + eslint: 8.17.0 + grapheme-splitter: 1.0.4 ignore: 5.2.0 - regexpp: 3.2.0 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 + natural-compare-lite: 1.4.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.10.2_eslint@8.8.0+typescript@4.5.5: - resolution: {integrity: sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==} + /@typescript-eslint/parser/5.55.0_eslint@8.17.0+typescript@4.9.5: + resolution: {integrity: sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1132,26 +1407,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.10.2 - '@typescript-eslint/types': 5.10.2 - '@typescript-eslint/typescript-estree': 5.10.2_typescript@4.5.5 - debug: 4.3.2 - eslint: 8.8.0 - typescript: 4.5.5 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + debug: 4.3.4 + eslint: 8.17.0 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.10.2: - resolution: {integrity: sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==} + /@typescript-eslint/scope-manager/5.55.0: + resolution: {integrity: sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.10.2 - '@typescript-eslint/visitor-keys': 5.10.2 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/visitor-keys': 5.55.0 dev: true - /@typescript-eslint/type-utils/5.10.2_eslint@8.8.0+typescript@4.5.5: - resolution: {integrity: sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==} + /@typescript-eslint/type-utils/5.55.0_eslint@8.17.0+typescript@4.9.5: + resolution: {integrity: sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1160,22 +1435,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.10.2_eslint@8.8.0+typescript@4.5.5 - debug: 4.3.2 - eslint: 8.8.0 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.55.0_eslint@8.17.0+typescript@4.9.5 + debug: 4.3.4 + eslint: 8.17.0 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.10.2: - resolution: {integrity: sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==} + /@typescript-eslint/types/5.55.0: + resolution: {integrity: sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.10.2_typescript@4.5.5: - resolution: {integrity: sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==} + /@typescript-eslint/typescript-estree/5.55.0_typescript@4.9.5: + resolution: {integrity: sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1183,41 +1459,43 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.10.2 - '@typescript-eslint/visitor-keys': 5.10.2 - debug: 4.3.2 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/visitor-keys': 5.55.0 + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.5 - tsutils: 3.21.0_typescript@4.5.5 - typescript: 4.5.5 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.10.2_eslint@8.8.0+typescript@4.5.5: - resolution: {integrity: sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==} + /@typescript-eslint/utils/5.55.0_eslint@8.17.0+typescript@4.9.5: + resolution: {integrity: sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.10.2 - '@typescript-eslint/types': 5.10.2 - '@typescript-eslint/typescript-estree': 5.10.2_typescript@4.5.5 - eslint: 8.8.0 + '@eslint-community/eslint-utils': 4.3.0_eslint@8.17.0 + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.55.0 + '@typescript-eslint/types': 5.55.0 + '@typescript-eslint/typescript-estree': 5.55.0_typescript@4.9.5 + eslint: 8.17.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.8.0 + semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.10.2: - resolution: {integrity: sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==} + /@typescript-eslint/visitor-keys/5.55.0: + resolution: {integrity: sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.10.2 + '@typescript-eslint/types': 5.55.0 eslint-visitor-keys: 3.3.0 dev: true @@ -1229,28 +1507,12 @@ packages: through: 2.3.8 dev: true - /abab/2.0.5: - resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} - dev: true - - /acorn-globals/6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - dev: true - - /acorn-jsx/5.3.2_acorn@8.7.0: + /acorn-jsx/5.3.2_acorn@8.7.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.7.0 - dev: true - - /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} + acorn: 8.7.1 dev: true /acorn-walk/8.2.0: @@ -1258,35 +1520,14 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn/8.5.0: - resolution: {integrity: sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn/8.7.0: - resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} + /acorn/8.7.1: + resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} engines: {node: '>=0.4.0'} hasBin: true dev: true /add-stream/1.0.0: - resolution: {integrity: sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=} - dev: true - - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.2 - transitivePeerDependencies: - - supports-color + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} dev: true /ajv/6.12.6: @@ -1298,8 +1539,8 @@ packages: uri-js: 4.4.1 dev: true - /ajv/8.6.3: - resolution: {integrity: sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==} + /ajv/8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -1331,7 +1572,6 @@ packages: engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -1343,7 +1583,7 @@ packages: engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 - picomatch: 2.3.0 + picomatch: 2.3.1 dev: true /arg/4.1.3: @@ -1361,7 +1601,7 @@ packages: dev: true /array-ify/1.0.0: - resolution: {integrity: sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=} + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true /array-includes/3.1.4: @@ -1369,8 +1609,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.19.5 get-intrinsic: 1.1.1 is-string: 1.0.7 dev: true @@ -1380,17 +1620,18 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.flat/1.2.5: - resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} + /array.prototype.flat/1.3.0: + resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.19.5 + es-shim-unscopables: 1.0.0 dev: true /arrify/1.0.1: - resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true @@ -1399,32 +1640,29 @@ packages: engines: {node: '>=8'} dev: true - /asynckit/0.4.0: - resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} - dev: true - /at-least-node/1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - dev: true - /aws-cdk-lib/2.13.0_constructs@10.0.66: - resolution: {integrity: sha512-nKpQk+9H7T128gpzl+7XTu+19Yzj6kmCMrvSwTXLa/qr4/soEpXI68/+19ymEAHOYEL4Dd3eyk490P+y0wzi6A==} + /aws-cdk-lib/2.69.0_constructs@10.1.279: + resolution: {integrity: sha512-VIwgMMpc8iHCZTmt1PuMdj20f0lTY8SI6Pltx7jvhYxyzvg04Dd0YAryBUuutj/khE3typJwiFzLlL7yoNo5AA==} engines: {node: '>= 14.15.0'} peerDependencies: constructs: ^10.0.0 dependencies: + '@aws-cdk/asset-awscli-v1': 2.2.108 + '@aws-cdk/asset-kubectl-v20': 2.1.1 + '@aws-cdk/asset-node-proxy-agent-v5': 2.0.87 '@balena/dockerignore': 1.0.2 case: 1.6.3 - constructs: 10.0.66 + constructs: 10.1.279 fs-extra: 9.1.0 - ignore: 5.2.0 - jsonschema: 1.4.0 + ignore: 5.2.4 + jsonschema: 1.4.1 minimatch: 3.1.2 - punycode: 2.1.1 - semver: 7.3.5 + punycode: 2.3.0 + semver: 7.3.8 yaml: 1.10.2 - dev: true bundledDependencies: - '@balena/dockerignore' - case @@ -1436,20 +1674,19 @@ packages: - semver - yaml - /babel-jest/27.5.1_@babel+core@7.15.5: - resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /babel-jest/29.3.1_@babel+core@7.17.9: + resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.15.5 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__core': 7.1.16 + '@babel/core': 7.17.9 + '@jest/transform': 29.3.1 + '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1_@babel+core@7.15.5 + babel-preset-jest: 29.2.0_@babel+core@7.17.9 chalk: 4.1.2 - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 slash: 3.0.0 transitivePeerDependencies: - supports-color @@ -1459,7 +1696,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.14.5 + '@babel/helper-plugin-utils': 7.16.7 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.1.0 @@ -1468,57 +1705,55 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/27.5.1: - resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /babel-plugin-jest-hoist/29.2.0: + resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.15.4 - '@babel/types': 7.15.6 - '@types/babel__core': 7.1.16 - '@types/babel__traverse': 7.14.2 + '@babel/template': 7.16.7 + '@babel/types': 7.17.0 + '@types/babel__core': 7.1.19 + '@types/babel__traverse': 7.17.0 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.15.5: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.17.9: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.15.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.15.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.15.5 - dev: true - - /babel-preset-jest/27.5.1_@babel+core@7.15.5: - resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + '@babel/core': 7.17.9 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.17.9 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.17.9 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.9 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.17.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.17.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.17.9 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.17.9 + dev: true + + /babel-preset-jest/29.2.0_@babel+core@7.17.9: + resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.15.5 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 + '@babel/core': 7.17.9 + babel-plugin-jest-hoist: 29.2.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.9 dev: true /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -1527,20 +1762,16 @@ packages: fill-range: 7.0.1 dev: true - /browser-process-hrtime/1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: true - - /browserslist/4.17.0: - resolution: {integrity: sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==} + /browserslist/4.20.2: + resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001257 - colorette: 1.4.0 - electron-to-chromium: 1.3.838 + caniuse-lite: 1.0.30001332 + electron-to-chromium: 1.4.111 escalade: 3.1.1 - node-releases: 1.1.75 + node-releases: 2.0.3 + picocolors: 1.0.0 dev: true /bs-logger/0.2.6: @@ -1590,14 +1821,13 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001257: - resolution: {integrity: sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==} + /caniuse-lite/1.0.30001332: + resolution: {integrity: sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==} dev: true /case/1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} - dev: true /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1614,7 +1844,6 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true /char-regex/1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} @@ -1622,11 +1851,11 @@ packages: dev: true /charenc/0.0.2: - resolution: {integrity: sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=} + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} dev: true - /ci-info/3.2.0: - resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==} + /ci-info/3.3.0: + resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} dev: true /cjs-module-lexer/1.2.2: @@ -1642,7 +1871,7 @@ packages: dev: true /co/4.6.0: - resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true @@ -1661,26 +1890,13 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /colorette/1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - dev: true - - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: true /compare-func/2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} @@ -1690,8 +1906,7 @@ packages: dev: true /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - dev: true + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} /concat-stream/2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} @@ -1703,10 +1918,9 @@ packages: typedarray: 0.0.6 dev: true - /constructs/10.0.66: - resolution: {integrity: sha512-luFprSllFDm8iEt/irxsWnm8PHNKNNnZ3pV+5PRXDUOnLaWCv6Vwm+7E0IX6pfgiSphOSsWqhA4ReJA+xe0YHg==} - engines: {node: '>= 12.7.0'} - dev: true + /constructs/10.1.279: + resolution: {integrity: sha512-h6Hv9tEOfvo3CTsZjNhSK8mXuC20rgXLXXn6vSd2wvwSvZzPLIkT68/A6MuPJFd7ASmRdCeVFf5lWULEV+wcVw==} + engines: {node: '>= 14.17.0'} /conventional-changelog-angular/5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} @@ -1734,8 +1948,8 @@ packages: resolution: {integrity: sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==} dev: true - /conventional-changelog-conventionalcommits/4.6.1: - resolution: {integrity: sha512-lzWJpPZhbM1R0PIzkwzGBCnAkH5RKJzJfFQZcl/D+2lsJxAwGnDKBqn/F4C1RD31GJNn8NuKWQzAZDAVXPp2Mw==} + /conventional-changelog-conventionalcommits/4.6.3: + resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -1743,8 +1957,8 @@ packages: q: 1.5.1 dev: true - /conventional-changelog-conventionalcommits/4.6.3: - resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} + /conventional-changelog-conventionalcommits/5.0.0: + resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} engines: {node: '>=10'} dependencies: compare-func: 2.0.0 @@ -1829,8 +2043,8 @@ packages: through2: 4.0.2 dev: true - /conventional-changelog/3.1.24: - resolution: {integrity: sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg==} + /conventional-changelog/3.1.25: + resolution: {integrity: sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==} engines: {node: '>=10'} dependencies: conventional-changelog-angular: 5.0.13 @@ -1888,24 +2102,27 @@ packages: safe-buffer: 5.1.2 dev: true + /convert-source-map/2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader/1.0.5_f3bd4037939c2ed2942ba074291f8ef2: - resolution: {integrity: sha512-FL/YR1nb8hyN0bAcP3MBaIoZravfZtVsN/RuPnoo6UVjqIrDxSNIpXHCGgJe0ZWy5yImpyD6jq5wCJ5f1nUv8g==} + /cosmiconfig-typescript-loader/4.3.0_04c39602c4e2bcfe9468451d3e11c53f: + resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' typescript: '>=3' dependencies: - '@types/node': 17.0.18 + '@types/node': 14.18.35 cosmiconfig: 7.0.1 - ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 - typescript: 4.5.5 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' + ts-node: 10.9.1_9b27be74be632a9dd46d90205d242bbc + typescript: 4.9.5 dev: true /cosmiconfig/7.0.1: @@ -1933,22 +2150,7 @@ packages: dev: true /crypt/0.0.2: - resolution: {integrity: sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=} - dev: true - - /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom/0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: true - - /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} dev: true /dargs/7.0.0: @@ -1956,33 +2158,34 @@ packages: engines: {node: '>=8'} dev: true - /data-urls/2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} - dependencies: - abab: 2.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - dev: true - /dateformat/3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 dev: true /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 dev: true - /debug/4.3.2: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1994,7 +2197,7 @@ packages: dev: true /decamelize-keys/1.1.0: - resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} + resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} engines: {node: '>=0.10.0'} dependencies: decamelize: 1.2.0 @@ -2002,16 +2205,12 @@ packages: dev: true /decamelize/1.2.0: - resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /decimal.js/10.3.1: - resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} - dev: true - /dedent/0.7.0: - resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true /deep-is/0.1.4: @@ -2023,18 +2222,19 @@ packages: engines: {node: '>=0.10.0'} dev: true - /define-properties/1.1.3: - resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: + has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true - /delayed-stream/1.0.0: - resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} - engines: {node: '>=0.4.0'} - dev: true - /detect-indent/6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2045,9 +2245,9 @@ packages: engines: {node: '>=8'} dev: true - /diff-sequences/27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /diff-sequences/29.3.1: + resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true /diff/4.0.2: @@ -2055,8 +2255,8 @@ packages: engines: {node: '>=0.3.1'} dev: true - /diff/5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + /diff/5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} dev: true @@ -2081,13 +2281,6 @@ packages: esutils: 2.0.3 dev: true - /domexception/2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - dependencies: - webidl-conversions: 5.0.0 - dev: true - /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2103,27 +2296,35 @@ packages: minimatch: 3.1.2 dev: true - /electron-to-chromium/1.3.838: - resolution: {integrity: sha512-65O6UJiyohFAdX/nc6KJ0xG/4zOn7XCO03kQNNbCeMRGxlWTLzc6Uyi0tFNQuuGWqySZJi8CD2KXPXySVYmzMA==} + /electron-to-chromium/1.4.111: + resolution: {integrity: sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==} dev: true - /emittery/0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} + /emittery/0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} dev: true /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true + /enhanced-resolve/5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract/1.19.1: - resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} + /es-abstract/1.19.5: + resolution: {integrity: sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 @@ -2132,12 +2333,12 @@ packages: get-intrinsic: 1.1.1 get-symbol-description: 1.0.0 has: 1.0.3 - has-symbols: 1.0.2 + has-symbols: 1.0.3 internal-slot: 1.0.3 is-callable: 1.2.4 is-negative-zero: 2.0.2 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.1 + is-shared-array-buffer: 1.0.2 is-string: 1.0.7 is-weakref: 1.0.2 object-inspect: 1.12.0 @@ -2148,6 +2349,12 @@ packages: unbox-primitive: 1.0.1 dev: true + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -2157,13 +2364,43 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild/0.16.12: + resolution: {integrity: sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.16.12 + '@esbuild/android-arm64': 0.16.12 + '@esbuild/android-x64': 0.16.12 + '@esbuild/darwin-arm64': 0.16.12 + '@esbuild/darwin-x64': 0.16.12 + '@esbuild/freebsd-arm64': 0.16.12 + '@esbuild/freebsd-x64': 0.16.12 + '@esbuild/linux-arm': 0.16.12 + '@esbuild/linux-arm64': 0.16.12 + '@esbuild/linux-ia32': 0.16.12 + '@esbuild/linux-loong64': 0.16.12 + '@esbuild/linux-mips64el': 0.16.12 + '@esbuild/linux-ppc64': 0.16.12 + '@esbuild/linux-riscv64': 0.16.12 + '@esbuild/linux-s390x': 0.16.12 + '@esbuild/linux-x64': 0.16.12 + '@esbuild/netbsd-x64': 0.16.12 + '@esbuild/openbsd-x64': 0.16.12 + '@esbuild/sunos-x64': 0.16.12 + '@esbuild/win32-arm64': 0.16.12 + '@esbuild/win32-ia32': 0.16.12 + '@esbuild/win32-x64': 0.16.12 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true @@ -2177,72 +2414,91 @@ packages: engines: {node: '>=10'} dev: true - /escodegen/2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.2.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 - resolve: 1.20.0 + resolve: 1.22.0 + transitivePeerDependencies: + - supports-color dev: true - /eslint-import-resolver-typescript/2.5.0_392f898cec7735a5f7a99430cbc0b4f4: - resolution: {integrity: sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==} - engines: {node: '>=4'} + /eslint-import-resolver-typescript/3.5.2_de2e8b5f32821e366389b4575f54c566: + resolution: {integrity: sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.2 - eslint: 8.8.0 - eslint-plugin-import: 2.25.4_eslint@8.8.0 - glob: 7.2.0 + debug: 4.3.4 + enhanced-resolve: 5.12.0 + eslint: 8.17.0 + eslint-plugin-import: 2.26.0_f73fe7c6fc857f678670db36aaba7d73 + get-tsconfig: 4.2.0 + globby: 13.1.3 + is-core-module: 2.11.0 is-glob: 4.0.3 - resolve: 1.20.0 - tsconfig-paths: 3.12.0 + synckit: 0.8.4 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils/2.7.3: + /eslint-module-utils/2.7.3_ca522cea6c4a89a3fcf70529f1893850: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 5.55.0_eslint@8.17.0+typescript@4.9.5 debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + eslint-import-resolver-typescript: 3.5.2_de2e8b5f32821e366389b4575f54c566 find-up: 2.1.0 + transitivePeerDependencies: + - supports-color dev: true - /eslint-plugin-import/2.25.4_eslint@8.8.0: - resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} + /eslint-plugin-import/2.26.0_f73fe7c6fc857f678670db36aaba7d73: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: + '@typescript-eslint/parser': '*' eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: + '@typescript-eslint/parser': 5.55.0_eslint@8.17.0+typescript@4.9.5 array-includes: 3.1.4 - array.prototype.flat: 1.2.5 + array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.8.0 + eslint: 8.17.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3 + eslint-module-utils: 2.7.3_ca522cea6c4a89a3fcf70529f1893850 has: 1.0.3 is-core-module: 2.8.1 is-glob: 4.0.3 - minimatch: 3.0.4 + minimatch: 3.1.2 object.values: 1.1.5 - resolve: 1.20.0 - tsconfig-paths: 3.12.0 + resolve: 1.22.0 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color dev: true /eslint-scope/5.1.1: @@ -2258,16 +2514,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.8.0: + /eslint-utils/3.0.0_eslint@8.17.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.8.0 + eslint: 8.17.0 eslint-visitor-keys: 2.1.0 dev: true @@ -2281,30 +2537,30 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.8.0: - resolution: {integrity: sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==} + /eslint/8.17.0: + resolution: {integrity: sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.1.0 - '@humanwhocodes/config-array': 0.9.3 + '@eslint/eslintrc': 1.3.0 + '@humanwhocodes/config-array': 0.9.5 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.2 + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.8.0 + eslint-utils: 3.0.0_eslint@8.17.0 eslint-visitor-keys: 3.3.0 - espree: 9.3.1 + espree: 9.3.2 esquery: 1.4.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 functional-red-black-tree: 1.0.1 glob-parent: 6.0.2 - globals: 13.12.1 + globals: 13.15.0 ignore: 5.2.0 import-fresh: 3.3.0 imurmurhash: 0.1.4 @@ -2313,7 +2569,7 @@ packages: json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 - minimatch: 3.0.4 + minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 regexpp: 3.2.0 @@ -2325,12 +2581,12 @@ packages: - supports-color dev: true - /espree/9.3.1: - resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} + /espree/9.3.2: + resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.7.0 - acorn-jsx: 5.3.2_acorn@8.7.0 + acorn: 8.7.1 + acorn-jsx: 5.3.2_acorn@8.7.1 eslint-visitor-keys: 3.3.0 dev: true @@ -2344,14 +2600,14 @@ packages: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: - estraverse: 5.2.0 + estraverse: 5.3.0 dev: true /estraverse/4.3.0: @@ -2359,8 +2615,8 @@ packages: engines: {node: '>=4.0'} dev: true - /estraverse/5.2.0: - resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true @@ -2380,23 +2636,24 @@ packages: merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 - signal-exit: 3.0.3 + signal-exit: 3.0.7 strip-final-newline: 2.0.0 dev: true /exit/0.1.2: - resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect/27.5.1: - resolution: {integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /expect/29.3.1: + resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 - jest-get-type: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 + '@jest/expect-utils': 29.3.1 + jest-get-type: 29.2.0 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-util: 29.3.1 dev: true /fast-deep-equal/3.1.3: @@ -2411,7 +2668,7 @@ packages: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.4 + micromatch: 4.0.5 dev: true /fast-json-stable-stringify/2.1.0: @@ -2419,7 +2676,7 @@ packages: dev: true /fast-levenshtein/2.0.6: - resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true /fastq/1.13.0: @@ -2456,7 +2713,7 @@ packages: dev: true /find-up/2.1.0: - resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} dependencies: locate-path: 2.0.0 @@ -2489,34 +2746,18 @@ packages: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.5 + flatted: 3.2.7 rimraf: 3.0.2 dev: true - /flatted/3.2.5: - resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} - - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.32 - dev: true - - /fs-access/1.0.1: - resolution: {integrity: sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=} - engines: {node: '>=0.10.0'} - dependencies: - null-check: 1.0.0 - dev: true + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /fs-extra/10.0.0: - resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -2526,13 +2767,12 @@ packages: engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 jsonfile: 6.1.0 universalify: 2.0.0 - dev: true /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true /fsevents/2.3.2: @@ -2548,7 +2788,7 @@ packages: dev: true /functional-red-black-tree/1.0.1: - resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} dev: true /gensync/1.0.0-beta.2: @@ -2566,7 +2806,7 @@ packages: dependencies: function-bind: 1.1.1 has: 1.0.3 - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: true /get-package-type/0.1.0: @@ -2598,6 +2838,10 @@ packages: get-intrinsic: 1.1.1 dev: true + /get-tsconfig/4.2.0: + resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} + dev: true + /git-raw-commits/2.0.11: resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} engines: {node: '>=10'} @@ -2611,7 +2855,7 @@ packages: dev: true /git-remote-origin-url/2.0.0: - resolution: {integrity: sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=} + resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} engines: {node: '>=4'} dependencies: gitconfiglocal: 1.0.0 @@ -2628,7 +2872,7 @@ packages: dev: true /gitconfiglocal/1.0.0: - resolution: {integrity: sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=} + resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} dependencies: ini: 1.3.8 dev: true @@ -2659,7 +2903,7 @@ packages: dev: true /global-dirs/0.1.1: - resolution: {integrity: sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=} + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} engines: {node: '>=4'} dependencies: ini: 1.3.8 @@ -2670,13 +2914,17 @@ packages: engines: {node: '>=4'} dev: true - /globals/13.12.1: - resolution: {integrity: sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==} + /globals/13.15.0: + resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true + /globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -2689,8 +2937,26 @@ packages: slash: 3.0.0 dev: true - /graceful-fs/4.2.9: - resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} + /globby/13.1.3: + resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true /handlebars/4.7.7: @@ -2698,12 +2964,12 @@ packages: engines: {node: '>=0.4.7'} hasBin: true dependencies: - minimist: 1.2.5 + minimist: 1.2.6 neo-async: 2.6.2 source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.15.1 + uglify-js: 3.15.4 dev: true /hard-rejection/2.1.0: @@ -2716,17 +2982,22 @@ packages: dev: true /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.1 dev: true - /has-symbols/1.0.2: - resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true @@ -2734,7 +3005,7 @@ packages: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: true /has/1.0.3: @@ -2752,39 +3023,11 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: - lru-cache: 6.0.0 - dev: true - - /html-encoding-sniffer/2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - dependencies: - whatwg-encoding: 1.0.5 - dev: true - - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /http-proxy-agent/4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.2 - transitivePeerDependencies: - - supports-color - dev: true - - /https-proxy-agent/5.0.0: - resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.2 - transitivePeerDependencies: - - supports-color + lru-cache: 6.0.0 + dev: true + + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true /human-signals/2.1.0: @@ -2792,29 +3035,21 @@ packages: engines: {node: '>=10.17.0'} dev: true - /husky/7.0.4: - resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} - engines: {node: '>=12'} + /husky/8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} hasBin: true dev: true - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /ignore/4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true - /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} dev: true + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -2823,8 +3058,8 @@ packages: resolve-from: 4.0.0 dev: true - /import-local/3.0.2: - resolution: {integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==} + /import-local/3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true dependencies: @@ -2833,7 +3068,7 @@ packages: dev: true /imurmurhash/0.1.4: - resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true @@ -2843,7 +3078,7 @@ packages: dev: true /inflight/1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -2867,7 +3102,7 @@ packages: dev: true /is-arrayish/0.2.1: - resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true /is-bigint/1.0.4: @@ -2893,6 +3128,12 @@ packages: engines: {node: '>= 0.4'} dev: true + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + dev: true + /is-core-module/2.8.1: resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} dependencies: @@ -2906,8 +3147,14 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + /is-extglob/2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true @@ -2933,8 +3180,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.6: - resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 @@ -2951,14 +3198,10 @@ packages: dev: true /is-plain-obj/1.1.0: - resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-potential-custom-element-name/1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -2967,8 +3210,10 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-shared-array-buffer/1.0.1: - resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 dev: true /is-stream/2.0.1: @@ -2987,37 +3232,35 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.2 + has-symbols: 1.0.3 dev: true /is-text-path/1.0.1: - resolution: {integrity: sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=} + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} engines: {node: '>=0.10.0'} dependencies: text-extensions: 1.9.0 dev: true - /is-typedarray/1.0.0: - resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} - dev: true - /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /isarray/1.0.0: - resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 dev: true - /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /istanbul-lib-coverage/3.0.0: - resolution: {integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==} - engines: {node: '>=8'} + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true /istanbul-lib-coverage/3.2.0: @@ -3029,8 +3272,8 @@ packages: resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.15.5 - '@babel/parser': 7.15.6 + '@babel/core': 7.17.9 + '@babel/parser': 7.17.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -3047,12 +3290,12 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.0: - resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} - engines: {node: '>=8'} + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: - debug: 4.3.2 - istanbul-lib-coverage: 3.0.0 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color @@ -3066,45 +3309,44 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/27.5.1: - resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-changed-files/29.2.0: + resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 execa: 5.1.1 - throat: 6.0.1 + p-limit: 3.1.0 dev: true - /jest-circus/27.5.1: - resolution: {integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-circus/29.3.1: + resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/environment': 29.3.1 + '@jest/expect': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 - expect: 27.5.1 is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 + jest-each: 29.3.1 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-runtime: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 + p-limit: 3.1.0 + pretty-format: 29.3.1 slash: 3.0.0 - stack-utils: 2.0.3 - throat: 6.0.1 + stack-utils: 2.0.5 transitivePeerDependencies: - supports-color dev: true - /jest-cli/27.5.1_ts-node@10.5.0: - resolution: {integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-cli/29.3.1_1e86b5833d1cc9f055a9677b65fcac95: + resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3112,217 +3354,171 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.5.1_ts-node@10.5.0 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 + '@jest/core': 29.3.1_ts-node@10.9.1 + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 chalk: 4.1.2 exit: 0.1.2 - graceful-fs: 4.2.9 - import-local: 3.0.2 - jest-config: 27.5.1_ts-node@10.5.0 - jest-util: 27.5.1 - jest-validate: 27.5.1 - prompts: 2.4.1 - yargs: 16.2.0 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 29.3.1_1e86b5833d1cc9f055a9677b65fcac95 + jest-util: 29.3.1 + jest-validate: 29.3.1 + prompts: 2.4.2 + yargs: 17.4.1 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' - supports-color - ts-node - - utf-8-validate dev: true - /jest-config/27.5.1_ts-node@10.5.0: - resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-config/29.3.1_1e86b5833d1cc9f055a9677b65fcac95: + resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: + '@types/node': '*' ts-node: '>=9.0.0' peerDependenciesMeta: + '@types/node': + optional: true ts-node: optional: true dependencies: - '@babel/core': 7.15.5 - '@jest/test-sequencer': 27.5.1 - '@jest/types': 27.5.1 - babel-jest: 27.5.1_@babel+core@7.15.5 + '@babel/core': 7.17.9 + '@jest/test-sequencer': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 + babel-jest: 29.3.1_@babel+core@7.17.9 chalk: 4.1.2 - ci-info: 3.2.0 + ci-info: 3.3.0 deepmerge: 4.2.2 glob: 7.2.0 - graceful-fs: 4.2.9 - jest-circus: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-get-type: 27.5.1 - jest-jasmine2: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runner: 27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - micromatch: 4.0.4 + graceful-fs: 4.2.10 + jest-circus: 29.3.1 + jest-environment-node: 29.3.1 + jest-get-type: 29.2.0 + jest-regex-util: 29.2.0 + jest-resolve: 29.3.1 + jest-runner: 29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 27.5.1 + pretty-format: 29.3.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.5.0_f3bd4037939c2ed2942ba074291f8ef2 + ts-node: 10.9.1_104ac8e392084fca826c1c64c04ca6e8 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - utf-8-validate dev: true - /jest-diff/27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-diff/29.3.1: + resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + diff-sequences: 29.3.1 + jest-get-type: 29.2.0 + pretty-format: 29.3.1 dev: true - /jest-docblock/27.5.1: - resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-docblock/29.2.0: + resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/27.5.1: - resolution: {integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-each/29.3.1: + resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 29.3.1 chalk: 4.1.2 - jest-get-type: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-environment-jsdom/27.5.1: - resolution: {integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - jest-mock: 27.5.1 - jest-util: 27.5.1 - jsdom: 16.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate + jest-get-type: 29.2.0 + jest-util: 29.3.1 + pretty-format: 29.3.1 dev: true - /jest-environment-node/27.5.1: - resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-environment-node/29.3.1: + resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - jest-mock: 27.5.1 - jest-util: 27.5.1 + '@jest/environment': 29.3.1 + '@jest/fake-timers': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 + jest-mock: 29.3.1 + jest-util: 29.3.1 dev: true - /jest-get-type/27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-get-type/29.2.0: + resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/27.5.1: - resolution: {integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-haste-map/29.3.1: + resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 29.3.1 '@types/graceful-fs': 4.1.5 - '@types/node': 17.0.18 + '@types/node': 18.15.3 anymatch: 3.1.2 fb-watchman: 2.0.1 - graceful-fs: 4.2.9 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.4 - walker: 1.0.7 + graceful-fs: 4.2.10 + jest-regex-util: 29.2.0 + jest-util: 29.3.1 + jest-worker: 29.3.1 + micromatch: 4.0.5 + walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-jasmine2/27.5.1: - resolution: {integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.5.1 - is-generator-fn: 2.1.0 - jest-each: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-runtime: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 - pretty-format: 27.5.1 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-leak-detector/27.5.1: - resolution: {integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-leak-detector/29.3.1: + resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + jest-get-type: 29.2.0 + pretty-format: 29.3.1 dev: true - /jest-matcher-utils/27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-matcher-utils/29.3.1: + resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 + jest-diff: 29.3.1 + jest-get-type: 29.2.0 + pretty-format: 29.3.1 dev: true - /jest-message-util/27.5.1: - resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-message-util/29.3.1: + resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.14.5 - '@jest/types': 27.5.1 + '@babel/code-frame': 7.16.7 + '@jest/types': 29.3.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 - graceful-fs: 4.2.9 - micromatch: 4.0.4 - pretty-format: 27.5.1 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.3.1 slash: 3.0.0 - stack-utils: 2.0.3 + stack-utils: 2.0.5 dev: true - /jest-mock/27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-mock/29.3.1: + resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 + jest-util: 29.3.1 dev: true - /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: + /jest-pnp-resolver/1.2.2_jest-resolve@29.3.1: resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -3331,202 +3527,181 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 27.5.1 + jest-resolve: 29.3.1 dev: true - /jest-regex-util/27.5.1: - resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-regex-util/29.2.0: + resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/27.5.1: - resolution: {integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-resolve-dependencies/29.3.1: + resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 - jest-regex-util: 27.5.1 - jest-snapshot: 27.5.1 + jest-regex-util: 29.2.0 + jest-snapshot: 29.3.1 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/27.5.1: - resolution: {integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-resolve/29.3.1: + resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 chalk: 4.1.2 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1 - jest-util: 27.5.1 - jest-validate: 27.5.1 - resolve: 1.20.0 + graceful-fs: 4.2.10 + jest-haste-map: 29.3.1 + jest-pnp-resolver: 1.2.2_jest-resolve@29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + resolve: 1.22.0 resolve.exports: 1.1.0 slash: 3.0.0 dev: true - /jest-runner/27.5.1: - resolution: {integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-runner/29.3.1: + resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 27.5.1 - '@jest/environment': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/console': 29.3.1 + '@jest/environment': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 chalk: 4.1.2 - emittery: 0.8.1 - graceful-fs: 4.2.9 - jest-docblock: 27.5.1 - jest-environment-jsdom: 27.5.1 - jest-environment-node: 27.5.1 - jest-haste-map: 27.5.1 - jest-leak-detector: 27.5.1 - jest-message-util: 27.5.1 - jest-resolve: 27.5.1 - jest-runtime: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - source-map-support: 0.5.21 - throat: 6.0.1 + emittery: 0.13.1 + graceful-fs: 4.2.10 + jest-docblock: 29.2.0 + jest-environment-node: 29.3.1 + jest-haste-map: 29.3.1 + jest-leak-detector: 29.3.1 + jest-message-util: 29.3.1 + jest-resolve: 29.3.1 + jest-runtime: 29.3.1 + jest-util: 29.3.1 + jest-watcher: 29.3.1 + jest-worker: 29.3.1 + p-limit: 3.1.0 + source-map-support: 0.5.13 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - utf-8-validate dev: true - /jest-runtime/27.5.1: - resolution: {integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-runtime/29.3.1: + resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 27.5.1 - '@jest/fake-timers': 27.5.1 - '@jest/globals': 27.5.1 - '@jest/source-map': 27.5.1 - '@jest/test-result': 27.5.1 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 + '@jest/environment': 29.3.1 + '@jest/fake-timers': 29.3.1 + '@jest/globals': 29.3.1 + '@jest/source-map': 29.2.0 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 - execa: 5.1.1 glob: 7.2.0 - graceful-fs: 4.2.9 - jest-haste-map: 27.5.1 - jest-message-util: 27.5.1 - jest-mock: 27.5.1 - jest-regex-util: 27.5.1 - jest-resolve: 27.5.1 - jest-snapshot: 27.5.1 - jest-util: 27.5.1 + graceful-fs: 4.2.10 + jest-haste-map: 29.3.1 + jest-message-util: 29.3.1 + jest-mock: 29.3.1 + jest-regex-util: 29.2.0 + jest-resolve: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-serializer/27.5.1: - resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/node': 17.0.18 - graceful-fs: 4.2.9 - dev: true - - /jest-snapshot/27.5.1: - resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.15.5 - '@babel/generator': 7.15.4 - '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.5 - '@babel/traverse': 7.15.4 - '@babel/types': 7.15.6 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__traverse': 7.14.2 - '@types/prettier': 2.3.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.5 + /jest-snapshot/29.3.1: + resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.17.9 + '@babel/generator': 7.17.9 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.17.9 + '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.9 + '@babel/traverse': 7.17.9 + '@babel/types': 7.17.0 + '@jest/expect-utils': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/babel__traverse': 7.17.0 + '@types/prettier': 2.6.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.9 chalk: 4.1.2 - expect: 27.5.1 - graceful-fs: 4.2.9 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - jest-haste-map: 27.5.1 - jest-matcher-utils: 27.5.1 - jest-message-util: 27.5.1 - jest-util: 27.5.1 + expect: 29.3.1 + graceful-fs: 4.2.10 + jest-diff: 29.3.1 + jest-get-type: 29.2.0 + jest-haste-map: 29.3.1 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-util: 29.3.1 natural-compare: 1.4.0 - pretty-format: 27.5.1 - semver: 7.3.5 + pretty-format: 29.3.1 + semver: 7.3.8 transitivePeerDependencies: - supports-color dev: true - /jest-util/27.4.2: - resolution: {integrity: sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.18 - chalk: 4.1.2 - ci-info: 3.2.0 - graceful-fs: 4.2.9 - picomatch: 2.3.0 - dev: true - - /jest-util/27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-util/29.3.1: + resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 chalk: 4.1.2 - ci-info: 3.2.0 - graceful-fs: 4.2.9 - picomatch: 2.3.0 + ci-info: 3.3.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 dev: true - /jest-validate/27.5.1: - resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-validate/29.3.1: + resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 29.3.1 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 27.5.1 + jest-get-type: 29.2.0 leven: 3.1.0 - pretty-format: 27.5.1 + pretty-format: 29.3.1 dev: true - /jest-watcher/27.5.1: - resolution: {integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest-watcher/29.3.1: + resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 27.5.1 - '@jest/types': 27.5.1 - '@types/node': 17.0.18 + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.15.3 ansi-escapes: 4.3.2 chalk: 4.1.2 - jest-util: 27.5.1 + emittery: 0.13.1 + jest-util: 29.3.1 string-length: 4.0.2 dev: true - /jest-worker/27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + /jest-worker/29.3.1: + resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 17.0.18 + '@types/node': 18.15.3 + jest-util: 29.3.1 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/27.5.1_ts-node@10.5.0: - resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /jest/29.3.1_1e86b5833d1cc9f055a9677b65fcac95: + resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3534,15 +3709,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.5.1_ts-node@10.5.0 - import-local: 3.0.2 - jest-cli: 27.5.1_ts-node@10.5.0 + '@jest/core': 29.3.1_ts-node@10.9.1 + '@jest/types': 29.3.1 + import-local: 3.1.0 + jest-cli: 29.3.1_1e86b5833d1cc9f055a9677b65fcac95 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' - supports-color - ts-node - - utf-8-validate dev: true /js-tokens/4.0.0: @@ -3564,48 +3738,6 @@ packages: argparse: 2.0.1 dev: true - /jsdom/16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.5 - acorn: 8.7.0 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.3.1 - domexception: 2.0.1 - escodegen: 2.0.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.0 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.0 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.0.0 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.5 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -3629,26 +3761,24 @@ packages: dev: true /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true /json-stringify-safe/5.0.1: - resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: - minimist: 1.2.5 + minimist: 1.2.6 dev: true - /json5/2.2.0: - resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} + /json5/2.2.1: + resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} hasBin: true - dependencies: - minimist: 1.2.5 dev: true /jsonfile/6.1.0: @@ -3656,17 +3786,15 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.9 - dev: true + graceful-fs: 4.2.10 /jsonparse/1.3.1: - resolution: {integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=} + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} dev: true - /jsonschema/1.4.0: - resolution: {integrity: sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==} - dev: true + /jsonschema/1.4.1: + resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} @@ -3683,14 +3811,6 @@ packages: engines: {node: '>=6'} dev: true - /levn/0.3.0: - resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: true - /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3704,17 +3824,17 @@ packages: dev: true /load-json-file/4.0.0: - resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=} + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} dependencies: - graceful-fs: 4.2.9 + graceful-fs: 4.2.10 parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 dev: true /locate-path/2.0.0: - resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} dependencies: p-locate: 2.0.0 @@ -3743,20 +3863,56 @@ packages: p-locate: 5.0.0 dev: true + /lodash.camelcase/4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.isfunction/3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + dev: true + /lodash.ismatch/4.4.0: - resolution: {integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=} + resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} + dev: true + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.kebabcase/4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} dev: true /lodash.memoize/4.1.2: - resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.mergewith/4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: true + + /lodash.snakecase/4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.startcase/4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true + /lodash.truncate/4.4.2: - resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.upperfirst/4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} dev: true /lodash/4.17.21: @@ -3768,7 +3924,6 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -3781,14 +3936,14 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /makeerror/1.0.11: - resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=} + /makeerror/1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true /map-obj/1.0.1: - resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true @@ -3831,24 +3986,12 @@ packages: engines: {node: '>= 8'} dev: true - /micromatch/4.0.4: - resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 - picomatch: 2.3.0 - dev: true - - /mime-db/1.49.0: - resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==} - engines: {node: '>= 0.6'} - dev: true - - /mime-types/2.1.32: - resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.49.0 + picomatch: 2.3.1 dev: true /mimic-fn/2.1.0: @@ -3861,17 +4004,10 @@ packages: engines: {node: '>=4'} dev: true - /minimatch/3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} - dependencies: - brace-expansion: 1.1.11 - dev: true - /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimist-options/4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -3882,8 +4018,8 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.5: - resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: true /modify-values/1.0.1: @@ -3892,15 +4028,23 @@ packages: dev: true /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /natural-compare-lite/1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare/1.4.0: - resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true /neo-async/2.6.2: @@ -3908,18 +4052,18 @@ packages: dev: true /node-int64/0.4.0: - resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/1.1.75: - resolution: {integrity: sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==} + /node-releases/2.0.3: + resolution: {integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==} dev: true /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.20.0 + resolve: 1.22.0 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -3929,8 +4073,8 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.8.1 - semver: 7.3.5 + is-core-module: 2.11.0 + semver: 7.3.8 validate-npm-package-license: 3.0.4 dev: true @@ -3946,15 +4090,6 @@ packages: path-key: 3.1.1 dev: true - /null-check/1.0.0: - resolution: {integrity: sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=} - engines: {node: '>=0.10.0'} - dev: true - - /nwsapi/2.2.0: - resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} - dev: true - /object-inspect/1.12.0: resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} dev: true @@ -3969,8 +4104,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - has-symbols: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -3979,12 +4114,12 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 + define-properties: 1.1.4 + es-abstract: 1.19.5 dev: true /once/1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true @@ -3996,16 +4131,13 @@ packages: mimic-fn: 2.1.0 dev: true - /optionator/0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 dev: true /optionator/0.9.1: @@ -4042,7 +4174,7 @@ packages: dev: true /p-locate/2.0.0: - resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} dependencies: p-limit: 1.3.0 @@ -4070,7 +4202,7 @@ packages: dev: true /p-try/1.0.0: - resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} engines: {node: '>=4'} dev: true @@ -4087,7 +4219,7 @@ packages: dev: true /parse-json/4.0.0: - resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} dependencies: error-ex: 1.3.2 @@ -4098,18 +4230,14 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.14.5 + '@babel/code-frame': 7.16.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 dev: true - /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true - /path-exists/3.0.0: - resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} dev: true @@ -4119,7 +4247,7 @@ packages: dev: true /path-is-absolute/1.0.1: - resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true @@ -4144,18 +4272,22 @@ packages: engines: {node: '>=8'} dev: true - /picomatch/2.3.0: - resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true /pify/2.3.0: - resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: true /pify/3.0.0: - resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} dev: true @@ -4176,48 +4308,38 @@ packages: engines: {node: '>=4'} dev: false - /prelude-ls/1.1.2: - resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} - engines: {node: '>= 0.8.0'} - dev: true - /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true - /pretty-format/27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /pretty-format/29.3.1: + resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - ansi-regex: 5.0.1 + '@jest/schemas': 29.0.0 ansi-styles: 5.2.0 - react-is: 17.0.2 + react-is: 18.1.0 dev: true /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /prompts/2.4.1: - resolution: {integrity: sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==} + /prompts/2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 dev: true - /psl/1.8.0: - resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} - dev: true - - /punycode/2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: true /q/1.5.1: - resolution: {integrity: sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=} + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true @@ -4230,12 +4352,12 @@ packages: engines: {node: '>=8'} dev: true - /react-is/17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + /react-is/18.1.0: + resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} dev: true /read-pkg-up/3.0.0: - resolution: {integrity: sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=} + resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} engines: {node: '>=4'} dependencies: find-up: 2.1.0 @@ -4252,7 +4374,7 @@ packages: dev: true /read-pkg/3.0.0: - resolution: {integrity: sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=} + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} dependencies: load-json-file: 4.0.0 @@ -4305,7 +4427,7 @@ packages: dev: true /require-directory/2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true @@ -4343,11 +4465,13 @@ packages: engines: {node: '>=10'} dev: true - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} + /resolve/1.22.0: + resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + hasBin: true dependencies: - is-core-module: 2.8.1 + is-core-module: 2.11.0 path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 dev: true /reusify/1.0.4: @@ -4376,17 +4500,6 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - - /saxes/5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - dependencies: - xmlchars: 2.2.0 - dev: true - /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -4397,14 +4510,21 @@ packages: hasBin: true dev: true - /semver/7.3.5: - resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + /semver/7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4425,8 +4545,8 @@ packages: object-inspect: 1.12.0 dev: true - /signal-exit/3.0.3: - resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true /sisteransi/1.0.5: @@ -4438,6 +4558,11 @@ packages: engines: {node: '>=8'} dev: true + /slash/4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + /slice-ansi/4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -4447,14 +4572,22 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true + /source-map-support/0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: false /source-map/0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: true @@ -4462,11 +4595,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - /source-map/0.7.3: - resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} - engines: {node: '>= 8'} - dev: true - /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: @@ -4502,34 +4630,33 @@ packages: dev: true /sprintf-js/1.0.3: - resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-utils/2.0.3: - resolution: {integrity: sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==} + /stack-utils/2.0.5: + resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /standard-version/9.3.2: - resolution: {integrity: sha512-u1rfKP4o4ew7Yjbfycv80aNMN2feTiqseAhUhrrx2XtdQGmu7gucpziXe68Z4YfHVqlxVEzo4aUA0Iu3VQOTgQ==} + /standard-version/9.5.0: + resolution: {integrity: sha512-3zWJ/mmZQsOaO+fOlsa0+QK90pwhNd042qEcw6hKFNoLFs7peGyvPffpEBbK/DSGPbyOvli0mUIFv5A4qTjh2Q==} engines: {node: '>=10'} hasBin: true dependencies: chalk: 2.4.2 - conventional-changelog: 3.1.24 + conventional-changelog: 3.1.25 conventional-changelog-config-spec: 2.1.0 - conventional-changelog-conventionalcommits: 4.6.1 + conventional-changelog-conventionalcommits: 4.6.3 conventional-recommended-bump: 6.1.0 detect-indent: 6.1.0 detect-newline: 3.1.0 dotgitignore: 2.1.0 figures: 3.2.0 find-up: 5.0.0 - fs-access: 1.0.1 git-semver-tags: 4.1.1 - semver: 7.3.5 + semver: 7.3.7 stringify-package: 1.0.1 yargs: 16.2.0 dev: true @@ -4555,14 +4682,14 @@ packages: resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: true /string.prototype.trimstart/1.0.4: resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.3 + define-properties: 1.1.4 dev: true /string_decoder/1.1.1: @@ -4589,7 +4716,7 @@ packages: dev: true /strip-bom/3.0.0: - resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true @@ -4627,7 +4754,6 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true /supports-color/8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} @@ -4636,35 +4762,33 @@ packages: has-flag: 4.0.0 dev: true - /supports-hyperlinks/2.2.0: - resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} dev: true - /symbol-tree/3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + /synckit/0.8.4: + resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.4.1 dev: true - /table/6.8.0: - resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} + /table/6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} dependencies: - ajv: 8.6.3 + ajv: 8.11.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 dev: true - /terminal-link/2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.2.0 + /tapable/2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} dev: true /test-exclude/6.0.0: @@ -4685,12 +4809,8 @@ packages: resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} dev: true - /throat/6.0.1: - resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} - dev: true - /through/2.3.8: - resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true /through2/2.0.5: @@ -4706,12 +4826,19 @@ packages: readable-stream: 3.6.0 dev: true + /tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + /tmpl/1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true /to-fast-properties/2.0.0: - resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: true @@ -4722,63 +4849,79 @@ packages: is-number: 7.0.0 dev: true - /tough-cookie/4.0.0: - resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} - engines: {node: '>=6'} - dependencies: - psl: 1.8.0 - punycode: 2.1.1 - universalify: 0.1.2 - dev: true - - /tr46/2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - dependencies: - punycode: 2.1.1 - dev: true - /trim-newlines/3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /ts-jest/27.1.3_8fa130d172bf7d71653f05507c50c5a3: - resolution: {integrity: sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /ts-jest/29.0.3_dc1cb27bf921fe6e4574654a8410e232: + resolution: {integrity: sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' - '@types/jest': ^27.0.0 - babel-jest: '>=27.0.0 <28' - esbuild: ~0.14.0 - jest: ^27.0.0 - typescript: '>=3.8 <5.0' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3' peerDependenciesMeta: '@babel/core': optional: true - '@types/jest': + '@jest/types': optional: true babel-jest: optional: true esbuild: optional: true dependencies: - '@types/jest': 27.4.1 + '@jest/types': 29.3.1 bs-logger: 0.2.6 + esbuild: 0.16.12 fast-json-stable-stringify: 2.1.0 - jest: 27.5.1_ts-node@10.5.0 - jest-util: 27.4.2 - json5: 2.2.0 + jest: 29.3.1_1e86b5833d1cc9f055a9677b65fcac95 + jest-util: 29.3.1 + json5: 2.2.1 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.5 - typescript: 4.5.5 - yargs-parser: 20.2.9 + semver: 7.3.7 + typescript: 4.9.5 + yargs-parser: 21.0.1 + dev: true + + /ts-node/10.9.1_104ac8e392084fca826c1c64c04ca6e8: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.8 + '@tsconfig/node12': 1.0.9 + '@tsconfig/node14': 1.0.1 + '@tsconfig/node16': 1.0.2 + '@types/node': 18.15.3 + acorn: 8.7.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 dev: true - /ts-node/10.5.0_f3bd4037939c2ed2942ba074291f8ef2: - resolution: {integrity: sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw==} + /ts-node/10.9.1_9b27be74be632a9dd46d90205d242bbc: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -4791,29 +4934,29 @@ packages: '@swc/wasm': optional: true dependencies: - '@cspotcode/source-map-support': 0.7.0 + '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.8 '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 '@tsconfig/node16': 1.0.2 - '@types/node': 17.0.18 - acorn: 8.5.0 + '@types/node': 14.18.35 + acorn: 8.7.1 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.5.5 - v8-compile-cache-lib: 3.0.0 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsconfig-paths/3.12.0: - resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} + /tsconfig-paths/3.14.1: + resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: '@types/json5': 0.0.29 json5: 1.0.1 - minimist: 1.2.5 + minimist: 1.2.6 strip-bom: 3.0.0 dev: true @@ -4821,21 +4964,18 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils/3.21.0_typescript@4.5.5: + /tslib/2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: true + + /tsutils/3.21.0_typescript@4.9.5: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.5.5 - dev: true - - /type-check/0.3.2: - resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 + typescript: 4.9.5 dev: true /type-check/0.4.0: @@ -4875,24 +5015,18 @@ packages: engines: {node: '>=8'} dev: true - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - /typedarray/0.0.6: resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} dev: true - /typescript/4.5.5: - resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==} + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /uglify-js/3.15.1: - resolution: {integrity: sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==} + /uglify-js/3.15.4: + resolution: {integrity: sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -4904,45 +5038,39 @@ packages: dependencies: function-bind: 1.1.1 has-bigints: 1.0.1 - has-symbols: 1.0.2 + has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 dev: true - /universalify/0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true - /universalify/2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - dev: true /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 dev: true /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /v8-compile-cache-lib/3.0.0: - resolution: {integrity: sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA==} + /v8-compile-cache-lib/3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/8.1.0: - resolution: {integrity: sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==} + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: - '@types/istanbul-lib-coverage': 2.0.3 + '@jridgewell/trace-mapping': 0.3.17 + '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 - source-map: 0.7.3 dev: true /validate-npm-package-license/3.0.4: @@ -4952,52 +5080,10 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /w3c-hr-time/1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - dependencies: - browser-process-hrtime: 1.0.0 - dev: true - - /w3c-xmlserializer/2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - dependencies: - xml-name-validator: 3.0.0 - dev: true - - /walker/1.0.7: - resolution: {integrity: sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=} - dependencies: - makeerror: 1.0.11 - dev: true - - /webidl-conversions/5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - - /webidl-conversions/6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - dev: true - - /whatwg-encoding/1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - dependencies: - iconv-lite: 0.4.24 - dev: true - - /whatwg-mimetype/2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: true - - /whatwg-url/8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} + /walker/1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 + makeerror: 1.0.12 dev: true /which-boxed-primitive/1.0.2: @@ -5005,7 +5091,7 @@ packages: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 - is-number-object: 1.0.6 + is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 dev: true @@ -5037,37 +5123,15 @@ packages: dev: true /wrappy/1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + /write-file-atomic/4.0.1: + resolution: {integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} dependencies: imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.3 - typedarray-to-buffer: 3.1.5 - dev: true - - /ws/7.5.5: - resolution: {integrity: sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - - /xml-name-validator/3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - dev: true - - /xmlchars/2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + signal-exit: 3.0.7 dev: true /xtend/4.0.2: @@ -5082,7 +5146,6 @@ packages: /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} @@ -5093,8 +5156,8 @@ packages: engines: {node: '>=10'} dev: true - /yargs-parser/21.0.0: - resolution: {integrity: sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==} + /yargs-parser/21.0.1: + resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} engines: {node: '>=12'} dev: true @@ -5111,8 +5174,8 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.3.1: - resolution: {integrity: sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==} + /yargs/17.4.1: + resolution: {integrity: sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==} engines: {node: '>=12'} dependencies: cliui: 7.0.4 @@ -5121,7 +5184,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 21.0.0 + yargs-parser: 21.0.1 dev: true /yn/3.1.1: diff --git a/src/lambda/delete-comment/index.py b/src/lambda/delete-comment/index.py new file mode 100644 index 000000000..1b589539e --- /dev/null +++ b/src/lambda/delete-comment/index.py @@ -0,0 +1,28 @@ +from boto3.dynamodb.conditions import Attr + +from utils import JsonPayloadBuilder, table, resp_handler + + +@resp_handler +def delete_comment(thread_id, ts, uid): + table.delete_item( + Key={ + "thread_id": thread_id, + "created_at": ts + }, + ConditionExpression=Attr('uid').eq(uid) + ) + + resp_body = JsonPayloadBuilder().add_status( + True).add_data(None).add_message('').compile() + return resp_body + + +def handler(event, context): + params = { + "thread_id": event["pathParameters"]["thread_id"], + "ts": event["queryStringParameters"]["ts"], + "uid": event['requestContext']['authorizer']['claims']['sub'] + } + + return delete_comment(**params) diff --git a/src/lambda/delete-comment/utils.py b/src/lambda/delete-comment/utils.py new file mode 100644 index 000000000..359942305 --- /dev/null +++ b/src/lambda/delete-comment/utils.py @@ -0,0 +1,67 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +# AWS DynamoDB Resources +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/delete-thread/index.py b/src/lambda/delete-thread/index.py new file mode 100644 index 000000000..a5a36dbf6 --- /dev/null +++ b/src/lambda/delete-thread/index.py @@ -0,0 +1,31 @@ +from boto3.dynamodb.conditions import Attr +import boto3 + +from utils import JsonPayloadBuilder, table, resp_handler + + +@resp_handler +def delete_thread(board_id, thread_id, ts, uid): + table.delete_item( + Key={ + "board_id": board_id, + "created_at": ts + }, + ConditionExpression=Attr('uid').eq( + uid) & Attr('thread_id').eq(thread_id) + ) + + resp_body = JsonPayloadBuilder().add_status( + True).add_data(None).add_message('').compile() + return resp_body + + +def handler(event, context): + params = { + "board_id": event["pathParameters"]["board_id"], + "thread_id": event["pathParameters"]["thread_id"], + "ts": event["queryStringParameters"]["ts"], + "uid": event['requestContext']['authorizer']['claims']['sub'] + } + + return delete_thread(**params) diff --git a/src/lambda/delete-thread/utils.py b/src/lambda/delete-thread/utils.py new file mode 100644 index 000000000..359942305 --- /dev/null +++ b/src/lambda/delete-thread/utils.py @@ -0,0 +1,67 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +# AWS DynamoDB Resources +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/get-all-threads/index.py b/src/lambda/get-all-threads/index.py new file mode 100644 index 000000000..0d6f3f3dd --- /dev/null +++ b/src/lambda/get-all-threads/index.py @@ -0,0 +1,20 @@ +from boto3.dynamodb.conditions import Key +import boto3 +from datetime import datetime +from utils import JsonPayloadBuilder, table, resp_handler + + +@resp_handler +def get_all_threads(): + + response = table.scan(TableName=table) + items = response['Items'] + + body = JsonPayloadBuilder().add_status( + True).add_data(items).add_message('').compile() + return body + + +def handler(event, context): + + return get_all_threads() diff --git a/src/lambda/get-all-threads/utils.py b/src/lambda/get-all-threads/utils.py new file mode 100644 index 000000000..05f0218dc --- /dev/null +++ b/src/lambda/get-all-threads/utils.py @@ -0,0 +1,66 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/get-board-threads/index.py b/src/lambda/get-board-threads/index.py new file mode 100644 index 000000000..2371ccc49 --- /dev/null +++ b/src/lambda/get-board-threads/index.py @@ -0,0 +1,26 @@ +from boto3.dynamodb.conditions import Key +import boto3 +from datetime import datetime +from utils import JsonPayloadBuilder, table, resp_handler + + +@resp_handler +def get_board_threads(board_id): + + results = table.query(KeyConditionExpression=Key( + "board_id").eq(board_id), ScanIndexForward=False)["Items"] + if not results: + raise LookupError + + body = JsonPayloadBuilder().add_status( + True).add_data(results).add_message('').compile() + return body + + +def handler(event, context): + + params = { + "board_id": event["pathParameters"]["board_id"] + } + + return get_board_threads(**params) diff --git a/src/lambda/get-board-threads/utils.py b/src/lambda/get-board-threads/utils.py new file mode 100644 index 000000000..05f0218dc --- /dev/null +++ b/src/lambda/get-board-threads/utils.py @@ -0,0 +1,66 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/get-comments/index.py b/src/lambda/get-comments/index.py new file mode 100644 index 000000000..06fd5febb --- /dev/null +++ b/src/lambda/get-comments/index.py @@ -0,0 +1,29 @@ +from boto3.dynamodb.conditions import Key +from utils import JsonPayloadBuilder +from utils import resp_handler +from utils import table + + +@resp_handler +def get_comments(thread_id, uid=""): + results = table.query(KeyConditionExpression=Key( + "thread_id").eq(thread_id), ScanIndexForward=False)["Items"] + for r in results: + r["mod"] = False + if r["uid"] == uid: + r["mod"] = True + del r["uid"] + + body = JsonPayloadBuilder().add_status( + True).add_data(results).add_message('').compile() + return body + + +def handler(event, context): + params = { + "thread_id": event["pathParameters"]["thread_id"] + } + if "uid" in event["queryStringParameters"]: + params["uid"] = event["queryStringParameters"]["uid"] + + return get_comments(**params) diff --git a/src/lambda/get-comments/utils.py b/src/lambda/get-comments/utils.py new file mode 100644 index 000000000..05f0218dc --- /dev/null +++ b/src/lambda/get-comments/utils.py @@ -0,0 +1,66 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/get-group-threads/index.py b/src/lambda/get-group-threads/index.py new file mode 100644 index 000000000..393284132 --- /dev/null +++ b/src/lambda/get-group-threads/index.py @@ -0,0 +1,45 @@ +from boto3.dynamodb.conditions import Key, Attr +import boto3 +from datetime import datetime +from utils import JsonPayloadBuilder, table, resp_handler + + +@resp_handler +def get_group_threads(board_id, group_id, tag_id): + + if group_id is not None and tag_id is not None: + results = table.query(KeyConditionExpression=Key( + "board_id").eq(board_id) & Key("group_id").eq(group_id), + IndexName="groupIndex", + FilterExpression=Attr('tag_id').eq(tag_id))["Items"] + if not results: + raise LookupError + + body = JsonPayloadBuilder().add_status( + True).add_data(results).add_message('').compile() + return body + + +def handler(event, context): + + params = { + "board_id": event["pathParameters"]["board_id"] + } + + group_id = event["queryStringParameters"]["group_id"] + tag_id = event["queryStringParameters"]["tag_id"] + + if group_id is not None and tag_id is not None: + params["group_id"] = group_id + params["tag_id"] = tag_id + elif group_id is not None and tag_id is None: + params["group_id"] = group_id + params["tag_id"] = None + elif tag_id is not None and group_id is None: + params["group_id"] = None + params["tag_id"] = tag_id + else: + params["group_id"] = None + params["tag_id"] = None + + return get_group_threads(**params) diff --git a/src/lambda/get-group-threads/utils.py b/src/lambda/get-group-threads/utils.py new file mode 100644 index 000000000..05f0218dc --- /dev/null +++ b/src/lambda/get-group-threads/utils.py @@ -0,0 +1,66 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/get-reviews/index.py b/src/lambda/get-reviews/index.py index 0164f2a55..74e1c45c8 100644 --- a/src/lambda/get-reviews/index.py +++ b/src/lambda/get-reviews/index.py @@ -6,7 +6,8 @@ @resp_handler def get_reviews(course_key, uid=""): - results = table.query(KeyConditionExpression=Key("course_key").eq(course_key), ScanIndexForward=False)["Items"] + results = table.query(KeyConditionExpression=Key( + "course_key").eq(course_key), ScanIndexForward=False)["Items"] for r in results: r.pop("course_key") r["benefit"] = int(r["benefit"]) @@ -18,7 +19,8 @@ def get_reviews(course_key, uid=""): r["mod"] = True del r["uid"] - body = JsonPayloadBuilder().add_status(True).add_data(results).add_message('').compile() + body = JsonPayloadBuilder().add_status( + True).add_data(results).add_message('').compile() return body diff --git a/src/lambda/get-single-thread/index.py b/src/lambda/get-single-thread/index.py new file mode 100644 index 000000000..a6489c17e --- /dev/null +++ b/src/lambda/get-single-thread/index.py @@ -0,0 +1,48 @@ +from boto3.dynamodb.conditions import Key, Attr +from datetime import datetime +from utils import JsonPayloadBuilder, table, resp_handler + + +@resp_handler +def get_single_thread(board_id, ts, thread_id, uid): + + results = table.query(KeyConditionExpression=Key( + "board_id").eq(board_id), + ConditionExpression=Attr('thread_id').eq(thread_id))["Items"] + if not results: + raise LookupError + + table.update_item( + Key={ + "board_id": board_id, + "created_at": ts, + }, + ConditionExpression=Attr('thread_id').eq(thread_id), + UpdateExpression="SET views = views + :incr", + ExpressionAttributeValues={ + ":incr": 1 + } + ) + + item = results[0] + + item["mod"] = False + if item["uid"] == uid: + item["mod"] = True + del item["uid"] + + body = JsonPayloadBuilder().add_status( + True).add_data(item).add_message('').compile() + return body + + +def handler(event, context): + params = { + "board_id": event["pathParameters"]["board_id"], + "ts": event["queryStringParameters"]["ts"], + "thread_id": event["pathParameters"]["thread_id"] + } + if "uid" in event["queryStringParameters"]: + params["uid"] = event["queryStringParameters"]["uid"] + + return get_single_thread(**params) diff --git a/src/lambda/get-single-thread/utils.py b/src/lambda/get-single-thread/utils.py new file mode 100644 index 000000000..05f0218dc --- /dev/null +++ b/src/lambda/get-single-thread/utils.py @@ -0,0 +1,66 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/patch-comment/index.py b/src/lambda/patch-comment/index.py new file mode 100644 index 000000000..076ba7380 --- /dev/null +++ b/src/lambda/patch-comment/index.py @@ -0,0 +1,40 @@ +import json +from boto3.dynamodb.conditions import Attr +from datetime import datetime + +from utils import JsonPayloadBuilder, table, resp_handler + + +@resp_handler +def patch_comment(thread_id, ts, uid, comment): + + dt_now = datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' + table.update_item( + Key={ + "thread_id": thread_id, + "created_at": ts, + }, + ConditionExpression=Attr('uid').eq(uid), + UpdateExpression='SET body = :cbody, update_at = :ts', + ExpressionAtrributeValues={ + ":tbody": [comment['body']], + ":ts": dt_now + } + ) + + body = JsonPayloadBuilder().add_status( + True).add_data(None).add_message('').compile() + return body + + +def handler(event, context): + + req = json.loads(event['body']) + params = { + "thread_id": event["pathParameters"]["thread_id"], + "ts": event["queryStringParameters"]["ts"], + "uid": event['requestContext']['authorizer']['claims']['sub'], + "comment": req["data"] + } + + return patch_comment(**params) diff --git a/src/lambda/patch-comment/utils.py b/src/lambda/patch-comment/utils.py new file mode 100644 index 000000000..4777d2603 --- /dev/null +++ b/src/lambda/patch-comment/utils.py @@ -0,0 +1,68 @@ +import base64 +import boto3 +import json +import logging +import os +from decimal import Decimal + +# AWS DynamoDB Resources +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/patch-thread/index.py b/src/lambda/patch-thread/index.py new file mode 100644 index 000000000..5e103f87b --- /dev/null +++ b/src/lambda/patch-thread/index.py @@ -0,0 +1,43 @@ +import json +from datetime import datetime +from boto3.dynamodb.conditions import Attr +from utils import JsonPayloadBuilder +from utils import resp_handler +from utils import table + + +@resp_handler +def patch_thread(board_id, ts, thread_id, thread): + + dt_now = datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' + table.update_item( + Key={ + "board_id": board_id, + "created_at": ts, + }, + ConditionExpression=Attr('thread_id').eq(thread_id), + UpdateExpression='SET body = :tbody, title = :ttitle, update_at = :ts', + ExpressionAtrributeValues={ + ":tbody": [thread['body']], + ":ttitle": [thread['title']], + ":ts": dt_now + }, + ) + + body = JsonPayloadBuilder().add_status( + True).add_data(None).add_message('').compile() + return body + + +def handler(event, context): + + req = json.loads(event['body']) + params = { + "board_id": event["pathParameters"]["board_id"], + "thread_id": event["pathParameters"]["thread_id"], + "ts": event["queryStringParameters"]["ts"], + "uid": event['requestContext']['authorizer']['claims']['sub'], + "thread": req["data"] + } + + return patch_thread(**params) diff --git a/src/lambda/patch-thread/utils.py b/src/lambda/patch-thread/utils.py new file mode 100644 index 000000000..4777d2603 --- /dev/null +++ b/src/lambda/patch-thread/utils.py @@ -0,0 +1,68 @@ +import base64 +import boto3 +import json +import logging +import os +from decimal import Decimal + +# AWS DynamoDB Resources +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/post-comment/index.py b/src/lambda/post-comment/index.py new file mode 100644 index 000000000..532a87a1c --- /dev/null +++ b/src/lambda/post-comment/index.py @@ -0,0 +1,36 @@ +import json +from datetime import datetime + +from utils import JsonPayloadBuilder, table, resp_handler + + +@resp_handler +def post_review(thread_id, comment, uid): + + text = comment["body"] + + dt_now = datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' + + thread_comment = { + "thread_id": thread_id, + "created_at": dt_now, + "updated_at": dt_now, + "body": text, + "uid": uid + } + table.put_item(Item=thread_comment) + + body = JsonPayloadBuilder().add_status( + True).add_data(None).add_message('').compile() + return body + + +def handler(event, context): + req = json.loads(event['body']) + params = { + "thread_id": event["pathParameters"]["thread_id"], + "comment": req["data"], + "uid": event['requestContext']['authorizer']['claims']['sub'] + } + + return post_review(**params) diff --git a/src/lambda/post-comment/utils.py b/src/lambda/post-comment/utils.py new file mode 100644 index 000000000..dbcd31dd6 --- /dev/null +++ b/src/lambda/post-comment/utils.py @@ -0,0 +1,50 @@ +import base64 +import boto3 +import json +import logging +import os +from decimal import Decimal + +# AWS DynamoDB Resources +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } diff --git a/src/lambda/post-thread/index.py b/src/lambda/post-thread/index.py new file mode 100644 index 000000000..b975faa78 --- /dev/null +++ b/src/lambda/post-thread/index.py @@ -0,0 +1,47 @@ +from boto3.dynamodb.conditions import Key +import json +from datetime import datetime +from utils import JsonPayloadBuilder, table, resp_handler, build_thread_id +import uuid + + +@resp_handler +def post_thread(board_id, thread, uid): + + thread_id = build_thread_id(uid) + + text = thread["body"] + + dt_now = datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' + + thread_item = { + "board_id": board_id, + "created_at": dt_now, + "updated_at": dt_now, + "title": thread["title"], + "body": text, + "uid": uid, + "thread_id": thread_id, + "tag_id": thread["tag_id"], + "group_id": thread["group_id"], + "univ_id": thread["univ_id"], + "view": 0, + } + + table.put_item(Item=thread_item) + + body = JsonPayloadBuilder().add_status( + True).add_data(None).add_message('').compile() + return body + + +def handler(event, context): + + req = json.loads(event['body']) + params = { + "board_id": event["pathParameters"]["board_id"], + "thread": req["data"], + "uid": event['requestContext']['authorizer']['claims']['sub'] + } + + return post_thread(**params) diff --git a/src/lambda/post-thread/utils.py b/src/lambda/post-thread/utils.py new file mode 100644 index 000000000..e9599b5d3 --- /dev/null +++ b/src/lambda/post-thread/utils.py @@ -0,0 +1,84 @@ +import base64 +import boto3 +import json +import logging +import os +from decimal import Decimal +from datetime import datetime +import uuid + +# AWS DynamoDB Resources +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE"]}, + "body": body + } + + +def resp_handler(func=None, headers=None): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle + + +def build_thread_id(uid): + + unique_id = str(uuid.uuid4()) + + ts = datetime.now().strftime('%Y%m%d%H%M%S') + + first_half = uid[:5] + second_half = unique_id[5:] + + thread_id = f"{ts}{first_half}{second_half}" + + return thread_id diff --git a/src/lambda/put-timetable/index.py b/src/lambda/put-timetable/index.py new file mode 100644 index 000000000..6c44a0b0f --- /dev/null +++ b/src/lambda/put-timetable/index.py @@ -0,0 +1,32 @@ +import json +from datetime import datetime +from utils import JsonPayloadBuilder +from utils import resp_handler +from utils import table + +@resp_handler +def put_timetable(uid, content): + dt_now = datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z' + table.update_item( + Key = { + "uid": uid + }, + UpdateExpression = 'SET courses = :info, update_at = :ts', + ExpressionAtrributeValues = { + ":info" : [content['courses']], + ":ts" : dt_now + } + ) + + body = JsonPayloadBuilder().add_status(True).add_data(None).add_message('').compile() + return body + + +def handler(event, context): + req = json.loads(event['body']) + params = { + "uid": event['requestContext']['authorizer']['claims']['sub'], + "content": req["data"] + } + + return put_timetable(**params) \ No newline at end of file diff --git a/src/lambda/put-timetable/utils.py b/src/lambda/put-timetable/utils.py new file mode 100644 index 000000000..47fea0834 --- /dev/null +++ b/src/lambda/put-timetable/utils.py @@ -0,0 +1,66 @@ +import boto3 +import json +import logging +import os +from decimal import Decimal + +db = boto3.resource("dynamodb", region_name="ap-northeast-1") +table = db.Table(os.getenv('TABLE_NAME')) + + +class DecimalEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, Decimal): + return float(obj) + return json.JSONEncoder.default(self, obj) + + +class JsonPayloadBuilder: + payload = {} + + def add_status(self, success): + self.payload['success'] = success + return self + + def add_data(self, data): + self.payload['data'] = data + return self + + def add_message(self, msg): + self.payload['message'] = msg + return self + + def compile(self): + return json.dumps(self.payload, cls=DecimalEncoder, ensure_ascii=False).encode('utf8') + + +def api_response(code, body): + return { + "isBase64Encoded": False, + "statusCode": code, + 'headers': { + "Access-Control-Allow-Origin": '*', + "Content-Type": "application/json", + "Referrer-Policy": "origin" + }, + "multiValueHeaders": {"Access-Control-Allow-Methods": ["POST", "OPTIONS", "GET", "PATCH", "DELETE", "PUT"]}, + "body": body + } + + +def resp_handler(func): + def handle(*args, **kwargs): + try: + resp = func(*args, **kwargs) + return api_response(200, resp) + except LookupError: + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Not found").compile() + return api_response(404, resp) + except Exception as e: + logging.error(str(e)) + resp = JsonPayloadBuilder().add_status(False).add_data(None) \ + .add_message("Internal error, please contact bugs@wasedatime.com.").compile() + return api_response(500, resp) + + return handle diff --git a/src/lambda/syllabus-scraper/const.py b/src/lambda/syllabus-scraper/const.py index 12318557d..87cf93e4c 100644 --- a/src/lambda/syllabus-scraper/const.py +++ b/src/lambda/syllabus-scraper/const.py @@ -221,16 +221,18 @@ } modality_enum_map = { - "対青": 0, - "フル対青": 0, - "ハむブγƒͺγƒƒγƒ‰οΌˆε―Ύι’οΌγ‚ͺンラむン佡用)": 1, - "θ€‡εˆοΌˆε―Ύι’/γ‚ͺγƒ³γƒ‡γƒžγƒ³γƒ‰/γƒͺをルタむム配俑/θͺ²ι‘Œζε‡ΊοΌ‰": 1, - "フルγ‚ͺγƒ³γƒ‡γƒžγƒ³γƒ‰οΌˆζ›œζ—₯時限γͺし)": 2, + "【対青】": 0, + "【対青】ハむブγƒͺγƒƒγƒ‰οΌˆε―Ύι’ε›žζ•°εŠζ•°δ»₯δΈŠοΌ‰": 1, + "γ€ιžεΈΈζ™‚γ€‘γƒγ‚€γƒ–γƒͺッド": 1, + "【γ‚ͺンラむン】ハむブγƒͺγƒƒγƒ‰οΌˆε―Ύι’ε›žζ•°εŠζ•°ζœͺζΊ€οΌ‰": 1, + "【γ‚ͺンラむン】フルγ‚ͺγƒ³γƒ‡γƒžγƒ³γƒ‰": 2, + "γ€ιžεΈΈζ™‚γ€‘γƒ•γƒ«γ‚ͺγƒ³γƒ‡γƒžγƒ³γƒ‰": 2, "フルγ‚ͺγƒ³γƒ‡γƒžγƒ³γƒ‰οΌˆγ‚³γƒ­γƒŠοΌ‰": 2, "フルγ‚ͺγƒ³γƒ‡γƒžγƒ³γƒ‰οΌˆζ—’ε­˜οΌ‰": 2, "γ‚ͺγƒ³γƒ‡γƒžγƒ³γƒ‰οΌˆζ›œζ—₯ζ™‚ι™γ‚γ‚ŠοΌ‰": 3, "γ‚ͺγƒ³γƒ‡γƒžγƒ³γƒ‰": 3, - "γƒͺをルタむム配俑": 4 + "【γ‚ͺンラむン】γƒͺをルタむム配俑": 4, + "γ€ιžεΈΈζ™‚γ€‘γƒͺをルタむム配俑": 4, } cron_schedule = ["01-01", "02-01", "02-14", "02-24", "03-01", "03-04", "03-07", "03-10", "03-16", "03-18", "03-21",