diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 892206e6..16f0a3bd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,6 +11,7 @@ on: branches-ignore: - "l10n_master" - "gh-pages" + - "deploy" paths-ignore: - '.github/workflows/**' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bef2229d..97b43a21 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -158,7 +158,7 @@ jobs: ghpages-deploy: - name: Deploy Web Vault + name: Deploy Web Vault to GitHub Pages runs-on: ubuntu-20.04 needs: - setup @@ -172,10 +172,10 @@ jobs: with: ref: gh-pages - - name: Create deploy branch + - name: Create gh-pages-deploy branch run: | - git switch -c deploy-$_TAG_VERSION - git push -u origin deploy-$_TAG_VERSION + git switch -c gh-pages-deploy-$_TAG_VERSION + git push -u origin gh-pages-deploy-$_TAG_VERSION - name: Checkout Repo uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # v2.4.0 @@ -204,24 +204,88 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - target_branch: deploy-${{ needs.setup.outputs.tag_version }} + target_branch: gh-pages-deploy-${{ needs.setup.outputs.tag_version }} build_dir: build keep_history: true commit_message: "Staging deploy ${{ needs.setup.outputs.release_version }}" dry_run: ${{ github.event.inputs.release_type == 'Dry Run' }} - - name: Create Deploy PR + - name: Create GitHub Pages Deploy PR if: ${{ github.event.inputs.release_type != 'Dry Run' }} env: - PR_BRANCH: deploy-${{ env._TAG_VERSION }} + PR_BRANCH: gh-pages-deploy-${{ env._TAG_VERSION }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - gh pr create --title "Deploy $_RELEASE_VERSION" \ + gh pr create --title "Deploy $_RELEASE_VERSION to GitHub Pages" \ --body "Deploying $_RELEASE_VERSION" \ --base gh-pages \ --head "$PR_BRANCH" + cfpages-deploy: + name: Deploy Web Vault to CloudFlare Pages branch + runs-on: ubuntu-20.04 + needs: + - setup + - self-host + env: + _RELEASE_VERSION: ${{ needs.setup.outputs.release_version }} + _TAG_VERSION: ${{ needs.setup.outputs.tag_version }} + steps: + - name: Checkout Repo + uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # v2.4.0 + + - name: Download latest cloud asset + uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + with: + workflow: build.yml + workflow_conclusion: success + branch: ${{ needs.setup.outputs.branch_name }} + artifacts: web-*-cloud-COMMERCIAL.zip + + # This should result in a build directory in the current working directory + - name: Unzip build asset + run: unzip web-*-cloud-COMMERCIAL.zip + + - name: Checkout Repo + uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # v2.4.0 + with: + ref: deploy + path: deployment + + - name: Setup git config + run: | + git config --global user.name = "GitHub Action Bot" + git config --global user.email = "<>" + git config --global url."https://github.com/".insteadOf ssh://git@github.com/ + git config --global url."https://".insteadOf ssh:// + + - name: Deploy CloudFlare Pages + run: | + rm -rf ./* + cp -R ../build/* . + working-directory: deployment + + - name: Create cf-pages-deploy branch + run: | + git switch -c cf-pages-deploy-$_TAG_VERSION + git add . + git commit -m "Staging deploy ${{ needs.setup.outputs.release_version }}" + git push -u origin cf-pages-deploy-$_TAG_VERSION + working-directory: deployment + + - name: Create CloudFlare Pages Deploy PR + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + env: + PR_BRANCH: cf-pages-deploy-${{ env._TAG_VERSION }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh pr create --title "Deploy $_RELEASE_VERSION to CloudFlare Pages" \ + --body "Deploying $_RELEASE_VERSION" \ + --base deploy \ + --head "$PR_BRANCH" + + release: name: Create GitHub Release runs-on: ubuntu-20.04 @@ -229,6 +293,7 @@ jobs: - setup - self-host - ghpages-deploy + - cfpages-deploy steps: - name: Download latest build artifacts uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 @@ -271,5 +336,8 @@ jobs: - name: Checkout repo uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # 2.4.0 - - name: Remove deploy branch - run: git push origin --delete deploy-$_TAG_VERSION + - name: Remove gh-pages-deploy branch + run: git push origin --delete gh-pages-deploy-$_TAG_VERSION + + - name: Remove cf-pages-deploy branch + run: git push origin --delete cf-pages-deploy-$_TAG_VERSION diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 21e158bc..bdb83691 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ Here is how you can get involved: - **Write code for a new feature:** Make a new post in the [Github Contributions category](https://community.bitwarden.com/c/github-contributions/) of the Community Forums. Include a description of your proposed contribution, screeshots, and links to any relevant feature requests. This helps get feedback from the community and Bitwarden team members before you start writing code - **Report a bug or submit a bugfix:** Use Github issues and pull requests - **Write documentation:** Submit a pull request to the [Bitwarden help repository](https://github.com/bitwarden/help) -- **Help other users:** Go to the [User-to-User Support category](https://community.bitwarden.com/c/support/) on the Community Forums +- **Help other users:** Go to the [Ask the Bitwarden Community category](https://community.bitwarden.com/c/support/) on the Community Forums - **Translate:** See the localization (l10n) section below ## Contributor Agreement @@ -31,6 +31,6 @@ We use a translation tool called [Crowdin](https://crowdin.com) to help manage o If you are interested in helping translate the Bitwarden web vault into another language (or make a translation correction), please register an account at Crowdin and join our project here: https://crowdin.com/project/bitwarden-web -If the language that you are interested in translating is not already listed, create a new account on Crowdin, join the project, and contact the project owner (https://crowdin.com/profile/kspearrin). +If the language that you are interested in translating is not already listed, create a new account on Crowdin, join the project, and contact the project owner (https://crowdin.com/profile/dwbit). You can read Crowdin's getting started guide for translators here: https://support.crowdin.com/crowdin-intro/ diff --git a/README.md b/README.md index fd80b32c..1b8dfe77 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +> **Repository Reorganization in Progress** +> +> We are currently migrating some projects over to a mono repository. For existing PR's we will be providing documentation on how to move/migrate them. To minimize the overhead we are actively reviewing open PRs. If possible please ensure any pending comments are resolved as soon as possible. +> +> New pull requests created during this transition period may not get addressed —if needed, please create a new PR after the reorganization is complete. +

diff --git a/bitwarden_license/src/app/app.module.ts b/bitwarden_license/src/app/app.module.ts index f9619090..b137491b 100644 --- a/bitwarden_license/src/app/app.module.ts +++ b/bitwarden_license/src/app/app.module.ts @@ -9,6 +9,7 @@ import { InfiniteScrollModule } from "ngx-infinite-scroll"; import { JslibModule } from "jslib-angular/jslib.module"; import { OssRoutingModule } from "src/app/oss-routing.module"; +import { OssModule } from "src/app/oss.module"; import { ServicesModule } from "src/app/services/services.module"; import { WildcardRoutingModule } from "src/app/wildcard-routing.module"; @@ -21,6 +22,7 @@ import { MaximumVaultTimeoutPolicyComponent } from "./policies/maximum-vault-tim @NgModule({ imports: [ OverlayModule, + OssModule, JslibModule, BrowserAnimationsModule, FormsModule, diff --git a/bitwarden_license/src/app/providers/manage/accept-provider.component.html b/bitwarden_license/src/app/providers/manage/accept-provider.component.html index 7f34664a..a5927cbc 100644 --- a/bitwarden_license/src/app/providers/manage/accept-provider.component.html +++ b/bitwarden_license/src/app/providers/manage/accept-provider.component.html @@ -24,7 +24,11 @@

{{ "joinProviderDesc" | i18n }}


- + {{ "logIn" | i18n }} {{ "setupProviderLoginDesc" | i18n }}


- + {{ "logIn" | i18n }}
diff --git a/package-lock.json b/package-lock.json index 76f29373..a5fc92ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bitwarden/web-vault", - "version": "2.27.0", + "version": "2.28.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@bitwarden/web-vault", - "version": "2.27.0", + "version": "2.28.1", "hasInstallScript": true, "license": "GPL-3.0", "dependencies": { @@ -22,7 +22,7 @@ "@bitwarden/jslib-angular": "file:jslib/angular", "@bitwarden/jslib-common": "file:jslib/common", "bootstrap": "4.6.0", - "braintree-web-drop-in": "1.30.1", + "braintree-web-drop-in": "1.33.1", "browser-hrtime": "^1.1.8", "core-js": "^3.11.0", "date-input-polyfill": "^2.14.0", @@ -88,7 +88,6 @@ } }, "jslib/angular": { - "name": "@bitwarden/jslib-angular", "version": "0.0.0", "license": "GPL-3.0", "dependencies": { @@ -114,7 +113,6 @@ } }, "jslib/common": { - "name": "@bitwarden/jslib-common", "version": "0.0.0", "license": "GPL-3.0", "dependencies": { @@ -339,24 +337,26 @@ } }, "node_modules/@babel/core": { - "version": "7.17.8", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.7", + "@babel/generator": "^7.17.9", "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.8", - "@babel/parser": "^7.17.8", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "engines": { @@ -376,7 +376,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.7", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -433,24 +435,14 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -535,12 +527,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.8", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" }, "engines": { @@ -548,7 +542,9 @@ } }, "node_modules/@babel/highlight": { - "version": "7.16.10", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", "dev": true, "license": "MIT", "dependencies": { @@ -561,7 +557,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.8", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "dev": true, "license": "MIT", "bin": { @@ -585,17 +583,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.3", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.9", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^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.3", + "@babel/parser": "^7.17.9", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -632,8 +632,9 @@ } }, "node_modules/@braintree/browser-detection": { - "version": "1.12.0", - "license": "MIT" + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@braintree/browser-detection/-/browser-detection-1.12.1.tgz", + "integrity": "sha512-i/54qrax5o/WbJJhsE/7qqKE594/kGhR+xSu/w13rT7Mlr/uITkWDXzxffcKQ6l6FQxK0IG0EfgT6TJpWgZcUQ==" }, "node_modules/@braintree/class-list": { "version": "0.2.0", @@ -652,8 +653,9 @@ "license": "MIT" }, "node_modules/@braintree/sanitize-url": { - "version": "5.0.2", - "license": "MIT" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz", + "integrity": "sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==" }, "node_modules/@braintree/uuid": { "version": "0.1.0", @@ -747,7 +749,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.7.tgz", + "integrity": "sha512-8XC0l0PwCbdg2Uc8zIIf6djNX3lYiz9GqQlC1LJ9WQvTYvcfP8IA9K2IKRnPm5tAX6X/+orF+WwKZ0doGcgJlg==", "dev": true, "license": "MIT", "dependencies": { @@ -755,6 +759,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, "node_modules/@microsoft/signalr": { "version": "5.0.10", "license": "Apache-2.0", @@ -782,7 +792,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "12.2.16", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.17.tgz", + "integrity": "sha512-uaS+2YZgPDW3VmUuwh4/yfIFV1KRVGWefc6xLWIqKRKs6mlRYs65m3ib9dX7CTS4kQMCbhxkxMbpBO2yXlzfvA==", "dev": true, "license": "MIT", "engines": { @@ -947,9 +959,10 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.10", - "dev": true, - "license": "MIT" + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", @@ -972,9 +985,10 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "16.11.26", - "dev": true, - "license": "MIT" + "version": "16.11.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.27.tgz", + "integrity": "sha512-C1pD3kgLoZ56Uuy5lhfOxie4aZlA3UMGLX9rXteq4WitEZH6Rl80mwactt9QG0w0gLFlN/kLBTFnGXtDVWvWQw==", + "dev": true }, "node_modules/@types/node-forge": { "version": "1.0.1", @@ -1076,13 +1090,15 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", + "integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/type-utils": "5.16.0", - "@typescript-eslint/utils": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/type-utils": "5.20.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -1108,13 +1124,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz", + "integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/typescript-estree": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "debug": "^4.3.2" }, "engines": { @@ -1134,12 +1152,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz", + "integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/visitor-keys": "5.16.0" + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1150,11 +1170,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz", + "integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "5.16.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "tsutils": "^3.21.0" }, @@ -1175,7 +1197,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz", + "integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==", "dev": true, "license": "MIT", "engines": { @@ -1187,12 +1211,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz", + "integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/visitor-keys": "5.16.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -1213,14 +1239,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz", + "integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==", "dev": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/typescript-estree": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1236,11 +1264,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz", + "integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/types": "5.20.0", "eslint-visitor-keys": "^3.0.0" }, "engines": { @@ -1547,7 +1577,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.10.0", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "license": "MIT", "dependencies": { @@ -1680,13 +1712,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.2.5", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -1704,7 +1739,9 @@ } }, "node_modules/async": { - "version": "2.6.3", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "license": "MIT", "dependencies": { @@ -1864,17 +1901,17 @@ "dev": true, "license": "MIT" }, - "node_modules/bonjour": { - "version": "3.5.0", + "node_modules/bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", "dev": true, "license": "MIT", "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" } }, "node_modules/boolbase": { @@ -1915,38 +1952,40 @@ } }, "node_modules/braintree-web": { - "version": "3.78.2", - "license": "MIT", + "version": "3.85.3", + "resolved": "https://registry.npmjs.org/braintree-web/-/braintree-web-3.85.3.tgz", + "integrity": "sha512-slCnjD/YLFDmiOU0vxL7i4uifjRQV5Cw7dSkhRdXiIT+a8iQ7NxtL5FSomv45wuHqgdilZeQ8iB8guIrn6QgwA==", "dependencies": { "@braintree/asset-loader": "0.4.4", - "@braintree/browser-detection": "1.12.0", + "@braintree/browser-detection": "1.12.1", "@braintree/class-list": "0.2.0", "@braintree/event-emitter": "0.4.1", "@braintree/extended-promise": "0.4.1", "@braintree/iframer": "1.1.0", - "@braintree/sanitize-url": "5.0.2", + "@braintree/sanitize-url": "6.0.0", "@braintree/uuid": "0.1.0", "@braintree/wrap-promise": "2.1.0", "card-validator": "8.1.1", "credit-card-type": "9.1.0", "framebus": "5.1.2", - "inject-stylesheet": "4.0.0", - "promise-polyfill": "8.2.0", - "restricted-input": "3.0.3" + "inject-stylesheet": "5.0.0", + "promise-polyfill": "8.2.3", + "restricted-input": "3.0.5" } }, "node_modules/braintree-web-drop-in": { - "version": "1.30.1", - "license": "MIT", + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/braintree-web-drop-in/-/braintree-web-drop-in-1.33.1.tgz", + "integrity": "sha512-/gVWpFIGATxVBqBCp7ZTg2vPsH5aZXAASiBVWZ8Tqebntmj0F0KlCtxfvq8k2qMSwKBzhDEgmMp2o0hAcsfM6g==", "dependencies": { "@braintree/asset-loader": "0.4.4", - "@braintree/browser-detection": "1.12.0", + "@braintree/browser-detection": "1.12.1", "@braintree/class-list": "0.2.0", "@braintree/event-emitter": "0.4.1", "@braintree/uuid": "0.1.0", "@braintree/wrap-promise": "2.1.0", - "braintree-web": "3.78.2", - "promise-polyfill": "8.2.0" + "braintree-web": "3.85.3", + "promise-polyfill": "8.2.3" } }, "node_modules/browser-hrtime": { @@ -2009,11 +2048,6 @@ "dev": true, "license": "MIT" }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, "node_modules/bytes": { "version": "3.0.0", "dev": true, @@ -2060,7 +2094,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001319", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "dev": true, "funding": [ { @@ -2134,7 +2170,9 @@ } }, "node_modules/clean-css": { - "version": "5.2.4", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2458,7 +2496,9 @@ } }, "node_modules/core-js": { - "version": "3.21.1", + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.1.tgz", + "integrity": "sha512-l6CwCLq7XgITOQGhv1dIUmwCFoqFjyQ6zQHUCQlS0xKmb9d6OHIg8jDiEoswhaettT21BSF5qKr6kbvE+aKwxw==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -2545,13 +2585,15 @@ } }, "node_modules/css-select": { - "version": "4.2.1", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", "domutils": "^2.8.0", "nth-check": "^2.0.1" }, @@ -2560,7 +2602,9 @@ } }, "node_modules/css-what": { - "version": "5.1.0", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2604,22 +2648,6 @@ } } }, - "node_modules/deep-equal": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-is": { "version": "0.1.4", "dev": true, @@ -2645,14 +2673,20 @@ } }, "node_modules/define-properties": { - "version": "1.1.3", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "license": "MIT", "dependencies": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/defined": { @@ -2791,20 +2825,16 @@ "license": "MIT" }, "node_modules/dns-packet": { - "version": "1.3.4", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", "dev": true, "license": "MIT", "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/doctrine": { @@ -2827,7 +2857,9 @@ } }, "node_modules/dom-serializer": { - "version": "1.3.2", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "license": "MIT", "dependencies": { @@ -2840,7 +2872,9 @@ } }, "node_modules/domelementtype": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { @@ -2902,9 +2936,10 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.89", - "dev": true, - "license": "ISC" + "version": "1.4.114", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.114.tgz", + "integrity": "sha512-gRwLpVYWHGbERPU6o8pKfR168V6enWEXzZc6zQNNXbgJ7UJna+9qzAIHY94+9KOv71D/CH+QebLA9pChD2q8zA==", + "dev": true }, "node_modules/email-addresses": { "version": "3.1.0", @@ -2925,7 +2960,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.9.2", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "license": "MIT", "dependencies": { @@ -2964,7 +3001,9 @@ } }, "node_modules/es-abstract": { - "version": "1.19.1", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", + "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", "dev": true, "license": "MIT", "dependencies": { @@ -2974,15 +3013,15 @@ "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.1", + "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.1", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", @@ -3001,6 +3040,15 @@ "dev": true, "license": "MIT" }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "dev": true, @@ -3043,7 +3091,9 @@ } }, "node_modules/eslint": { - "version": "8.11.0", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", + "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3122,15 +3172,17 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "2.5.0", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", "dev": true, "license": "ISC", "dependencies": { - "debug": "^4.3.1", - "glob": "^7.1.7", - "is-glob": "^4.0.1", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.9.0" + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { "node": ">=4" @@ -3161,7 +3213,9 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.25.4", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "license": "MIT", "dependencies": { @@ -3170,14 +3224,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "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" }, "engines": { "node": ">=4" @@ -4049,9 +4103,10 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.9", - "dev": true, - "license": "ISC" + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/handle-thing": { "version": "2.0.1", @@ -4070,7 +4125,9 @@ } }, "node_modules/has-bigints": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, "license": "MIT", "funding": { @@ -4085,6 +4142,18 @@ "node": ">=4" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "dev": true, @@ -4130,9 +4199,10 @@ } }, "node_modules/html-entities": { - "version": "2.3.2", - "dev": true, - "license": "MIT" + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true }, "node_modules/html-loader": { "version": "3.1.0", @@ -4270,7 +4340,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.4", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.5.tgz", + "integrity": "sha512-ORErEaxkjyrhifofwCuQttHPUSestLtiPDwV0qQOFB0ww6695H953wIGRnkakw1K+GAP+t8/RPbfDB75RFL4Fg==", "dev": true, "license": "MIT", "dependencies": { @@ -4435,8 +4507,9 @@ "license": "ISC" }, "node_modules/inject-stylesheet": { - "version": "4.0.0", - "license": "MIT" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/inject-stylesheet/-/inject-stylesheet-5.0.0.tgz", + "integrity": "sha512-GzncrJP8E/pavMQzoO93CXoYCfTttwVm2cX2TyXJdgtVE0cCvWSFCn1/uMsM6ZkEg7LUsOcKuamcLiGWlv2p9A==" }, "node_modules/internal-slot": { "version": "1.0.3", @@ -4459,11 +4532,6 @@ "node": ">= 0.10" } }, - "node_modules/ip": { - "version": "1.1.5", - "dev": true, - "license": "MIT" - }, "node_modules/ipaddr.js": { "version": "2.0.1", "dev": true, @@ -4541,7 +4609,9 @@ } }, "node_modules/is-core-module": { - "version": "2.8.1", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "license": "MIT", "dependencies": { @@ -4643,7 +4713,9 @@ } }, "node_modules/is-number-object": { - "version": "1.0.6", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4724,9 +4796,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4933,8 +5009,9 @@ } }, "node_modules/jszip": { - "version": "3.7.1", - "license": "(MIT OR GPL-3.0-or-later)", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.9.1.tgz", + "integrity": "sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw==", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -4991,7 +5068,9 @@ "license": "MIT" }, "node_modules/lint-staged": { - "version": "12.3.7", + "version": "12.3.8", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.8.tgz", + "integrity": "sha512-0+UpNaqIwKRSGAFOCcpuYNIv/j5QGVC+xUVvmSdxHO+IfIGoHbFLo3XcPmV/LLnsVj5EAncNHVtlITSoY5qWGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5029,7 +5108,9 @@ } }, "node_modules/lint-staged/node_modules/supports-color": { - "version": "9.2.1", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", + "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", "dev": true, "license": "MIT", "engines": { @@ -5164,7 +5245,9 @@ } }, "node_modules/loader-runner": { - "version": "4.2.0", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "license": "MIT", "engines": { @@ -5394,12 +5477,14 @@ } }, "node_modules/micromatch": { - "version": "4.0.4", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" @@ -5483,11 +5568,13 @@ "license": "MIT" }, "node_modules/mkdirp": { - "version": "0.5.5", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" @@ -5509,24 +5596,23 @@ } }, "node_modules/multicast-dns": { - "version": "6.2.3", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", "dev": true, "license": "MIT", "dependencies": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, "node_modules/nanoid": { - "version": "3.3.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, "license": "MIT", "bin": { @@ -5611,9 +5697,10 @@ } }, "node_modules/node-releases": { - "version": "2.0.2", - "dev": true, - "license": "MIT" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "dev": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -5662,7 +5749,9 @@ } }, "node_modules/object-hash": { - "version": "2.2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "dev": true, "license": "MIT", "engines": { @@ -5677,21 +5766,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "dev": true, @@ -6189,11 +6263,13 @@ } }, "node_modules/postcss-load-config": { - "version": "3.1.3", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", "dev": true, "license": "MIT", "dependencies": { - "lilconfig": "^2.0.4", + "lilconfig": "^2.0.5", "yaml": "^1.10.2" }, "engines": { @@ -6204,14 +6280,27 @@ "url": "https://opencollective.com/postcss/" }, "peerDependencies": { + "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { + "postcss": { + "optional": true + }, "ts-node": { "optional": true } } }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/postcss-loader": { "version": "6.2.1", "dev": true, @@ -6307,7 +6396,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.9", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, "license": "MIT", "dependencies": { @@ -6364,8 +6455,9 @@ "license": "MIT" }, "node_modules/promise-polyfill": { - "version": "8.2.0", - "license": "MIT" + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" }, "node_modules/proxy-addr": { "version": "2.0.7", @@ -6529,21 +6621,6 @@ "version": "0.11.1", "license": "MIT" }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/regexpp": { "version": "3.2.0", "dev": true, @@ -6651,10 +6728,11 @@ } }, "node_modules/restricted-input": { - "version": "3.0.3", - "license": "MIT", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/restricted-input/-/restricted-input-3.0.5.tgz", + "integrity": "sha512-lUuXZ3wUnHURRarj5/0C8vomWIfWJO+p7T6RYwB46v7Oyuyr3yyupU+i7SjqUv4S6RAeAAZt1C/QCLJ9xhQBow==", "dependencies": { - "@braintree/browser-detection": "^1.10.0" + "@braintree/browser-detection": "^1.12.1" } }, "node_modules/retry": { @@ -6732,7 +6810,9 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.49.9", + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.1.tgz", + "integrity": "sha512-noTnY41KnlW2A9P8sdwESpDmo+KBNkukI1i8+hOK3footBUcohNHtdOJbckp46XO95nuvcHDDZ+4tmOnpK3hjw==", "dev": true, "license": "MIT", "dependencies": { @@ -6803,7 +6883,9 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.10.0", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "license": "MIT", "dependencies": { @@ -6839,18 +6921,22 @@ "license": "MIT" }, "node_modules/selfsigned": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "license": "MIT", "dependencies": { - "node-forge": "^1.2.0" + "node-forge": "^1" }, "engines": { "node": ">=10" } }, "node_modules/semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "license": "ISC", "dependencies": { @@ -7337,28 +7423,30 @@ } }, "node_modules/tailwindcss": { - "version": "3.0.23", + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", + "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", "dev": true, "license": "MIT", "dependencies": { "arg": "^5.0.1", - "chalk": "^4.1.2", "chokidar": "^3.5.3", "color-name": "^1.1.4", - "cosmiconfig": "^7.0.1", "detective": "^5.2.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.2.11", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", + "lilconfig": "^2.0.5", "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss": "^8.4.6", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.12", "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.0", + "postcss-load-config": "^3.1.4", "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.9", + "postcss-selector-parser": "^6.0.10", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", "resolve": "^1.22.0" @@ -7371,50 +7459,9 @@ "node": ">=12.13.0" }, "peerDependencies": { - "autoprefixer": "^10.0.2", "postcss": "^8.0.9" } }, - "node_modules/tailwindcss/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/tailwindcss/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tailwindcss/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, "node_modules/tailwindcss/node_modules/color-name": { "version": "1.1.4", "dev": true, @@ -7431,23 +7478,13 @@ "node": ">=10.13.0" } }, - "node_modules/tailwindcss/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/tailwindcss/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/tapable": { @@ -7699,13 +7736,15 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.0", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, @@ -7915,7 +7954,9 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.70.0", + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", "dev": true, "license": "MIT", "dependencies": { @@ -8033,7 +8074,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.7.4", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", "dev": true, "license": "MIT", "dependencies": { @@ -8042,29 +8085,28 @@ "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.1", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", "open": "^8.0.9", "p-retry": "^4.5.0", "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", "sockjs": "^0.3.21", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", "ws": "^8.4.2" }, @@ -8083,74 +8125,6 @@ } } }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/webpack-dev-server/node_modules/del": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/is-path-inside": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-server/node_modules/p-map": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/webpack-merge": { "version": "5.8.0", "dev": true, @@ -8409,7 +8383,9 @@ } }, "node_modules/yargs": { - "version": "17.4.0", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", "dev": true, "license": "MIT", "dependencies": { @@ -8566,23 +8542,25 @@ "dev": true }, "@babel/core": { - "version": "7.17.8", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.7", + "@babel/generator": "^7.17.9", "@babel/helper-compilation-targets": "^7.17.7", "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.8", - "@babel/parser": "^7.17.8", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", + "json5": "^2.2.1", "semver": "^6.3.0" }, "dependencies": { @@ -8593,7 +8571,9 @@ } }, "@babel/generator": { - "version": "7.17.7", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "dev": true, "requires": { "@babel/types": "^7.17.0", @@ -8631,19 +8611,13 @@ } }, "@babel/helper-function-name": { - "version": "7.16.7", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { @@ -8697,16 +8671,20 @@ "dev": true }, "@babel/helpers": { - "version": "7.17.8", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dev": true, "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", + "@babel/traverse": "^7.17.9", "@babel/types": "^7.17.0" } }, "@babel/highlight": { - "version": "7.16.10", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -8715,7 +8693,9 @@ } }, "@babel/parser": { - "version": "7.17.8", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "dev": true }, "@babel/template": { @@ -8728,16 +8708,18 @@ } }, "@babel/traverse": { - "version": "7.17.3", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.9", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^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.3", + "@babel/parser": "^7.17.9", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -8803,7 +8785,9 @@ } }, "@braintree/browser-detection": { - "version": "1.12.0" + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@braintree/browser-detection/-/browser-detection-1.12.1.tgz", + "integrity": "sha512-i/54qrax5o/WbJJhsE/7qqKE594/kGhR+xSu/w13rT7Mlr/uITkWDXzxffcKQ6l6FQxK0IG0EfgT6TJpWgZcUQ==" }, "@braintree/class-list": { "version": "0.2.0" @@ -8818,7 +8802,9 @@ "version": "1.1.0" }, "@braintree/sanitize-url": { - "version": "5.0.2" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.0.tgz", + "integrity": "sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==" }, "@braintree/uuid": { "version": "0.1.0" @@ -8880,13 +8866,21 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.4", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.7.tgz", + "integrity": "sha512-8XC0l0PwCbdg2Uc8zIIf6djNX3lYiz9GqQlC1LJ9WQvTYvcfP8IA9K2IKRnPm5tAX6X/+orF+WwKZ0doGcgJlg==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, "@microsoft/signalr": { "version": "5.0.10", "requires": { @@ -8913,7 +8907,9 @@ } }, "@ngtools/webpack": { - "version": "12.2.16", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.17.tgz", + "integrity": "sha512-uaS+2YZgPDW3VmUuwh4/yfIFV1KRVGWefc6xLWIqKRKs6mlRYs65m3ib9dX7CTS4kQMCbhxkxMbpBO2yXlzfvA==", "dev": true, "requires": {} }, @@ -9040,7 +9036,9 @@ } }, "@types/json-schema": { - "version": "7.0.10", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/json5": { @@ -9060,7 +9058,9 @@ "dev": true }, "@types/node": { - "version": "16.11.26", + "version": "16.11.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.27.tgz", + "integrity": "sha512-C1pD3kgLoZ56Uuy5lhfOxie4aZlA3UMGLX9rXteq4WitEZH6Rl80mwactt9QG0w0gLFlN/kLBTFnGXtDVWvWQw==", "dev": true }, "@types/node-forge": { @@ -9148,12 +9148,14 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz", + "integrity": "sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/type-utils": "5.16.0", - "@typescript-eslint/utils": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/type-utils": "5.20.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "functional-red-black-tree": "^1.0.1", "ignore": "^5.1.8", @@ -9163,42 +9165,52 @@ } }, "@typescript-eslint/parser": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.20.0.tgz", + "integrity": "sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/typescript-estree": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "debug": "^4.3.2" } }, "@typescript-eslint/scope-manager": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz", + "integrity": "sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/visitor-keys": "5.16.0" + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0" } }, "@typescript-eslint/type-utils": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz", + "integrity": "sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.16.0", + "@typescript-eslint/utils": "5.20.0", "debug": "^4.3.2", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.20.0.tgz", + "integrity": "sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz", + "integrity": "sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/visitor-keys": "5.16.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/visitor-keys": "5.20.0", "debug": "^4.3.2", "globby": "^11.0.4", "is-glob": "^4.0.3", @@ -9207,22 +9219,26 @@ } }, "@typescript-eslint/utils": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.20.0.tgz", + "integrity": "sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.16.0", - "@typescript-eslint/types": "5.16.0", - "@typescript-eslint/typescript-estree": "5.16.0", + "@typescript-eslint/scope-manager": "5.20.0", + "@typescript-eslint/types": "5.20.0", + "@typescript-eslint/typescript-estree": "5.20.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.16.0", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz", + "integrity": "sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.16.0", + "@typescript-eslint/types": "5.20.0", "eslint-visitor-keys": "^3.0.0" } }, @@ -9440,7 +9456,9 @@ }, "dependencies": { "ajv": { - "version": "8.10.0", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -9522,12 +9540,15 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.5", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" } }, "astral-regex": { @@ -9535,7 +9556,9 @@ "dev": true }, "async": { - "version": "2.6.3", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -9631,16 +9654,16 @@ } } }, - "bonjour": { - "version": "3.5.0", + "bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", "dev": true, "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", + "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" } }, "boolbase": { @@ -9667,36 +9690,40 @@ } }, "braintree-web": { - "version": "3.78.2", + "version": "3.85.3", + "resolved": "https://registry.npmjs.org/braintree-web/-/braintree-web-3.85.3.tgz", + "integrity": "sha512-slCnjD/YLFDmiOU0vxL7i4uifjRQV5Cw7dSkhRdXiIT+a8iQ7NxtL5FSomv45wuHqgdilZeQ8iB8guIrn6QgwA==", "requires": { "@braintree/asset-loader": "0.4.4", - "@braintree/browser-detection": "1.12.0", + "@braintree/browser-detection": "1.12.1", "@braintree/class-list": "0.2.0", "@braintree/event-emitter": "0.4.1", "@braintree/extended-promise": "0.4.1", "@braintree/iframer": "1.1.0", - "@braintree/sanitize-url": "5.0.2", + "@braintree/sanitize-url": "6.0.0", "@braintree/uuid": "0.1.0", "@braintree/wrap-promise": "2.1.0", "card-validator": "8.1.1", "credit-card-type": "9.1.0", "framebus": "5.1.2", - "inject-stylesheet": "4.0.0", - "promise-polyfill": "8.2.0", - "restricted-input": "3.0.3" + "inject-stylesheet": "5.0.0", + "promise-polyfill": "8.2.3", + "restricted-input": "3.0.5" } }, "braintree-web-drop-in": { - "version": "1.30.1", + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/braintree-web-drop-in/-/braintree-web-drop-in-1.33.1.tgz", + "integrity": "sha512-/gVWpFIGATxVBqBCp7ZTg2vPsH5aZXAASiBVWZ8Tqebntmj0F0KlCtxfvq8k2qMSwKBzhDEgmMp2o0hAcsfM6g==", "requires": { "@braintree/asset-loader": "0.4.4", - "@braintree/browser-detection": "1.12.0", + "@braintree/browser-detection": "1.12.1", "@braintree/class-list": "0.2.0", "@braintree/event-emitter": "0.4.1", "@braintree/uuid": "0.1.0", "@braintree/wrap-promise": "2.1.0", - "braintree-web": "3.78.2", - "promise-polyfill": "8.2.0" + "braintree-web": "3.85.3", + "promise-polyfill": "8.2.3" } }, "browser-hrtime": { @@ -9725,10 +9752,6 @@ "version": "1.1.2", "dev": true }, - "buffer-indexof": { - "version": "1.1.1", - "dev": true - }, "bytes": { "version": "3.0.0", "dev": true @@ -9758,7 +9781,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001319", + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", "dev": true }, "canonical-path": { @@ -9799,7 +9824,9 @@ "dev": true }, "clean-css": { - "version": "5.2.4", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -10006,7 +10033,9 @@ } }, "core-js": { - "version": "3.21.1" + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.1.tgz", + "integrity": "sha512-l6CwCLq7XgITOQGhv1dIUmwCFoqFjyQ6zQHUCQlS0xKmb9d6OHIg8jDiEoswhaettT21BSF5qKr6kbvE+aKwxw==" }, "core-util-is": { "version": "1.0.3" @@ -10056,18 +10085,22 @@ } }, "css-select": { - "version": "4.2.1", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, "requires": { "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", "domutils": "^2.8.0", "nth-check": "^2.0.1" } }, "css-what": { - "version": "5.1.0", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true }, "cssesc": { @@ -10087,18 +10120,6 @@ "ms": "2.1.2" } }, - "deep-equal": { - "version": "1.1.1", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, "deep-is": { "version": "0.1.4", "dev": true @@ -10115,10 +10136,13 @@ "dev": true }, "define-properties": { - "version": "1.1.3", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "defined": { @@ -10216,18 +10240,12 @@ "dev": true }, "dns-packet": { - "version": "1.3.4", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", "dev": true, "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" } }, "doctrine": { @@ -10245,7 +10263,9 @@ } }, "dom-serializer": { - "version": "1.3.2", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "requires": { "domelementtype": "^2.0.1", @@ -10254,7 +10274,9 @@ } }, "domelementtype": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true }, "domhandler": { @@ -10294,7 +10316,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.89", + "version": "1.4.114", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.114.tgz", + "integrity": "sha512-gRwLpVYWHGbERPU6o8pKfR168V6enWEXzZc6zQNNXbgJ7UJna+9qzAIHY94+9KOv71D/CH+QebLA9pChD2q8zA==", "dev": true }, "email-addresses": { @@ -10310,7 +10334,9 @@ "dev": true }, "enhanced-resolve": { - "version": "5.9.2", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -10333,7 +10359,9 @@ } }, "es-abstract": { - "version": "1.19.1", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", + "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -10342,15 +10370,15 @@ "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.1", + "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.1", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", @@ -10362,6 +10390,15 @@ "version": "0.9.3", "dev": true }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "es-to-primitive": { "version": "1.2.1", "dev": true, @@ -10387,7 +10424,9 @@ "dev": true }, "eslint": { - "version": "8.11.0", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", + "integrity": "sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==", "dev": true, "requires": { "@eslint/eslintrc": "^1.2.1", @@ -10523,14 +10562,16 @@ } }, "eslint-import-resolver-typescript": { - "version": "2.5.0", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", "dev": true, "requires": { - "debug": "^4.3.1", - "glob": "^7.1.7", - "is-glob": "^4.0.1", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.9.0" + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" } }, "eslint-module-utils": { @@ -10551,7 +10592,9 @@ } }, "eslint-plugin-import": { - "version": "2.25.4", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { "array-includes": "^3.1.4", @@ -10559,14 +10602,14 @@ "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "is-core-module": "^2.8.0", + "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" }, "dependencies": { "debug": { @@ -11041,7 +11084,9 @@ } }, "graceful-fs": { - "version": "4.2.9", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "handle-thing": { @@ -11056,13 +11101,24 @@ } }, "has-bigints": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, "has-flag": { "version": "3.0.0", "dev": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { "version": "1.0.3", "dev": true @@ -11089,7 +11145,9 @@ } }, "html-entities": { - "version": "2.3.2", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, "html-loader": { @@ -11179,7 +11237,9 @@ } }, "http-proxy-middleware": { - "version": "2.0.4", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.5.tgz", + "integrity": "sha512-ORErEaxkjyrhifofwCuQttHPUSestLtiPDwV0qQOFB0ww6695H953wIGRnkakw1K+GAP+t8/RPbfDB75RFL4Fg==", "dev": true, "requires": { "@types/http-proxy": "^1.17.8", @@ -11260,7 +11320,9 @@ "version": "2.0.4" }, "inject-stylesheet": { - "version": "4.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/inject-stylesheet/-/inject-stylesheet-5.0.0.tgz", + "integrity": "sha512-GzncrJP8E/pavMQzoO93CXoYCfTttwVm2cX2TyXJdgtVE0cCvWSFCn1/uMsM6ZkEg7LUsOcKuamcLiGWlv2p9A==" }, "internal-slot": { "version": "1.0.3", @@ -11275,10 +11337,6 @@ "version": "2.2.0", "dev": true }, - "ip": { - "version": "1.1.5", - "dev": true - }, "ipaddr.js": { "version": "2.0.1", "dev": true @@ -11322,7 +11380,9 @@ "dev": true }, "is-core-module": { - "version": "2.8.1", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", "dev": true, "requires": { "has": "^1.0.3" @@ -11370,7 +11430,9 @@ "dev": true }, "is-number-object": { - "version": "1.0.6", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "requires": { "has-tostringtag": "^1.0.0" @@ -11414,8 +11476,13 @@ } }, "is-shared-array-buffer": { - "version": "1.0.1", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } }, "is-stream": { "version": "2.0.1", @@ -11539,7 +11606,9 @@ } }, "jszip": { - "version": "3.7.1", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.9.1.tgz", + "integrity": "sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw==", "requires": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -11578,7 +11647,9 @@ "dev": true }, "lint-staged": { - "version": "12.3.7", + "version": "12.3.8", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.8.tgz", + "integrity": "sha512-0+UpNaqIwKRSGAFOCcpuYNIv/j5QGVC+xUVvmSdxHO+IfIGoHbFLo3XcPmV/LLnsVj5EAncNHVtlITSoY5qWGQ==", "dev": true, "requires": { "cli-truncate": "^3.1.0", @@ -11602,7 +11673,9 @@ "dev": true }, "supports-color": { - "version": "9.2.1", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", + "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", "dev": true } } @@ -11683,7 +11756,9 @@ } }, "loader-runner": { - "version": "4.2.0", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, "locate-path": { @@ -11832,11 +11907,13 @@ "dev": true }, "micromatch": { - "version": "4.0.4", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, "mime": { @@ -11881,10 +11958,12 @@ "dev": true }, "mkdirp": { - "version": "0.5.5", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "ms": { @@ -11901,19 +11980,19 @@ } }, "multicast-dns": { - "version": "6.2.3", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", "dev": true, "requires": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" } }, - "multicast-dns-service-types": { - "version": "1.1.0", - "dev": true - }, "nanoid": { - "version": "3.3.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, "natural-compare": { @@ -11961,7 +12040,9 @@ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" }, "node-releases": { - "version": "2.0.2", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", "dev": true }, "normalize-path": { @@ -11991,21 +12072,15 @@ "dev": true }, "object-hash": { - "version": "2.2.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "dev": true }, "object-inspect": { "version": "1.12.0", "dev": true }, - "object-is": { - "version": "1.1.5", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, "object-keys": { "version": "1.1.1", "dev": true @@ -12304,11 +12379,21 @@ } }, "postcss-load-config": { - "version": "3.1.3", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", "dev": true, "requires": { - "lilconfig": "^2.0.4", + "lilconfig": "^2.0.5", "yaml": "^1.10.2" + }, + "dependencies": { + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + } } }, "postcss-loader": { @@ -12356,7 +12441,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.9", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -12391,7 +12478,9 @@ "version": "2.0.1" }, "promise-polyfill": { - "version": "8.2.0" + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" }, "proxy-addr": { "version": "2.0.7", @@ -12491,14 +12580,6 @@ "regenerator-runtime": { "version": "0.11.1" }, - "regexp.prototype.flags": { - "version": "1.4.1", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, "regexpp": { "version": "3.2.0", "dev": true @@ -12564,9 +12645,11 @@ } }, "restricted-input": { - "version": "3.0.3", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/restricted-input/-/restricted-input-3.0.5.tgz", + "integrity": "sha512-lUuXZ3wUnHURRarj5/0C8vomWIfWJO+p7T6RYwB46v7Oyuyr3yyupU+i7SjqUv4S6RAeAAZt1C/QCLJ9xhQBow==", "requires": { - "@braintree/browser-detection": "^1.10.0" + "@braintree/browser-detection": "^1.12.1" } }, "retry": { @@ -12609,7 +12692,9 @@ "dev": true }, "sass": { - "version": "1.49.9", + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.1.tgz", + "integrity": "sha512-noTnY41KnlW2A9P8sdwESpDmo+KBNkukI1i8+hOK3footBUcohNHtdOJbckp46XO95nuvcHDDZ+4tmOnpK3hjw==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -12636,7 +12721,9 @@ }, "dependencies": { "ajv": { - "version": "8.10.0", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -12663,14 +12750,18 @@ "dev": true }, "selfsigned": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dev": true, "requires": { - "node-forge": "^1.2.0" + "node-forge": "^1" } }, "semver": { - "version": "7.3.5", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -12992,54 +13083,34 @@ "version": "10.16.9" }, "tailwindcss": { - "version": "3.0.23", + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz", + "integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==", "dev": true, "requires": { "arg": "^5.0.1", - "chalk": "^4.1.2", "chokidar": "^3.5.3", "color-name": "^1.1.4", - "cosmiconfig": "^7.0.1", "detective": "^5.2.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.2.11", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", + "lilconfig": "^2.0.5", "normalize-path": "^3.0.0", - "object-hash": "^2.2.0", - "postcss": "^8.4.6", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.12", "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.0", + "postcss-load-config": "^3.1.4", "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.9", + "postcss-selector-parser": "^6.0.10", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", "resolve": "^1.22.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, "color-name": { "version": "1.1.4", "dev": true @@ -13051,16 +13122,11 @@ "is-glob": "^4.0.3" } }, - "has-flag": { - "version": "4.0.0", + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -13211,12 +13277,14 @@ } }, "tsconfig-paths": { - "version": "3.14.0", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, "dependencies": { @@ -13357,7 +13425,9 @@ "version": "3.0.1" }, "webpack": { - "version": "5.70.0", + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -13433,7 +13503,9 @@ } }, "webpack-dev-server": { - "version": "4.7.4", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -13441,69 +13513,30 @@ "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", + "@types/ws": "^8.5.1", "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", + "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", + "express": "^4.17.3", "graceful-fs": "^4.2.6", "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", + "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", "open": "^8.0.9", "p-retry": "^4.5.0", "portfinder": "^1.0.28", + "rimraf": "^3.0.2", "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", + "selfsigned": "^2.0.1", "serve-index": "^1.9.1", "sockjs": "^0.3.21", "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", "webpack-dev-middleware": "^5.3.1", "ws": "^8.4.2" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "dev": true - }, - "del": { - "version": "6.0.0", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, - "is-path-inside": { - "version": "3.0.3", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "strip-ansi": { - "version": "7.0.1", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } } }, "webpack-merge": { @@ -13651,7 +13684,9 @@ "dev": true }, "yargs": { - "version": "17.4.0", + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", "dev": true, "requires": { "cliui": "^7.0.2", diff --git a/package.json b/package.json index cde1739e..29da7318 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bitwarden/web-vault", - "version": "2.27.0", + "version": "2.28.1", "license": "GPL-3.0", "repository": "https://github.com/bitwarden/web", "scripts": { @@ -90,7 +90,7 @@ "@bitwarden/jslib-angular": "file:jslib/angular", "@bitwarden/jslib-common": "file:jslib/common", "bootstrap": "4.6.0", - "braintree-web-drop-in": "1.30.1", + "braintree-web-drop-in": "1.33.1", "browser-hrtime": "^1.1.8", "core-js": "^3.11.0", "date-input-polyfill": "^2.14.0", diff --git a/src/app/accounts/accept-emergency.component.html b/src/app/accounts/accept-emergency.component.html index 919b3f4e..4690a4e6 100644 --- a/src/app/accounts/accept-emergency.component.html +++ b/src/app/accounts/accept-emergency.component.html @@ -23,7 +23,11 @@

{{ "acceptEmergencyAccess" | i18n }}


- + {{ "logIn" | i18n }} {{ "joinOrganizationDesc" | i18n }}


diff --git a/src/app/accounts/lock.component.ts b/src/app/accounts/lock.component.ts index e61a98a6..4b8a0d4b 100644 --- a/src/app/accounts/lock.component.ts +++ b/src/app/accounts/lock.component.ts @@ -58,7 +58,7 @@ export class LockComponent extends BaseLockComponent { if (previousUrl !== "/" && previousUrl.indexOf("lock") === -1) { this.successRoute = previousUrl; } - this.router.navigate([this.successRoute]); + this.router.navigateByUrl(this.successRoute); }; } } diff --git a/src/app/accounts/login.component.ts b/src/app/accounts/login.component.ts index d5b38bde..21a1f6d0 100644 --- a/src/app/accounts/login.component.ts +++ b/src/app/accounts/login.component.ts @@ -20,6 +20,7 @@ import { ListResponse } from "jslib-common/models/response/listResponse"; import { PolicyResponse } from "jslib-common/models/response/policyResponse"; import { StateService } from "../../abstractions/state.service"; +import { RouterService } from "../services/router.service"; @Component({ selector: "app-login", @@ -44,7 +45,8 @@ export class LoginComponent extends BaseLoginComponent { logService: LogService, ngZone: NgZone, protected stateService: StateService, - private messagingService: MessagingService + private messagingService: MessagingService, + private routerService: RouterService ) { super( authService, @@ -70,21 +72,20 @@ export class LoginComponent extends BaseLoginComponent { this.email = qParams.email; } if (qParams.premium != null) { - this.stateService.setLoginRedirect({ route: "/settings/premium" }); + this.routerService.setPreviousUrl("/settings/premium"); } else if (qParams.org != null) { - this.stateService.setLoginRedirect({ - route: "/settings/create-organization", - qParams: { plan: qParams.org }, + const route = this.router.createUrlTree(["settings/create-organization"], { + queryParams: { plan: qParams.org }, }); + this.routerService.setPreviousUrl(route.toString()); } // Are they coming from an email for sponsoring a families organization if (qParams.sponsorshipToken != null) { - // After logging in redirect them to setup the families sponsorship - this.stateService.setLoginRedirect({ - route: "/setup/families-for-enterprise", - qParams: { token: qParams.sponsorshipToken }, + const route = this.router.createUrlTree(["setup/families-for-enterprise"], { + queryParams: { token: qParams.sponsorshipToken }, }); + this.routerService.setPreviousUrl(route.toString()); } await super.ngOnInit(); this.rememberEmail = await this.stateService.getRememberEmail(); @@ -145,10 +146,9 @@ export class LoginComponent extends BaseLoginComponent { } } - const loginRedirect = await this.stateService.getLoginRedirect(); - if (loginRedirect != null) { - this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams }); - await this.stateService.setLoginRedirect(null); + const previousUrl = this.routerService.getPreviousUrl(); + if (previousUrl) { + this.router.navigateByUrl(previousUrl); } else { this.router.navigate([this.successRoute]); } diff --git a/src/app/accounts/recover-delete.component.html b/src/app/accounts/recover-delete.component.html index a0678e84..5b3ba905 100644 --- a/src/app/accounts/recover-delete.component.html +++ b/src/app/accounts/recover-delete.component.html @@ -33,7 +33,7 @@ aria-hidden="true" > - + {{ "cancel" | i18n }}
diff --git a/src/app/accounts/recover-two-factor.component.html b/src/app/accounts/recover-two-factor.component.html index 47744b89..744ce3da 100644 --- a/src/app/accounts/recover-two-factor.component.html +++ b/src/app/accounts/recover-two-factor.component.html @@ -65,7 +65,7 @@ aria-hidden="true" > - + {{ "cancel" | i18n }}
diff --git a/src/app/accounts/register.component.html b/src/app/accounts/register.component.html index 75d3883d..d86e0a43 100644 --- a/src/app/accounts/register.component.html +++ b/src/app/accounts/register.component.html @@ -258,7 +258,7 @@ aria-hidden="true" > - + {{ "cancel" | i18n }} diff --git a/src/app/accounts/register.component.ts b/src/app/accounts/register.component.ts index b0fe063f..fd2f3b56 100644 --- a/src/app/accounts/register.component.ts +++ b/src/app/accounts/register.component.ts @@ -18,6 +18,8 @@ import { MasterPasswordPolicyOptions } from "jslib-common/models/domain/masterPa import { Policy } from "jslib-common/models/domain/policy"; import { ReferenceEventRequest } from "jslib-common/models/request/referenceEventRequest"; +import { RouterService } from "../services/router.service"; + @Component({ selector: "app-register", templateUrl: "register.component.html", @@ -41,7 +43,8 @@ export class RegisterComponent extends BaseRegisterComponent { passwordGenerationService: PasswordGenerationService, private policyService: PolicyService, environmentService: EnvironmentService, - logService: LogService + logService: LogService, + private routerService: RouterService ) { super( authService, @@ -64,14 +67,14 @@ export class RegisterComponent extends BaseRegisterComponent { this.email = qParams.email; } if (qParams.premium != null) { - this.stateService.setLoginRedirect({ route: "/settings/premium" }); + this.routerService.setPreviousUrl("/settings/premium"); } else if (qParams.org != null) { this.showCreateOrgMessage = true; this.referenceData.flow = qParams.org; - this.stateService.setLoginRedirect({ - route: "/settings/create-organization", - qParams: { plan: qParams.org }, + const route = this.router.createUrlTree(["settings/create-organization"], { + queryParams: { plan: qParams.org }, }); + this.routerService.setPreviousUrl(route.toString()); } if (qParams.layout != null) { this.layout = this.referenceData.layout = qParams.layout; @@ -88,10 +91,10 @@ export class RegisterComponent extends BaseRegisterComponent { // Are they coming from an email for sponsoring a families organization if (qParams.sponsorshipToken != null) { // After logging in redirect them to setup the families sponsorship - this.stateService.setLoginRedirect({ - route: "/setup/families-for-enterprise", - qParams: { token: qParams.sponsorshipToken }, + const route = this.router.createUrlTree(["setup/families-for-enterprise"], { + queryParams: { plan: qParams.sponsorshipToken }, }); + this.routerService.setPreviousUrl(route.toString()); } if (this.referenceData.id === "") { this.referenceData.id = null; diff --git a/src/app/accounts/sso.component.html b/src/app/accounts/sso.component.html index 84ae4749..f5588953 100644 --- a/src/app/accounts/sso.component.html +++ b/src/app/accounts/sso.component.html @@ -41,7 +41,7 @@ aria-hidden="true" > - + {{ "cancel" | i18n }} diff --git a/src/app/accounts/two-factor.component.html b/src/app/accounts/two-factor.component.html index 64961e98..835fd12e 100644 --- a/src/app/accounts/two-factor.component.html +++ b/src/app/accounts/two-factor.component.html @@ -138,7 +138,7 @@ aria-hidden="true" > - + {{ "cancel" | i18n }} diff --git a/src/app/accounts/two-factor.component.ts b/src/app/accounts/two-factor.component.ts index 34cb40a9..72aa8cf2 100644 --- a/src/app/accounts/two-factor.component.ts +++ b/src/app/accounts/two-factor.component.ts @@ -4,6 +4,7 @@ import { ActivatedRoute, Router } from "@angular/router"; import { TwoFactorComponent as BaseTwoFactorComponent } from "jslib-angular/components/two-factor.component"; import { ModalService } from "jslib-angular/services/modal.service"; import { ApiService } from "jslib-common/abstractions/api.service"; +import { AppIdService } from "jslib-common/abstractions/appId.service"; import { AuthService } from "jslib-common/abstractions/auth.service"; import { EnvironmentService } from "jslib-common/abstractions/environment.service"; import { I18nService } from "jslib-common/abstractions/i18n.service"; @@ -13,6 +14,8 @@ import { StateService } from "jslib-common/abstractions/state.service"; import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service"; import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType"; +import { RouterService } from "../services/router.service"; + import { TwoFactorOptionsComponent } from "./two-factor-options.component"; @Component({ @@ -34,7 +37,9 @@ export class TwoFactorComponent extends BaseTwoFactorComponent { private modalService: ModalService, route: ActivatedRoute, logService: LogService, - twoFactorService: TwoFactorService + twoFactorService: TwoFactorService, + appIdService: AppIdService, + private routerService: RouterService ) { super( authService, @@ -47,7 +52,8 @@ export class TwoFactorComponent extends BaseTwoFactorComponent { stateService, route, logService, - twoFactorService + twoFactorService, + appIdService ); this.onSuccessfulLoginNavigate = this.goAfterLogIn; } @@ -70,10 +76,9 @@ export class TwoFactorComponent extends BaseTwoFactorComponent { } async goAfterLogIn() { - const loginRedirect = await this.stateService.getLoginRedirect(); - if (loginRedirect != null) { - this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams }); - await this.stateService.setLoginRedirect(null); + const previousUrl = this.routerService.getPreviousUrl(); + if (previousUrl) { + this.router.navigateByUrl(previousUrl); } else { this.router.navigate([this.successRoute], { queryParams: { diff --git a/src/app/accounts/verify-recover-delete.component.html b/src/app/accounts/verify-recover-delete.component.html index 79fc2fcd..975858ac 100644 --- a/src/app/accounts/verify-recover-delete.component.html +++ b/src/app/accounts/verify-recover-delete.component.html @@ -23,7 +23,7 @@ aria-hidden="true" > - + {{ "cancel" | i18n }} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index cd94408f..9e26f680 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -91,11 +91,17 @@ export class AppComponent implements OnDestroy, OnInit { this.ngZone.run(async () => { switch (message.command) { case "loggedIn": + this.notificationsService.updateConnection(false); + break; case "loggedOut": + this.routerService.setPreviousUrl(null); + this.notificationsService.updateConnection(false); + break; case "unlocked": this.notificationsService.updateConnection(false); break; case "authBlocked": + this.routerService.setPreviousUrl(message.url); this.router.navigate(["/"]); break; case "logout": @@ -109,7 +115,7 @@ export class AppComponent implements OnDestroy, OnInit { this.router.navigate(["lock"]); break; case "lockedUrl": - window.setTimeout(() => this.routerService.setPreviousUrl(message.url), 500); + this.routerService.setPreviousUrl(message.url); break; case "syncStarted": break; diff --git a/src/app/common/base.accept.component.ts b/src/app/common/base.accept.component.ts index fa3398f8..36375fbd 100644 --- a/src/app/common/base.accept.component.ts +++ b/src/app/common/base.accept.component.ts @@ -30,7 +30,6 @@ export abstract class BaseAcceptComponent implements OnInit { ngOnInit() { this.route.queryParams.pipe(first()).subscribe(async (qParams) => { - await this.stateService.setLoginRedirect(null); let error = this.requiredParameters.some((e) => qParams?.[e] == null || qParams[e] === ""); let errorMessage: string = null; if (!error) { @@ -44,11 +43,6 @@ export abstract class BaseAcceptComponent implements OnInit { errorMessage = e.message; } } else { - await this.stateService.setLoginRedirect({ - route: this.getRedirectRoute(), - qParams: qParams, - }); - this.email = qParams.email; await this.unauthedHandler(qParams); } @@ -66,10 +60,4 @@ export abstract class BaseAcceptComponent implements OnInit { this.loading = false; }); } - - getRedirectRoute() { - const urlTree = this.router.parseUrl(this.router.url); - urlTree.queryParams = {}; - return urlTree.toString(); - } } diff --git a/src/app/guards/home.guard.ts b/src/app/guards/home.guard.ts new file mode 100644 index 00000000..5dfed1db --- /dev/null +++ b/src/app/guards/home.guard.ts @@ -0,0 +1,22 @@ +import { Injectable } from "@angular/core"; +import { ActivatedRouteSnapshot, CanActivate, Router } from "@angular/router"; + +import { AuthService } from "jslib-common/abstractions/auth.service"; +import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus"; + +@Injectable() +export class HomeGuard implements CanActivate { + constructor(private router: Router, private authService: AuthService) {} + + async canActivate(route: ActivatedRouteSnapshot) { + const authStatus = await this.authService.getAuthStatus(); + + if (authStatus === AuthenticationStatus.LoggedOut) { + return this.router.createUrlTree(["/login"], { queryParams: route.queryParams }); + } + if (authStatus === AuthenticationStatus.Locked) { + return this.router.createUrlTree(["/lock"], { queryParams: route.queryParams }); + } + return this.router.createUrlTree(["/vault"], { queryParams: route.queryParams }); + } +} diff --git a/src/app/modules/vault/modules/individual-vault/individual-vault.component.ts b/src/app/modules/vault/modules/individual-vault/individual-vault.component.ts index 9989366e..b2176c7e 100644 --- a/src/app/modules/vault/modules/individual-vault/individual-vault.component.ts +++ b/src/app/modules/vault/modules/individual-vault/individual-vault.component.ts @@ -13,6 +13,7 @@ import { first } from "rxjs/operators"; import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; import { ModalService } from "jslib-angular/services/modal.service"; import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; import { CryptoService } from "jslib-common/abstractions/crypto.service"; import { I18nService } from "jslib-common/abstractions/i18n.service"; import { MessagingService } from "jslib-common/abstractions/messaging.service"; @@ -84,7 +85,8 @@ export class IndividualVaultComponent implements OnInit, OnDestroy { private ngZone: NgZone, private stateService: StateService, private organizationService: OrganizationService, - private vaultService: VaultService + private vaultService: VaultService, + private cipherService: CipherService ) {} async ngOnInit() { @@ -117,6 +119,24 @@ export class IndividualVaultComponent implements OnInit, OnDestroy { } await this.ciphersComponent.reload(); + this.route.queryParams.subscribe(async (params) => { + if (params.cipherId) { + if ((await this.cipherService.get(params.cipherId)) != null) { + this.editCipherId(params.cipherId); + } else { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("unknownCipher") + ); + this.router.navigate([], { + queryParams: { cipherId: null }, + queryParamsHandling: "merge", + }); + } + } + }); + this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => { this.ngZone.run(async () => { switch (message.command) { @@ -325,11 +345,15 @@ export class IndividualVaultComponent implements OnInit, OnDestroy { } async editCipher(cipher: CipherView) { + return this.editCipherId(cipher?.id); + } + + async editCipherId(id: string) { const [modal, childComponent] = await this.modalService.openViewRef( AddEditComponent, this.cipherAddEditModalRef, (comp) => { - comp.cipherId = cipher == null ? null : cipher.id; + comp.cipherId = id; comp.onSavedCipher.subscribe(async () => { modal.close(); await this.ciphersComponent.refresh(); @@ -345,6 +369,11 @@ export class IndividualVaultComponent implements OnInit, OnDestroy { } ); + modal.onClosedPromise().then(() => { + this.route.params; + this.router.navigate([], { queryParams: { cipherId: null }, queryParamsHandling: "merge" }); + }); + return childComponent; } @@ -371,6 +400,7 @@ export class IndividualVaultComponent implements OnInit, OnDestroy { this.router.navigate([], { relativeTo: this.route, queryParams: queryParams, + queryParamsHandling: "merge", replaceUrl: true, }); } diff --git a/src/app/modules/vault/modules/organization-vault/organization-vault.component.ts b/src/app/modules/vault/modules/organization-vault/organization-vault.component.ts index 9b9a69f2..0f03b8ef 100644 --- a/src/app/modules/vault/modules/organization-vault/organization-vault.component.ts +++ b/src/app/modules/vault/modules/organization-vault/organization-vault.component.ts @@ -13,6 +13,7 @@ import { first } from "rxjs/operators"; import { VaultFilter } from "jslib-angular/modules/vault-filter/models/vault-filter.model"; import { ModalService } from "jslib-angular/services/modal.service"; import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service"; +import { CipherService } from "jslib-common/abstractions/cipher.service"; import { I18nService } from "jslib-common/abstractions/i18n.service"; import { MessagingService } from "jslib-common/abstractions/messaging.service"; import { OrganizationService } from "jslib-common/abstractions/organization.service"; @@ -67,7 +68,8 @@ export class OrganizationVaultComponent implements OnInit, OnDestroy { private broadcasterService: BroadcasterService, private ngZone: NgZone, private platformUtilsService: PlatformUtilsService, - private vaultService: VaultService + private vaultService: VaultService, + private cipherService: CipherService ) {} ngOnInit() { @@ -116,6 +118,24 @@ export class OrganizationVaultComponent implements OnInit, OnDestroy { this.viewEvents(cipher[0]); } } + + this.route.queryParams.subscribe(async (params) => { + if (params.cipherId) { + if ((await this.cipherService.get(params.cipherId)) != null) { + this.editCipherId(params.cipherId); + } else { + this.platformUtilsService.showToast( + "error", + this.i18nService.t("errorOccurred"), + this.i18nService.t("unknownCipher") + ); + this.router.navigate([], { + queryParams: { cipherId: null }, + queryParamsHandling: "merge", + }); + } + } + }); }); }); } @@ -235,12 +255,16 @@ export class OrganizationVaultComponent implements OnInit, OnDestroy { } async editCipher(cipher: CipherView) { + return this.editCipherId(cipher?.id); + } + + async editCipherId(cipherId: string) { const [modal, childComponent] = await this.modalService.openViewRef( AddEditComponent, this.cipherAddEditModalRef, (comp) => { comp.organization = this.organization; - comp.cipherId = cipher == null ? null : cipher.id; + comp.cipherId = cipherId; comp.onSavedCipher.subscribe(async () => { modal.close(); await this.ciphersComponent.refresh(); @@ -256,6 +280,11 @@ export class OrganizationVaultComponent implements OnInit, OnDestroy { } ); + modal.onClosedPromise().then(() => { + this.route.params; + this.router.navigate([], { queryParams: { cipherId: null }, queryParamsHandling: "merge" }); + }); + return childComponent; } @@ -301,6 +330,7 @@ export class OrganizationVaultComponent implements OnInit, OnDestroy { this.router.navigate([], { relativeTo: this.route, queryParams: queryParams, + queryParamsHandling: "merge", replaceUrl: true, }); } diff --git a/src/app/organizations/guards/permissions.guard.ts b/src/app/organizations/guards/permissions.guard.ts index a2f4c73c..44931e10 100644 --- a/src/app/organizations/guards/permissions.guard.ts +++ b/src/app/organizations/guards/permissions.guard.ts @@ -5,6 +5,7 @@ import { BaseGuard } from "jslib-angular/guards/base.guard"; import { I18nService } from "jslib-common/abstractions/i18n.service"; import { OrganizationService } from "jslib-common/abstractions/organization.service"; import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service"; +import { SyncService } from "jslib-common/abstractions/sync.service"; import { Permissions } from "jslib-common/enums/permissions"; @Injectable() @@ -13,15 +14,21 @@ export class PermissionsGuard extends BaseGuard implements CanActivate { router: Router, private organizationService: OrganizationService, private platformUtilsService: PlatformUtilsService, - private i18nService: I18nService + private i18nService: I18nService, + private syncService: SyncService ) { super(router); } async canActivate(route: ActivatedRouteSnapshot) { + // TODO: We need to fix this issue once and for all. + if ((await this.syncService.getLastSync()) == null) { + await this.syncService.fullSync(false); + } + const org = await this.organizationService.get(route.params.organizationId); if (org == null) { - return this.redirect(); + return this.router.createUrlTree(["/"]); } if (!org.isOwner && !org.enabled) { @@ -30,13 +37,13 @@ export class PermissionsGuard extends BaseGuard implements CanActivate { null, this.i18nService.t("organizationIsDisabled") ); - return this.redirect(); + return this.router.createUrlTree(["/"]); } const permissions = route.data == null ? [] : (route.data.permissions as Permissions[]); if (permissions != null && !org.hasAnyPermission(permissions)) { this.platformUtilsService.showToast("error", null, this.i18nService.t("accessDenied")); - return this.redirect(); + return this.router.createUrlTree(["/"]); } return true; diff --git a/src/app/organizations/settings/delete-organization.component.html b/src/app/organizations/settings/delete-organization.component.html index 2c3cae47..80d8ae0f 100644 --- a/src/app/organizations/settings/delete-organization.component.html +++ b/src/app/organizations/settings/delete-organization.component.html @@ -44,8 +44,8 @@

- - + +
- - + +
- diff --git a/src/app/tools/generator.component.html b/src/app/tools/generator.component.html index ebd4c56d..f090a99d 100644 --- a/src/app/tools/generator.component.html +++ b/src/app/tools/generator.component.html @@ -20,14 +20,14 @@ > -
- +
+
-
- +
+
@@ -172,6 +173,7 @@ (change)="savePasswordOptions()" [(ngModel)]="passwordOptions.lowercase" [disabled]="enforcedPasswordPolicyOptions?.useLowercase" + attr.aria-label="{{ 'lowercase' | i18n }}" />
@@ -183,6 +185,7 @@ (change)="savePasswordOptions()" [(ngModel)]="passwordOptions.number" [disabled]="enforcedPasswordPolicyOptions?.useNumbers" + attr.aria-label="{{ 'numbers' | i18n }}" />
@@ -194,6 +197,7 @@ (change)="savePasswordOptions()" [(ngModel)]="passwordOptions.special" [disabled]="enforcedPasswordPolicyOptions?.useSpecial" + attr.aria-label="{{ 'specialCharacters' | i18n }}" />
@@ -231,9 +235,9 @@
-
+
- +
-
-
- - + +
+ +
+ + +
-
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
@@ -329,9 +392,15 @@
-
-