diff --git a/.bazelignore b/.bazelignore index b7f92cee892f..6ac41bd33565 100644 --- a/.bazelignore +++ b/.bazelignore @@ -1,5 +1,8 @@ node_modules +integration/harness-e2e-cli/.angular +integration/harness-e2e-cli/node_modules + integration/ng-update-v13/.angular integration/ng-update-v13/node_modules diff --git a/.bazelrc b/.bazelrc index b9b88fa5ab9b..46a978fbc6ad 100644 --- a/.bazelrc +++ b/.bazelrc @@ -86,9 +86,18 @@ build:remote --auth_enabled=true # is provided by the shared dev-infra package and targets k8 remote containers. build:remote --crosstool_top=@npm//@angular/dev-infra-private/bazel/remote-execution/cpp:cc_toolchain_suite build:remote --extra_toolchains=@npm//@angular/dev-infra-private/bazel/remote-execution/cpp:cc_toolchain -build:remote --extra_execution_platforms=@npm//@angular/dev-infra-private/bazel/remote-execution:platform -build:remote --host_platform=@npm//@angular/dev-infra-private/bazel/remote-execution:platform -build:remote --platforms=@npm//@angular/dev-infra-private/bazel/remote-execution:platform +build:remote --extra_execution_platforms=@npm//@angular/dev-infra-private/bazel/remote-execution:platform_with_network +build:remote --host_platform=@npm//@angular/dev-infra-private/bazel/remote-execution:platform_with_network +build:remote --platforms=@npm//@angular/dev-infra-private/bazel/remote-execution:platform_with_network + +################################ +# Sandbox settings # +################################ + +# By default, network access should be disabled unless explicitly granted for certain targets +# using the `requires-network` tag. https://docs.bazel.build/versions/main/be/common-definitions.html +build --sandbox_default_allow_network=false +test --sandbox_default_allow_network=false ################################ # --config=build-results # diff --git a/.bazelversion b/.bazelversion index fcdb2e109f68..0062ac971805 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -4.0.0 +5.0.0 diff --git a/.circleci/config.yml b/.circleci/config.yml index a399d0415696..24dd23d38532 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -67,8 +67,9 @@ var_11: &yarn_install_loose_lockfile var_12: &setup_bazel_ci_config run: name: "Setting up Bazel configuration for CI" - command: | - echo "import %workspace%/.circleci/bazel.rc" >> ./.bazelrc + # Note: We add the remote config flag to the user bazelrc file that is not tracked + # by Git. This is necessary to avoid stamping builds with `.with-local-changes`. + command: echo "import %workspace%/.circleci/bazel.rc" >> ./.bazelrc.user # Attaches the release output which has been stored in the workspace to the current job. # https://circleci.com/docs/2.0/workflows/#using-workspaces-to-share-data-among-jobs @@ -103,7 +104,7 @@ var_15: &ignore_presubmit_branch_filter var_16: &setup_bazel_remote_execution run: name: "Setup bazel RBE remote execution" - command: ./scripts/circleci/bazel/setup-remote-execution.sh + command: ./scripts/bazel/setup-remote-execution.sh # Sets up the bazel binary globally. We don't want to access bazel through Yarn and NodeJS # because it could mean that the Bazel child process only has access to limited memory. @@ -472,7 +473,6 @@ jobs: - *yarn_install - *setup_bazel_binary - - run: yarn integration-tests:partial-ivy - run: yarn integration-tests - run: name: Running size integration tests (failures are reported in Slack only). @@ -482,9 +482,47 @@ jobs: - *slack_notify_on_failure # ---------------------------------------------------------------------------- - # Job that runs all integration tests against Angular snapshot builds. + # Job that runs the AOT linker tests. # ---------------------------------------------------------------------------- - integration_tests_snapshot: + linker_aot_test: + <<: *job_defaults + resource_class: xlarge + environment: + GCP_DECRYPT_TOKEN: *gcp_decrypt_token + steps: + - checkout_and_rebase + - *restore_cache + - *setup_bazel_ci_config + - *setup_bazel_remote_execution + - *yarn_install + - *setup_bazel_binary + + - run: yarn test-linker-aot + - *slack_notify_on_failure + + # ---------------------------------------------------------------------------- + # Job that runs the JIT linker tests. + # ---------------------------------------------------------------------------- + linker_jit_test: + <<: *job_defaults + resource_class: xlarge + environment: + GCP_DECRYPT_TOKEN: *gcp_decrypt_token + steps: + - checkout_and_rebase + - *restore_cache + - *setup_bazel_ci_config + - *setup_bazel_remote_execution + - *yarn_install + - *setup_bazel_binary + + - run: yarn test-linker-jit + - *slack_notify_on_failure + + # ---------------------------------------------------------------------------- + # Job that runs both AOT and JIT linker tests against Angular snapshot builds. + # ---------------------------------------------------------------------------- + snapshot_linker_tests: <<: *job_defaults resource_class: xlarge environment: @@ -498,7 +536,8 @@ jobs: - *yarn_install_loose_lockfile - *setup_bazel_binary - - run: yarn integration-tests:partial-ivy + - run: yarn test-linker-aot + - run: yarn test-linker-jit - *slack_notify_on_failure # ---------------------------------------------------------------------------- @@ -544,6 +583,10 @@ workflows: filters: *ignore_presubmit_branch_filter - integration_tests: filters: *ignore_presubmit_branch_filter + - linker_aot_test: + filters: *ignore_presubmit_branch_filter + - linker_jit_test: + filters: *ignore_presubmit_branch_filter - tests_local_browsers: filters: *ignore_presubmit_branch_filter - tests_browserstack: @@ -578,7 +621,7 @@ workflows: filters: *only_main_branch_filter - mdc_snapshot_test_cronjob: filters: *only_main_branch_filter - - integration_tests_snapshot: + - snapshot_linker_tests: filters: *only_main_branch_filter triggers: diff --git a/.clang-format b/.clang-format deleted file mode 100644 index b3462b5403c2..000000000000 --- a/.clang-format +++ /dev/null @@ -1,14 +0,0 @@ -Language: JavaScript -BasedOnStyle: Google -ColumnLimit: 100 - -TabWidth: 2 -ContinuationIndentWidth: 4 -MaxEmptyLinesToKeep: 2 - -AllowShortBlocksOnASingleLine: false -AllowShortIfStatementsOnASingleLine: false -AllowShortLoopsOnASingleLine: false -AllowShortFunctionsOnASingleLine: Empty -JavaScriptWrapImports: true - diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b3d36e29d263..61f90aa95b01 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,86 +1,86 @@ # Angular Material components -/src/material/* @jelbourn +/src/material/* @andrewseguin /src/material/autocomplete/** @crisbeto /src/material/badge/** @jelbourn /src/material/bottom-sheet/** @jelbourn @crisbeto -/src/material/button-toggle/** @jelbourn -/src/material/button/** @jelbourn -/src/material/card/** @jelbourn -/src/material/checkbox/** @jelbourn @devversion -/src/material/chips/** @jelbourn +/src/material/button-toggle/** @andrewseguin +/src/material/button/** @andrewseguin +/src/material/card/** @andrewseguin +/src/material/checkbox/** @andrewseguin @devversion +/src/material/chips/** @andrewseguin /src/material/datepicker/** @mmalerba -/src/material/dialog/** @jelbourn @crisbeto -/src/material/divider/** @jelbourn @crisbeto -/src/material/expansion/** @jelbourn +/src/material/dialog/** @andrewseguin @crisbeto +/src/material/divider/** @andrewseguin @crisbeto +/src/material/expansion/** @andrewseguin /src/material/form-field/** @mmalerba -/src/material/grid-list/** @jelbourn -/src/material/icon/** @jelbourn +/src/material/grid-list/** @andrewseguin +/src/material/icon/** @andrewseguin /src/material/input/** @mmalerba -/src/material/list/** @jelbourn @crisbeto @devversion +/src/material/list/** @andrewseguin @crisbeto @devversion /src/material/menu/** @crisbeto /src/material/paginator/** @andrewseguin -/src/material/prebuilt-themes/** @jelbourn -/src/material/progress-bar/** @jelbourn @crisbeto -/src/material/progress-spinner/** @jelbourn @crisbeto -/src/material/radio/** @jelbourn @devversion -/src/material/schematics/** @devversion @jelbourn +/src/material/prebuilt-themes/** @andrewseguin +/src/material/progress-bar/** @andrewseguin @crisbeto +/src/material/progress-spinner/** @andrewseguin @crisbeto +/src/material/radio/** @andrewseguin @devversion +/src/material/schematics/** @devversion @andrewseguin /src/material/select/** @crisbeto /src/material/sidenav/** @mmalerba /src/material/slide-toggle/** @devversion /src/material/slider/** @mmalerba -/src/material/snack-bar/** @jelbourn @crisbeto +/src/material/snack-bar/** @andrewseguin @crisbeto /src/material/sort/** @andrewseguin /src/material/stepper/** @mmalerba /src/material/table/** @andrewseguin /src/material/tabs/** @andrewseguin -/src/material/testing/** @jelbourn +/src/material/testing/** @andrewseguin /src/material/toolbar/** @devversion /src/material/tooltip/** @andrewseguin /src/material/tree/** @jelbourn @andrewseguin # Angular Material core -/src/material/core/* @jelbourn +/src/material/core/* @andrewseguin /src/material/core/testing/** @crisbeto -/src/material/core/animation/** @jelbourn -/src/material/core/color/** @jelbourn @devversion -/src/material/core/common-behaviors/** @jelbourn @devversion +/src/material/core/animation/** @andrewseguin +/src/material/core/color/** @andrewseguin @devversion +/src/material/core/common-behaviors/** @andrewseguin @devversion /src/material/core/datetime/** @mmalerba /src/material/core/density/** @devversion /src/material/core/error/** @crisbeto @mmalerba /src/material/core/focus-indicators/** @jelbourn @zelliott -/src/material/core/gestures/** @jelbourn +/src/material/core/gestures/** @andrewseguin /src/material/core/label/** @mmalerba -/src/material/core/line/** @jelbourn +/src/material/core/line/** @andrewseguin /src/material/core/option/** @crisbeto /src/material/core/placeholder/** @mmalerba /src/material/core/ripple/** @devversion -/src/material/core/selection/** @jelbourn -/src/material/core/selection/pseudo*/** @crisbeto @jelbourn -/src/material/core/style/** @jelbourn -/src/material/core/theming/** @jelbourn +/src/material/core/selection/** @andrewseguin +/src/material/core/selection/pseudo*/** @crisbeto @andrewseguin +/src/material/core/style/** @andrewseguin +/src/material/core/theming/** @andrewseguin @jelbourn /src/material/core/typography/** @crisbeto -/src/material/core/util/** @jelbourn +/src/material/core/util/** @andrewseguin # Miscellaneous components -/src/google-maps/** @mbehrlich -/src/youtube-player/** @nathantate +/src/google-maps/** @crisbeto @mbehrlich +/src/youtube-player/** @crisbeto @nathantate # CDK -/src/cdk/* @jelbourn +/src/cdk/* @andrewseguin /src/cdk/a11y/** @jelbourn @devversion -/src/cdk/accordion/** @jelbourn -/src/cdk/bidi/** @jelbourn -/src/cdk/clipboard/** @jelbourn @xkxx -/src/cdk/coercion/** @jelbourn -/src/cdk/collections/** @jelbourn @crisbeto @andrewseguin +/src/cdk/accordion/** @andrewseguin +/src/cdk/bidi/** @andrewseguin +/src/cdk/clipboard/** @andrewseguin @xkxx +/src/cdk/coercion/** @andrewseguin +/src/cdk/collections/** @crisbeto @andrewseguin /src/cdk/drag-drop/** @crisbeto -/src/cdk/keycodes/** @jelbourn -/src/cdk/layout/** @jelbourn -/src/cdk/observers/** @jelbourn @crisbeto +/src/cdk/keycodes/** @andrewseguin +/src/cdk/layout/** @andrewseguin +/src/cdk/observers/** @andrewseguin @crisbeto /src/cdk/overlay/** @jelbourn @crisbeto -/src/cdk/platform/** @jelbourn @devversion -/src/cdk/portal/** @jelbourn -/src/cdk/schematics/** @devversion @jelbourn +/src/cdk/platform/** @andrewseguin @devversion +/src/cdk/portal/** @andrewseguin +/src/cdk/schematics/** @devversion @andrewseguin /src/cdk/scrolling/** @andrewseguin @crisbeto /src/cdk/stepper/** @mmalerba /src/cdk/table/** @andrewseguin @@ -94,14 +94,14 @@ /src/material-date-fns-adapter/** @crisbeto # Material experimental package -/src/material-experimental/* @jelbourn +/src/material-experimental/* @andrewseguin /src/material-experimental/column-resize/** @kseamon @andrewseguin /src/material-experimental/mdc-autocomplete/** @crisbeto /src/material-experimental/mdc-button/** @andrewseguin /src/material-experimental/mdc-card/** @mmalerba /src/material-experimental/mdc-checkbox/** @mmalerba /src/material-experimental/mdc-chips/** @mmalerba -/src/material-experimental/mdc-color/** @jelbourn @devversion +/src/material-experimental/mdc-color/** @andrewseguin @devversion /src/material-experimental/mdc-core/** @crisbeto /src/material-experimental/mdc-density/** @devversion /src/material-experimental/mdc-dialog/** @devversion @@ -120,25 +120,24 @@ /src/material-experimental/mdc-slider/** @devversion /src/material-experimental/mdc-tabs/** @crisbeto /src/material-experimental/mdc-tooltip/** @crisbeto -/src/material-experimental/mdc-sidenav/** @crisbeto /src/material-experimental/mdc-table/** @andrewseguin /src/material-experimental/mdc-theming/** @mmalerba /src/material-experimental/mdc-typography/** @mmalerba -/src/material-experimental/menubar/** @jelbourn @andy9775 +/src/material-experimental/menubar/** @jelbourn /src/material-experimental/popover-edit/** @kseamon @andrewseguin -/src/material-experimental/selection/** @yifange @jelbourn +/src/material-experimental/selection/** @yifange @andrewseguin # CDK experimental package -/src/cdk-experimental/* @jelbourn +/src/cdk-experimental/* @andrewseguin /src/cdk-experimental/column-resize/** @kseamon @andrewseguin -/src/cdk-experimental/combobox/** @nielsr98 @jelbourn +/src/cdk-experimental/combobox/** @jelbourn /src/cdk-experimental/dialog/** @jelbourn @crisbeto -/src/cdk-experimental/menu/** @jelbourn @andy9775 +/src/cdk-experimental/menu/** @jelbourn /src/cdk-experimental/popover-edit/** @kseamon @andrewseguin /src/cdk-experimental/scrolling/** @mmalerba /src/cdk-experimental/table-scroll-container/** @kseamon @andrewseguin -/src/cdk-experimental/listbox/** @nielsr98 @jelbourn -/src/cdk-experimental/selection/** @yifange @jelbourn +/src/cdk-experimental/listbox/** @jelbourn +/src/cdk-experimental/selection/** @yifange @andrewseguin # Docs examples & guides /guides/** @jelbourn @@ -147,39 +146,39 @@ # Dev-app /src/dev-app/* @devversion /src/dev-app/autocomplete/** @crisbeto -/src/dev-app/badge/** @jelbourn +/src/dev-app/badge/** @andrewseguin /src/dev-app/baseline/** @mmalerba -/src/dev-app/bottom-sheet/** @jelbourn @crisbeto -/src/dev-app/button-toggle/** @jelbourn +/src/dev-app/bottom-sheet/** @andrewseguin @crisbeto +/src/dev-app/button-toggle/** @andrewseguin /src/dev-app/mdc-autocomplete/** @crisbeto -/src/dev-app/button/** @jelbourn -/src/dev-app/card/** @jelbourn -/src/dev-app/cdk-experimental-combobox/** @jelbourn @nielsr98 -/src/dev-app/cdk-experimental-listbox/** @jelbourn @nielsr98 -/src/dev-app/cdk-experimental-menu/** @jelbourn @andy9775 +/src/dev-app/button/** @andrewseguin +/src/dev-app/card/** @andrewseguin +/src/dev-app/cdk-experimental-combobox/** @jelbourn +/src/dev-app/cdk-experimental-listbox/** @jelbourn +/src/dev-app/cdk-experimental-menu/** @jelbourn /src/dev-app/checkbox/** @jelbourn @devversion -/src/dev-app/chips/** @jelbourn -/src/dev-app/clipboard/** @jelbourn @xkxx +/src/dev-app/chips/** @andrewseguin +/src/dev-app/clipboard/** @andrewseguin @xkxx /src/dev-app/column-resize/** @kseamon @andrewseguin /src/dev-app/connected-overlay/** @jelbourn @crisbeto /src/dev-app/dataset/** @andrewseguin /src/dev-app/datepicker/** @mmalerba /src/dev-app/dev-app/** @mmalerba -/src/dev-app/dialog/** @jelbourn @crisbeto +/src/dev-app/dialog/** @andrewseguin @crisbeto /src/dev-app/drag-drop/** @crisbeto /src/dev-app/drawer/** @mmalerba /src/dev-app/example/** @andrewseguin /src/dev-app/examples-page/** @andrewseguin -/src/dev-app/expansion/** @jelbourn +/src/dev-app/expansion/** @andrewseguin /src/dev-app/focus-origin/** @mmalerba /src/dev-app/focus-trap/** @jelbourn /src/dev-app/google-map/** @mbehrlich -/src/dev-app/grid-list/** @jelbourn -/src/dev-app/icon/** @jelbourn +/src/dev-app/grid-list/** @andrewseguin +/src/dev-app/icon/** @andrewseguin /src/dev-app/input/** @mmalerba -/src/dev-app/layout/** @jelbourn +/src/dev-app/layout/** @andrewseguin /src/dev-app/input-modality/** @jelbourn @zelliott -/src/dev-app/list/** @jelbourn @crisbeto @devversion +/src/dev-app/list/** @andrewseguin @crisbeto @devversion /src/dev-app/live-announcer/** @jelbourn /src/dev-app/mdc-button/** @andrewseguin # Note to implementer: please repossess @@ -196,7 +195,6 @@ /src/dev-app/mdc-radio/** @mmalerba /src/dev-app/mdc-select/** @crisbeto /src/dev-app/mdc-snack-bar/** @andrewseguin -/src/dev-app/mdc-sidenav/** @crisbeto /src/dev-app/mdc-snack-bar/** @andrewseguin /src/dev-app/mdc-slide-toggle/** @crisbeto /src/dev-app/mdc-slider/** @devversion @@ -204,50 +202,50 @@ /src/dev-app/mdc-tabs/** @crisbeto /src/dev-app/mdc-tooltip/** @crisbeto /src/dev-app/menu/** @crisbeto -/src/dev-app/menubar/** @jelbourn @andy9775 +/src/dev-app/menubar/** @jelbourn /src/dev-app/overlay/** @jelbourn @crisbeto /src/dev-app/paginator/** @andrewseguin -/src/dev-app/platform/** @jelbourn @devversion -/src/dev-app/portal/** @jelbourn +/src/dev-app/platform/** @andrewseguin @devversion +/src/dev-app/portal/** @andrewseguin /src/dev-app/popover-edit/** @kseamon @andrewseguin -/src/dev-app/progress-bar/** @jelbourn @crisbeto -/src/dev-app/progress-spinner/** @jelbourn @crisbeto -/src/dev-app/radio/** @jelbourn @devversion +/src/dev-app/progress-bar/** @andrewseguin @crisbeto +/src/dev-app/progress-spinner/** @andrewseguin @crisbeto +/src/dev-app/radio/** @andrewseguin @devversion /src/dev-app/ripple/** @devversion -/src/dev-app/screen-type/** @jelbourn +/src/dev-app/screen-type/** @andrewseguin /src/dev-app/select/** @crisbeto /src/dev-app/sidenav/** @mmalerba /src/dev-app/slide-toggle/** @devversion /src/dev-app/slider/** @mmalerba -/src/dev-app/snack-bar/** @jelbourn @crisbeto +/src/dev-app/snack-bar/** @andrewseguin @crisbeto /src/dev-app/stepper/** @mmalerba /src/dev-app/table/** @andrewseguin /src/dev-app/table-scroll-container/** @kseamon @andrewseguin /src/dev-app/tabs/** @andrewseguin /src/dev-app/toolbar/** @devversion /src/dev-app/tooltip/** @andrewseguin -/src/dev-app/tree/** @jelbourn +/src/dev-app/tree/** @andrewseguin /src/dev-app/typography/** @crisbeto /src/dev-app/virtual-scroll/** @mmalerba /src/dev-app/youtube-player/** @nathantate -/src/dev-app/selection/** @yifange @jelbourn +/src/dev-app/selection/** @yifange @andrewseguin # E2E app -/src/e2e-app/* @jelbourn +/src/e2e-app/* @andrewseguin /src/e2e-app/block-scroll-strategy/** @andrewseguin @crisbeto -/src/e2e-app/button/** @jelbourn -/src/e2e-app/button-toggle/** @jelbourn -/src/e2e-app/card/** @jelbourn -/src/e2e-app/checkbox/** @jelbourn @devversion +/src/e2e-app/button/** @andrewseguin +/src/e2e-app/button-toggle/** @andrewseguin +/src/e2e-app/card/** @andrewseguin +/src/e2e-app/checkbox/** @andrewseguin @devversion /src/e2e-app/component-harness/** @mmalerba -/src/e2e-app/dialog/** @jelbourn @crisbeto -/src/e2e-app/e2e-app/** @jelbourn +/src/e2e-app/dialog/** @andrewseguin @crisbeto +/src/e2e-app/e2e-app/** @andrewseguin /src/e2e-app/example-viewer/** @andrewseguin -/src/e2e-app/expansion/** @jelbourn -/src/e2e-app/grid-list/** @jelbourn -/src/e2e-app/icon/** @jelbourn +/src/e2e-app/expansion/** @andrewseguin +/src/e2e-app/grid-list/** @andrewseguin +/src/e2e-app/icon/** @andrewseguin /src/e2e-app/input/** @mmalerba -/src/e2e-app/list/** @jelbourn +/src/e2e-app/list/** @andrewseguin /src/e2e-app/mdc-button/** @andrewseguin # Note to implementer: please repossess /src/e2e-app/mdc-card/** @mmalerba @@ -264,14 +262,15 @@ /src/e2e-app/mdc-tabs/** @crisbeto /src/e2e-app/mdc-table/** @andrewseguin /src/e2e-app/menu/** @crisbeto -/src/e2e-app/progress-bar/** @jelbourn @crisbeto -/src/e2e-app/progress-spinner/** @jelbourn @crisbeto -/src/e2e-app/radio/** @jelbourn @devversion +/src/e2e-app/progress-bar/** @andrewseguin @crisbeto +/src/e2e-app/progress-spinner/** @andrewseguin @crisbeto +/src/e2e-app/radio/** @andrewseguin @devversion +/src/e2e-app/select/** @crisbeto /src/e2e-app/sidenav/** @mmalerba /src/e2e-app/slide-toggle/** @devversion /src/e2e-app/stepper/** @mmalerba /src/e2e-app/tabs/** @andrewseguin -/src/e2e-app/test-util/** @jelbourn +/src/e2e-app/test-util/** @andrewseguin /src/e2e-app/toolbar/** @devversion /src/e2e-app/virtual-scroll/** @mmalerba @@ -279,7 +278,7 @@ /src/universal-app/** @devversion # Integration tests -/integration/** @jelbourn @devversion +/integration/** @andrewseguin @devversion # Tooling /.circleci/** @angular/dev-infra-components @@ -290,52 +289,52 @@ # Public API golden files /tools/public_api_guard/cdk/a11y.d.ts @jelbourn @devversion -/tools/public_api_guard/cdk/accordion.d.ts @jelbourn -/tools/public_api_guard/cdk/bidi.d.ts @jelbourn -/tools/public_api_guard/cdk/cdk.d.ts @jelbourn -/tools/public_api_guard/cdk/clipboard.d.ts @jelbourn @xkxx -/tools/public_api_guard/cdk/coercion.d.ts @jelbourn -/tools/public_api_guard/cdk/collections.d.ts @jelbourn @crisbeto @andrewseguin +/tools/public_api_guard/cdk/accordion.d.ts @andrewseguin +/tools/public_api_guard/cdk/bidi.d.ts @andrewseguin +/tools/public_api_guard/cdk/cdk.d.ts @andrewseguin +/tools/public_api_guard/cdk/clipboard.d.ts @andrewseguin @xkxx +/tools/public_api_guard/cdk/coercion.d.ts @andrewseguin +/tools/public_api_guard/cdk/collections.d.ts @crisbeto @andrewseguin /tools/public_api_guard/cdk/drag-drop.d.ts @crisbeto -/tools/public_api_guard/cdk/keycodes.d.ts @jelbourn -/tools/public_api_guard/cdk/layout.d.ts @jelbourn -/tools/public_api_guard/cdk/observers.d.ts @jelbourn @crisbeto -/tools/public_api_guard/cdk/overlay.d.ts @jelbourn @crisbeto -/tools/public_api_guard/cdk/platform.d.ts @jelbourn @devversion +/tools/public_api_guard/cdk/keycodes.d.ts @andrewseguin +/tools/public_api_guard/cdk/layout.d.ts @andrewseguin +/tools/public_api_guard/cdk/observers.d.ts @andrewseguin @crisbeto +/tools/public_api_guard/cdk/overlay.d.ts @andrewseguin @crisbeto +/tools/public_api_guard/cdk/platform.d.ts @andrewseguin @devversion /tools/public_api_guard/cdk/scrolling.d.ts @andrewseguin @crisbeto /tools/public_api_guard/cdk/stepper.d.ts @mmalerba /tools/public_api_guard/cdk/table.d.ts @andrewseguin /tools/public_api_guard/cdk/text-field.d.ts @mmalerba /tools/public_api_guard/cdk/tree.d.ts @jelbourn @andrewseguin /tools/public_api_guard/material/autocomplete.d.ts @crisbeto -/tools/public_api_guard/material/badge.d.ts @jelbourn -/tools/public_api_guard/material/bottom-sheet.d.ts @jelbourn @crisbeto -/tools/public_api_guard/material/button-toggle.d.ts @jelbourn -/tools/public_api_guard/material/button.d.ts @jelbourn -/tools/public_api_guard/material/card.d.ts @jelbourn -/tools/public_api_guard/material/checkbox.d.ts @jelbourn @devversion -/tools/public_api_guard/material/chips.d.ts @jelbourn -/tools/public_api_guard/material/chips/testing.d.ts @jelbourn -/tools/public_api_guard/material/core.d.ts @jelbourn +/tools/public_api_guard/material/badge.d.ts @andrewseguin +/tools/public_api_guard/material/bottom-sheet.d.ts @andrewseguin @crisbeto +/tools/public_api_guard/material/button-toggle.d.ts @andrewseguin +/tools/public_api_guard/material/button.d.ts @andrewseguin +/tools/public_api_guard/material/card.d.ts @andrewseguin +/tools/public_api_guard/material/checkbox.d.ts @andrewseguin @devversion +/tools/public_api_guard/material/chips.d.ts @andrewseguin +/tools/public_api_guard/material/chips/testing.d.ts @andrewseguin +/tools/public_api_guard/material/core.d.ts @andrewseguin /tools/public_api_guard/material/datepicker.d.ts @mmalerba -/tools/public_api_guard/material/dialog.d.ts @jelbourn @crisbeto -/tools/public_api_guard/material/divider.d.ts @jelbourn @crisbeto -/tools/public_api_guard/material/expansion.d.ts @jelbourn +/tools/public_api_guard/material/dialog.d.ts @andrewseguin @crisbeto +/tools/public_api_guard/material/divider.d.ts @andrewseguin @crisbeto +/tools/public_api_guard/material/expansion.d.ts @andrewseguin /tools/public_api_guard/material/form-field.d.ts @mmalerba -/tools/public_api_guard/material/grid-list.d.ts @jelbourn -/tools/public_api_guard/material/icon.d.ts @jelbourn +/tools/public_api_guard/material/grid-list.d.ts @andrewseguin +/tools/public_api_guard/material/icon.d.ts @andrewseguin /tools/public_api_guard/material/input.d.ts @mmalerba -/tools/public_api_guard/material/list.d.ts @jelbourn @crisbeto @devversion +/tools/public_api_guard/material/list.d.ts @andrewseguin @crisbeto @devversion /tools/public_api_guard/material/menu.d.ts @crisbeto /tools/public_api_guard/material/paginator.d.ts @andrewseguin -/tools/public_api_guard/material/progress-bar.d.ts @jelbourn @crisbeto -/tools/public_api_guard/material/progress-spinner.d.ts @jelbourn @crisbeto -/tools/public_api_guard/material/radio.d.ts @jelbourn @devversion +/tools/public_api_guard/material/progress-bar.d.ts @andrewseguin @crisbeto +/tools/public_api_guard/material/progress-spinner.d.ts @andrewseguin @crisbeto +/tools/public_api_guard/material/radio.d.ts @andrewseguin @devversion /tools/public_api_guard/material/select.d.ts @crisbeto /tools/public_api_guard/material/sidenav.d.ts @mmalerba /tools/public_api_guard/material/slide-toggle.d.ts @devversion /tools/public_api_guard/material/slider.d.ts @mmalerba -/tools/public_api_guard/material/snack-bar.d.ts @jelbourn @crisbeto +/tools/public_api_guard/material/snack-bar.d.ts @andrewseguin @crisbeto /tools/public_api_guard/material/sort.d.ts @andrewseguin /tools/public_api_guard/material/stepper.d.ts @mmalerba /tools/public_api_guard/material/table.d.ts @andrewseguin @@ -343,17 +342,17 @@ /tools/public_api_guard/material/toolbar.d.ts @devversion /tools/public_api_guard/material/tooltip.d.ts @andrewseguin /tools/public_api_guard/material/tree.d.ts @jelbourn @andrewseguin -/tools/public_api_guard/material/material.d.ts @jelbourn -/tools/public_api_guard/youtube-player/youtube-player.d.ts @jelbourn @nathantate +/tools/public_api_guard/material/material.d.ts @andrewseguin +/tools/public_api_guard/youtube-player/youtube-player.d.ts @andrewseguin @nathantate # Misc /.github/** @angular/dev-infra-components /.husky/** @angular/dev-infra-components -/.github/CODEOWNERS @angular/dev-infra-components @jelbourn +/.github/CODEOWNERS @angular/dev-infra-components @andrewseguin @jelbourn /.github/ISSUE_TEMPLATE/** @andrewseguin @jelbourn /.vscode/** @angular/dev-infra-components @mmalerba /.ng-dev/** @angular/dev-infra-components -/goldens/size-test.yml @jelbourn @mmalerba @crisbeto +/goldens/size-test.yml @andrewseguin @mmalerba @crisbeto /goldens/** @angular/dev-infra-components /src/* @angular/dev-infra-components /* @angular/dev-infra-components diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md deleted file mode 100644 index a77209ec73ee..000000000000 --- a/.github/ISSUE_TEMPLATE/bug.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: Bug Report -title: "bug(COMPONENT): TITLE" -about: Report a bug in Angular Material or the CDK -labels: needs triage ---- - -#### Reproduction - -Use StackBlitz to reproduce your issue: -- Components: https://stackblitz.com/fork/components-issue -- Harnesses: https://stackblitz.com/fork/harness-issue - -Steps to reproduce: -1. -2. - - -#### Expected Behavior - -What behavior were you expecting to see? - - -#### Actual Behavior - -What behavior did you actually see? - - -#### Environment - -- Angular: -- CDK/Material: -- Browser(s): -- Operating System (e.g. Windows, macOS, Ubuntu): diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 000000000000..a4923a2c100e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,65 @@ +name: Bug Report +description: Report a bug in Angular Material or the CDK +title: "bug(COMPONENT): TITLE" +labels: ["needs triage"] +body: + - type: checkboxes + id: is-regression + attributes: + label: Is this a regression? + description: Did this behavior use to work in the previous version? + options: + - label: Yes, this behavior used to work in the previous version + - type: input + id: version-bug-was-not-present + attributes: + label: The previous version in which this bug was not present was + validations: + required: false + - type: textarea + id: description + attributes: + label: Description + description: A clear and concise description of the problem. + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Reproduction + description: | + **Use StackBlitz to reproduce your issue:** + - [Components](https://stackblitz.com/fork/components-issue) + - [Harnesses](https://stackblitz.com/fork/harness-issue) + value: | + Steps to reproduce: + 1. + 2. + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: What behavior were you expecting to see? + validations: + required: true + - type: textarea + id: actual-behavior + attributes: + label: Actual Behavior + description: What behavior did you actually see? + validations: + required: true + - type: textarea + id: environment + attributes: + label: Environment + description: You can use `ng version` command. + value: | + - Angular: + - CDK/Material: + - Browser(s): + - Operating System (e.g. Windows, macOS, Ubuntu): + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000000..486735b8058b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Angular Framework + url: https://github.com/angular/angular/issues/new + about: Issues and feature requests for Angular Framework diff --git a/.github/ISSUE_TEMPLATE/docs.md b/.github/ISSUE_TEMPLATE/docs.md deleted file mode 100644 index 40947c2ca6dd..000000000000 --- a/.github/ISSUE_TEMPLATE/docs.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Documentation -title: "docs-bug(COMPONENT): TITLE" -about: Suggest an improvement to our documentation at material.angular.io -labels: docs, needs triage ---- - -#### Documentation Feedback - -Provide a brief summary of what you would like to see changed in our -documentation at material.angular.io. - -Feel free to provide any suggestions of content or examples you’d like us to include. - -**Affected documentation page:** Insert a link to the affected page on material.angular.io diff --git a/.github/ISSUE_TEMPLATE/docs.yml b/.github/ISSUE_TEMPLATE/docs.yml new file mode 100644 index 000000000000..afc76a94cb7d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/docs.yml @@ -0,0 +1,21 @@ +name: Documentation +description: Suggest an improvement to our documentation at material.angular.io +title: "docs-bug(COMPONENT): TITLE" +labels: ["docs", "needs triage"] +body: + - type: textarea + id: description + attributes: + label: Documentation Feedback + description: | + Provide a brief summary of what you would like to see changed in our documentation at [material.angular.io](https://material.angular.io/). + Feel free to provide any suggestions of content or examples you’d like us to include. + validations: + required: true + - type: input + id: affected-documentation-page + attributes: + label: Affected documentation page + description: Insert a link to the affected page on [material.angular.io](https://material.angular.io/). + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md deleted file mode 100644 index bce7e24680fa..000000000000 --- a/.github/ISSUE_TEMPLATE/feature.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Feature -title: "feat(COMPONENT): TITLE" -about: Propose a new feature for Angular Material or the CDK -labels: feature, needs triage ---- - -#### Feature Description - -Provide a brief summary of the feature you would like to see. - -#### Use Case - -Describe the use case(s) that the proposed feature would enable. diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml new file mode 100644 index 000000000000..8c01fd13a222 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.yml @@ -0,0 +1,19 @@ +name: Feature +description: Propose a new feature for Angular Material or the CDK +title: "feat(COMPONENT): TITLE" +labels: ["feature", "needs triage"] +body: + - type: textarea + id: description + attributes: + label: Feature Description + description: Provide a brief summary of the feature you would like to see. + validations: + required: true + - type: textarea + id: use-case + attributes: + label: Use Case + description: Describe the use case(s) that the proposed feature would enable. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/troubleshooting.md b/.github/ISSUE_TEMPLATE/troubleshooting.md deleted file mode 100644 index 6762501f38f3..000000000000 --- a/.github/ISSUE_TEMPLATE/troubleshooting.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -name: Troubleshooting -title: "help(COMPONENT): TITLE" -about: Request for help on an issue you are facing with Angular Material or the CDK -labels: troubleshooting, needs triage ---- - - - - -#### What are you trying to do? - -What are you trying to do? - -#### What troubleshooting steps have you tried? - -What are you seeing that does not match your expectations? - -#### Reproduction - -We can only help if we can reproduce the problem ourselves. - -Use StackBlitz to demonstrate what you are trying to do: -- Components: https://stackblitz.com/fork/components-issue -- Harnesses: https://stackblitz.com/fork/harness-issue - -Steps to reproduce: -1. -2. - -#### Environment - -- Angular: -- CDK/Material: -- Browser(s): -- Operating System (e.g. Windows, macOS, Ubuntu): diff --git a/.github/ISSUE_TEMPLATE/troubleshooting.yml b/.github/ISSUE_TEMPLATE/troubleshooting.yml new file mode 100644 index 000000000000..1fc66dcb5d3b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/troubleshooting.yml @@ -0,0 +1,55 @@ +name: Troubleshooting +description: Request for help on an issue you are facing with Angular Material or the CDK +title: "help(COMPONENT): TITLE" +labels: ["troubleshooting", "needs triage"] +body: + - type: markdown + attributes: + value: | + The Angular team can't provide general troubleshooting help. However, the extended community of users can provide more help: + - [StackOverflow](https://stackoverflow.com/questions/tagged/angular-material2) + - [Gitter](https://gitter.im/angular/material2) + - [Google Groups](https://groups.google.com/forum/#!forum/angular-material2) + + Issues should capture only bug reports and feature requests. However, we understand that it is not always clear whether an issue is caused by a bug or incorrect usage of a feature/component. + Most support requests will be automatically closed. If the answer is quickly obvious, though, we might be able to provide a brief answer. + - type: textarea + id: description + attributes: + label: What are you trying to do? + validations: + required: true + - type: textarea + id: troubleshooting-steps + attributes: + label: What troubleshooting steps have you tried? + description: What are you seeing that does not match your expectations? + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Reproduction + description: | + We can only help if we can reproduce the problem ourselves. + **Use StackBlitz to demonstrate what you are trying to do:** + - [Components](https://stackblitz.com/fork/components-issue) + - [Harnesses](https://stackblitz.com/fork/harness-issue) + value: | + Steps to reproduce: + 1. + 2. + validations: + required: true + - type: textarea + id: environment + attributes: + label: Environment + description: You can use `ng version` command. + value: | + - Angular: + - CDK/Material: + - Browser(s): + - Operating System (e.g. Windows, macOS, Ubuntu): + validations: + required: true diff --git a/.github/actions/yarn-install/action.yml b/.github/actions/yarn-install/action.yml new file mode 100644 index 000000000000..fc29e4503bb3 --- /dev/null +++ b/.github/actions/yarn-install/action.yml @@ -0,0 +1,18 @@ +name: "Installing Yarn dependencies" +description: "Installs the dependencies using Yarn" + +runs: + using: "composite" + steps: + - uses: actions/cache@v2 + with: + path: | + ./node_modules/ + # Cache key. Whenever the postinstall patches change, the cache needs to be invalidated. + # If just the `yarn.lock` file changes, the most recent cache can be restored though. + # See: https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows#example-using-the-cache-action. + key: v3-${{hashFiles('tools/postinstall/apply-patches.js')}}-${{hashFiles('yarn.lock')}} + restore-keys: v3-${{hashFiles('tools/postinstall/apply-patches.js')}}- + + - run: yarn install --frozen-lockfile --non-interactive + shell: bash diff --git a/.github/angular-robot.yml b/.github/angular-robot.yml index 3c94ce383cf4..e4ac26b78618 100644 --- a/.github/angular-robot.yml +++ b/.github/angular-robot.yml @@ -44,7 +44,6 @@ merge: # list of labels that a PR needs to have, checked with a regexp (e.g. "PR target:" will work for the label "PR target: master") requiredLabels: - "target: *" - - "cla: yes" # list of labels that a PR shouldn't have, checked after the required labels with a regexp forbiddenLabels: @@ -52,7 +51,6 @@ merge: - "pr: blocked" - "pr: needs*" - "presubmit failures" - - "cla: no" # list of PR statuses that need to be successful requiredStatuses: diff --git a/.github/workflows/build-dev-app.yml b/.github/workflows/build-dev-app.yml new file mode 100644 index 000000000000..83ac750ac49c --- /dev/null +++ b/.github/workflows/build-dev-app.yml @@ -0,0 +1,52 @@ +# This workflow builds the dev-app for pull requests when a certain label is applied. +# The actual deployment happens as part of a dedicated second workflow to avoid security +# issues where the building would otherwise occur in an authorized context where secrets +# could be leaked. More details can be found here: + +# https://securitylab.github.com/research/github-actions-preventing-pwn-requests/. + +name: Build dev-app for deployment + +on: + pull_request: + types: [synchronize, labeled] + +jobs: + dev-app-build: + runs-on: ubuntu-latest + # We only want to build and deploy the dev-app if the `dev-app preview` label has been + # added, or if the label is already applied and new changes have been made in the PR. + if: | + (github.event.action == 'labeled' && github.event.label.name == 'dev-app preview') || + (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'dev-app preview')) + steps: + - uses: actions/checkout@v2 + - uses: ./.github/actions/yarn-install + + - run: ./scripts/bazel/setup-remote-execution.sh + env: + GCP_DECRYPT_TOKEN: angular + + # Build the web package. Note that we also need to make the Github environment + # variables available so that the RBE is configured. Note: We run Bazel from a + # low-resource Github action container, so we manually need to instruct Bazel to run + # more actions concurrently as by default this is computed based on the host resources. + - name: Building dev-app + run: | + source ${GITHUB_ENV} + bazel build //src/dev-app:web_package --symlink_prefix=dist/ --jobs=32 + + # Prepare the workflow artifact that is available for the deploy workflow. We store the pull + # request number and SHA in a file that can be read by the deploy workflow. This is necessary + # so that the deploy workflow can create a comment on the PR that triggered the deploy. + - run: | + mkdir -p dist/devapp + cp -R dist/bin/src/dev-app/web_package/* dist/devapp + echo ${{github.event.pull_request.number}} > dist/devapp/pr_number + echo ${{github.event.pull_request.head.sha}} > dist/devapp/pr_sha + + # Upload the generated dev-app archive. + - uses: actions/upload-artifact@v2 + with: + name: devapp + path: dist/devapp diff --git a/.github/workflows/deploy-dev-app.yml b/.github/workflows/deploy-dev-app.yml new file mode 100644 index 000000000000..01669e07e7c6 --- /dev/null +++ b/.github/workflows/deploy-dev-app.yml @@ -0,0 +1,52 @@ +# This workflow runs whenever the dev-app build workflow has completed. Deployment happens +# as part of a dedicated second workflow to avoid security issues where the building would +# otherwise occur in an authorized context where secrets could be leaked. +# +# More details can be found here: +# https://securitylab.github.com/research/github-actions-preventing-pwn-requests/. + +name: Deploying dev-app to Firebase previews + +on: + workflow_run: + workflows: [Build dev-app for deployment] + types: [completed] + +jobs: + deploy-dev-app: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' }} + steps: + - uses: actions/checkout@v2 + - uses: ./.github/actions/yarn-install + + - name: 'Download artifact from build job' + run: | + ./scripts/github/fetch-workflow-artifact.mjs ${{secrets.GITHUB_TOKEN}} \ + ${{github.event.workflow_run.id}} devapp > devapp.zip + + - name: Extracting workflow artifact into Firebase public directory. + run: | + mkdir -p dist/dev-app-web-pkg + unzip devapp.zip -d dist/dev-app-web-pkg + + - name: Extracting pull request from extracted workflow artifact. + id: pr_info + run: | + echo "::set-output name=number::$(cat ./dist/dev-app-web-pkg/pr_number)" + echo "::set-output name=sha::$(cat ./dist/dev-app-web-pkg/pr_sha)" + + - uses: FirebaseExtended/action-hosting-deploy@v0 + id: deploy + with: + repoToken: '${{secrets.GITHUB_TOKEN}}' + firebaseServiceAccount: '${{secrets.FIREBASE_PREVIEW_SERVICE_TOKEN}}' + expires: 20d + projectId: ng-comp-dev + channelId: pr-${{steps.pr_info.outputs.number}}-${{steps.pr_info.outputs.sha}} + + - uses: marocchino/sticky-pull-request-comment@v2 + with: + message: | + Deployed dev-app to: ${{ steps.deploy.outputs.details_url }} + number: ${{ steps.pr_info.outputs.number }} diff --git a/.github/workflows/dev-infra.yml b/.github/workflows/dev-infra.yml index 0b93642575f1..f0f07fd66936 100644 --- a/.github/workflows/dev-infra.yml +++ b/.github/workflows/dev-infra.yml @@ -5,10 +5,10 @@ on: types: [opened, synchronize, reopened] jobs: - breaking-changes-label: + labels: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: angular/dev-infra/github-actions/breaking-changes-label@3f4646c252bc54b2ae93b4e322ebde9030de30b2 + - uses: angular/dev-infra/github-actions/commit-message-based-labels@0bd2bee03a032325cada4c75f0a1388bb2661fb8 with: angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/feature-requests.yml b/.github/workflows/feature-requests.yml new file mode 100644 index 000000000000..329245c0da05 --- /dev/null +++ b/.github/workflows/feature-requests.yml @@ -0,0 +1,15 @@ +name: Feature request triage bot + +on: + schedule: + # Run at 15:00 every day + - cron: '0 15 * * *' + +jobs: + feature_triage: + if: github.repository == 'angular/components' + runs-on: ubuntu-latest + steps: + - uses: angular/dev-infra/github-actions/feature-request@0bd2bee03a032325cada4c75f0a1388bb2661fb8 + with: + angular-robot-key: ${{ secrets.ANGULAR_ROBOT_PRIVATE_KEY }} diff --git a/.github/workflows/lock-closed.yml b/.github/workflows/lock-closed.yml index a93a85f940c8..025e950a3d3e 100644 --- a/.github/workflows/lock-closed.yml +++ b/.github/workflows/lock-closed.yml @@ -9,6 +9,6 @@ jobs: lock_closed: runs-on: ubuntu-latest steps: - - uses: angular/dev-infra/github-actions/lock-closed@3f4646c252bc54b2ae93b4e322ebde9030de30b2 + - uses: angular/dev-infra/github-actions/lock-closed@0bd2bee03a032325cada4c75f0a1388bb2661fb8 with: lock-bot-key: ${{ secrets.LOCK_BOT_PRIVATE_KEY }} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 000000000000..497e76d35c21 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,49 @@ +name: OpenSSF Scorecard +on: + branch_protection_rule: + schedule: + - cron: '0 3 * * 0' + push: + branches: [master] + workflow_dispatch: + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecards analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + actions: read + contents: read + + steps: + - name: 'Checkout code' + uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # v2.4.0 + with: + persist-credentials: false + + - name: 'Run analysis' + uses: ossf/scorecard-action@c8416b0b2bf627c349ca92fc8e3de51a64b005cf # v1.0.2 + with: + results_file: results.sarif + results_format: sarif + repo_token: ${{ secrets.GITHUB_TOKEN }} + publish_results: true + + # Upload the results as artifacts. + - name: 'Upload artifact' + uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2 # v2.3.1 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: 'Upload to code-scanning' + uses: github/codeql-action/upload-sarif@5f532563584d71fdef14ee64d17bafb34f751ce5 # v1.0.26 + with: + sarif_file: results.sarif diff --git a/.gitignore b/.gitignore index ce0991dfb3e0..b2de1566cfc9 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,8 @@ node_modules /.vs *.swo *.swp +.vimrc +.nvimrc # misc .DS_Store @@ -48,6 +50,3 @@ testem.log *.log .ng-dev.user* .husky/_ - -# Variables that are inlined into the dev app index.html -/src/dev-app/variables.json diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100644 new mode 100755 diff --git a/.ng-dev/commit-message.ts b/.ng-dev/commit-message.ts index 773ee2e7fc36..59fd200bfa64 100644 --- a/.ng-dev/commit-message.ts +++ b/.ng-dev/commit-message.ts @@ -59,7 +59,6 @@ export const commitMessage: CommitMessageConfig = { 'material-experimental/mdc-progress-spinner', 'material-experimental/mdc-radio', 'material-experimental/mdc-select', - 'material-experimental/mdc-sidenav', 'material-experimental/mdc-slide-toggle', 'material-experimental/mdc-slider', 'material-experimental/mdc-snack-bar', diff --git a/.ng-dev/release.ts b/.ng-dev/release.ts index c07485e8f494..038907f82acc 100644 --- a/.ng-dev/release.ts +++ b/.ng-dev/release.ts @@ -90,7 +90,8 @@ export const release: ReleaseConfig = { }, }, publishRegistry: 'https://wombat-dressing-room.appspot.com', - npmPackages: releasePackages.map(pkg => `@angular/${pkg}`), + representativeNpmPackage: '@angular/cdk', + npmPackages: releasePackages.map(pkg => ({name: `@angular/${pkg}`})), buildPackages: async () => { // The `performNpmReleaseBuild` function is loaded at runtime as loading of the // script results in an invocation of Bazel for any `yarn ng-dev` command. diff --git a/.ng-dev/tsconfig.json b/.ng-dev/tsconfig.json index 9e9c1b746523..5a1f3c90dc51 100644 --- a/.ng-dev/tsconfig.json +++ b/.ng-dev/tsconfig.json @@ -3,8 +3,9 @@ "strict": true, "target": "es2015", "module": "commonjs", + "esModuleInterop": true, "noEmit": true, "skipLibCheck": true, "types": [] - }, + } } diff --git a/.prettierignore b/.prettierignore index 0167dfd5355b..5085bcf48958 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,6 @@ +# Generated files for infrastructure. +.yarn/releases/*.cjs + # These schematic ng-generate files are template files that cannot be formatted. src/material/schematics/ng-generate/*/files/**/* src/cdk/schematics/ng-generate/*/files/**/* diff --git a/.prettierrc b/.prettierrc index 8822ece50ee9..da93a7ee3ab0 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,5 +5,5 @@ "quoteProps": "preserve", "bracketSpacing": false, "arrowParens": "avoid", - "embeddedLanguageFormatting": "off", -} \ No newline at end of file + "embeddedLanguageFormatting": "off" +} diff --git a/.stylelintrc.json b/.stylelintrc.json index f80bfa3e9922..a50185edd205 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -1,4 +1,5 @@ { + "customSyntax": "postcss-scss", "defaultSeverity": "error", "reportNeedlessDisables": true, "reportInvalidScopeDisables": true, @@ -16,29 +17,54 @@ "./tools/stylelint/no-unused-import.ts" ], "rules": { - "material/no-prefixes": [true, { - "browsers": ["last 2 versions", "not dead", "not and_qq > 0", "not OperaMini all", "not ie > 0", "not edge < 78"], - "filePattern": "**/!(*-example.css)" - }], + "material/no-prefixes": [ + true, + { + "browsers": [ + "last 2 versions", + "not dead", + "not and_qq > 0", + "not OperaMini all", + "not ie > 0", + "not edge < 78" + ], + "filePattern": "**/!(*-example.css)" + } + ], "material/theme-mixin-api": true, "material/selector-no-deep": true, "material/no-nested-mixin": true, "material/no-unused-import": true, - "material/single-line-comment-only": [true, { - "filePattern": "\\.scss$" - }], - "material/no-import": [true, { - "exclude": "\\.import\\.scss$" - }], - "material/no-ampersand-beyond-selector-start": [true, { - "filePattern": "-theme\\.scss$" - }], - "material/no-concrete-rules": [true, { - "filePattern": "^_.*\\.scss$" - }], - "material/no-top-level-ampersand-in-mixin": [true, { - "filePattern": "-theme\\.scss$" - }], + "material/single-line-comment-only": [ + true, + { + "filePattern": "\\.scss$" + } + ], + "material/no-import": [ + true, + { + "exclude": "\\.import\\.scss$" + } + ], + "material/no-ampersand-beyond-selector-start": [ + true, + { + "filePattern": "-theme\\.scss$" + } + ], + "material/no-concrete-rules": [ + true, + { + "filePattern": "^_.*\\.scss$" + } + ], + "material/no-top-level-ampersand-in-mixin": [ + true, + { + "filePattern": "-theme\\.scss$" + } + ], "color-hex-case": "lower", "color-no-invalid-hex": true, @@ -70,9 +96,12 @@ "property-case": "lower", "no-duplicate-at-import-rules": true, - "declaration-block-no-duplicate-properties": [true, { - "ignore": ["consecutive-duplicates-with-different-values"] - }], + "declaration-block-no-duplicate-properties": [ + true, + { + "ignore": ["consecutive-duplicates-with-different-values"] + } + ], "declaration-block-trailing-semicolon": "always", "declaration-block-single-line-max-declarations": 1, "declaration-block-semicolon-space-before": "never", @@ -104,12 +133,18 @@ "selector-max-id": 0, "no-missing-end-of-source-newline": true, "no-eol-whitespace": true, - "max-line-length": [100, { - "ignorePattern": "/https?://.*/" - }], + "max-line-length": [ + 100, + { + "ignorePattern": "/https?://.*/" + } + ], "linebreaks": "unix", - "selector-class-pattern": ["^_?(mat-|cdk-|example-|demo-|ng-|mdc-|map-|test-)", { - "resolveNestedSelectors": true - }] + "selector-class-pattern": [ + "^_?(mat-|cdk-|example-|demo-|ng-|mdc-|map-|test-)", + { + "resolveNestedSelectors": true + } + ] } } diff --git a/.vscode/extensions.json b/.vscode/extensions.json index ba8740af8547..c297ab5ab359 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,8 +3,5 @@ // Extension identifier format: ${publisher}.${name}. Example: vscode.csharp // List of extensions which should be recommended for users of this workspace. - "recommendations": [ - "ms-vscode.vscode-typescript-tslint-plugin", - "esbenp.prettier-vscode" - ] + "recommendations": ["ms-vscode.vscode-typescript-tslint-plugin", "esbenp.prettier-vscode"] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 277935bdd679..41c5b54f499c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,12 +4,12 @@ "**/.git/subtree-cache/**": true, "**/node_modules/**": true, "**/bazel-out/**": true, - "**/dist/**": true, + "**/dist/**": true }, "search.exclude": { "**/node_modules": true, "**/bazel-out": true, - "**/dist": true, + "**/dist": true }, "git.ignoreLimitWarning": true, "[javascript]": { diff --git a/.yarn/releases/yarn-1.22.10.cjs b/.yarn/releases/yarn-1.22.17.cjs similarity index 99% rename from .yarn/releases/yarn-1.22.10.cjs rename to .yarn/releases/yarn-1.22.17.cjs index 6418ae5ddc44..3cf00ad6264d 100755 --- a/.yarn/releases/yarn-1.22.10.cjs +++ b/.yarn/releases/yarn-1.22.17.cjs @@ -338,6 +338,12 @@ module.exports = require("util"); /***/ }), /* 4 */ +/***/ (function(module, exports) { + +module.exports = require("fs"); + +/***/ }), +/* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1393,7 +1399,7 @@ exports.normalizeOS = normalizeOS; var _fs; function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(5)); + return _fs = _interopRequireDefault(__webpack_require__(4)); } var _glob; @@ -1417,19 +1423,19 @@ function _load_path() { var _blockingQueue; function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(110)); + return _blockingQueue = _interopRequireDefault(__webpack_require__(111)); } var _promise; function _load_promise() { - return _promise = _interopRequireWildcard(__webpack_require__(50)); + return _promise = _interopRequireWildcard(__webpack_require__(51)); } var _promise2; function _load_promise2() { - return _promise2 = __webpack_require__(50); + return _promise2 = __webpack_require__(51); } var _map; @@ -1441,7 +1447,7 @@ function _load_map() { var _fsNormalized; function _load_fsNormalized() { - return _fsNormalized = __webpack_require__(218); + return _fsNormalized = __webpack_require__(219); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -1516,12 +1522,6 @@ function normalizeOS(body) { const cr = '\r'.charCodeAt(0); const lf = '\n'.charCodeAt(0); -/***/ }), -/* 5 */ -/***/ (function(module, exports) { - -module.exports = require("fs"); - /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { @@ -1580,7 +1580,7 @@ exports.OneTimePasswordError = OneTimePasswordError; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observer__ = __webpack_require__(420); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__ = __webpack_require__(321); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config__ = __webpack_require__(185); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config__ = __webpack_require__(186); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util_hostReportError__ = __webpack_require__(323); /** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ @@ -2027,7 +2027,7 @@ module.exports = invariant; "use strict"; -var YAMLException = __webpack_require__(54); +var YAMLException = __webpack_require__(55); var TYPE_CONSTRUCTOR_OPTIONS = [ 'kind', @@ -2102,9 +2102,9 @@ module.exports = require("crypto"); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Observable; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_canReportError__ = __webpack_require__(322); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__ = __webpack_require__(932); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__ = __webpack_require__(117); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__ = __webpack_require__(118); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(324); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config__ = __webpack_require__(185); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config__ = __webpack_require__(186); /** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_internal_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ @@ -2718,7 +2718,7 @@ function _load_asyncToGenerator() { var _parse; function _load_parse() { - return _parse = __webpack_require__(105); + return _parse = __webpack_require__(106); } Object.defineProperty(exports, 'parse', { @@ -2731,7 +2731,7 @@ Object.defineProperty(exports, 'parse', { var _stringify; function _load_stringify() { - return _stringify = __webpack_require__(199); + return _stringify = __webpack_require__(200); } Object.defineProperty(exports, 'stringify', { @@ -2758,7 +2758,7 @@ function _load_normalizePattern() { var _parse2; function _load_parse2() { - return _parse2 = _interopRequireDefault(__webpack_require__(105)); + return _parse2 = _interopRequireDefault(__webpack_require__(106)); } var _constants; @@ -2770,7 +2770,7 @@ function _load_constants() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -2994,23 +2994,6 @@ exports.default = Lockfile; /* 20 */ /***/ (function(module, exports, __webpack_require__) { -var store = __webpack_require__(133)('wks'); -var uid = __webpack_require__(137); -var Symbol = __webpack_require__(17).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - "use strict"; @@ -3036,6 +3019,23 @@ exports.default = _assign2.default || function (target) { return target; }; +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +var store = __webpack_require__(133)('wks'); +var uid = __webpack_require__(137); +var Symbol = __webpack_require__(17).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + + /***/ }), /* 22 */ /***/ (function(module, exports) { @@ -4387,7 +4387,7 @@ module.exports = require("url"); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isArray__ = __webpack_require__(41); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isObject__ = __webpack_require__(444); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isFunction__ = __webpack_require__(154); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__ = __webpack_require__(441); /** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_tryCatch,_util_errorObject,_util_UnsubscriptionError PURE_IMPORTS_END */ @@ -4954,7 +4954,7 @@ formats['pkcs1'] = __webpack_require__(327); formats['pkcs8'] = __webpack_require__(157); formats['rfc4253'] = __webpack_require__(103); formats['ssh'] = __webpack_require__(456); -formats['ssh-private'] = __webpack_require__(192); +formats['ssh-private'] = __webpack_require__(193); formats['openssh'] = formats['ssh-private']; formats['dnssec'] = __webpack_require__(326); @@ -5707,7 +5707,7 @@ formats['pem'] = __webpack_require__(86); formats['pkcs1'] = __webpack_require__(327); formats['pkcs8'] = __webpack_require__(157); formats['rfc4253'] = __webpack_require__(103); -formats['ssh-private'] = __webpack_require__(192); +formats['ssh-private'] = __webpack_require__(193); formats['openssh'] = formats['ssh-private']; formats['ssh'] = formats['ssh-private']; formats['dnssec'] = __webpack_require__(326); @@ -5940,7 +5940,7 @@ exports.wrapLifecycle = exports.run = exports.install = exports.Install = undefi var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -6047,7 +6047,7 @@ function _load_hooks() { var _index; function _load_index() { - return _index = _interopRequireDefault(__webpack_require__(220)); + return _index = _interopRequireDefault(__webpack_require__(221)); } var _errors; @@ -6059,7 +6059,7 @@ function _load_errors() { var _integrityChecker; function _load_integrityChecker() { - return _integrityChecker = _interopRequireDefault(__webpack_require__(208)); + return _integrityChecker = _interopRequireDefault(__webpack_require__(209)); } var _lockfile; @@ -6077,7 +6077,7 @@ function _load_lockfile2() { var _packageFetcher; function _load_packageFetcher() { - return _packageFetcher = _interopRequireWildcard(__webpack_require__(210)); + return _packageFetcher = _interopRequireWildcard(__webpack_require__(211)); } var _packageInstallScripts; @@ -6089,7 +6089,7 @@ function _load_packageInstallScripts() { var _packageCompatibility; function _load_packageCompatibility() { - return _packageCompatibility = _interopRequireWildcard(__webpack_require__(209)); + return _packageCompatibility = _interopRequireWildcard(__webpack_require__(210)); } var _packageResolver; @@ -6101,13 +6101,13 @@ function _load_packageResolver() { var _packageLinker; function _load_packageLinker() { - return _packageLinker = _interopRequireDefault(__webpack_require__(211)); + return _packageLinker = _interopRequireDefault(__webpack_require__(212)); } var _index2; function _load_index2() { - return _index2 = __webpack_require__(57); + return _index2 = __webpack_require__(58); } var _index3; @@ -6137,7 +6137,7 @@ function _load_normalizePattern() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _map; @@ -6149,7 +6149,7 @@ function _load_map() { var _yarnVersion; function _load_yarnVersion() { - return _yarnVersion = __webpack_require__(120); + return _yarnVersion = __webpack_require__(105); } var _generatePnpMap; @@ -6167,7 +6167,7 @@ function _load_workspaceLayout() { var _resolutionMap; function _load_resolutionMap() { - return _resolutionMap = _interopRequireDefault(__webpack_require__(214)); + return _resolutionMap = _interopRequireDefault(__webpack_require__(215)); } var _guessName; @@ -6192,7 +6192,7 @@ const emoji = __webpack_require__(302); const invariant = __webpack_require__(9); const path = __webpack_require__(0); const semver = __webpack_require__(22); -const uuid = __webpack_require__(119); +const uuid = __webpack_require__(120); const ssri = __webpack_require__(65); const ONE_DAY = 1000 * 60 * 60 * 24; @@ -7485,7 +7485,7 @@ function setFlags(commander) { /* 35 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(52); +var isObject = __webpack_require__(53); module.exports = function (it) { if (!isObject(it)) throw TypeError(it + ' is not an object!'); return it; @@ -7504,7 +7504,7 @@ module.exports = function (it) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscriber__ = __webpack_require__(7); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__ = __webpack_require__(189); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__ = __webpack_require__(190); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__ = __webpack_require__(422); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__ = __webpack_require__(321); /** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ @@ -24882,7 +24882,7 @@ var isArray = Array.isArray || (function (x) { return x && typeof x.length === ' var dP = __webpack_require__(72); var createDesc = __webpack_require__(132); -module.exports = __webpack_require__(51) ? function (object, key, value) { +module.exports = __webpack_require__(52) ? function (object, key, value) { return dP.f(object, key, createDesc(1, value)); } : function (object, key, value) { object[key] = value; @@ -24966,7 +24966,7 @@ module.exports.extend = extend; /*eslint-disable max-len*/ var common = __webpack_require__(43); -var YAMLException = __webpack_require__(54); +var YAMLException = __webpack_require__(55); var Type = __webpack_require__(10); @@ -25232,6 +25232,223 @@ function isScheduler(value) { "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.exec = exports.queue = undefined; +exports.forkp = forkp; +exports.spawnp = spawnp; +exports.forwardSignalToSpawnedProcesses = forwardSignalToSpawnedProcesses; +exports.spawn = spawn; + +var _constants; + +function _load_constants() { + return _constants = _interopRequireWildcard(__webpack_require__(8)); +} + +var _blockingQueue; + +function _load_blockingQueue() { + return _blockingQueue = _interopRequireDefault(__webpack_require__(111)); +} + +var _errors; + +function _load_errors() { + return _errors = __webpack_require__(6); +} + +var _promise; + +function _load_promise() { + return _promise = __webpack_require__(51); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +/* global child_process$spawnOpts */ + +const child = __webpack_require__(331); +const fs = __webpack_require__(4); +const path = __webpack_require__(0); + +const queue = exports.queue = new (_blockingQueue || _load_blockingQueue()).default('child', (_constants || _load_constants()).CHILD_CONCURRENCY); + +// TODO: this uid check is kinda whack +let uid = 0; + +const exec = exports.exec = (0, (_promise || _load_promise()).promisify)(child.exec); + +function validate(program, opts = {}) { + if (program.match(/[\\\/]/)) { + return; + } + + if (process.platform === 'win32' && process.env.PATHEXT) { + const cwd = opts.cwd || process.cwd(); + const pathext = process.env.PATHEXT; + + for (var _iterator = pathext.split(';'), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + const ext = _ref; + + const candidate = path.join(cwd, `${program}${ext}`); + if (fs.existsSync(candidate)) { + throw new Error(`Potentially dangerous call to "${program}" in ${cwd}`); + } + } + } +} + +function forkp(program, args, opts) { + validate(program, opts); + const key = String(++uid); + return new Promise((resolve, reject) => { + const proc = child.fork(program, args, opts); + spawnedProcesses[key] = proc; + + proc.on('error', error => { + reject(error); + }); + + proc.on('close', exitCode => { + resolve(exitCode); + }); + }); +} + +function spawnp(program, args, opts) { + validate(program, opts); + const key = String(++uid); + return new Promise((resolve, reject) => { + const proc = child.spawn(program, args, opts); + spawnedProcesses[key] = proc; + + proc.on('error', error => { + reject(error); + }); + + proc.on('close', exitCode => { + resolve(exitCode); + }); + }); +} + +const spawnedProcesses = {}; + +function forwardSignalToSpawnedProcesses(signal) { + for (var _iterator2 = Object.keys(spawnedProcesses), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + const key = _ref2; + + spawnedProcesses[key].kill(signal); + } +} + +function spawn(program, args, opts = {}, onData) { + const key = opts.cwd || String(++uid); + return queue.push(key, () => new Promise((resolve, reject) => { + validate(program, opts); + + const proc = child.spawn(program, args, opts); + spawnedProcesses[key] = proc; + + let processingDone = false; + let processClosed = false; + let err = null; + + let stdout = ''; + + proc.on('error', err => { + if (err.code === 'ENOENT') { + reject(new (_errors || _load_errors()).ProcessSpawnError(`Couldn't find the binary ${program}`, err.code, program)); + } else { + reject(err); + } + }); + + function updateStdout(chunk) { + stdout += chunk; + if (onData) { + onData(chunk); + } + } + + function finish() { + delete spawnedProcesses[key]; + if (err) { + reject(err); + } else { + resolve(stdout.trim()); + } + } + + if (typeof opts.process === 'function') { + opts.process(proc, updateStdout, reject, function () { + if (processClosed) { + finish(); + } else { + processingDone = true; + } + }); + } else { + if (proc.stderr) { + proc.stderr.on('data', updateStdout); + } + + if (proc.stdout) { + proc.stdout.on('data', updateStdout); + } + + processingDone = true; + } + + proc.on('close', (code, signal) => { + if (signal || code >= 1) { + err = new (_errors || _load_errors()).ProcessTermError(['Command failed.', signal ? `Exit signal: ${signal}` : `Exit code: ${code}`, `Command: ${program}`, `Arguments: ${args.join(' ')}`, `Directory: ${opts.cwd || process.cwd()}`, `Output:\n${stdout.trim()}`].join('\n')); + err.EXIT_SIGNAL = signal; + err.EXIT_CODE = code; + } + + if (processingDone || err) { + finish(); + } else { + processClosed = true; + } + }); + })); +} + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); @@ -25309,17 +25526,17 @@ function queue(arr, promiseProducer, concurrency = Infinity) { } /***/ }), -/* 51 */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty -module.exports = !__webpack_require__(112)(function () { +module.exports = !__webpack_require__(113)(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), -/* 52 */ +/* 53 */ /***/ (function(module, exports) { module.exports = function (it) { @@ -25328,14 +25545,14 @@ module.exports = function (it) { /***/ }), -/* 53 */ +/* 54 */ /***/ (function(module, exports) { module.exports = {}; /***/ }), -/* 54 */ +/* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25385,7 +25602,7 @@ module.exports = YAMLException; /***/ }), -/* 55 */ +/* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25420,7 +25637,7 @@ module.exports = new Schema({ /***/ }), -/* 56 */ +/* 57 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -25446,7 +25663,7 @@ function tryCatch(fn) { /***/ }), -/* 57 */ +/* 58 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25478,182 +25695,6 @@ const registries = exports.registries = { const registryNames = exports.registryNames = Object.keys(registries); -/***/ }), -/* 58 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.exec = exports.queue = undefined; -exports.forkp = forkp; -exports.spawnp = spawnp; -exports.forwardSignalToSpawnedProcesses = forwardSignalToSpawnedProcesses; -exports.spawn = spawn; - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(8)); -} - -var _blockingQueue; - -function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(110)); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(6); -} - -var _promise; - -function _load_promise() { - return _promise = __webpack_require__(50); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -/* global child_process$spawnOpts */ - -const child = __webpack_require__(331); - -const queue = exports.queue = new (_blockingQueue || _load_blockingQueue()).default('child', (_constants || _load_constants()).CHILD_CONCURRENCY); - -// TODO: this uid check is kinda whack -let uid = 0; - -const exec = exports.exec = (0, (_promise || _load_promise()).promisify)(child.exec); - -function forkp(program, args, opts) { - return new Promise((resolve, reject) => { - const proc = child.fork(program, args, opts); - - proc.on('error', error => { - reject(error); - }); - - proc.on('close', exitCode => { - resolve(exitCode); - }); - }); -} - -function spawnp(program, args, opts) { - return new Promise((resolve, reject) => { - const proc = child.spawn(program, args, opts); - - proc.on('error', error => { - reject(error); - }); - - proc.on('close', exitCode => { - resolve(exitCode); - }); - }); -} - -const spawnedProcesses = {}; - -function forwardSignalToSpawnedProcesses(signal) { - for (var _iterator = Object.keys(spawnedProcesses), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - const key = _ref; - - spawnedProcesses[key].kill(signal); - } -} - -function spawn(program, args, opts = {}, onData) { - const key = opts.cwd || String(++uid); - return queue.push(key, () => new Promise((resolve, reject) => { - const proc = child.spawn(program, args, opts); - spawnedProcesses[key] = proc; - - let processingDone = false; - let processClosed = false; - let err = null; - - let stdout = ''; - - proc.on('error', err => { - if (err.code === 'ENOENT') { - reject(new (_errors || _load_errors()).ProcessSpawnError(`Couldn't find the binary ${program}`, err.code, program)); - } else { - reject(err); - } - }); - - function updateStdout(chunk) { - stdout += chunk; - if (onData) { - onData(chunk); - } - } - - function finish() { - delete spawnedProcesses[key]; - if (err) { - reject(err); - } else { - resolve(stdout.trim()); - } - } - - if (typeof opts.process === 'function') { - opts.process(proc, updateStdout, reject, function () { - if (processClosed) { - finish(); - } else { - processingDone = true; - } - }); - } else { - if (proc.stderr) { - proc.stderr.on('data', updateStdout); - } - - if (proc.stdout) { - proc.stdout.on('data', updateStdout); - } - - processingDone = true; - } - - proc.on('close', (code, signal) => { - if (signal || code >= 1) { - err = new (_errors || _load_errors()).ProcessTermError(['Command failed.', signal ? `Exit signal: ${signal}` : `Exit code: ${code}`, `Command: ${program}`, `Arguments: ${args.join(' ')}`, `Directory: ${opts.cwd || process.cwd()}`, `Output:\n${stdout.trim()}`].join('\n')); - err.EXIT_SIGNAL = signal; - err.EXIT_CODE = code; - } - - if (processingDone || err) { - finish(); - } else { - processClosed = true; - } - }); - })); -} - /***/ }), /* 59 */ /***/ (function(module, exports, __webpack_require__) { @@ -25980,7 +26021,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return __WEBPACK_IMPORTED_MODULE_47__internal_operators_mergeScan__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__internal_operators_min__ = __webpack_require__(875); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return __WEBPACK_IMPORTED_MODULE_48__internal_operators_min__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__internal_operators_multicast__ = __webpack_require__(116); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__internal_operators_multicast__ = __webpack_require__(117); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return __WEBPACK_IMPORTED_MODULE_49__internal_operators_multicast__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_operators_observeOn__ = __webpack_require__(434); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return __WEBPACK_IMPORTED_MODULE_50__internal_operators_observeOn__["b"]; }); @@ -26002,7 +26043,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return __WEBPACK_IMPORTED_MODULE_58__internal_operators_publishReplay__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__internal_operators_race__ = __webpack_require__(884); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return __WEBPACK_IMPORTED_MODULE_59__internal_operators_race__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__internal_operators_reduce__ = __webpack_require__(187); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__internal_operators_reduce__ = __webpack_require__(188); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return __WEBPACK_IMPORTED_MODULE_60__internal_operators_reduce__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__internal_operators_repeat__ = __webpack_require__(885); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return __WEBPACK_IMPORTED_MODULE_61__internal_operators_repeat__["a"]; }); @@ -26060,7 +26101,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return __WEBPACK_IMPORTED_MODULE_87__internal_operators_throttle__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__internal_operators_throttleTime__ = __webpack_require__(905); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return __WEBPACK_IMPORTED_MODULE_88__internal_operators_throttleTime__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__internal_operators_throwIfEmpty__ = __webpack_require__(188); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__internal_operators_throwIfEmpty__ = __webpack_require__(189); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return __WEBPACK_IMPORTED_MODULE_89__internal_operators_throwIfEmpty__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__internal_operators_timeInterval__ = __webpack_require__(906); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return __WEBPACK_IMPORTED_MODULE_90__internal_operators_timeInterval__["a"]; }); @@ -26629,7 +26670,7 @@ exports.home = undefined; var _rootUser; function _load_rootUser() { - return _rootUser = _interopRequireDefault(__webpack_require__(223)); + return _rootUser = _interopRequireDefault(__webpack_require__(224)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -26708,7 +26749,7 @@ var IE8_DOM_DEFINE = __webpack_require__(238); var toPrimitive = __webpack_require__(255); var dP = Object.defineProperty; -exports.f = __webpack_require__(51) ? Object.defineProperty : function defineProperty(O, P, Attributes) { +exports.f = __webpack_require__(52) ? Object.defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); @@ -26743,7 +26784,7 @@ var Schema = __webpack_require__(44); module.exports = Schema.DEFAULT = new Schema({ include: [ - __webpack_require__(55) + __webpack_require__(56) ], explicit: [ __webpack_require__(290), @@ -29586,7 +29627,7 @@ function _load_baseResolver() { var _npmResolver; function _load_npmResolver() { - return _npmResolver = _interopRequireDefault(__webpack_require__(217)); + return _npmResolver = _interopRequireDefault(__webpack_require__(218)); } var _yarnResolver; @@ -29616,7 +29657,7 @@ function _load_githubResolver() { var _fileResolver; function _load_fileResolver() { - return _fileResolver = _interopRequireDefault(__webpack_require__(215)); + return _fileResolver = _interopRequireDefault(__webpack_require__(216)); } var _linkResolver; @@ -29634,7 +29675,7 @@ function _load_gitlabResolver() { var _gistResolver; function _load_gistResolver() { - return _gistResolver = _interopRequireDefault(__webpack_require__(216)); + return _gistResolver = _interopRequireDefault(__webpack_require__(217)); } var _bitbucketResolver; @@ -29646,7 +29687,7 @@ function _load_bitbucketResolver() { var _hostedGitResolver; function _load_hostedGitResolver() { - return _hostedGitResolver = __webpack_require__(109); + return _hostedGitResolver = __webpack_require__(110); } var _registryResolver; @@ -29730,7 +29771,7 @@ for (const key in registries) { var _ = __webpack_require__(38); var chalk = __webpack_require__(30); -var runAsync = __webpack_require__(181); +var runAsync = __webpack_require__(182); var { filter, flatMap, share, take, takeUntil } = __webpack_require__(63); var Choices = __webpack_require__(686); var ScreenManager = __webpack_require__(697); @@ -29878,7 +29919,7 @@ module.exports = Prompt; "use strict"; -var { fromEvent } = __webpack_require__(182); +var { fromEvent } = __webpack_require__(183); var { filter, map, share } = __webpack_require__(63); function normalizeKeypressEvents(value, key) { @@ -32370,7 +32411,7 @@ var PrivateKey = __webpack_require__(33); var pkcs1 = __webpack_require__(327); var pkcs8 = __webpack_require__(157); -var sshpriv = __webpack_require__(192); +var sshpriv = __webpack_require__(193); var rfc4253 = __webpack_require__(103); var errors = __webpack_require__(74); @@ -32567,7 +32608,7 @@ exports.SCOPE_SEPARATOR = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -32585,13 +32626,13 @@ function _load_constants() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _npmResolver; function _load_npmResolver() { - return _npmResolver = _interopRequireDefault(__webpack_require__(217)); + return _npmResolver = _interopRequireDefault(__webpack_require__(218)); } var _envReplace; @@ -32645,7 +32686,7 @@ function _load_errors() { var _login; function _load_login() { - return _login = __webpack_require__(107); + return _login = __webpack_require__(108); } var _path2; @@ -33225,7 +33266,7 @@ module.exports = function (it) { /* 92 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(52); +var isObject = __webpack_require__(53); var document = __webpack_require__(17).document; // typeof document.createElement is 'object' in old IE var is = isObject(document) && isObject(document.createElement); @@ -33272,7 +33313,7 @@ module.exports.f = function (C) { var def = __webpack_require__(72).f; var has = __webpack_require__(71); -var TAG = __webpack_require__(20)('toStringTag'); +var TAG = __webpack_require__(21)('toStringTag'); module.exports = function (it, tag, stat) { if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); @@ -33307,7 +33348,7 @@ module.exports = function (it) { /***/ (function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(170); +var IObject = __webpack_require__(171); var defined = __webpack_require__(91); module.exports = function (it) { return IObject(defined(it)); @@ -33360,7 +33401,7 @@ module.exports = function (it) { module.exports = glob -var fs = __webpack_require__(5) +var fs = __webpack_require__(4) var rp = __webpack_require__(140) var minimatch = __webpack_require__(82) var Minimatch = minimatch.Minimatch @@ -34180,7 +34221,7 @@ if (process.env.READABLE_STREAM === 'disable' && Stream) { exports.Stream = Stream || exports; exports.Readable = exports; exports.Writable = __webpack_require__(408); - exports.Duplex = __webpack_require__(115); + exports.Duplex = __webpack_require__(116); exports.Transform = __webpack_require__(407); exports.PassThrough = __webpack_require__(792); } @@ -34371,6 +34412,85 @@ module.exports = require("tty"); "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getInstallationMethod = exports.version = undefined; + +var _asyncToGenerator2; + +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); +} + +let getInstallationMethod = exports.getInstallationMethod = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { + let installationMethod = originalInstallationMethod; + + // If there's a package.json in the parent directory, it could have an + // override for the installation method, so we should prefer that over + // whatever was originally in Yarn's package.json. This is the case with + // systems such as Homebrew, which take the tarball and modify the + // installation method so we're aware of the fact that Yarn was installed via + // Homebrew (so things like update notifications can point out the correct + // command to upgrade). + try { + const manifestPath = (_path || _load_path()).default.join(__dirname, '..', 'package.json'); + if ((_fs2 || _load_fs2()).default.existsSync(manifestPath)) { + // non-async version is deprecated + const manifest = yield (0, (_fs || _load_fs()).readJson)(manifestPath); + if (manifest.installationMethod) { + installationMethod = manifest.installationMethod; + } + } + } catch (e) { + // Ignore any errors; this is not critical functionality. + } + return installationMethod; + }); + + return function getInstallationMethod() { + return _ref.apply(this, arguments); + }; +})(); + +var _fs; + +function _load_fs() { + return _fs = __webpack_require__(5); +} + +var _fs2; + +function _load_fs2() { + return _fs2 = _interopRequireDefault(__webpack_require__(4)); +} + +var _path; + +function _load_path() { + return _path = _interopRequireDefault(__webpack_require__(0)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// This will be bundled directly in the .js file for production builds +var _require = __webpack_require__(195); /** + * Determines the current version of Yarn itself. + * + */ + +const version = _require.version, + originalInstallationMethod = _require.installationMethod; +exports.version = version; + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); @@ -34847,7 +34967,7 @@ function parseWithConflict(str, fileLoc) { } /***/ }), -/* 106 */ +/* 107 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -34862,7 +34982,7 @@ module.exports = { toHash: toHash, getProperty: getProperty, escapeQuotes: escapeQuotes, - equal: __webpack_require__(204), + equal: __webpack_require__(205), ucs2length: __webpack_require__(480), varOccurences: varOccurences, varReplace: varReplace, @@ -35121,7 +35241,7 @@ function unescapeJsonPointer(str) { /***/ }), -/* 107 */ +/* 108 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35306,7 +35426,7 @@ function setFlags(commander) { } /***/ }), -/* 108 */ +/* 109 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35620,7 +35740,7 @@ class BaseReporter { exports.default = BaseReporter; /***/ }), -/* 109 */ +/* 110 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -35647,7 +35767,7 @@ function _load_errors() { var _index; function _load_index() { - return _index = __webpack_require__(57); + return _index = __webpack_require__(58); } var _gitResolver; @@ -35665,7 +35785,7 @@ function _load_exoticResolver() { var _git; function _load_git() { - return _git = _interopRequireDefault(__webpack_require__(219)); + return _git = _interopRequireDefault(__webpack_require__(220)); } var _guessName; @@ -35913,7 +36033,7 @@ class HostedGitResolver extends (_exoticResolver || _load_exoticResolver()).defa exports.default = HostedGitResolver; /***/ }), -/* 110 */ +/* 111 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36058,7 +36178,7 @@ class BlockingQueue { exports.default = BlockingQueue; /***/ }), -/* 111 */ +/* 112 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -36072,7 +36192,7 @@ exports.execCommand = exports.execFromManifest = exports.executeLifecycleScript var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -36478,13 +36598,13 @@ function _load_constants() { var _child; function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(58)); + return _child = _interopRequireWildcard(__webpack_require__(50)); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _dynamicRequire; @@ -36550,7 +36670,7 @@ function checkForGypIfNeeded(config, cmd, paths) { } /***/ }), -/* 112 */ +/* 113 */ /***/ (function(module, exports) { module.exports = function (exec) { @@ -36563,7 +36683,7 @@ module.exports = function (exec) { /***/ }), -/* 113 */ +/* 114 */ /***/ (function(module, exports) { // Copyright Joyent, Inc. and other Node contributors. @@ -36676,7 +36796,7 @@ function objectToString(o) { /***/ }), -/* 114 */ +/* 115 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37114,7 +37234,7 @@ module.exports = micromatch; /***/ }), -/* 115 */ +/* 116 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -37148,7 +37268,7 @@ module.exports = micromatch; /**/ -var pna = __webpack_require__(180); +var pna = __webpack_require__(181); /**/ /**/ @@ -37163,7 +37283,7 @@ var objectKeys = Object.keys || function (obj) { module.exports = Duplex; /**/ -var util = __webpack_require__(113); +var util = __webpack_require__(114); util.inherits = __webpack_require__(61); /**/ @@ -37251,7 +37371,7 @@ Duplex.prototype._destroy = function (err, cb) { }; /***/ }), -/* 116 */ +/* 117 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -37299,7 +37419,7 @@ var MulticastOperator = /*@__PURE__*/ (function () { /***/ }), -/* 117 */ +/* 118 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -37310,7 +37430,7 @@ var observable = typeof Symbol === 'function' && Symbol.observable || '@@observa /***/ }), -/* 118 */ +/* 119 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -37323,7 +37443,7 @@ function identity(x) { /***/ }), -/* 119 */ +/* 120 */ /***/ (function(module, exports, __webpack_require__) { var v1 = __webpack_require__(957); @@ -37336,85 +37456,6 @@ uuid.v4 = v4; module.exports = uuid; -/***/ }), -/* 120 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getInstallationMethod = exports.version = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); -} - -let getInstallationMethod = exports.getInstallationMethod = (() => { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - let installationMethod = originalInstallationMethod; - - // If there's a package.json in the parent directory, it could have an - // override for the installation method, so we should prefer that over - // whatever was originally in Yarn's package.json. This is the case with - // systems such as Homebrew, which take the tarball and modify the - // installation method so we're aware of the fact that Yarn was installed via - // Homebrew (so things like update notifications can point out the correct - // command to upgrade). - try { - const manifestPath = (_path || _load_path()).default.join(__dirname, '..', 'package.json'); - if ((_fs2 || _load_fs2()).default.existsSync(manifestPath)) { - // non-async version is deprecated - const manifest = yield (0, (_fs || _load_fs()).readJson)(manifestPath); - if (manifest.installationMethod) { - installationMethod = manifest.installationMethod; - } - } - } catch (e) { - // Ignore any errors; this is not critical functionality. - } - return installationMethod; - }); - - return function getInstallationMethod() { - return _ref.apply(this, arguments); - }; -})(); - -var _fs; - -function _load_fs() { - return _fs = __webpack_require__(4); -} - -var _fs2; - -function _load_fs2() { - return _fs2 = _interopRequireDefault(__webpack_require__(5)); -} - -var _path; - -function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(0)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// This will be bundled directly in the .js file for production builds -var _require = __webpack_require__(194); /** - * Determines the current version of Yarn itself. - * - */ - -const version = _require.version, - originalInstallationMethod = _require.installationMethod; -exports.version = version; - /***/ }), /* 121 */ /***/ (function(module, exports, __webpack_require__) { @@ -37707,13 +37748,13 @@ function _load_errors() { var _index; function _load_index() { - return _index = __webpack_require__(57); + return _index = __webpack_require__(58); } var _baseReporter; function _load_baseReporter() { - return _baseReporter = _interopRequireDefault(__webpack_require__(108)); + return _baseReporter = _interopRequireDefault(__webpack_require__(109)); } var _buildSubCommands2; @@ -37749,7 +37790,7 @@ function _load_remove() { var _upgrade; function _load_upgrade() { - return _upgrade = __webpack_require__(207); + return _upgrade = __webpack_require__(208); } var _upgradeInteractive; @@ -37761,7 +37802,7 @@ function _load_upgradeInteractive() { var _packageLinker; function _load_packageLinker() { - return _packageLinker = __webpack_require__(211); + return _packageLinker = __webpack_require__(212); } var _constants; @@ -37773,7 +37814,7 @@ function _load_constants() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -38017,7 +38058,7 @@ function _load_workspaceResolver() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _normalizePattern4; @@ -38030,7 +38071,7 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const micromatch = __webpack_require__(114); +const micromatch = __webpack_require__(115); class PackageRequest { constructor(req, resolver) { @@ -38589,7 +38630,7 @@ function _load_guessName() { var _index2; function _load_index2() { - return _index2 = __webpack_require__(57); + return _index2 = __webpack_require__(58); } var _exoticResolver; @@ -38601,7 +38642,7 @@ function _load_exoticResolver() { var _git; function _load_git() { - return _git = _interopRequireDefault(__webpack_require__(219)); + return _git = _interopRequireDefault(__webpack_require__(220)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -38858,7 +38899,7 @@ function _load_errors() { var _util; function _load_util() { - return _util = __webpack_require__(221); + return _util = __webpack_require__(222); } var _typos; @@ -39022,7 +39063,7 @@ function cleanDependencies(info, isRoot, reporter, warn) { // getting tag from 19.1.3.6 Object.prototype.toString() var cof = __webpack_require__(69); -var TAG = __webpack_require__(20)('toStringTag'); +var TAG = __webpack_require__(21)('toStringTag'); // ES3 wrong here var ARG = cof(function () { return arguments; }()) == 'Arguments'; @@ -39073,11 +39114,11 @@ var LIBRARY = __webpack_require__(93); var $export = __webpack_require__(60); var redefine = __webpack_require__(251); var hide = __webpack_require__(42); -var Iterators = __webpack_require__(53); +var Iterators = __webpack_require__(54); var $iterCreate = __webpack_require__(242); var setToStringTag = __webpack_require__(95); var getPrototypeOf = __webpack_require__(248); -var ITERATOR = __webpack_require__(20)('iterator'); +var ITERATOR = __webpack_require__(21)('iterator'); var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` var FF_ITERATOR = '@@iterator'; var KEYS = 'keys'; @@ -39157,7 +39198,7 @@ module.exports = function (exec) { /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(35); -var isObject = __webpack_require__(52); +var isObject = __webpack_require__(53); var newPromiseCapability = __webpack_require__(94); module.exports = function (C, x) { @@ -39209,7 +39250,7 @@ var store = global[SHARED] || (global[SHARED] = {}); // 7.3.20 SpeciesConstructor(O, defaultConstructor) var anObject = __webpack_require__(35); var aFunction = __webpack_require__(68); -var SPECIES = __webpack_require__(20)('species'); +var SPECIES = __webpack_require__(21)('species'); module.exports = function (O, D) { var C = anObject(O).constructor; var S; @@ -40139,7 +40180,7 @@ realpath.realpathSync = realpathSync realpath.monkeypatch = monkeypatch realpath.unmonkeypatch = unmonkeypatch -var fs = __webpack_require__(5) +var fs = __webpack_require__(4) var origRealpath = fs.realpath var origRealpathSync = fs.realpathSync @@ -40520,7 +40561,7 @@ module.exports = new Schema({ /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(0); -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); var _0777 = parseInt('0777', 8); module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; @@ -42772,7 +42813,7 @@ Object.defineProperty(exports, "__esModule", { var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -42786,7 +42827,7 @@ exports.extractWorkspaces = extractWorkspaces; var _executeLifecycleScript; function _load_executeLifecycleScript() { - return _executeLifecycleScript = __webpack_require__(111); + return _executeLifecycleScript = __webpack_require__(112); } var _path; @@ -42804,7 +42845,7 @@ function _load_conversion() { var _index; function _load_index() { - return _index = _interopRequireDefault(__webpack_require__(220)); + return _index = _interopRequireDefault(__webpack_require__(221)); } var _errors; @@ -42816,7 +42857,7 @@ function _load_errors() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _constants; @@ -42840,13 +42881,13 @@ function _load_requestManager() { var _index2; function _load_index2() { - return _index2 = __webpack_require__(57); + return _index2 = __webpack_require__(58); } var _index3; function _load_index3() { - return _index3 = __webpack_require__(200); + return _index3 = __webpack_require__(201); } var _map; @@ -42863,7 +42904,7 @@ const crypto = __webpack_require__(11); const detectIndent = __webpack_require__(635); const invariant = __webpack_require__(9); const path = __webpack_require__(0); -const micromatch = __webpack_require__(114); +const micromatch = __webpack_require__(115); const isCi = __webpack_require__(397); function sortObject(object) { @@ -43952,7 +43993,7 @@ function _load_asyncToGenerator() { var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } let run = exports.run = (() => { @@ -44028,7 +44069,7 @@ function _load_constants() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _invariant; @@ -44622,7 +44663,7 @@ exports.hasWrapper = hasWrapper; var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _filter; @@ -44641,10 +44682,10 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const zlib = __webpack_require__(198); +const zlib = __webpack_require__(199); const path = __webpack_require__(0); -const tar = __webpack_require__(193); -const fs2 = __webpack_require__(5); +const tar = __webpack_require__(194); +const fs2 = __webpack_require__(4); const depsFor = __webpack_require__(678); const FOLDERS_IGNORE = [ @@ -44703,7 +44744,7 @@ function _load_asyncToGenerator() { var _index; function _load_index() { - return _index = _interopRequireDefault(__webpack_require__(220)); + return _index = _interopRequireDefault(__webpack_require__(221)); } var _constants; @@ -44715,7 +44756,7 @@ function _load_constants() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _mutex; @@ -44730,7 +44771,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de /* eslint no-unused-vars: 0 */ -const cmdShim = __webpack_require__(201); +const cmdShim = __webpack_require__(202); const path = __webpack_require__(0); class BaseFetcher { @@ -44967,6 +45008,139 @@ function guessName(source) { /* 170 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.satisfiesWithPrereleases = satisfiesWithPrereleases; +exports.diffWithUnstable = diffWithUnstable; + +var _semver; + +function _load_semver() { + return _semver = _interopRequireDefault(__webpack_require__(22)); +} + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns whether the given semver version satisfies the given range. Notably this supports + * prerelease versions so that "2.0.0-rc.0" satisfies the range ">=1.0.0", for example. + */ + +function satisfiesWithPrereleases(version, range, loose = false) { + let semverRange; + try { + // $FlowFixMe: Add a definition for the Range class + semverRange = new (_semver || _load_semver()).default.Range(range, loose); + } catch (err) { + return false; + } + + if (!version) { + return false; + } + let semverVersion; + try { + semverVersion = new (_semver || _load_semver()).default.SemVer(version, semverRange.loose); + } catch (err) { + return false; + } + + // A range has multiple sets of comparators. A version must satisfy all comparators in a set + // and at least one set to satisfy the range. + return semverRange.set.some(comparatorSet => { + // node-semver converts ~ and ^ ranges into pairs of >= and < ranges but the upper bounds don't + // properly exclude prerelease versions. For example, "^1.0.0" is converted to ">=1.0.0 <2.0.0", + // which includes "2.0.0-pre" since prerelease versions are lower than their non-prerelease + // counterparts. As a practical workaround we make upper-bound ranges exclude prereleases and + // convert "<2.0.0" to "<2.0.0-0", for example. + comparatorSet = comparatorSet.map(comparator => { + if (comparator.operator !== '<' || !comparator.value || comparator.semver.prerelease.length) { + return comparator; + } + + // "0" is the lowest prerelease version + comparator.semver.inc('pre', 0); + + const comparatorString = comparator.operator + comparator.semver.version; + // $FlowFixMe: Add a definition for the Comparator class + return new (_semver || _load_semver()).default.Comparator(comparatorString, comparator.loose); + }); + + return !comparatorSet.some(comparator => !comparator.test(semverVersion)); + }); +} + +const PRE_RELEASES = { + major: 'premajor', + minor: 'preminor', + patch: 'prepatch' +}; + +/** + * Returns the difference between two versions as a semantic string representation. + * Similar to the `diff` method in node-semver, but it also accounts for unstable versions, + * like 0.x.x or 0.0.x. + */ + +function diffWithUnstable(version1, version2) { + if ((_semver || _load_semver()).default.eq(version1, version2) === false) { + const v1 = (_semver || _load_semver()).default.parse(version1); + const v2 = (_semver || _load_semver()).default.parse(version2); + + if (v1 != null && v2 != null) { + const isPreRelease = v1.prerelease.length > 0 || v2.prerelease.length > 0; + const preMajor = v1.major === 0 || v2.major === 0; + const preMinor = preMajor && (v1.minor === 0 || v2.minor === 0); + + let diff = null; + + if (v1.major !== v2.major) { + diff = 'major'; + } else if (v1.minor !== v2.minor) { + if (preMajor) { + // If the major version number is zero (0.x.x), treat a change + // of the minor version number as a major change. + diff = 'major'; + } else { + diff = 'minor'; + } + } else if (v1.patch !== v2.patch) { + if (preMinor) { + // If the major & minor version numbers are zero (0.0.x), treat a change + // of the patch version number as a major change. + diff = 'major'; + } else if (preMajor) { + // If the major version number is zero (0.x.x), treat a change + // of the patch version number as a minor change. + diff = 'minor'; + } else { + diff = 'patch'; + } + } + + if (isPreRelease) { + if (diff != null) { + diff = PRE_RELEASES[diff]; + } else { + diff = 'prerelease'; + } + } + + return diff; + } + } + + return null; +} + +/***/ }), +/* 171 */ +/***/ (function(module, exports, __webpack_require__) { + // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(69); // eslint-disable-next-line no-prototype-builtins @@ -44976,7 +45150,7 @@ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { /***/ }), -/* 171 */ +/* 172 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) @@ -44989,7 +45163,7 @@ module.exports = Object.keys || function keys(O) { /***/ }), -/* 172 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) @@ -45000,7 +45174,7 @@ module.exports = function (it) { /***/ }), -/* 173 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { var once = __webpack_require__(83); @@ -45093,7 +45267,7 @@ module.exports = eos; /***/ }), -/* 174 */ +/* 175 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2012 Joyent, Inc. All rights reserved. @@ -45211,7 +45385,7 @@ module.exports = { /***/ }), -/* 175 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45255,7 +45429,7 @@ module.exports = Separator; /***/ }), -/* 176 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45315,7 +45489,7 @@ module.exports = Paginator; /***/ }), -/* 177 */ +/* 178 */ /***/ (function(module, exports) { /*! @@ -45332,7 +45506,7 @@ module.exports = function isExtglob(str) { /***/ }), -/* 178 */ +/* 179 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -45342,7 +45516,7 @@ module.exports = function isExtglob(str) { * Licensed under the MIT License. */ -var isExtglob = __webpack_require__(177); +var isExtglob = __webpack_require__(178); module.exports = function isGlob(str) { return typeof str === 'string' @@ -45351,7 +45525,7 @@ module.exports = function isGlob(str) { }; /***/ }), -/* 179 */ +/* 180 */ /***/ (function(module, exports, __webpack_require__) { var isBuffer = __webpack_require__(729); @@ -45473,7 +45647,7 @@ module.exports = function kindOf(val) { /***/ }), -/* 180 */ +/* 181 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45524,7 +45698,7 @@ function nextTick(fn, arg1, arg2, arg3) { /***/ }), -/* 181 */ +/* 182 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -45592,7 +45766,7 @@ runAsync.cb = function (func, cb) { /***/ }), -/* 182 */ +/* 183 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -45603,7 +45777,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return __WEBPACK_IMPORTED_MODULE_1__internal_observable_ConnectableObservable__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_operators_groupBy__ = __webpack_require__(433); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return __WEBPACK_IMPORTED_MODULE_2__internal_operators_groupBy__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__ = __webpack_require__(117); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__ = __webpack_require__(118); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return __WEBPACK_IMPORTED_MODULE_3__internal_symbol_observable__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_Subject__ = __webpack_require__(36); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return __WEBPACK_IMPORTED_MODULE_4__internal_Subject__["a"]; }); @@ -45611,7 +45785,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return __WEBPACK_IMPORTED_MODULE_5__internal_BehaviorSubject__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_ReplaySubject__ = __webpack_require__(308); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return __WEBPACK_IMPORTED_MODULE_6__internal_ReplaySubject__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__ = __webpack_require__(183); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__ = __webpack_require__(184); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return __WEBPACK_IMPORTED_MODULE_7__internal_AsyncSubject__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__internal_scheduler_asap__ = __webpack_require__(438); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return __WEBPACK_IMPORTED_MODULE_8__internal_scheduler_asap__["a"]; }); @@ -45630,13 +45804,13 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return __WEBPACK_IMPORTED_MODULE_14__internal_Subscription__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__internal_Subscriber__ = __webpack_require__(7); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return __WEBPACK_IMPORTED_MODULE_15__internal_Subscriber__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__internal_Notification__ = __webpack_require__(184); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__internal_Notification__ = __webpack_require__(185); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return __WEBPACK_IMPORTED_MODULE_16__internal_Notification__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__internal_util_pipe__ = __webpack_require__(324); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return __WEBPACK_IMPORTED_MODULE_17__internal_util_pipe__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__ = __webpack_require__(191); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__ = __webpack_require__(192); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return __WEBPACK_IMPORTED_MODULE_18__internal_util_noop__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__ = __webpack_require__(118); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__ = __webpack_require__(119); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return __WEBPACK_IMPORTED_MODULE_19__internal_util_identity__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__internal_util_isObservable__ = __webpack_require__(930); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return __WEBPACK_IMPORTED_MODULE_20__internal_util_isObservable__["a"]; }); @@ -45644,7 +45818,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return __WEBPACK_IMPORTED_MODULE_21__internal_util_ArgumentOutOfRangeError__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__internal_util_EmptyError__ = __webpack_require__(153); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return __WEBPACK_IMPORTED_MODULE_22__internal_util_EmptyError__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__ = __webpack_require__(189); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__ = __webpack_require__(190); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return __WEBPACK_IMPORTED_MODULE_23__internal_util_ObjectUnsubscribedError__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__internal_util_UnsubscriptionError__ = __webpack_require__(441); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return __WEBPACK_IMPORTED_MODULE_24__internal_util_UnsubscriptionError__["a"]; }); @@ -45656,7 +45830,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return __WEBPACK_IMPORTED_MODULE_27__internal_observable_bindNodeCallback__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__internal_observable_combineLatest__ = __webpack_require__(309); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return __WEBPACK_IMPORTED_MODULE_28__internal_observable_combineLatest__["a"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__ = __webpack_require__(186); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__ = __webpack_require__(187); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return __WEBPACK_IMPORTED_MODULE_29__internal_observable_concat__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__internal_observable_defer__ = __webpack_require__(310); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return __WEBPACK_IMPORTED_MODULE_30__internal_observable_defer__["a"]; }); @@ -45700,7 +45874,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return __WEBPACK_IMPORTED_MODULE_49__internal_observable_zip__["a"]; }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return __WEBPACK_IMPORTED_MODULE_31__internal_observable_empty__["b"]; }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return __WEBPACK_IMPORTED_MODULE_40__internal_observable_never__["b"]; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_config__ = __webpack_require__(185); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__internal_config__ = __webpack_require__(186); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return __WEBPACK_IMPORTED_MODULE_50__internal_config__["a"]; }); /** PURE_IMPORTS_START PURE_IMPORTS_END */ @@ -45760,7 +45934,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /***/ }), -/* 183 */ +/* 184 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -45818,7 +45992,7 @@ var AsyncSubject = /*@__PURE__*/ (function (_super) { /***/ }), -/* 184 */ +/* 185 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -45899,7 +46073,7 @@ var Notification = /*@__PURE__*/ (function () { /***/ }), -/* 185 */ +/* 186 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -45926,7 +46100,7 @@ var config = { /***/ }), -/* 186 */ +/* 187 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -45954,7 +46128,7 @@ function concat() { /***/ }), -/* 187 */ +/* 188 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -45982,7 +46156,7 @@ function reduce(accumulator, seed) { /***/ }), -/* 188 */ +/* 189 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -46013,7 +46187,7 @@ function defaultErrorFactory() { /***/ }), -/* 189 */ +/* 190 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -46031,7 +46205,7 @@ var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl; /***/ }), -/* 190 */ +/* 191 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -46046,7 +46220,7 @@ function isNumeric(val) { /***/ }), -/* 191 */ +/* 192 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -46057,7 +46231,7 @@ function noop() { } /***/ }), -/* 192 */ +/* 193 */ /***/ (function(module, exports, __webpack_require__) { // Copyright 2015 Joyent, Inc. @@ -46325,14 +46499,14 @@ function write(key, options) { /***/ }), -/* 193 */ +/* 194 */ /***/ (function(module, exports, __webpack_require__) { var chownr = __webpack_require__(600) var tar = __webpack_require__(460) var pump = __webpack_require__(781) var mkdirp = __webpack_require__(145) -var fs = __webpack_require__(5) +var fs = __webpack_require__(4) var path = __webpack_require__(0) var os = __webpack_require__(46) @@ -46676,37 +46850,37 @@ function mkdirfix (name, opts, cb) { /***/ }), -/* 194 */ +/* 195 */ /***/ (function(module, exports) { -module.exports = {"name":"yarn","installationMethod":"unknown","version":"1.22.10","license":"BSD-2-Clause","preferGlobal":true,"description":"📦🐈 Fast, reliable, and secure dependency management.","dependencies":{"@zkochan/cmd-shim":"^3.1.0","babel-runtime":"^6.26.0","bytes":"^3.0.0","camelcase":"^4.0.0","chalk":"^2.1.0","cli-table3":"^0.4.0","commander":"^2.9.0","death":"^1.0.0","debug":"^3.0.0","deep-equal":"^1.0.1","detect-indent":"^5.0.0","dnscache":"^1.0.1","glob":"^7.1.1","gunzip-maybe":"^1.4.0","hash-for-dep":"^1.2.3","imports-loader":"^0.8.0","ini":"^1.3.4","inquirer":"^6.2.0","invariant":"^2.2.0","is-builtin-module":"^2.0.0","is-ci":"^1.0.10","is-webpack-bundle":"^1.0.0","js-yaml":"^3.13.1","leven":"^2.0.0","loud-rejection":"^1.2.0","micromatch":"^2.3.11","mkdirp":"^0.5.1","node-emoji":"^1.6.1","normalize-url":"^2.0.0","npm-logical-tree":"^1.2.1","object-path":"^0.11.2","proper-lockfile":"^2.0.0","puka":"^1.0.0","read":"^1.0.7","request":"^2.87.0","request-capture-har":"^1.2.2","rimraf":"^2.5.0","semver":"^5.1.0","ssri":"^5.3.0","strip-ansi":"^4.0.0","strip-bom":"^3.0.0","tar-fs":"^1.16.0","tar-stream":"^1.6.1","uuid":"^3.0.1","v8-compile-cache":"^2.0.0","validate-npm-package-license":"^3.0.4","yn":"^2.0.0"},"devDependencies":{"babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-loader":"^6.2.5","babel-plugin-array-includes":"^2.0.3","babel-plugin-inline-import":"^3.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-inline-imports-commonjs":"^1.0.0","babel-plugin-transform-runtime":"^6.4.3","babel-preset-env":"^1.6.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.0.0","babylon":"^6.5.0","commitizen":"^2.9.6","cz-conventional-changelog":"^2.0.0","eslint":"^4.3.0","eslint-config-fb-strict":"^22.0.0","eslint-plugin-babel":"^5.0.0","eslint-plugin-flowtype":"^2.35.0","eslint-plugin-jasmine":"^2.6.2","eslint-plugin-jest":"^21.0.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-prefer-object-spread":"^1.2.1","eslint-plugin-prettier":"^2.1.2","eslint-plugin-react":"^7.1.0","eslint-plugin-relay":"^0.0.28","eslint-plugin-yarn-internal":"file:scripts/eslint-rules","execa":"^0.11.0","fancy-log":"^1.3.2","flow-bin":"^0.66.0","git-release-notes":"^3.0.0","gulp":"^4.0.0","gulp-babel":"^7.0.0","gulp-if":"^2.0.1","gulp-newer":"^1.0.0","gulp-plumber":"^1.0.1","gulp-sourcemaps":"^2.2.0","jest":"^22.4.4","jsinspect":"^0.12.6","minimatch":"^3.0.4","mock-stdin":"^0.3.0","prettier":"^1.5.2","string-replace-loader":"^2.1.1","temp":"^0.8.3","webpack":"^2.1.0-beta.25","yargs":"^6.3.0"},"resolutions":{"sshpk":"^1.14.2"},"engines":{"node":">=4.0.0"},"repository":"yarnpkg/yarn","bin":{"yarn":"./bin/yarn.js","yarnpkg":"./bin/yarn.js"},"scripts":{"build":"gulp build","build-bundle":"node ./scripts/build-webpack.js","build-chocolatey":"powershell ./scripts/build-chocolatey.ps1","build-deb":"./scripts/build-deb.sh","build-dist":"bash ./scripts/build-dist.sh","build-win-installer":"scripts\\build-windows-installer.bat","changelog":"git-release-notes $(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^)..$(git describe --tags --abbrev=0) scripts/changelog.md","dupe-check":"yarn jsinspect ./src","lint":"eslint . && flow check","pkg-tests":"yarn --cwd packages/pkg-tests jest yarn.test.js","prettier":"eslint src __tests__ --fix","release-branch":"./scripts/release-branch.sh","test":"yarn lint && yarn test-only","test-only":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --verbose","test-only-debug":"node --inspect-brk --max_old_space_size=4096 node_modules/jest/bin/jest.js --runInBand --verbose","test-coverage":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --coverage --verbose","watch":"gulp watch","commit":"git-cz"},"jest":{"collectCoverageFrom":["src/**/*.js"],"testEnvironment":"node","modulePathIgnorePatterns":["__tests__/fixtures/","packages/pkg-tests/pkg-tests-fixtures","dist/"],"testPathIgnorePatterns":["__tests__/(fixtures|__mocks__)/","updates/","_(temp|mock|install|init|helpers).js$","packages/pkg-tests"]},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}}} +module.exports = {"name":"yarn","installationMethod":"unknown","version":"1.22.17","license":"BSD-2-Clause","preferGlobal":true,"description":"📦🐈 Fast, reliable, and secure dependency management.","dependencies":{"@zkochan/cmd-shim":"^3.1.0","babel-runtime":"^6.26.0","bytes":"^3.0.0","camelcase":"^4.0.0","chalk":"^2.1.0","cli-table3":"^0.4.0","commander":"^2.9.0","death":"^1.0.0","debug":"^3.0.0","deep-equal":"^1.0.1","detect-indent":"^5.0.0","dnscache":"^1.0.1","glob":"^7.1.1","gunzip-maybe":"^1.4.0","hash-for-dep":"^1.2.3","imports-loader":"^0.8.0","ini":"^1.3.4","inquirer":"^6.2.0","invariant":"^2.2.0","is-builtin-module":"^2.0.0","is-ci":"^1.0.10","is-webpack-bundle":"^1.0.0","js-yaml":"^3.13.1","leven":"^2.0.0","loud-rejection":"^1.2.0","micromatch":"^2.3.11","mkdirp":"^0.5.1","node-emoji":"^1.6.1","normalize-url":"^2.0.0","npm-logical-tree":"^1.2.1","object-path":"^0.11.2","proper-lockfile":"^2.0.0","puka":"^1.0.0","read":"^1.0.7","request":"^2.87.0","request-capture-har":"^1.2.2","rimraf":"^2.5.0","semver":"^5.1.0","ssri":"^5.3.0","strip-ansi":"^4.0.0","strip-bom":"^3.0.0","tar-fs":"^1.16.0","tar-stream":"^1.6.1","uuid":"^3.0.1","v8-compile-cache":"^2.0.0","validate-npm-package-license":"^3.0.4","yn":"^2.0.0"},"devDependencies":{"babel-core":"^6.26.0","babel-eslint":"^7.2.3","babel-loader":"^6.2.5","babel-plugin-array-includes":"^2.0.3","babel-plugin-inline-import":"^3.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-inline-imports-commonjs":"^1.0.0","babel-plugin-transform-runtime":"^6.4.3","babel-preset-env":"^1.6.0","babel-preset-flow":"^6.23.0","babel-preset-stage-0":"^6.0.0","babylon":"^6.5.0","commitizen":"^2.9.6","cz-conventional-changelog":"^2.0.0","eslint":"^4.3.0","eslint-config-fb-strict":"^22.0.0","eslint-plugin-babel":"^5.0.0","eslint-plugin-flowtype":"^2.35.0","eslint-plugin-jasmine":"^2.6.2","eslint-plugin-jest":"^21.0.0","eslint-plugin-jsx-a11y":"^6.0.2","eslint-plugin-prefer-object-spread":"^1.2.1","eslint-plugin-prettier":"^2.1.2","eslint-plugin-react":"^7.1.0","eslint-plugin-relay":"^0.0.28","eslint-plugin-yarn-internal":"file:scripts/eslint-rules","execa":"^0.11.0","fancy-log":"^1.3.2","flow-bin":"^0.66.0","git-release-notes":"^3.0.0","gulp":"^4.0.0","gulp-babel":"^7.0.0","gulp-if":"^2.0.1","gulp-newer":"^1.0.0","gulp-plumber":"^1.0.1","gulp-sourcemaps":"^2.2.0","jest":"^22.4.4","jsinspect":"^0.12.6","minimatch":"^3.0.4","mock-stdin":"^0.3.0","prettier":"^1.5.2","string-replace-loader":"^2.1.1","temp":"^0.8.3","webpack":"^2.1.0-beta.25","yargs":"^6.3.0"},"resolutions":{"sshpk":"^1.14.2"},"engines":{"node":">=4.0.0"},"repository":"yarnpkg/yarn","bin":{"yarn":"./bin/yarn.js","yarnpkg":"./bin/yarn.js"},"scripts":{"build":"gulp build","build-bundle":"node ./scripts/build-webpack.js","build-chocolatey":"powershell ./scripts/build-chocolatey.ps1","build-deb":"./scripts/build-deb.sh","build-dist":"bash ./scripts/build-dist.sh","build-win-installer":"scripts\\build-windows-installer.bat","changelog":"git-release-notes $(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^)..$(git describe --tags --abbrev=0) scripts/changelog.md","dupe-check":"yarn jsinspect ./src","lint":"eslint . && flow check","pkg-tests":"yarn --cwd packages/pkg-tests jest yarn.test.js","prettier":"eslint src __tests__ --fix","release-branch":"./scripts/release-branch.sh","test":"yarn lint && yarn test-only","test-only":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --verbose","test-only-debug":"node --inspect-brk --max_old_space_size=4096 node_modules/jest/bin/jest.js --runInBand --verbose","test-coverage":"node --max_old_space_size=4096 node_modules/jest/bin/jest.js --coverage --verbose","watch":"gulp watch","commit":"git-cz"},"jest":{"collectCoverageFrom":["src/**/*.js"],"testEnvironment":"node","modulePathIgnorePatterns":["__tests__/fixtures/","packages/pkg-tests/pkg-tests-fixtures","dist/"],"testPathIgnorePatterns":["__tests__/(fixtures|__mocks__)/","updates/","_(temp|mock|install|init|helpers).js$","packages/pkg-tests"]},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}}} /***/ }), -/* 195 */ +/* 196 */ /***/ (function(module, exports) { module.exports = require("https"); /***/ }), -/* 196 */ +/* 197 */ /***/ (function(module, exports) { module.exports = require("querystring"); /***/ }), -/* 197 */ +/* 198 */ /***/ (function(module, exports) { module.exports = require("readline"); /***/ }), -/* 198 */ +/* 199 */ /***/ (function(module, exports) { module.exports = require("zlib"); /***/ }), -/* 199 */ +/* 200 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46732,7 +46906,7 @@ function _load_constants() { var _package; function _load_package() { - return _package = __webpack_require__(194); + return _package = __webpack_require__(195); } const NODE_VERSION = process.version; @@ -46840,7 +47014,7 @@ function stringify(obj, noHeader, enableVersions) { } /***/ }), -/* 200 */ +/* 201 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46892,7 +47066,7 @@ Object.defineProperty(exports, 'EventReporter', { var _jsonReporter; function _load_jsonReporter() { - return _jsonReporter = __webpack_require__(213); + return _jsonReporter = __webpack_require__(214); } Object.defineProperty(exports, 'JSONReporter', { @@ -46918,7 +47092,7 @@ Object.defineProperty(exports, 'NoopReporter', { var _baseReporter; function _load_baseReporter() { - return _baseReporter = __webpack_require__(108); + return _baseReporter = __webpack_require__(109); } Object.defineProperty(exports, 'Reporter', { @@ -46931,7 +47105,7 @@ Object.defineProperty(exports, 'Reporter', { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }), -/* 201 */ +/* 202 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47204,13 +47378,13 @@ function normalizePathEnvVar (nodePath) { /***/ }), -/* 202 */ +/* 203 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var resolve = __webpack_require__(203); +var resolve = __webpack_require__(204); module.exports = { Validation: errorSubclass(ValidationError), @@ -47245,15 +47419,15 @@ function errorSubclass(Subclass) { /***/ }), -/* 203 */ +/* 204 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var url = __webpack_require__(24) - , equal = __webpack_require__(204) - , util = __webpack_require__(106) + , equal = __webpack_require__(205) + , util = __webpack_require__(107) , SchemaObject = __webpack_require__(339) , traverse = __webpack_require__(503); @@ -47523,7 +47697,7 @@ function resolveIds(schema) { /***/ }), -/* 204 */ +/* 205 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47585,7 +47759,7 @@ module.exports = function equal(a, b) { /***/ }), -/* 205 */ +/* 206 */ /***/ (function(module, exports) { // Copyright 2011 Mark Cavage All rights reserved. @@ -47604,7 +47778,7 @@ module.exports = { /***/ }), -/* 206 */ +/* 207 */ /***/ (function(module, exports) { // Copyright 2011 Mark Cavage All rights reserved. @@ -47646,7 +47820,7 @@ module.exports = { /***/ }), -/* 207 */ +/* 208 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47926,7 +48100,7 @@ function hasWrapper(commander, args) { const requireLockfile = exports.requireLockfile = true; /***/ }), -/* 208 */ +/* 209 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47940,7 +48114,7 @@ exports.integrityErrors = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -47958,7 +48132,7 @@ function _load_constants() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _misc; @@ -47970,7 +48144,7 @@ function _load_misc() { var _packageNameUtils; function _load_packageNameUtils() { - return _packageNameUtils = __webpack_require__(222); + return _packageNameUtils = __webpack_require__(223); } var _workspaceLayout; @@ -48548,7 +48722,7 @@ class InstallationIntegrityChecker { exports.default = InstallationIntegrityChecker; /***/ }), -/* 209 */ +/* 210 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48583,13 +48757,13 @@ function _load_misc() { var _yarnVersion; function _load_yarnVersion() { - return _yarnVersion = __webpack_require__(120); + return _yarnVersion = __webpack_require__(105); } var _semver; function _load_semver() { - return _semver = __webpack_require__(224); + return _semver = __webpack_require__(170); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -48720,9 +48894,7 @@ function checkOne(info, config, ignoreEngines) { ref.ignore = true; ref.incompatible = true; - reporter.info(`${human}: ${msg}`); if (!didIgnore) { - reporter.info(reporter.lang('optionalCompatibilityExcluded', human)); didIgnore = true; } } else { @@ -48817,7 +48989,7 @@ function shouldCheck(manifest, options) { } /***/ }), -/* 210 */ +/* 211 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48950,13 +49122,13 @@ function _load_index() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _promise; function _load_promise() { - return _promise = _interopRequireWildcard(__webpack_require__(50)); + return _promise = _interopRequireWildcard(__webpack_require__(51)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -49043,7 +49215,7 @@ function fetch(pkgs, config) { } /***/ }), -/* 211 */ +/* 212 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -49096,7 +49268,7 @@ function _load_constants() { var _promise; function _load_promise() { - return _promise = _interopRequireWildcard(__webpack_require__(50)); + return _promise = _interopRequireWildcard(__webpack_require__(51)); } var _normalizePattern2; @@ -49114,7 +49286,7 @@ function _load_misc() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _mutex; @@ -49126,7 +49298,7 @@ function _load_mutex() { var _semver; function _load_semver() { - return _semver = __webpack_require__(224); + return _semver = __webpack_require__(170); } var _workspaceLayout; @@ -49141,7 +49313,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de const invariant = __webpack_require__(9); -const cmdShim = __webpack_require__(201); +const cmdShim = __webpack_require__(202); const path = __webpack_require__(0); const semver = __webpack_require__(22); // Concurrency for creating bin links disabled because of the issue #1961 @@ -50183,7 +50355,7 @@ class PackageLinker { exports.default = PackageLinker; /***/ }), -/* 212 */ +/* 213 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50205,7 +50377,7 @@ function _load_tty() { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const readline = __webpack_require__(197); +const readline = __webpack_require__(198); var _require = __webpack_require__(30); @@ -50274,7 +50446,7 @@ function clearNthLine(stdout, n) { } /***/ }), -/* 213 */ +/* 214 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50287,13 +50459,13 @@ Object.defineProperty(exports, "__esModule", { var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _baseReporter; function _load_baseReporter() { - return _baseReporter = _interopRequireDefault(__webpack_require__(108)); + return _baseReporter = _interopRequireDefault(__webpack_require__(109)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -50468,7 +50640,7 @@ class JSONReporter extends (_baseReporter || _load_baseReporter()).default { exports.default = JSONReporter; /***/ }), -/* 214 */ +/* 215 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50616,7 +50788,7 @@ const shouldUpdateLockfile = exports.shouldUpdateLockfile = (lockfileEntry, reso }; /***/ }), -/* 215 */ +/* 216 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50648,7 +50820,7 @@ function _load_invariant() { var _uuid; function _load_uuid() { - return _uuid = _interopRequireDefault(__webpack_require__(119)); + return _uuid = _interopRequireDefault(__webpack_require__(120)); } var _errors; @@ -50672,7 +50844,7 @@ function _load_misc() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -50754,7 +50926,7 @@ FileResolver.protocol = 'file'; FileResolver.prefixMatcher = /^\.{1,2}\//; /***/ }), -/* 216 */ +/* 217 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50830,7 +51002,7 @@ exports.default = GistResolver; GistResolver.protocol = 'gist'; /***/ }), -/* 217 */ +/* 218 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -50879,7 +51051,7 @@ function _load_map() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _constants; @@ -50891,7 +51063,7 @@ function _load_constants() { var _packageNameUtils; function _load_packageNameUtils() { - return _packageNameUtils = __webpack_require__(222); + return _packageNameUtils = __webpack_require__(223); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -51119,7 +51291,7 @@ exports.default = NpmResolver; NpmResolver.registry = NPM_REGISTRY_ID; /***/ }), -/* 218 */ +/* 219 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51199,19 +51371,19 @@ let fixTimes = (() => { var _fs; function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(5)); + return _fs = _interopRequireDefault(__webpack_require__(4)); } var _promise; function _load_promise() { - return _promise = __webpack_require__(50); + return _promise = __webpack_require__(51); } var _fs2; function _load_fs2() { - return _fs2 = __webpack_require__(4); + return _fs2 = __webpack_require__(5); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -51317,7 +51489,7 @@ const copyWithBuffer = (() => { }; /***/ }), -/* 219 */ +/* 220 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -51336,7 +51508,7 @@ function _load_asyncToGenerator() { var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _invariant; @@ -51354,7 +51526,7 @@ function _load_string_decoder() { var _tarFs; function _load_tarFs() { - return _tarFs = _interopRequireDefault(__webpack_require__(193)); + return _tarFs = _interopRequireDefault(__webpack_require__(194)); } var _tarStream; @@ -51372,7 +51544,7 @@ function _load_url() { var _fs; function _load_fs() { - return _fs = __webpack_require__(5); + return _fs = __webpack_require__(4); } var _errors; @@ -51402,7 +51574,7 @@ function _load_crypto() { var _fs2; function _load_fs2() { - return _fs2 = _interopRequireWildcard(__webpack_require__(4)); + return _fs2 = _interopRequireWildcard(__webpack_require__(5)); } var _map; @@ -51961,7 +52133,7 @@ class Git { exports.default = Git; /***/ }), -/* 220 */ +/* 221 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52048,7 +52220,7 @@ exports.default = (() => { })(); /***/ }), -/* 221 */ +/* 222 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52177,7 +52349,7 @@ function extractRepositoryUrl(repository) { } /***/ }), -/* 222 */ +/* 223 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52201,7 +52373,7 @@ function getSystemParams() { } /***/ }), -/* 223 */ +/* 224 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -52228,139 +52400,6 @@ function isRootUser(uid) { return uid === 0; } -/***/ }), -/* 224 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.satisfiesWithPrereleases = satisfiesWithPrereleases; -exports.diffWithUnstable = diffWithUnstable; - -var _semver; - -function _load_semver() { - return _semver = _interopRequireDefault(__webpack_require__(22)); -} - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Returns whether the given semver version satisfies the given range. Notably this supports - * prerelease versions so that "2.0.0-rc.0" satisfies the range ">=1.0.0", for example. - */ - -function satisfiesWithPrereleases(version, range, loose = false) { - let semverRange; - try { - // $FlowFixMe: Add a definition for the Range class - semverRange = new (_semver || _load_semver()).default.Range(range, loose); - } catch (err) { - return false; - } - - if (!version) { - return false; - } - let semverVersion; - try { - semverVersion = new (_semver || _load_semver()).default.SemVer(version, semverRange.loose); - } catch (err) { - return false; - } - - // A range has multiple sets of comparators. A version must satisfy all comparators in a set - // and at least one set to satisfy the range. - return semverRange.set.some(comparatorSet => { - // node-semver converts ~ and ^ ranges into pairs of >= and < ranges but the upper bounds don't - // properly exclude prerelease versions. For example, "^1.0.0" is converted to ">=1.0.0 <2.0.0", - // which includes "2.0.0-pre" since prerelease versions are lower than their non-prerelease - // counterparts. As a practical workaround we make upper-bound ranges exclude prereleases and - // convert "<2.0.0" to "<2.0.0-0", for example. - comparatorSet = comparatorSet.map(comparator => { - if (comparator.operator !== '<' || !comparator.value || comparator.semver.prerelease.length) { - return comparator; - } - - // "0" is the lowest prerelease version - comparator.semver.inc('pre', 0); - - const comparatorString = comparator.operator + comparator.semver.version; - // $FlowFixMe: Add a definition for the Comparator class - return new (_semver || _load_semver()).default.Comparator(comparatorString, comparator.loose); - }); - - return !comparatorSet.some(comparator => !comparator.test(semverVersion)); - }); -} - -const PRE_RELEASES = { - major: 'premajor', - minor: 'preminor', - patch: 'prepatch' -}; - -/** - * Returns the difference between two versions as a semantic string representation. - * Similar to the `diff` method in node-semver, but it also accounts for unstable versions, - * like 0.x.x or 0.0.x. - */ - -function diffWithUnstable(version1, version2) { - if ((_semver || _load_semver()).default.eq(version1, version2) === false) { - const v1 = (_semver || _load_semver()).default.parse(version1); - const v2 = (_semver || _load_semver()).default.parse(version2); - - if (v1 != null && v2 != null) { - const isPreRelease = v1.prerelease.length > 0 || v2.prerelease.length > 0; - const preMajor = v1.major === 0 || v2.major === 0; - const preMinor = preMajor && (v1.minor === 0 || v2.minor === 0); - - let diff = null; - - if (v1.major !== v2.major) { - diff = 'major'; - } else if (v1.minor !== v2.minor) { - if (preMajor) { - // If the major version number is zero (0.x.x), treat a change - // of the minor version number as a major change. - diff = 'major'; - } else { - diff = 'minor'; - } - } else if (v1.patch !== v2.patch) { - if (preMinor) { - // If the major & minor version numbers are zero (0.0.x), treat a change - // of the patch version number as a major change. - diff = 'major'; - } else if (preMajor) { - // If the major version number is zero (0.x.x), treat a change - // of the patch version number as a minor change. - diff = 'minor'; - } else { - diff = 'patch'; - } - } - - if (isPreRelease) { - if (diff != null) { - diff = PRE_RELEASES[diff]; - } else { - diff = 'prerelease'; - } - } - - return diff; - } - } - - return null; -} - /***/ }), /* 225 */ /***/ (function(module, exports, __webpack_require__) { @@ -52984,7 +53023,7 @@ exports.RETURN = RETURN; /* 238 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = !__webpack_require__(51) && !__webpack_require__(112)(function () { +module.exports = !__webpack_require__(52) && !__webpack_require__(113)(function () { return Object.defineProperty(__webpack_require__(92)('div'), 'a', { get: function () { return 7; } }).a != 7; }); @@ -53016,8 +53055,8 @@ module.exports = function (fn, args, that) { /***/ (function(module, exports, __webpack_require__) { // check on default Array iterator -var Iterators = __webpack_require__(53); -var ITERATOR = __webpack_require__(20)('iterator'); +var Iterators = __webpack_require__(54); +var ITERATOR = __webpack_require__(21)('iterator'); var ArrayProto = Array.prototype; module.exports = function (it) { @@ -53055,7 +53094,7 @@ var setToStringTag = __webpack_require__(95); var IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(42)(IteratorPrototype, __webpack_require__(20)('iterator'), function () { return this; }); +__webpack_require__(42)(IteratorPrototype, __webpack_require__(21)('iterator'), function () { return this; }); module.exports = function (Constructor, NAME, next) { Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); @@ -53067,7 +53106,7 @@ module.exports = function (Constructor, NAME, next) { /* 243 */ /***/ (function(module, exports, __webpack_require__) { -var ITERATOR = __webpack_require__(20)('iterator'); +var ITERATOR = __webpack_require__(21)('iterator'); var SAFE_CLOSING = false; try { @@ -53228,9 +53267,9 @@ module.exports = Object.create || function create(O, Properties) { var dP = __webpack_require__(72); var anObject = __webpack_require__(35); -var getKeys = __webpack_require__(171); +var getKeys = __webpack_require__(172); -module.exports = __webpack_require__(51) ? Object.defineProperties : function defineProperties(O, Properties) { +module.exports = __webpack_require__(52) ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = getKeys(Properties); var length = keys.length; @@ -53247,7 +53286,7 @@ module.exports = __webpack_require__(51) ? Object.defineProperties : function de // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) var has = __webpack_require__(71); -var toObject = __webpack_require__(172); +var toObject = __webpack_require__(173); var IE_PROTO = __webpack_require__(96)('IE_PROTO'); var ObjectProto = Object.prototype; @@ -53312,8 +53351,8 @@ module.exports = __webpack_require__(42); var global = __webpack_require__(17); var core = __webpack_require__(31); var dP = __webpack_require__(72); -var DESCRIPTORS = __webpack_require__(51); -var SPECIES = __webpack_require__(20)('species'); +var DESCRIPTORS = __webpack_require__(52); +var SPECIES = __webpack_require__(21)('species'); module.exports = function (KEY) { var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY]; @@ -53365,7 +53404,7 @@ module.exports = function (index, length) { /***/ (function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __webpack_require__(52); +var isObject = __webpack_require__(53); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (it, S) { @@ -53393,8 +53432,8 @@ module.exports = navigator && navigator.userAgent || ''; /***/ (function(module, exports, __webpack_require__) { var classof = __webpack_require__(126); -var ITERATOR = __webpack_require__(20)('iterator'); -var Iterators = __webpack_require__(53); +var ITERATOR = __webpack_require__(21)('iterator'); +var Iterators = __webpack_require__(54); module.exports = __webpack_require__(31).getIteratorMethod = function (it) { if (it != undefined) return it[ITERATOR] || it['@@iterator'] @@ -53410,7 +53449,7 @@ module.exports = __webpack_require__(31).getIteratorMethod = function (it) { var addToUnscopables = __webpack_require__(234); var step = __webpack_require__(244); -var Iterators = __webpack_require__(53); +var Iterators = __webpack_require__(54); var toIObject = __webpack_require__(98); // 22.1.3.4 Array.prototype.entries() @@ -53460,7 +53499,7 @@ var global = __webpack_require__(17); var ctx = __webpack_require__(70); var classof = __webpack_require__(126); var $export = __webpack_require__(60); -var isObject = __webpack_require__(52); +var isObject = __webpack_require__(53); var aFunction = __webpack_require__(68); var anInstance = __webpack_require__(235); var forOf = __webpack_require__(237); @@ -53486,7 +53525,7 @@ var USE_NATIVE = !!function () { try { // correct subclassing with @@species support var promise = $Promise.resolve(1); - var FakePromise = (promise.constructor = {})[__webpack_require__(20)('species')] = function (exec) { + var FakePromise = (promise.constructor = {})[__webpack_require__(21)('species')] = function (exec) { exec(empty, empty); }; // unhandled rejections tracking support, NodeJS Promise without it fails @@species test @@ -53819,8 +53858,8 @@ $export($export.S, 'Promise', { 'try': function (callbackfn) { __webpack_require__(258); var global = __webpack_require__(17); var hide = __webpack_require__(42); -var Iterators = __webpack_require__(53); -var TO_STRING_TAG = __webpack_require__(20)('toStringTag'); +var Iterators = __webpack_require__(54); +var TO_STRING_TAG = __webpack_require__(21)('toStringTag'); var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + @@ -61265,7 +61304,7 @@ module.exports = Object.assign(fn, figures); var pathModule = __webpack_require__(0); var isWindows = process.platform === 'win32'; -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); // JavaScript implementation of realpath, ported from node pre-v6 @@ -61554,7 +61593,7 @@ exports.realpath = function realpath(p, cache, cb) { module.exports = globSync globSync.GlobSync = GlobSync -var fs = __webpack_require__(5) +var fs = __webpack_require__(4) var rp = __webpack_require__(140) var minimatch = __webpack_require__(82) var Minimatch = minimatch.Minimatch @@ -62164,7 +62203,7 @@ var inquirer = module.exports; inquirer.prompts = {}; -inquirer.Separator = __webpack_require__(175); +inquirer.Separator = __webpack_require__(176); inquirer.ui = { BottomBar: __webpack_require__(695), @@ -62295,7 +62334,7 @@ module.exports.Schema = __webpack_require__(44); module.exports.FAILSAFE_SCHEMA = __webpack_require__(100); module.exports.JSON_SCHEMA = __webpack_require__(144); module.exports.CORE_SCHEMA = __webpack_require__(143); -module.exports.DEFAULT_SAFE_SCHEMA = __webpack_require__(55); +module.exports.DEFAULT_SAFE_SCHEMA = __webpack_require__(56); module.exports.DEFAULT_FULL_SCHEMA = __webpack_require__(73); module.exports.load = loader.load; module.exports.loadAll = loader.loadAll; @@ -62303,11 +62342,11 @@ module.exports.safeLoad = loader.safeLoad; module.exports.safeLoadAll = loader.safeLoadAll; module.exports.dump = dumper.dump; module.exports.safeDump = dumper.safeDump; -module.exports.YAMLException = __webpack_require__(54); +module.exports.YAMLException = __webpack_require__(55); // Deprecated schema names from JS-YAML 2.0.x module.exports.MINIMAL_SCHEMA = __webpack_require__(100); -module.exports.SAFE_SCHEMA = __webpack_require__(55); +module.exports.SAFE_SCHEMA = __webpack_require__(56); module.exports.DEFAULT_SCHEMA = __webpack_require__(73); // Deprecated functions from JS-YAML 1.x.x @@ -62327,9 +62366,9 @@ module.exports.addConstructor = deprecated('addConstructor'); /*eslint-disable no-use-before-define*/ var common = __webpack_require__(43); -var YAMLException = __webpack_require__(54); +var YAMLException = __webpack_require__(55); var DEFAULT_FULL_SCHEMA = __webpack_require__(73); -var DEFAULT_SAFE_SCHEMA = __webpack_require__(55); +var DEFAULT_SAFE_SCHEMA = __webpack_require__(56); var _toString = Object.prototype.toString; var _hasOwnProperty = Object.prototype.hasOwnProperty; @@ -63161,9 +63200,9 @@ module.exports.safeDump = safeDump; /*eslint-disable max-len,no-use-before-define*/ var common = __webpack_require__(43); -var YAMLException = __webpack_require__(54); +var YAMLException = __webpack_require__(55); var Mark = __webpack_require__(283); -var DEFAULT_SAFE_SCHEMA = __webpack_require__(55); +var DEFAULT_SAFE_SCHEMA = __webpack_require__(56); var DEFAULT_FULL_SCHEMA = __webpack_require__(73); @@ -65925,9 +65964,9 @@ utils.unique = __webpack_require__(756); utils.braces = __webpack_require__(757); utils.brackets = __webpack_require__(639); utils.extglob = __webpack_require__(644); -utils.isExtglob = __webpack_require__(177); -utils.isGlob = __webpack_require__(178); -utils.typeOf = __webpack_require__(179); +utils.isExtglob = __webpack_require__(178); +utils.isGlob = __webpack_require__(179); +utils.typeOf = __webpack_require__(180); utils.normalize = __webpack_require__(765); utils.omit = __webpack_require__(769); utils.parseGlob = __webpack_require__(773); @@ -66763,7 +66802,7 @@ rimraf.sync = rimrafSync var assert = __webpack_require__(28) var path = __webpack_require__(0) -var fs = __webpack_require__(5) +var fs = __webpack_require__(4) var glob = __webpack_require__(99) var _0666 = parseInt('666', 8) @@ -67135,7 +67174,7 @@ function rmkidsSync (p, options) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_queue__ = __webpack_require__(439); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__operators_observeOn__ = __webpack_require__(434); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_ObjectUnsubscribedError__ = __webpack_require__(189); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_ObjectUnsubscribedError__ = __webpack_require__(190); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__SubjectSubscription__ = __webpack_require__(422); /** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */ @@ -67729,7 +67768,7 @@ var ZipBufferIterator = /*@__PURE__*/ (function (_super) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = mergeAll; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__mergeMap__ = __webpack_require__(148); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(118); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(119); /** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */ @@ -68180,7 +68219,7 @@ function hostReportError(err) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = pipe; /* harmony export (immutable) */ __webpack_exports__["b"] = pipeFromArray; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__noop__ = __webpack_require__(191); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__noop__ = __webpack_require__(192); /** PURE_IMPORTS_START _noop PURE_IMPORTS_END */ function pipe() { @@ -69595,7 +69634,7 @@ function _load_link() { var _login; function _load_login() { - return _login = _interopRequireWildcard(__webpack_require__(107)); + return _login = _interopRequireWildcard(__webpack_require__(108)); } var _logout; @@ -69685,7 +69724,7 @@ function _load_unlink() { var _upgrade; function _load_upgrade() { - return _upgrade = _interopRequireWildcard(__webpack_require__(207)); + return _upgrade = _interopRequireWildcard(__webpack_require__(208)); } var _version; @@ -69821,7 +69860,7 @@ exports.getRcArgs = getRcArgs; var _fs; function _load_fs() { - return _fs = __webpack_require__(5); + return _fs = __webpack_require__(4); } var _path; @@ -70081,7 +70120,7 @@ var spawn = __webpack_require__(331).spawn; var path = __webpack_require__(0); var dirname = path.dirname; var basename = path.basename; -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); /** * Inherit `Command` from `EventEmitter.prototype`. @@ -71312,7 +71351,7 @@ function exists(file) { "use strict"; -var util = __webpack_require__(106); +var util = __webpack_require__(107); module.exports = SchemaObject; @@ -72602,7 +72641,7 @@ exports.hasWrapper = hasWrapper; var _promise; function _load_promise() { - return _promise = __webpack_require__(50); + return _promise = __webpack_require__(51); } var _hoistedTreeBuilder; @@ -72637,7 +72676,7 @@ function _load_constants() { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const zlib = __webpack_require__(198); +const zlib = __webpack_require__(199); const gzip = (0, (_promise || _load_promise()).promisify)(zlib.gzip); @@ -73087,7 +73126,7 @@ exports.hasWrapper = hasWrapper; var _index; function _load_index() { - return _index = __webpack_require__(57); + return _index = __webpack_require__(58); } var _filter; @@ -73105,7 +73144,7 @@ function _load_constants() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -73378,7 +73417,7 @@ function _load_buildSubCommands() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -73387,7 +73426,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de const invariant = __webpack_require__(9); const path = __webpack_require__(0); -const micromatch = __webpack_require__(114); +const micromatch = __webpack_require__(115); function hasWrapper(flags, args) { return args[0] !== 'dir'; @@ -73895,13 +73934,13 @@ function _load_errors() { var _integrityChecker; function _load_integrityChecker() { - return _integrityChecker = _interopRequireDefault(__webpack_require__(208)); + return _integrityChecker = _interopRequireDefault(__webpack_require__(209)); } var _integrityChecker2; function _load_integrityChecker2() { - return _integrityChecker2 = __webpack_require__(208); + return _integrityChecker2 = __webpack_require__(209); } var _lockfile; @@ -73913,7 +73952,7 @@ function _load_lockfile() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _install; @@ -74078,7 +74117,7 @@ function _load_errors() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _global; @@ -74093,7 +74132,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de const invariant = __webpack_require__(9); -const cmdShim = __webpack_require__(201); +const cmdShim = __webpack_require__(202); const path = __webpack_require__(0); function hasWrapper(commander, args) { @@ -74378,7 +74417,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de const invariant = __webpack_require__(9); -const micromatch = __webpack_require__(114); +const micromatch = __webpack_require__(115); const requireLockfile = exports.requireLockfile = true; @@ -74469,7 +74508,7 @@ exports.run = exports.requireLockfile = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -74622,7 +74661,7 @@ function _load_lockfile() { var _index; function _load_index() { - return _index = __webpack_require__(57); + return _index = __webpack_require__(58); } var _install; @@ -74640,13 +74679,13 @@ function _load_errors() { var _index2; function _load_index2() { - return _index2 = __webpack_require__(200); + return _index2 = __webpack_require__(201); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _constants; @@ -75008,7 +75047,7 @@ exports.hasWrapper = hasWrapper; var _executeLifecycleScript; function _load_executeLifecycleScript() { - return _executeLifecycleScript = __webpack_require__(111); + return _executeLifecycleScript = __webpack_require__(112); } var _dynamicRequire; @@ -75032,13 +75071,13 @@ function _load_errors() { var _packageCompatibility; function _load_packageCompatibility() { - return _packageCompatibility = __webpack_require__(209); + return _packageCompatibility = __webpack_require__(210); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _constants; @@ -75212,7 +75251,7 @@ function _load_buildSubCommands() { var _login; function _load_login() { - return _login = __webpack_require__(107); + return _login = __webpack_require__(108); } var _npmRegistry; @@ -75342,7 +75381,7 @@ exports.run = exports.requireLockfile = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -75577,7 +75616,7 @@ function _load_add() { var _upgrade; function _load_upgrade() { - return _upgrade = __webpack_require__(207); + return _upgrade = __webpack_require__(208); } var _colorForVersions; @@ -75839,13 +75878,13 @@ exports.hasWrapper = hasWrapper; var _index; function _load_index() { - return _index = __webpack_require__(57); + return _index = __webpack_require__(58); } var _executeLifecycleScript; function _load_executeLifecycleScript() { - return _executeLifecycleScript = __webpack_require__(111); + return _executeLifecycleScript = __webpack_require__(112); } var _errors; @@ -75863,7 +75902,7 @@ function _load_gitSpawn() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _map; @@ -75920,7 +75959,7 @@ exports.LocalTarballFetcher = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -75950,7 +75989,7 @@ function _load_baseFetcher() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _misc; @@ -75971,9 +76010,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de const crypto = __webpack_require__(11); const path = __webpack_require__(0); -const tarFs = __webpack_require__(193); +const tarFs = __webpack_require__(194); const url = __webpack_require__(24); -const fs = __webpack_require__(5); +const fs = __webpack_require__(4); const stream = __webpack_require__(23); const gunzip = __webpack_require__(656); const invariant = __webpack_require__(9); @@ -76063,7 +76102,7 @@ class TarballFetcher extends (_baseFetcher || _load_baseFetcher()).default { const now = new Date(); - const fs = __webpack_require__(5); + const fs = __webpack_require__(4); const patchedFs = Object.assign({}, fs, { utimes: (path, atime, mtime, cb) => { fs.stat(path, (err, stat) => { @@ -76533,7 +76572,7 @@ function _load_requestManager() { var _blockingQueue; function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(110)); + return _blockingQueue = _interopRequireDefault(__webpack_require__(111)); } var _lockfile; @@ -76557,13 +76596,13 @@ function _load_workspaceLayout() { var _resolutionMap; function _load_resolutionMap() { - return _resolutionMap = _interopRequireDefault(__webpack_require__(214)); + return _resolutionMap = _interopRequireDefault(__webpack_require__(215)); } var _resolutionMap2; function _load_resolutionMap2() { - return _resolutionMap2 = __webpack_require__(214); + return _resolutionMap2 = __webpack_require__(215); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -77437,7 +77476,7 @@ Object.defineProperty(exports, "__esModule", { var _hostedGitResolver; function _load_hostedGitResolver() { - return _hostedGitResolver = _interopRequireDefault(__webpack_require__(109)); + return _hostedGitResolver = _interopRequireDefault(__webpack_require__(110)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -77515,7 +77554,7 @@ function _load_misc() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -77592,7 +77631,7 @@ function _load_semver() { var _semver2; function _load_semver2() { - return _semver2 = __webpack_require__(224); + return _semver2 = __webpack_require__(170); } var _constants; @@ -77658,7 +77697,7 @@ function _load_misc() { return _misc = __webpack_require__(18); } -const mm = __webpack_require__(114); +const mm = __webpack_require__(115); const path = __webpack_require__(0); const WHITESPACE_RE = /^\s+$/; @@ -77894,7 +77933,7 @@ exports.spawn = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _path; @@ -77906,7 +77945,7 @@ function _load_path() { var _child; function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(58)); + return _child = _interopRequireWildcard(__webpack_require__(50)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -78073,7 +78112,7 @@ Object.defineProperty(exports, "__esModule", { var _fs; function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(5)); + return _fs = _interopRequireDefault(__webpack_require__(4)); } var _http; @@ -78115,7 +78154,7 @@ function _load_errors() { var _blockingQueue; function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(110)); + return _blockingQueue = _interopRequireDefault(__webpack_require__(111)); } var _constants; @@ -80894,7 +80933,7 @@ CombinedStream.prototype._emitError = function(err) { /***/ (function(module, exports, __webpack_require__) { var stream = __webpack_require__(102) -var eos = __webpack_require__(173) +var eos = __webpack_require__(174) var inherits = __webpack_require__(61) var shift = __webpack_require__(942) @@ -81285,7 +81324,7 @@ module.exports = function (data, opts) { "use strict"; -var fs = __webpack_require__(5) +var fs = __webpack_require__(4) module.exports = clone(fs) @@ -81310,7 +81349,7 @@ function clone (obj) { /* 391 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(5) +var fs = __webpack_require__(4) var polyfills = __webpack_require__(655) var legacy = __webpack_require__(654) var queue = [] @@ -81699,7 +81738,7 @@ module.exports = InputPrompt; var _ = __webpack_require__(38); var MuteStream = __webpack_require__(401); -var readline = __webpack_require__(197); +var readline = __webpack_require__(198); /** * Base interface class other can inherits from @@ -82713,7 +82752,7 @@ module.exports = { /**/ -var pna = __webpack_require__(180); +var pna = __webpack_require__(181); /**/ module.exports = Readable; @@ -82754,7 +82793,7 @@ function _isUint8Array(obj) { /**/ /**/ -var util = __webpack_require__(113); +var util = __webpack_require__(114); util.inherits = __webpack_require__(61); /**/ @@ -82789,7 +82828,7 @@ function prependListener(emitter, event, fn) { } function ReadableState(options, stream) { - Duplex = Duplex || __webpack_require__(115); + Duplex = Duplex || __webpack_require__(116); options = options || {}; @@ -82866,7 +82905,7 @@ function ReadableState(options, stream) { } function Readable(options) { - Duplex = Duplex || __webpack_require__(115); + Duplex = Duplex || __webpack_require__(116); if (!(this instanceof Readable)) return new Readable(options); @@ -83780,10 +83819,10 @@ function indexOf(xs, x) { module.exports = Transform; -var Duplex = __webpack_require__(115); +var Duplex = __webpack_require__(116); /**/ -var util = __webpack_require__(113); +var util = __webpack_require__(114); util.inherits = __webpack_require__(61); /**/ @@ -83962,7 +84001,7 @@ function done(stream, er, data) { /**/ -var pna = __webpack_require__(180); +var pna = __webpack_require__(181); /**/ module.exports = Writable; @@ -83999,7 +84038,7 @@ var Duplex; Writable.WritableState = WritableState; /**/ -var util = __webpack_require__(113); +var util = __webpack_require__(114); util.inherits = __webpack_require__(61); /**/ @@ -84033,7 +84072,7 @@ util.inherits(Writable, Stream); function nop() {} function WritableState(options, stream) { - Duplex = Duplex || __webpack_require__(115); + Duplex = Duplex || __webpack_require__(116); options = options || {}; @@ -84183,7 +84222,7 @@ if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.protot } function Writable(options) { - Duplex = Duplex || __webpack_require__(115); + Duplex = Duplex || __webpack_require__(116); // Writable ctor is applied to Duplexes, too. // `realHasInstance` is necessary because using plain `instanceof` @@ -84630,7 +84669,7 @@ Writable.prototype._destroy = function (err, cb) { /**/ -var pna = __webpack_require__(180); +var pna = __webpack_require__(181); /**/ // undocumented cb() API, needed for core, not for public API @@ -85111,7 +85150,7 @@ module.exports = function () { /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(0); -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); var parse = path.parse || __webpack_require__(774); module.exports = function nodeModulesPaths(start, opts) { @@ -85165,7 +85204,7 @@ module.exports = function nodeModulesPaths(start, opts) { /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BehaviorSubject; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_ObjectUnsubscribedError__ = __webpack_require__(189); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_ObjectUnsubscribedError__ = __webpack_require__(190); /** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */ @@ -85217,7 +85256,7 @@ var BehaviorSubject = /*@__PURE__*/ (function (_super) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return empty; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__(185); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__config__ = __webpack_require__(186); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_hostReportError__ = __webpack_require__(323); /** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */ @@ -85513,7 +85552,7 @@ function merge() { /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return NEVER; }); /* harmony export (immutable) */ __webpack_exports__["a"] = never; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_noop__ = __webpack_require__(191); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_noop__ = __webpack_require__(192); /** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */ @@ -85625,7 +85664,7 @@ var RaceSubscriber = /*@__PURE__*/ (function (_super) { /* harmony export (immutable) */ __webpack_exports__["a"] = timer; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scheduler_async__ = __webpack_require__(40); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isNumeric__ = __webpack_require__(190); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isNumeric__ = __webpack_require__(191); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isScheduler__ = __webpack_require__(49); /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ @@ -85677,7 +85716,7 @@ function dispatch(state) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = audit; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14); @@ -85790,7 +85829,7 @@ function concatMap(project, resultSelector) { /* harmony export (immutable) */ __webpack_exports__["a"] = distinctUntilChanged; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48); /** PURE_IMPORTS_START tslib,_Subscriber,_util_tryCatch,_util_errorObject PURE_IMPORTS_END */ @@ -86131,7 +86170,7 @@ var InnerRefCountSubscription = /*@__PURE__*/ (function (_super) { /* unused harmony export ObserveOnMessage */ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Notification__ = __webpack_require__(184); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Notification__ = __webpack_require__(185); /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -86211,7 +86250,7 @@ var ObserveOnMessage = /*@__PURE__*/ (function () { /* harmony export (immutable) */ __webpack_exports__["a"] = tap; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_noop__ = __webpack_require__(191); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_noop__ = __webpack_require__(192); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isFunction__ = __webpack_require__(154); /** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */ @@ -86607,7 +86646,7 @@ function isPromise(value) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isPromise__ = __webpack_require__(445); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__isObject__ = __webpack_require__(444); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__symbol_iterator__ = __webpack_require__(151); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__symbol_observable__ = __webpack_require__(117); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__symbol_observable__ = __webpack_require__(118); /** PURE_IMPORTS_START _Observable,_subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */ @@ -86716,7 +86755,7 @@ var subscribeToIterable = function (iterable) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return subscribeToObservable; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__symbol_observable__ = __webpack_require__(117); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__symbol_observable__ = __webpack_require__(118); /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ var subscribeToObservable = function (obj) { @@ -87176,7 +87215,7 @@ var utils = __webpack_require__(26); var Key = __webpack_require__(27); var PrivateKey = __webpack_require__(33); -var sshpriv = __webpack_require__(192); +var sshpriv = __webpack_require__(193); /*JSSTYLED*/ var SSHKEY_RE = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/; @@ -88831,7 +88870,7 @@ exports.default = handleSignals; var _child; function _load_child() { - return _child = __webpack_require__(58); + return _child = __webpack_require__(50); } function forwardSignalAndExit(signal) { @@ -89411,7 +89450,7 @@ module.exports = function (metaSchema, keywordsJsonPointers) { var compileSchema = __webpack_require__(478) - , resolve = __webpack_require__(203) + , resolve = __webpack_require__(204) , Cache = __webpack_require__(474) , SchemaObject = __webpack_require__(339) , stableStringify = __webpack_require__(389) @@ -89419,7 +89458,7 @@ var compileSchema = __webpack_require__(478) , rules = __webpack_require__(479) , $dataMetaSchema = __webpack_require__(472) , patternGroups = __webpack_require__(500) - , util = __webpack_require__(106) + , util = __webpack_require__(107) , co = __webpack_require__(383); module.exports = Ajv; @@ -89443,7 +89482,7 @@ Ajv.prototype.addKeyword = customKeyword.add; Ajv.prototype.getKeyword = customKeyword.get; Ajv.prototype.removeKeyword = customKeyword.remove; -var errorClasses = __webpack_require__(202); +var errorClasses = __webpack_require__(203); Ajv.ValidationError = errorClasses.Validation; Ajv.MissingRefError = errorClasses.MissingRef; Ajv.$dataMetaSchema = $dataMetaSchema; @@ -89990,7 +90029,7 @@ module.exports = { "use strict"; -var MissingRefError = __webpack_require__(202).MissingRef; +var MissingRefError = __webpack_require__(203).MissingRef; module.exports = compileAsync; @@ -90087,7 +90126,7 @@ function compileAsync(schema, meta, callback) { "use strict"; -var util = __webpack_require__(106); +var util = __webpack_require__(107); var DATE = /^\d\d\d\d-(\d\d)-(\d\d)$/; var DAYS = [0,31,29,31,30,31,30,31,31,30,31,30,31]; @@ -90229,9 +90268,9 @@ function regex(str) { "use strict"; -var resolve = __webpack_require__(203) - , util = __webpack_require__(106) - , errorClasses = __webpack_require__(202) +var resolve = __webpack_require__(204) + , util = __webpack_require__(107) + , errorClasses = __webpack_require__(203) , stableStringify = __webpack_require__(389); var validateGenerator = __webpack_require__(344); @@ -90242,7 +90281,7 @@ var validateGenerator = __webpack_require__(344); var co = __webpack_require__(383); var ucs2length = util.ucs2length; -var equal = __webpack_require__(204); +var equal = __webpack_require__(205); // this error is thrown by async schemas to return validation errors via exception var ValidationError = errorClasses.Validation; @@ -90617,7 +90656,7 @@ function vars(arr, statement) { var ruleModules = __webpack_require__(475) - , toHash = __webpack_require__(106).toHash; + , toHash = __webpack_require__(107).toHash; module.exports = function rules() { var RULES = [ @@ -94183,8 +94222,8 @@ function requestFlush() { // Copyright 2011 Mark Cavage All rights reserved. -var errors = __webpack_require__(205); -var types = __webpack_require__(206); +var errors = __webpack_require__(206); +var types = __webpack_require__(207); var Reader = __webpack_require__(515); var Writer = __webpack_require__(516); @@ -94219,8 +94258,8 @@ for (var e in errors) { var assert = __webpack_require__(28); var Buffer = __webpack_require__(15).Buffer; -var ASN1 = __webpack_require__(206); -var errors = __webpack_require__(205); +var ASN1 = __webpack_require__(207); +var errors = __webpack_require__(206); // --- Globals @@ -94486,8 +94525,8 @@ module.exports = Reader; var assert = __webpack_require__(28); var Buffer = __webpack_require__(15).Buffer; -var ASN1 = __webpack_require__(206); -var errors = __webpack_require__(205); +var ASN1 = __webpack_require__(207); +var errors = __webpack_require__(206); // --- Globals @@ -95141,7 +95180,7 @@ module.exports.canonicalizeResource = canonicalizeResource var aws4 = exports, url = __webpack_require__(24), - querystring = __webpack_require__(196), + querystring = __webpack_require__(197), crypto = __webpack_require__(11), lru = __webpack_require__(523), credentialsCache = lru(1000) @@ -95851,7 +95890,7 @@ function _load_asyncToGenerator() { var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } let run = exports.run = (() => { @@ -95903,19 +95942,19 @@ function _load_errors() { var _child; function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(58)); + return _child = _interopRequireWildcard(__webpack_require__(50)); } var _executeLifecycleScript; function _load_executeLifecycleScript() { - return _executeLifecycleScript = __webpack_require__(111); + return _executeLifecycleScript = __webpack_require__(112); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _global; @@ -96019,13 +96058,13 @@ function _load_errors() { var _child; function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(58)); + return _child = _interopRequireWildcard(__webpack_require__(50)); } var _executeLifecycleScript; function _load_executeLifecycleScript() { - return _executeLifecycleScript = __webpack_require__(111); + return _executeLifecycleScript = __webpack_require__(112); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -96294,25 +96333,25 @@ function _load_baseResolver() { var _hostedGitResolver; function _load_hostedGitResolver() { - return _hostedGitResolver = _interopRequireDefault(__webpack_require__(109)); + return _hostedGitResolver = _interopRequireDefault(__webpack_require__(110)); } var _hostedGitResolver2; function _load_hostedGitResolver2() { - return _hostedGitResolver2 = __webpack_require__(109); + return _hostedGitResolver2 = __webpack_require__(110); } var _gistResolver; function _load_gistResolver() { - return _gistResolver = _interopRequireDefault(__webpack_require__(216)); + return _gistResolver = _interopRequireDefault(__webpack_require__(217)); } var _gistResolver2; function _load_gistResolver2() { - return _gistResolver2 = __webpack_require__(216); + return _gistResolver2 = __webpack_require__(217); } var _gitResolver; @@ -96324,7 +96363,7 @@ function _load_gitResolver() { var _fileResolver; function _load_fileResolver() { - return _fileResolver = _interopRequireDefault(__webpack_require__(215)); + return _fileResolver = _interopRequireDefault(__webpack_require__(216)); } var _packageResolver; @@ -96348,19 +96387,19 @@ function _load_packageReference() { var _packageFetcher; function _load_packageFetcher() { - return _packageFetcher = _interopRequireWildcard(__webpack_require__(210)); + return _packageFetcher = _interopRequireWildcard(__webpack_require__(211)); } var _packageLinker; function _load_packageLinker() { - return _packageLinker = _interopRequireDefault(__webpack_require__(211)); + return _packageLinker = _interopRequireDefault(__webpack_require__(212)); } var _packageCompatibility; function _load_packageCompatibility() { - return _packageCompatibility = _interopRequireWildcard(__webpack_require__(209)); + return _packageCompatibility = _interopRequireWildcard(__webpack_require__(210)); } var _lockfile; @@ -96384,7 +96423,7 @@ function _load_logicalDependencyTree() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _misc; @@ -96411,7 +96450,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de const invariant = __webpack_require__(9); const path = __webpack_require__(0); -const uuid = __webpack_require__(119); +const uuid = __webpack_require__(120); const ssri = __webpack_require__(65); const nodeVersion = process.versions.node.split('-')[0]; @@ -97008,20 +97047,28 @@ function _load_asyncToGenerator() { let run = exports.run = (() => { var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { const installVersion = flags[`2`] ? `berry` : flags.install; + const forwardedArgs = process.argv.slice(process.argv.indexOf('init', 2) + 1); if (installVersion) { - const lockfilePath = path.resolve(config.cwd, 'yarn.lock'); - if (!(yield (_fs || _load_fs()).exists(lockfilePath))) { - yield (_fs || _load_fs()).writeFile(lockfilePath, ''); + if (flags[`2`] && process.env.COREPACK_ROOT) { + yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [path.join(process.env.COREPACK_ROOT, 'dist/corepack.js'), `yarn@${flags.install || `stable`}`, `init`, ...forwardedArgs, `--install=self`], { + stdio: 'inherit', + cwd: config.cwd + }); + } else { + const lockfilePath = path.resolve(config.cwd, 'yarn.lock'); + if (!(yield (_fs || _load_fs()).exists(lockfilePath))) { + yield (_fs || _load_fs()).writeFile(lockfilePath, ''); + } + yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [process.argv[1], 'policies', 'set-version', installVersion, '--silent'], { + stdio: 'inherit', + cwd: config.cwd + }); + yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [process.argv[1], 'init', ...forwardedArgs], { + stdio: 'inherit', + cwd: config.cwd + }); } - yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [process.argv[1], 'policies', 'set-version', installVersion, '--silent'], { - stdio: 'inherit', - cwd: config.cwd - }); - yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [process.argv[1], 'init', ...(flags.yes ? ['-y'] : []), ...(flags.private ? ['-p'] : [])], { - stdio: 'inherit', - cwd: config.cwd - }); return; } @@ -97256,13 +97303,13 @@ exports.hasWrapper = hasWrapper; var _util; function _load_util() { - return _util = __webpack_require__(221); + return _util = __webpack_require__(222); } var _index; function _load_index() { - return _index = __webpack_require__(57); + return _index = __webpack_require__(58); } var _githubResolver; @@ -97274,13 +97321,13 @@ function _load_githubResolver() { var _child; function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(58)); + return _child = _interopRequireWildcard(__webpack_require__(50)); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _validate; @@ -97333,7 +97380,7 @@ exports.examples = exports.run = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -97484,7 +97531,7 @@ exports.setFlags = setFlags; var _baseReporter; function _load_baseReporter() { - return _baseReporter = _interopRequireDefault(__webpack_require__(108)); + return _baseReporter = _interopRequireDefault(__webpack_require__(109)); } var _install; @@ -97716,7 +97763,7 @@ exports.run = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -97756,13 +97803,13 @@ exports.hasWrapper = hasWrapper; var _child; function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(58)); + return _child = _interopRequireWildcard(__webpack_require__(50)); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _constants; @@ -97800,7 +97847,7 @@ exports.run = exports.requireLockfile = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -98068,7 +98115,7 @@ function _load_tag() { var _login; function _load_login() { - return _login = __webpack_require__(107); + return _login = __webpack_require__(108); } var _npmRegistry; @@ -98176,6 +98223,12 @@ Object.defineProperty(exports, "__esModule", { }); exports.examples = exports.setFlags = exports.run = undefined; +var _extends2; + +function _load_extends() { + return _extends2 = _interopRequireDefault(__webpack_require__(20)); +} + var _asyncToGenerator2; function _load_asyncToGenerator() { @@ -98186,6 +98239,7 @@ let fetchReleases = (() => { var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, { includePrereleases = false } = {}) { const token = process.env.GITHUB_TOKEN; const tokenUrlParameter = token ? `?access_token=${token}` : ''; + const request = yield config.requestManager.request({ url: `https://api.github.com/repos/yarnpkg/yarn/releases${tokenUrlParameter}`, json: true @@ -98229,6 +98283,18 @@ let fetchReleases = (() => { exports.hasWrapper = hasWrapper; +var _yarnVersion; + +function _load_yarnVersion() { + return _yarnVersion = __webpack_require__(105); +} + +var _child; + +function _load_child() { + return _child = _interopRequireWildcard(__webpack_require__(50)); +} + var _buildSubCommands2; function _load_buildSubCommands() { @@ -98244,7 +98310,7 @@ function _load_rc() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _lockfile; @@ -98253,10 +98319,29 @@ function _load_lockfile() { return _lockfile = __webpack_require__(19); } +var _semver; + +function _load_semver() { + return _semver = __webpack_require__(170); +} + +var _constants; + +function _load_constants() { + return _constants = __webpack_require__(8); +} + function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/* eslint-disable max-len */ + +const V2_NAMES = ['berry', 'stable', 'canary', 'v2', '2']; + +const isLocalFile = version => version.match(/^\.{0,2}[\\/]/) || path.isAbsolute(version); +const isV2Version = version => (0, (_semver || _load_semver()).satisfiesWithPrereleases)(version, '>=2.0.0'); + const chalk = __webpack_require__(30); const invariant = __webpack_require__(9); const path = __webpack_require__(0); @@ -98282,32 +98367,73 @@ function hasWrapper(flags, args) { var _buildSubCommands = (0, (_buildSubCommands2 || _load_buildSubCommands()).default)('policies', { setVersion(config, reporter, flags, args) { return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - let range = args[0] || 'latest'; - let allowRc = flags.rc; + const initialRange = args[0] || 'latest'; + let range = initialRange; - reporter.log(`Resolving ${chalk.yellow(range)} to a url...`); + let allowRc = flags.rc; if (range === 'rc') { - range = 'latest'; + reporter.log(`${chalk.yellow(`Warning:`)} Your current Yarn binary is currently Yarn ${(_yarnVersion || _load_yarnVersion()).version}; to avoid potential breaking changes, 'set version rc' won't receive upgrades past the 1.22.x branch.\n To upgrade to the latest versions, run ${chalk.cyan(`yarn set version`)} ${chalk.yellow.underline(`canary`)} instead. Sorry for the inconvenience.\n`); + + range = '*'; allowRc = true; } if (range === 'latest') { + reporter.log(`${chalk.yellow(`Warning:`)} Your current Yarn binary is currently Yarn ${(_yarnVersion || _load_yarnVersion()).version}; to avoid potential breaking changes, 'set version latest' won't receive upgrades past the 1.22.x branch.\n To upgrade to the latest versions, run ${chalk.cyan(`yarn set version`)} ${chalk.yellow.underline(`stable`)} instead. Sorry for the inconvenience.\n`); + + range = '*'; + } + + if (range === 'classic') { range = '*'; } let bundleUrl; let bundleVersion; - let isV2 = false; + const isV2 = false; if (range === 'nightly' || range === 'nightlies') { + reporter.log(`${chalk.yellow(`Warning:`)} Nightlies only exist for Yarn 1.x; starting from 2.x onwards, you should use 'canary' instead`); + bundleUrl = 'https://nightly.yarnpkg.com/latest.js'; bundleVersion = 'nightly'; - } else if (range === 'berry' || range === 'v2' || range === '2') { - bundleUrl = 'https://github.com/yarnpkg/berry/raw/master/packages/berry-cli/bin/berry.js'; - bundleVersion = 'berry'; - isV2 = true; + } else if (V2_NAMES.includes(range) || isLocalFile(range) || isV2Version(range)) { + const normalizedRange = range === `canary` ? `canary` : `stable`; + + if (process.env.COREPACK_ROOT) { + yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [path.join(process.env.COREPACK_ROOT, 'dist/corepack.js'), `yarn@${normalizedRange}`, `set`, `version`, normalizedRange], { + stdio: 'inherit', + cwd: config.cwd + }); + + return; + } else { + const bundle = yield fetchBundle(config, 'https://github.com/yarnpkg/berry/raw/master/packages/yarnpkg-cli/bin/yarn.js'); + + const yarnPath = path.resolve(config.lockfileFolder, `.yarn/releases/yarn-stable-temp.cjs`); + yield (_fs || _load_fs()).mkdirp(path.dirname(yarnPath)); + yield (_fs || _load_fs()).writeFile(yarnPath, bundle); + yield (_fs || _load_fs()).chmod(yarnPath, 0o755); + + try { + yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [yarnPath, 'set', 'version', range], { + stdio: 'inherit', + cwd: config.lockfileFolder, + env: (0, (_extends2 || _load_extends()).default)({}, process.env, { + YARN_IGNORE_PATH: `1` + }) + }); + } catch (err) { + // eslint-disable-next-line no-process-exit + process.exit(1); + } + + return; + } } else { + reporter.log(`Resolving ${chalk.yellow(initialRange)} to a url...`); + let releases = []; try { @@ -98576,7 +98702,7 @@ function _load_version() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _pack; @@ -98588,7 +98714,7 @@ function _load_pack() { var _login; function _load_login() { - return _login = __webpack_require__(107); + return _login = __webpack_require__(108); } var _path; @@ -98605,7 +98731,7 @@ const invariant = __webpack_require__(9); const crypto = __webpack_require__(11); const url = __webpack_require__(24); -const fs2 = __webpack_require__(5); +const fs2 = __webpack_require__(4); const ssri = __webpack_require__(65); function setFlags(commander) { @@ -98635,7 +98761,7 @@ exports.examples = exports.hasWrapper = exports.run = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -98689,7 +98815,7 @@ function _load_buildSubCommands() { var _login; function _load_login() { - return _login = __webpack_require__(107); + return _login = __webpack_require__(108); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -98957,7 +99083,7 @@ function _load_errors() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _link; @@ -99147,7 +99273,7 @@ function _load_errors() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -99210,7 +99336,7 @@ exports.hasWrapper = hasWrapper; var _yarnVersion; function _load_yarnVersion() { - return _yarnVersion = __webpack_require__(120); + return _yarnVersion = __webpack_require__(105); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -99514,7 +99640,7 @@ function _load_constants() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _lockfile; @@ -99734,7 +99860,7 @@ function _load_errors() { var _child; function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(58)); + return _child = _interopRequireWildcard(__webpack_require__(50)); } var _constants; @@ -99936,7 +100062,7 @@ function _load_constants() { var _child; function _load_child() { - return _child = _interopRequireWildcard(__webpack_require__(58)); + return _child = _interopRequireWildcard(__webpack_require__(50)); } var _constants2; @@ -99993,7 +100119,7 @@ exports.autoRun = exports.main = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -100604,6 +100730,8 @@ let start = (() => { // innermost process, whose end will cause our own to exit. }); + (0, (_signalHandler || _load_signalHandler()).default)(); + try { if (/\.[cm]?js$/.test(yarnPath)) { exitCode = yield (0, (_child || _load_child()).spawnp)(process.execPath, [yarnPath, ...argv], opts); @@ -100668,7 +100796,7 @@ function _load_commander() { var _fs; function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(5)); + return _fs = _interopRequireDefault(__webpack_require__(4)); } var _invariant; @@ -100704,13 +100832,13 @@ function _load_semver() { var _index; function _load_index() { - return _index = __webpack_require__(200); + return _index = __webpack_require__(201); } var _index2; function _load_index2() { - return _index2 = __webpack_require__(57); + return _index2 = __webpack_require__(58); } var _index3; @@ -100752,13 +100880,13 @@ function _load_rc() { var _child; function _load_child() { - return _child = __webpack_require__(58); + return _child = __webpack_require__(50); } var _yarnVersion; function _load_yarnVersion() { - return _yarnVersion = __webpack_require__(120); + return _yarnVersion = __webpack_require__(105); } var _signalHandler; @@ -100845,7 +100973,7 @@ function _load_baseFetcher() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -100899,13 +101027,13 @@ function _load_baseFetcher() { var _git; function _load_git() { - return _git = _interopRequireDefault(__webpack_require__(219)); + return _git = _interopRequireDefault(__webpack_require__(220)); } var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _constants; @@ -100948,10 +101076,10 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const tarFs = __webpack_require__(193); +const tarFs = __webpack_require__(194); const url = __webpack_require__(24); const path = __webpack_require__(0); -const fs = __webpack_require__(5); +const fs = __webpack_require__(4); const invariant = __webpack_require__(9); @@ -101279,7 +101407,7 @@ Object.defineProperty(exports, "__esModule", { var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _asyncToGenerator2; @@ -101291,7 +101419,7 @@ function _load_asyncToGenerator() { var _packageFetcher; function _load_packageFetcher() { - return _packageFetcher = __webpack_require__(210); + return _packageFetcher = __webpack_require__(211); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -101524,7 +101652,7 @@ exports.NohoistResolver = exports.HoistManifest = undefined; var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _config; @@ -101542,7 +101670,7 @@ function _load_misc() { var _micromatch; function _load_micromatch() { - return _micromatch = _interopRequireDefault(__webpack_require__(114)); + return _micromatch = _interopRequireDefault(__webpack_require__(115)); } var _workspaceLayout2; @@ -102700,7 +102828,7 @@ function _load_config() { var _executeLifecycleScript; function _load_executeLifecycleScript() { - return _executeLifecycleScript = _interopRequireDefault(__webpack_require__(111)); + return _executeLifecycleScript = _interopRequireDefault(__webpack_require__(112)); } var _crypto; @@ -102712,13 +102840,13 @@ function _load_crypto() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _packageNameUtils; function _load_packageNameUtils() { - return _packageNameUtils = __webpack_require__(222); + return _packageNameUtils = __webpack_require__(223); } var _pack; @@ -102731,7 +102859,7 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const fs = __webpack_require__(5); +const fs = __webpack_require__(4); const invariant = __webpack_require__(9); const path = __webpack_require__(0); @@ -103287,7 +103415,7 @@ function _load_asyncToGenerator() { var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _misc; @@ -103503,13 +103631,13 @@ function _load_lockfile() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } var _yarnVersion; function _load_yarnVersion() { - return _yarnVersion = __webpack_require__(120); + return _yarnVersion = __webpack_require__(105); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -103691,7 +103819,7 @@ Object.defineProperty(exports, "__esModule", { var _jsonReporter; function _load_jsonReporter() { - return _jsonReporter = _interopRequireDefault(__webpack_require__(213)); + return _jsonReporter = _interopRequireDefault(__webpack_require__(214)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -103744,7 +103872,7 @@ function _load_asyncToGenerator() { var _baseReporter; function _load_baseReporter() { - return _baseReporter = _interopRequireDefault(__webpack_require__(108)); + return _baseReporter = _interopRequireDefault(__webpack_require__(109)); } var _progressBar; @@ -103762,7 +103890,7 @@ function _load_spinnerProgress() { var _util; function _load_util() { - return _util = __webpack_require__(212); + return _util = __webpack_require__(213); } var _misc; @@ -103795,7 +103923,7 @@ var _require = __webpack_require__(3); const inspect = _require.inspect; -const readline = __webpack_require__(197); +const readline = __webpack_require__(198); const chalk = __webpack_require__(30); const stripAnsi = __webpack_require__(329); const read = __webpack_require__(790); @@ -104451,7 +104579,7 @@ Object.defineProperty(exports, "__esModule", { var _util; function _load_util() { - return _util = __webpack_require__(212); + return _util = __webpack_require__(213); } class ProgressBar { @@ -104536,7 +104664,7 @@ Object.defineProperty(exports, "__esModule", { var _util; function _load_util() { - return _util = __webpack_require__(212); + return _util = __webpack_require__(213); } class Spinner { @@ -104598,7 +104726,7 @@ Object.defineProperty(exports, "__esModule", { var _jsonReporter; function _load_jsonReporter() { - return _jsonReporter = _interopRequireDefault(__webpack_require__(213)); + return _jsonReporter = _interopRequireDefault(__webpack_require__(214)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -105113,7 +105241,7 @@ function _load_asyncToGenerator() { var _baseReporter; function _load_baseReporter() { - return _baseReporter = _interopRequireDefault(__webpack_require__(108)); + return _baseReporter = _interopRequireDefault(__webpack_require__(109)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -105210,7 +105338,7 @@ Object.defineProperty(exports, "__esModule", { var _extends2; function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); + return _extends2 = _interopRequireDefault(__webpack_require__(20)); } var _packageRequest; @@ -105309,7 +105437,7 @@ function _load_asyncToGenerator() { var _hostedGitResolver; function _load_hostedGitResolver() { - return _hostedGitResolver = _interopRequireDefault(__webpack_require__(109)); + return _hostedGitResolver = _interopRequireDefault(__webpack_require__(110)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -105372,7 +105500,7 @@ Object.defineProperty(exports, "__esModule", { var _hostedGitResolver; function _load_hostedGitResolver() { - return _hostedGitResolver = _interopRequireDefault(__webpack_require__(109)); + return _hostedGitResolver = _interopRequireDefault(__webpack_require__(110)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -105506,7 +105634,7 @@ function _load_crypto() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -105663,7 +105791,7 @@ Object.defineProperty(exports, "__esModule", { var _npmResolver; function _load_npmResolver() { - return _npmResolver = _interopRequireDefault(__webpack_require__(217)); + return _npmResolver = _interopRequireDefault(__webpack_require__(218)); } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -106167,7 +106295,7 @@ let generatePnpMap = exports.generatePnpMap = (() => { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -106841,7 +106969,7 @@ function _load_constants() { var _util; function _load_util() { - return _util = __webpack_require__(221); + return _util = __webpack_require__(222); } var _index; @@ -106859,7 +106987,7 @@ function _load_inferLicense() { var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -107491,7 +107619,7 @@ function _load_constants() { var _fileResolver; function _load_fileResolver() { - return _fileResolver = __webpack_require__(215); + return _fileResolver = __webpack_require__(216); } var _linkResolver; @@ -107623,7 +107751,7 @@ exports.makePortableProxyScript = makePortableProxyScript; var _fs; function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); + return _fs = _interopRequireWildcard(__webpack_require__(5)); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } @@ -107653,7 +107781,7 @@ exports.findRc = findRc; var _fs; function _load_fs() { - return _fs = __webpack_require__(5); + return _fs = __webpack_require__(4); } var _path; @@ -108717,7 +108845,7 @@ module.exports = (chalk, tmp) => { module.exports = chownr chownr.sync = chownrSync -var fs = __webpack_require__(5) +var fs = __webpack_require__(4) , path = __webpack_require__(0) function chownr (p, uid, gid, cb) { @@ -108833,7 +108961,7 @@ module.exports = __webpack_require__(605); /* 603 */ /***/ (function(module, exports, __webpack_require__) { -var kindOf = __webpack_require__(179); +var kindOf = __webpack_require__(180); var utils = __webpack_require__(382); /** @@ -109210,7 +109338,7 @@ module.exports.RowSpanCell = RowSpanCell; /* 604 */ /***/ (function(module, exports, __webpack_require__) { -var kindOf = __webpack_require__(179); +var kindOf = __webpack_require__(180); var objectAssign = __webpack_require__(303); var Cell = __webpack_require__(603); var RowSpanCell = Cell.RowSpanCell; @@ -110749,15 +110877,15 @@ module.exports = __webpack_require__(31).Object.assign; "use strict"; // 19.1.2.1 Object.assign(target, source, ...) -var getKeys = __webpack_require__(171); +var getKeys = __webpack_require__(172); var gOPS = __webpack_require__(625); var pIE = __webpack_require__(626); -var toObject = __webpack_require__(172); -var IObject = __webpack_require__(170); +var toObject = __webpack_require__(173); +var IObject = __webpack_require__(171); var $assign = Object.assign; // should work with symbols and should have deterministic property order (V8 bug) -module.exports = !$assign || __webpack_require__(112)(function () { +module.exports = !$assign || __webpack_require__(113)(function () { var A = {}; var B = {}; // eslint-disable-next-line no-undef @@ -112629,7 +112757,7 @@ function length(val) { -var typeOf = __webpack_require__(179); +var typeOf = __webpack_require__(180); module.exports = function isNumber(num) { var type = typeOf(num); @@ -112680,7 +112808,7 @@ module.exports = function isObject(val) { * Module dependencies */ -var isExtglob = __webpack_require__(177); +var isExtglob = __webpack_require__(178); var re, cache = {}; /** @@ -113086,7 +113214,7 @@ var util = __webpack_require__(3) , Agent = __webpack_require__(87).Agent , net = __webpack_require__(164) , tls = __webpack_require__(467) - , AgentSSL = __webpack_require__(195).Agent + , AgentSSL = __webpack_require__(196).Agent function getConnectionName(host, port) { var name = '' @@ -113227,9 +113355,9 @@ var CombinedStream = __webpack_require__(385); var util = __webpack_require__(3); var path = __webpack_require__(0); var http = __webpack_require__(87); -var https = __webpack_require__(195); +var https = __webpack_require__(196); var parseUrl = __webpack_require__(24).parse; -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); var mime = __webpack_require__(400); var asynckit = __webpack_require__(517); var populate = __webpack_require__(650); @@ -113702,7 +113830,7 @@ module.exports = function(dst, src) { /* 651 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(5).constants || __webpack_require__(466) +module.exports = __webpack_require__(4).constants || __webpack_require__(466) /***/ }), @@ -113721,7 +113849,7 @@ module.exports = __webpack_require__(5).constants || __webpack_require__(466) var path = __webpack_require__(0); var parent = __webpack_require__(653); -var isGlob = __webpack_require__(178); +var isGlob = __webpack_require__(179); module.exports = function globBase(pattern) { if (typeof pattern !== 'string') { @@ -113771,7 +113899,7 @@ function dirname(glob) { var path = __webpack_require__(0); -var isglob = __webpack_require__(178); +var isglob = __webpack_require__(179); module.exports = function globParent(str) { str += 'a'; // preserves full path in case of trailing path separator @@ -114244,7 +114372,7 @@ function chownErOk (er) { /* 656 */ /***/ (function(module, exports, __webpack_require__) { -var zlib = __webpack_require__(198) +var zlib = __webpack_require__(199) var peek = __webpack_require__(775) var through = __webpack_require__(461) var pumpify = __webpack_require__(782) @@ -114635,7 +114763,7 @@ module.exports = function resolvePkg(name, dir) { var parser = __webpack_require__(681); var signer = __webpack_require__(682); var verify = __webpack_require__(683); -var utils = __webpack_require__(174); +var utils = __webpack_require__(175); @@ -114669,7 +114797,7 @@ module.exports = { var assert = __webpack_require__(16); var util = __webpack_require__(3); -var utils = __webpack_require__(174); +var utils = __webpack_require__(175); @@ -114994,7 +115122,7 @@ var http = __webpack_require__(87); var util = __webpack_require__(3); var sshpk = __webpack_require__(328); var jsprim = __webpack_require__(746); -var utils = __webpack_require__(174); +var utils = __webpack_require__(175); var sprintf = __webpack_require__(3).format; @@ -115398,7 +115526,7 @@ module.exports = { var assert = __webpack_require__(16); var crypto = __webpack_require__(11); var sshpk = __webpack_require__(328); -var utils = __webpack_require__(174); +var utils = __webpack_require__(175); var HASH_ALGOS = utils.HASH_ALGOS; var PK_ALGOS = utils.PK_ALGOS; @@ -115735,7 +115863,7 @@ module.exports = class Choice { var assert = __webpack_require__(28); var _ = __webpack_require__(38); -var Separator = __webpack_require__(175); +var Separator = __webpack_require__(176); var Choice = __webpack_require__(685); /** @@ -115865,7 +115993,7 @@ var figures = __webpack_require__(270); var { map, takeUntil } = __webpack_require__(63); var Base = __webpack_require__(79); var observe = __webpack_require__(80); -var Paginator = __webpack_require__(176); +var Paginator = __webpack_require__(177); class CheckboxPrompt extends Base { constructor(questions, rl, answers) { @@ -116229,7 +116357,7 @@ var chalk = __webpack_require__(30); var editAsync = __webpack_require__(709).editAsync; var Base = __webpack_require__(79); var observe = __webpack_require__(80); -var { Subject } = __webpack_require__(182); +var { Subject } = __webpack_require__(183); class EditorPrompt extends Base { /** @@ -116336,9 +116464,9 @@ var _ = __webpack_require__(38); var chalk = __webpack_require__(30); var { map, takeUntil } = __webpack_require__(63); var Base = __webpack_require__(79); -var Separator = __webpack_require__(175); +var Separator = __webpack_require__(176); var observe = __webpack_require__(80); -var Paginator = __webpack_require__(176); +var Paginator = __webpack_require__(177); class ExpandPrompt extends Base { constructor(questions, rl, answers) { @@ -116610,11 +116738,11 @@ var _ = __webpack_require__(38); var chalk = __webpack_require__(30); var figures = __webpack_require__(270); var cliCursor = __webpack_require__(381); -var runAsync = __webpack_require__(181); +var runAsync = __webpack_require__(182); var { flatMap, map, take, takeUntil } = __webpack_require__(63); var Base = __webpack_require__(79); var observe = __webpack_require__(80); -var Paginator = __webpack_require__(176); +var Paginator = __webpack_require__(177); class ListPrompt extends Base { constructor(questions, rl, answers) { @@ -116950,9 +117078,9 @@ var _ = __webpack_require__(38); var chalk = __webpack_require__(30); var { map, takeUntil } = __webpack_require__(63); var Base = __webpack_require__(79); -var Separator = __webpack_require__(175); +var Separator = __webpack_require__(176); var observe = __webpack_require__(80); -var Paginator = __webpack_require__(176); +var Paginator = __webpack_require__(177); class RawListPrompt extends Base { constructor(questions, rl, answers) { @@ -117237,9 +117365,9 @@ module.exports = BottomBar; "use strict"; var _ = __webpack_require__(38); -var { defer, empty, from, of } = __webpack_require__(182); +var { defer, empty, from, of } = __webpack_require__(183); var { concatMap, filter, publish, reduce } = __webpack_require__(63); -var runAsync = __webpack_require__(181); +var runAsync = __webpack_require__(182); var utils = __webpack_require__(698); var Base = __webpack_require__(393); @@ -117512,8 +117640,8 @@ module.exports = ScreenManager; "use strict"; var _ = __webpack_require__(38); -var { from, of } = __webpack_require__(182); -var runAsync = __webpack_require__(181); +var { from, of } = __webpack_require__(183); +var runAsync = __webpack_require__(182); /** * Resolve a question property value if it is passed as a function. @@ -119320,7 +119448,7 @@ module.exports = function() { /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); var utf8 = __webpack_require__(703), unicode = __webpack_require__(702), @@ -119671,7 +119799,7 @@ exports.RemoveFileError = RemoveFileError; Object.defineProperty(exports, "__esModule", { value: true }); var chardet_1 = __webpack_require__(704); var child_process_1 = __webpack_require__(331); -var fs_1 = __webpack_require__(5); +var fs_1 = __webpack_require__(4); var iconv_lite_1 = __webpack_require__(726); var tmp_1 = __webpack_require__(954); var CreateFileError_1 = __webpack_require__(705); @@ -128062,7 +128190,7 @@ var fs try { fs = __webpack_require__(391) } catch(err) { - fs = __webpack_require__(5) + fs = __webpack_require__(4) } var api = [ @@ -128673,7 +128801,7 @@ module.exports = Number.isNaN || function (x) { /***/ (function(module, exports, __webpack_require__) { var crypto = __webpack_require__(11) - , qs = __webpack_require__(196) + , qs = __webpack_require__(197) ; function sha1 (key, body) { @@ -128975,9 +129103,9 @@ module.exports = function () { -var isGlob = __webpack_require__(178); +var isGlob = __webpack_require__(179); var findBase = __webpack_require__(652); -var extglob = __webpack_require__(177); +var extglob = __webpack_require__(178); var dotfile = __webpack_require__(733); /** @@ -130228,8 +130356,8 @@ exports.unquoted = unquoted; /***/ (function(module, exports, __webpack_require__) { var once = __webpack_require__(83) -var eos = __webpack_require__(173) -var fs = __webpack_require__(5) // we only need fs to get the ReadStream and WriteStream prototypes +var eos = __webpack_require__(174) +var fs = __webpack_require__(4) // we only need fs to get the ReadStream and WriteStream prototypes var noop = function () {} @@ -130380,8 +130508,8 @@ module.exports.ctor = define /***/ (function(module, exports, __webpack_require__) { var once = __webpack_require__(83) -var eos = __webpack_require__(173) -var fs = __webpack_require__(5) // we only need fs to get the ReadStream and WriteStream prototypes +var eos = __webpack_require__(174) +var fs = __webpack_require__(4) // we only need fs to get the ReadStream and WriteStream prototypes var noop = function () {} var ancient = /^v?\.0/.test(process.version) @@ -131355,7 +131483,7 @@ function isBuffer(val) { module.exports = read -var readline = __webpack_require__(197) +var readline = __webpack_require__(198) var Mute = __webpack_require__(401) function read (opts, cb) { @@ -131511,7 +131639,7 @@ module.exports = PassThrough; var Transform = __webpack_require__(407); /**/ -var util = __webpack_require__(113); +var util = __webpack_require__(114); util.inherits = __webpack_require__(61); /**/ @@ -131804,7 +131932,7 @@ module.exports = {"name":"request-capture-har","version":"1.2.2","description":" /* 799 */ /***/ (function(module, exports, __webpack_require__) { -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); var pkg = __webpack_require__(798); function buildHarHeaders (headers) { @@ -132118,7 +132246,7 @@ Object.defineProperty(request, 'debug', { var caseless = __webpack_require__(231) -var uuid = __webpack_require__(119) +var uuid = __webpack_require__(120) var helpers = __webpack_require__(305) var md5 = helpers.md5 @@ -132377,8 +132505,8 @@ module.exports = getProxyFromURI "use strict"; -var fs = __webpack_require__(5) -var qs = __webpack_require__(196) +var fs = __webpack_require__(4) +var qs = __webpack_require__(197) var validate = __webpack_require__(677) var extend = __webpack_require__(269) @@ -132685,7 +132813,7 @@ exports.header = function (uri, method, opts) { "use strict"; -var uuid = __webpack_require__(119) +var uuid = __webpack_require__(120) var CombinedStream = __webpack_require__(385) var isstream = __webpack_require__(399) var Buffer = __webpack_require__(45).Buffer @@ -132807,7 +132935,7 @@ exports.Multipart = Multipart var url = __webpack_require__(24) var qs = __webpack_require__(404) var caseless = __webpack_require__(231) -var uuid = __webpack_require__(119) +var uuid = __webpack_require__(120) var oauth = __webpack_require__(768) var crypto = __webpack_require__(11) var Buffer = __webpack_require__(45).Buffer @@ -132960,7 +133088,7 @@ exports.OAuth = OAuth var qs = __webpack_require__(404) -var querystring = __webpack_require__(196) +var querystring = __webpack_require__(197) function Querystring (request) { this.request = request @@ -134976,11 +135104,11 @@ module.exports = {"author":{"name":"Jeremy Stashewsky","email":"jstashewsky@sale var http = __webpack_require__(87) -var https = __webpack_require__(195) +var https = __webpack_require__(196) var url = __webpack_require__(24) var util = __webpack_require__(3) var stream = __webpack_require__(23) -var zlib = __webpack_require__(198) +var zlib = __webpack_require__(199) var aws2 = __webpack_require__(521) var aws4 = __webpack_require__(522) var httpSignature = __webpack_require__(680) @@ -136540,7 +136668,7 @@ module.exports = async; /***/ (function(module, exports, __webpack_require__) { var core = __webpack_require__(306); -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); var path = __webpack_require__(0); var caller = __webpack_require__(417); var nodeModulesPaths = __webpack_require__(418); @@ -136758,7 +136886,7 @@ module.exports = {"assert":true,"async_hooks":">= 8","buffer_ieee754":"< 0.9.7", /***/ (function(module, exports, __webpack_require__) { var core = __webpack_require__(306); -var fs = __webpack_require__(5); +var fs = __webpack_require__(4); var path = __webpack_require__(0); var caller = __webpack_require__(417); var nodeModulesPaths = __webpack_require__(418); @@ -137176,7 +137304,7 @@ RetryOperation.prototype.mainError = function() { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_asap__ = __webpack_require__(438); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isNumeric__ = __webpack_require__(190); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_isNumeric__ = __webpack_require__(191); /** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */ @@ -137237,7 +137365,7 @@ var SubscribeOnObservable = /*@__PURE__*/ (function (_super) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = bindCallback; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__ = __webpack_require__(183); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__ = __webpack_require__(184); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__operators_map__ = __webpack_require__(47); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_canReportError__ = __webpack_require__(322); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isArray__ = __webpack_require__(41); @@ -137356,7 +137484,7 @@ function dispatchError(state) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = bindNodeCallback; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__ = __webpack_require__(183); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__AsyncSubject__ = __webpack_require__(184); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__operators_map__ = __webpack_require__(47); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_canReportError__ = __webpack_require__(322); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isScheduler__ = __webpack_require__(49); @@ -137756,7 +137884,7 @@ function fromIterable(input, scheduler) { /* harmony export (immutable) */ __webpack_exports__["a"] = fromObservable; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__symbol_observable__ = __webpack_require__(117); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__symbol_observable__ = __webpack_require__(118); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToObservable__ = __webpack_require__(449); /** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable,_util_subscribeToObservable PURE_IMPORTS_END */ @@ -137829,7 +137957,7 @@ function fromPromise(input, scheduler) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = generate; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(118); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(119); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isScheduler__ = __webpack_require__(49); /** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */ @@ -137989,7 +138117,7 @@ function iif(condition, trueResult, falseResult) { /* harmony export (immutable) */ __webpack_exports__["a"] = interval; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Observable__ = __webpack_require__(12); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scheduler_async__ = __webpack_require__(40); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isNumeric__ = __webpack_require__(190); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isNumeric__ = __webpack_require__(191); /** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */ @@ -138667,7 +138795,7 @@ var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { /* harmony export (immutable) */ __webpack_exports__["a"] = bufferWhen; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscription__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14); @@ -138867,7 +138995,7 @@ function combineLatest() { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = concat; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_concat__ = __webpack_require__(186); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_concat__ = __webpack_require__(187); /** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */ function concat() { @@ -139131,7 +139259,7 @@ function dispatchNext(subscriber) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__scheduler_async__ = __webpack_require__(40); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isDate__ = __webpack_require__(443); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Notification__ = __webpack_require__(184); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__Notification__ = __webpack_require__(185); /** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -139509,7 +139637,7 @@ function distinctUntilKeyChanged(key, compare) { /* harmony export (immutable) */ __webpack_exports__["a"] = elementAt; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_ArgumentOutOfRangeError__ = __webpack_require__(152); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(147); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__throwIfEmpty__ = __webpack_require__(188); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__throwIfEmpty__ = __webpack_require__(189); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaultIfEmpty__ = __webpack_require__(146); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__take__ = __webpack_require__(319); /** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */ @@ -139541,7 +139669,7 @@ function elementAt(index, defaultValue) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_fromArray__ = __webpack_require__(85); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_scalar__ = __webpack_require__(312); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_empty__ = __webpack_require__(39); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_concat__ = __webpack_require__(186); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_concat__ = __webpack_require__(187); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isScheduler__ = __webpack_require__(49); /** PURE_IMPORTS_START _observable_fromArray,_observable_scalar,_observable_empty,_observable_concat,_util_isScheduler PURE_IMPORTS_END */ @@ -139799,7 +139927,7 @@ var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) { /* unused harmony export ExpandOperator */ /* unused harmony export ExpandSubscriber */ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__OuterSubscriber__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_subscribeToResult__ = __webpack_require__(14); @@ -139971,8 +140099,8 @@ function findIndex(predicate, thisArg) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(147); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__take__ = __webpack_require__(319); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaultIfEmpty__ = __webpack_require__(146); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__throwIfEmpty__ = __webpack_require__(188); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_identity__ = __webpack_require__(118); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__throwIfEmpty__ = __webpack_require__(189); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_identity__ = __webpack_require__(119); /** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -140075,9 +140203,9 @@ var IsEmptySubscriber = /*@__PURE__*/ (function (_super) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_EmptyError__ = __webpack_require__(153); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__filter__ = __webpack_require__(147); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__takeLast__ = __webpack_require__(320); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__throwIfEmpty__ = __webpack_require__(188); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__throwIfEmpty__ = __webpack_require__(189); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__defaultIfEmpty__ = __webpack_require__(146); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_identity__ = __webpack_require__(118); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_identity__ = __webpack_require__(119); /** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */ @@ -140138,7 +140266,7 @@ var MapToSubscriber = /*@__PURE__*/ (function (_super) { /* harmony export (immutable) */ __webpack_exports__["a"] = materialize; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Notification__ = __webpack_require__(184); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Notification__ = __webpack_require__(185); /** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ @@ -140185,7 +140313,7 @@ var MaterializeSubscriber = /*@__PURE__*/ (function (_super) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = max; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(187); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(188); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function max(comparer) { @@ -140249,7 +140377,7 @@ function mergeMapTo(innerObservable, resultSelector, concurrent) { /* unused harmony export MergeScanOperator */ /* unused harmony export MergeScanSubscriber */ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_subscribeToResult__ = __webpack_require__(14); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13); @@ -140359,7 +140487,7 @@ var MergeScanSubscriber = /*@__PURE__*/ (function (_super) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = min; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(187); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(188); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function min(comparer) { @@ -140572,7 +140700,7 @@ function plucker(props, length) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = publish; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Subject__ = __webpack_require__(36); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(116); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(117); /** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */ @@ -140591,7 +140719,7 @@ function publish(selector) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = publishBehavior; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__BehaviorSubject__ = __webpack_require__(419); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(116); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(117); /** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */ @@ -140607,8 +140735,8 @@ function publishBehavior(value) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = publishLast; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__AsyncSubject__ = __webpack_require__(183); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(116); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__AsyncSubject__ = __webpack_require__(184); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(117); /** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */ @@ -140625,7 +140753,7 @@ function publishLast() { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = publishReplay; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ReplaySubject__ = __webpack_require__(308); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(116); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__multicast__ = __webpack_require__(117); /** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */ @@ -140738,7 +140866,7 @@ var RepeatSubscriber = /*@__PURE__*/ (function (_super) { /* harmony export (immutable) */ __webpack_exports__["a"] = repeatWhen; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14); @@ -140885,7 +141013,7 @@ var RetrySubscriber = /*@__PURE__*/ (function (_super) { /* harmony export (immutable) */ __webpack_exports__["a"] = retryWhen; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14); @@ -141090,7 +141218,7 @@ function dispatchNotification(state) { /* unused harmony export SequenceEqualSubscriber */ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48); /** PURE_IMPORTS_START tslib,_Subscriber,_util_tryCatch,_util_errorObject PURE_IMPORTS_END */ @@ -141215,7 +141343,7 @@ var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = share; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__multicast__ = __webpack_require__(116); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__multicast__ = __webpack_require__(117); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__refCount__ = __webpack_require__(316); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subject__ = __webpack_require__(36); /** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */ @@ -141586,7 +141714,7 @@ var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__observable_fromArray__ = __webpack_require__(85); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__observable_scalar__ = __webpack_require__(312); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__observable_empty__ = __webpack_require__(39); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_concat__ = __webpack_require__(186); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__observable_concat__ = __webpack_require__(187); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isScheduler__ = __webpack_require__(49); /** PURE_IMPORTS_START _observable_fromArray,_observable_scalar,_observable_empty,_observable_concat,_util_isScheduler PURE_IMPORTS_END */ @@ -141659,7 +141787,7 @@ var SubscribeOnOperator = /*@__PURE__*/ (function () { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = switchAll; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__switchMap__ = __webpack_require__(318); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(118); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_identity__ = __webpack_require__(119); /** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */ @@ -141985,7 +142113,7 @@ var Timestamp = /*@__PURE__*/ (function () { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = toArray; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(187); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__reduce__ = __webpack_require__(188); /** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ function toArrayReducer(arr, item, index) { @@ -142179,7 +142307,7 @@ var WindowCountSubscriber = /*@__PURE__*/ (function (_super) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__scheduler_async__ = __webpack_require__(40); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isNumeric__ = __webpack_require__(190); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_isNumeric__ = __webpack_require__(191); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_isScheduler__ = __webpack_require__(49); /** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ @@ -142347,7 +142475,7 @@ function dispatchWindowClose(state) { /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscription__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__OuterSubscriber__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util_subscribeToResult__ = __webpack_require__(14); @@ -142491,7 +142619,7 @@ var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) { /* harmony export (immutable) */ __webpack_exports__["a"] = windowWhen; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subject__ = __webpack_require__(36); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(56); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_tryCatch__ = __webpack_require__(57); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_errorObject__ = __webpack_require__(48); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__OuterSubscriber__ = __webpack_require__(13); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_subscribeToResult__ = __webpack_require__(14); @@ -143166,7 +143294,7 @@ var Immediate = { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = isInteropObservable; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__symbol_observable__ = __webpack_require__(117); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__symbol_observable__ = __webpack_require__(118); /** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ function isInteropObservable(input) { @@ -144881,7 +145009,7 @@ module.exports = Extract /***/ (function(module, exports, __webpack_require__) { var constants = __webpack_require__(651) -var eos = __webpack_require__(173) +var eos = __webpack_require__(174) var util = __webpack_require__(3) var alloc = __webpack_require__(380) var toBuffer = __webpack_require__(462) @@ -145431,7 +145559,7 @@ function through (write, end, opts) { /* * Module dependencies. */ -const fs = __webpack_require__(5); +const fs = __webpack_require__(4); const path = __webpack_require__(0); const crypto = __webpack_require__(11); const osTmpDir = __webpack_require__(772); @@ -146043,7 +146171,7 @@ module.exports.setGracefulCleanup = setGracefulCleanup; var net = __webpack_require__(164) , tls = __webpack_require__(467) , http = __webpack_require__(87) - , https = __webpack_require__(195) + , https = __webpack_require__(196) , events = __webpack_require__(77) , assert = __webpack_require__(28) , util = __webpack_require__(3) @@ -146550,7 +146678,7 @@ var mod_assertplus = __webpack_require__(16); var mod_util = __webpack_require__(3); var mod_extsprintf = __webpack_require__(961); -var mod_isError = __webpack_require__(113).isError; +var mod_isError = __webpack_require__(114).isError; var sprintf = mod_extsprintf.sprintf; /* diff --git a/.yarnrc b/.yarnrc index 7fe6e33326b9..c8c3d9da3614 100644 --- a/.yarnrc +++ b/.yarnrc @@ -3,4 +3,4 @@ lastUpdateCheck 1581546341989 -yarn-path ".yarn/releases/yarn-1.22.10.cjs" +yarn-path ".yarn/releases/yarn-1.22.17.cjs" diff --git a/CHANGELOG.md b/CHANGELOG.md index a5ea0f25bacf..e5753aa20f1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,690 @@ + +# 14.0.0-next.4 "metal-harness" (2022-02-23) +## Breaking Changes +### material +- Previously the `mixinErrorState` mixin function defined +a class member for `stateChanges`. This is no longer the case, and consumers +need to provide the `stateChanges` class member themselves. + +- * `CdkStepper._orientation` has been removed. Use `CdkStepper.orientation` instead. +* The `_document` parameter from the `CdkStepper` constructor has been removed. +* The `_document` parameter from the `MatStepper` constructor has been removed. +* `MatVerticalStepper` has been removed. Use `MatStepper` instead. +* `MatHorizontalStepper` has been removed. Use `MatStepper` instead. +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [3e1080931e](https://github.com/angular/components/commit/3e1080931e62226874e1253528f35878b3228af9) | feat | **mdc-list:** add support for marking the act… ([#24433](https://github.com/angular/components/pull/24433)) | +| [4c0a4603d9](https://github.com/angular/components/commit/4c0a4603d93d77646c135b979cce76a1f80b2246) | fix | **mdc-dialog:** align change detection with non-MDC version ([#24451](https://github.com/angular/components/pull/24451)) | +| [f6cdc96994](https://github.com/angular/components/commit/f6cdc96994b093305dd98c696ddf369fe5a92f19) | fix | **mdc-list:** fix typo in action-list css class ([#24448](https://github.com/angular/components/pull/24448)) | +| [dbcd1404bb](https://github.com/angular/components/commit/dbcd1404bb1484b49cf5bfd094650a8e7e27c439) | fix | **mdc-list:** use body-1 rather than subtitle-1 typography for list items ([#24417](https://github.com/angular/components/pull/24417)) | +| [f5d74daf1d](https://github.com/angular/components/commit/f5d74daf1d9adf833f223253835244529af664cc) | fix | **mdc-select:** target correct element with typography ([#24258](https://github.com/angular/components/pull/24258)) | +| [ea6fdb91c1](https://github.com/angular/components/commit/ea6fdb91c1283630898c132f79a14326f5a2ff21) | perf | **mdc-table:** reduce bundle size ([#24309](https://github.com/angular/components/pull/24309)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [9946bb34bb](https://github.com/angular/components/commit/9946bb34bb76328ad104c520aa8021784a1c48bb) | feat | **form-field:** add color to default options ([#24438](https://github.com/angular/components/pull/24438)) ([#24440](https://github.com/angular/components/pull/24440)) | +| [0d162a4132](https://github.com/angular/components/commit/0d162a413202fc7ed309aca748bf138845a1ba68) | feat | **sort:** default arrow position in MatSortDefaultOptions ([#23609](https://github.com/angular/components/pull/23609)) | +| [c0ed5ce5de](https://github.com/angular/components/commit/c0ed5ce5de2fcd36ba249a869a8a8e57d33d9b8d) | fix | **autocomplete:** closing immediately when input is focused programmatically ([#21081](https://github.com/angular/components/pull/21081)) | +| [7e9916bc9e](https://github.com/angular/components/commit/7e9916bc9ea4b4360f099b395891a50ab297e026) | fix | **autocomplete:** use narrow value for aria-haspopup ([#15361](https://github.com/angular/components/pull/15361)) | +| [b703cb36a8](https://github.com/angular/components/commit/b703cb36a875d124a526f1b4404ecc153ae36b14) | fix | **button-toggle:** unable to override elevation and high contrast styling applied incorrectly ([#14722](https://github.com/angular/components/pull/14722)) | +| [ab39847567](https://github.com/angular/components/commit/ab398475678d7bab1d9fba84536efd8165966564) | fix | **checkbox:** clear static aria attributes from host nodes ([#17092](https://github.com/angular/components/pull/17092)) | +| [19b89342a3](https://github.com/angular/components/commit/19b89342a3eda66add24da32fe074c7320b8d991) | fix | **form-field:** use correct color for form fields in high contrast mode ([#24422](https://github.com/angular/components/pull/24422)) | +| [e0b76ed029](https://github.com/angular/components/commit/e0b76ed029939a7bb8246410b0170cfdbf35da25) | fix | **radio:** clicks not propagating to wrapper elements ([#24459](https://github.com/angular/components/pull/24459)) | +| [f80403c97d](https://github.com/angular/components/commit/f80403c97d9a6e21eba8557268e39a7dbe8e7f98) | fix | **radio:** not checked on first click if partially visible ([#19505](https://github.com/angular/components/pull/19505)) | +| [1d5175b313](https://github.com/angular/components/commit/1d5175b3135a0c6864d6bbb69ad2d20864a2722f) | fix | **select:** arrow highlighted state not updating in Safari ([#15281](https://github.com/angular/components/pull/15281)) | +| [dddfbd1ea6](https://github.com/angular/components/commit/dddfbd1ea69349ec5ac4d1021825e3137ea54525) | fix | **sidenav:** prevent focus from entering hidden sidenav if child element has a visibility | +| [d9ad68acda](https://github.com/angular/components/commit/d9ad68acdab665446e1c4e2c7c66b522c004d026) | fix | **tabs:** use buttons for paginator also tab-header and mdc ([#24338](https://github.com/angular/components/pull/24338)) | +| [bab3b989f9](https://github.com/angular/components/commit/bab3b989f9265c0798bdacee4d931828497ee3bc) | refactor | **core:** no longer define `stateChanges` in `mixinErrorState` ([#22875](https://github.com/angular/components/pull/22875)) | +| [db126b5797](https://github.com/angular/components/commit/db126b579760263ea8de30689c54c4d32fa2137a) | refactor | **stepper:** remove deprecated APIs for version 13 ([#23328](https://github.com/angular/components/pull/23328)) | +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [feaf50b43a](https://github.com/angular/components/commit/feaf50b43a9debfbd6dfe8949ff69cce7853b455) | feat | **a11y:** HighContrastModeDetector need not support `IE11` ([#24462](https://github.com/angular/components/pull/24462)) | +| [3e1de9dd29](https://github.com/angular/components/commit/3e1de9dd298ec2379776a6debb0e49a45f350a4a) | fix | **drag-drop:** incorrectly sorting element inside dialog with blocked scrolling ([#14806](https://github.com/angular/components/pull/14806)) | +| [761f5fde28](https://github.com/angular/components/commit/761f5fde28ffc547e1d700906f3f82f5187ed526) | fix | **drag-drop:** stop pointer events on placeholder ([#24404](https://github.com/angular/components/pull/24404)) | +### ripple +| Commit | Type | Description | +| -- | -- | -- | +| [65fb5f4491](https://github.com/angular/components/commit/65fb5f44911b3839c1f40ab87cf380381e030434) | fix | not fading out on touch devices ([#12488](https://github.com/angular/components/pull/12488)) | +## Special Thanks +Alireza Ebrahimkhani, Andrew Seguin, Arthur Ming, Jeri Peier, Kristiyan Kostadinov, Miles Malerba, Paul Gschwendtner, Ruslan Lekhman and renovate[bot] + + + + +# 13.2.4 "plastic-mug" (2022-02-23) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [74bae85bc5](https://github.com/angular/components/commit/74bae85bc50acbabff38b1eb00f7288fbef9d806) | fix | **drag-drop:** incorrectly sorting element inside dialog with blocked scrolling ([#14806](https://github.com/angular/components/pull/14806)) | +| [81898ca5f6](https://github.com/angular/components/commit/81898ca5f6966640273d3bafc828bd29ed400208) | fix | **drag-drop:** stop pointer events on placeholder ([#24404](https://github.com/angular/components/pull/24404)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [6b76469b4a](https://github.com/angular/components/commit/6b76469b4a4bf63ee5d70bc8146dcaceddc3380f) | fix | **autocomplete:** closing immediately when input is focused programmatically ([#21081](https://github.com/angular/components/pull/21081)) | +| [3ea76419c8](https://github.com/angular/components/commit/3ea76419c85e896ac26d05486ed6b792e282c8c1) | fix | **autocomplete:** use narrow value for aria-haspopup ([#15361](https://github.com/angular/components/pull/15361)) | +| [9a12eabf6b](https://github.com/angular/components/commit/9a12eabf6b4c44af7d39566d1b541c0c42449714) | fix | **button-toggle:** unable to override elevation and high contrast styling applied incorrectly ([#14722](https://github.com/angular/components/pull/14722)) | +| [cbd4b0ce4f](https://github.com/angular/components/commit/cbd4b0ce4f5c8ebee1b5d03dfd93a21c8fb2a351) | fix | **checkbox:** clear static aria attributes from host nodes ([#17092](https://github.com/angular/components/pull/17092)) | +| [f6eaa7c1cf](https://github.com/angular/components/commit/f6eaa7c1cf81155b5fb720a7b46d55dc7d48f95d) | fix | **form-field:** use correct color for form fields in high contrast mode ([#24422](https://github.com/angular/components/pull/24422)) | +| [39d7834797](https://github.com/angular/components/commit/39d7834797020e29c73181893c2473d85ec028a0) | fix | **radio:** clicks not propagating to wrapper elements ([#24459](https://github.com/angular/components/pull/24459)) | +| [5988b8f77b](https://github.com/angular/components/commit/5988b8f77b2bddf08a839c80e72381ed748549fd) | fix | **radio:** not checked on first click if partially visible ([#19505](https://github.com/angular/components/pull/19505)) | +| [33716f124b](https://github.com/angular/components/commit/33716f124bd554ed947adc6ccfa2fa89e84ebdb2) | fix | **select:** arrow highlighted state not updating in Safari ([#15281](https://github.com/angular/components/pull/15281)) | +| [fc204e4f4d](https://github.com/angular/components/commit/fc204e4f4dd601e0623f6a90c72bca7fec48daec) | fix | **sidenav:** prevent focus from entering hidden sidenav if child element has a visibility | +| [5e41a0ad09](https://github.com/angular/components/commit/5e41a0ad0903a9e4360cdf2f7c26c86e394bd215) | fix | **tabs:** use buttons for paginator also tab-header and mdc ([#24338](https://github.com/angular/components/pull/24338)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [4198f5b5dc](https://github.com/angular/components/commit/4198f5b5dc2d06941e38b294923d8213c347c319) | fix | **mdc-dialog:** align change detection with non-MDC version ([#24451](https://github.com/angular/components/pull/24451)) | +| [45836f924d](https://github.com/angular/components/commit/45836f924dc1a410baa02903b80dc147c14dc269) | fix | **mdc-list:** fix typo in action-list css class ([#24448](https://github.com/angular/components/pull/24448)) | +| [7ca02495cd](https://github.com/angular/components/commit/7ca02495cdfa1635f1fe5496cf1c01ff330126b9) | fix | **mdc-list:** use body-1 rather than subtitle-1 typography for list items ([#24417](https://github.com/angular/components/pull/24417)) | +| [c9a15476e8](https://github.com/angular/components/commit/c9a15476e8aa4995b2129e5d97cd631746adaaf5) | fix | **mdc-select:** target correct element with typography ([#24258](https://github.com/angular/components/pull/24258)) | +| [bd3f39fb15](https://github.com/angular/components/commit/bd3f39fb154d75f922501524051810bccd4c4756) | perf | **mdc-table:** reduce bundle size ([#24309](https://github.com/angular/components/pull/24309)) | +## Special Thanks +Alireza Ebrahimkhani, Arthur Ming, Jeri Peier, Kristiyan Kostadinov, Miles Malerba, Paul Gschwendtner and renovate[bot] + + + + +# 14.0.0-next.3 "sapphire-sneakers" (2022-02-16) +### material +| Commit | Type | Description | +| -- | -- | -- | +| [06e65c6b5](https://github.com/angular/components/commit/06e65c6b5d1f7886653d280e97a87c8af57c30e8) | feat | **chips:** update chip-list describedby to match input ([#24292](https://github.com/angular/components/pull/24292)) | +| [ca1aaae7e](https://github.com/angular/components/commit/ca1aaae7e2a700442e8c651468cb07d63397bbd2) | feat | **progress-spinner:** add color to default options ([#24356](https://github.com/angular/components/pull/24356)) | +| [5603d9b7f](https://github.com/angular/components/commit/5603d9b7f1f9f3987d7a5a98e95156b47e293881) | fix | **datepicker:** fix failing unit test in multiyear view ([#24418](https://github.com/angular/components/pull/24418)) | +| [15774a923](https://github.com/angular/components/commit/15774a9235f933a61b9db86b682977b70fe69ec8) | fix | **datepicker:** update active date on focusing a cell ([#24384](https://github.com/angular/components/pull/24384)) | +| [599d1b445](https://github.com/angular/components/commit/599d1b445f21fad2cec6a95bec824a409d55bb80) | fix | **dialog:** Use `align` as `@Input()` in `MatDialogActions` ([#24328](https://github.com/angular/components/pull/24328)) | +| [f868e33a5](https://github.com/angular/components/commit/f868e33a5a13f32ffad6e3ee50460e3ca1b7f82b) | fix | **menu:** position classes not update when window is resized ([#24385](https://github.com/angular/components/pull/24385)) | +| [e917541cb](https://github.com/angular/components/commit/e917541cb53f492bf75e31d8376132e0aba4ea58) | fix | **tabs:** allow coercing of booleans for all inputs ([#24377](https://github.com/angular/components/pull/24377)) | +### cdk-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [d8ff80a44](https://github.com/angular/components/commit/d8ff80a4436139de61a78020fbcc1316c5374a0d) | fix | **column-resize:** Fix bug in hover logic introduced by IE cleanup ([#24396](https://github.com/angular/components/pull/24396)) | +## Special Thanks +Jean-Philippe, Jeri Peier, Karl Seamon, Kristiyan Kostadinov, Paul Gschwendtner, Robin (Robert) Thomas, Ruslan Lekhman, Wagner Maciel, Zach Arend and Zack Elliott + + + + +# 13.2.3 "platinum-pen" (2022-02-16) +### material +| Commit | Type | Description | +| -- | -- | -- | +| [2c73b2df6](https://github.com/angular/components/commit/2c73b2df64d784c203829317b3f78d38e7b7c009) | fix | **menu:** position classes not update when window is resized ([#24385](https://github.com/angular/components/pull/24385)) | +### cdk-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [8c632ee87](https://github.com/angular/components/commit/8c632ee8781e5c60b46e4255e034218d03e54a68) | fix | **column-resize:** Fix bug in hover logic introduced by IE cleanup ([#24396](https://github.com/angular/components/pull/24396)) | +## Special Thanks +Karl Seamon, Kristiyan Kostadinov, Paul Gschwendtner, Zach Arend and Zack Elliott + + + + +# 14.0.0-next.2 "ferrous-squirrel" (2022-02-09) +## Breaking Changes +### material +- `MatChipInputEvent.chipInput` is now a required property. +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [3523adf71](https://github.com/angular/components/commit/3523adf71eca4c29b8c8cff1bf90c6f1d15d88ca) | fix | **mdc-checkbox:** add missing classes for checked ([#24350](https://github.com/angular/components/pull/24350)) | +| [02d6e7d77](https://github.com/angular/components/commit/02d6e7d77ae77feae7d52c929b0dff74f6624c1a) | fix | **mdc-tabs:** CSS applied to wrong element when preserveContent is enabled ([#24346](https://github.com/angular/components/pull/24346)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [d67dad6b1](https://github.com/angular/components/commit/d67dad6b1b77692a15762bcbdbd5e9ea94f1a34e) | fix | **chips:** Make `MatChipInputEvent.chipInput` required. ([#23692](https://github.com/angular/components/pull/23692)) | +| [1c9173196](https://github.com/angular/components/commit/1c917319642822881532be91c699122976bf10c3) | fix | **datepicker:** fix improper focus trapping with VoiceOver and ChromeVox ([#24300](https://github.com/angular/components/pull/24300)) | +| [7a6549fb1](https://github.com/angular/components/commit/7a6549fb11a108f351aa4bf2a3686a75bdbc642c) | fix | **datepicker:** remove abbr from day of week header ([#24106](https://github.com/angular/components/pull/24106)) | +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [64606fa65](https://github.com/angular/components/commit/64606fa65bd0d307a87d8a64b7db0da90105102c) | feat | **testing:** add methods `getOptionalHarness` and `hasHarness` ([#24355](https://github.com/angular/components/pull/24355)) | +| [5221b79d5](https://github.com/angular/components/commit/5221b79d57c92a75f8e3f5b4cf66bd93814a5d54) | fix | **scrolling:** fix scrolling in appendOnly mode ([#24153](https://github.com/angular/components/pull/24153)) | +### material-experiental +| Commit | Type | Description | +| -- | -- | -- | +| [dd59b4a10](https://github.com/angular/components/commit/dd59b4a10cb30639fc00039f76d920cb60fa3020) | fix | **mdc-list:** update material-components-web to pick up multi-select list keyboard support ([#24354](https://github.com/angular/components/pull/24354)) | +## Special Thanks +Alan Agius, Artur Androsovych, Chabbey François, Joey Perrott, Kristiyan Kostadinov, Miles Malerba, Paul Gschwendtner, Zach Arend and renovate[bot] + + + + +# 13.2.2 "enamel-eagle" (2022-02-09) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [4b6e83274](https://github.com/angular/components/commit/4b6e83274b45053523b21cbb075b2c0d0de63690) | fix | **scrolling:** fix scrolling in appendOnly mode ([#24153](https://github.com/angular/components/pull/24153)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [f5199eeeb](https://github.com/angular/components/commit/f5199eeeba2b8665500d62665253adefe492d3bf) | fix | **datepicker:** fix improper focus trapping with VoiceOver and ChromeVox ([#24300](https://github.com/angular/components/pull/24300)) | +| [a72bcbe50](https://github.com/angular/components/commit/a72bcbe503377e6e14862eed3c619302201dfb12) | fix | **datepicker:** remove abbr from day of week header ([#24106](https://github.com/angular/components/pull/24106)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [3bbcb444f](https://github.com/angular/components/commit/3bbcb444faca12b6f6741a3c8b3f47bd54dda89e) | fix | **mdc-checkbox:** add missing classes for checked ([#24350](https://github.com/angular/components/pull/24350)) | +### material-experiental +| Commit | Type | Description | +| -- | -- | -- | +| [70bec6054](https://github.com/angular/components/commit/70bec605400eed85d439c15e0cc902522260d03b) | fix | **mdc-list:** update material-components-web to pick up multi-select list keyboard support ([#24354](https://github.com/angular/components/pull/24354)) | +## Special Thanks +Alan Agius, Artur Androsovych, Chabbey François, Joey Perrott, Kristiyan Kostadinov, Miles Malerba, Paul Gschwendtner, Zach Arend and renovate[bot] + + + + +# 14.0.0-next.1 "denim-dinosaur" (2022-02-02) +## Breaking Changes +### cdk +- The deprecated `angular/cdk/testing/protractor` entry-point has been removed. +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [f0f9cbecf5](https://github.com/angular/components/commit/f0f9cbecf5afb7dff226a0a79df727f439324f85) | fix | **mdc-button:** align outline color with spec ([#24249](https://github.com/angular/components/pull/24249)) | +| [5a0002739a](https://github.com/angular/components/commit/5a0002739a720c7480cb284b55f168f404046dc2) | perf | **mdc-list:** reduce bundle size ([#24291](https://github.com/angular/components/pull/24291)) | +### cdk-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [75cda48da1](https://github.com/angular/components/commit/75cda48da100335f875ad6ba87db25ab01d0e972) | fix | **menu:** keep context menus open when mouse is released ([#24308](https://github.com/angular/components/pull/24308)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [c3188c84ef](https://github.com/angular/components/commit/c3188c84ef140f0f9e3366516d9004b46ed8da71) | feat | **tabs:** add the ability to keep content inside the DOM while off-screen ([#20393](https://github.com/angular/components/pull/20393)) | +| [cad0872208](https://github.com/angular/components/commit/cad087220848b2cd2c252520bac26a42d8b279aa) | feat | **tabs:** add the ability to keep content inside the DOM while off-screen ([#24299](https://github.com/angular/components/pull/24299)) | +| [1933225833](https://github.com/angular/components/commit/1933225833a17d1c4246ca2afe5dac6b0ecc4060) | fix | **datepicker:** content overflowing when large custom header is provided ([#24255](https://github.com/angular/components/pull/24255)) | +| [a74d92e33d](https://github.com/angular/components/commit/a74d92e33df365558eaf54661db32de379d68885) | fix | **menu:** adjust overlay size when amount of items changes ([#21457](https://github.com/angular/components/pull/21457)) | +| [c1f25bcdbe](https://github.com/angular/components/commit/c1f25bcdbea56556ee27d4153fd44dc3a95567fe) | fix | **slider:** Ticks updated wrongly if the max property 0 ([#24218](https://github.com/angular/components/pull/24218)) | +| [e8919bcf4b](https://github.com/angular/components/commit/e8919bcf4b614fde6f6614fcaaf799b97f9702b5) | fix | **tabs:** use buttons for paginator ([#14640](https://github.com/angular/components/pull/14640)) | +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [781a45a2b6](https://github.com/angular/components/commit/781a45a2b6e7bd0ea38e7023fc4f492b02a0014f) | fix | **a11y:** allow for multiple browser-generated description containers ([#23507](https://github.com/angular/components/pull/23507)) | +| [2575b00808](https://github.com/angular/components/commit/2575b008083f4736ed48877604b0165c03bd9175) | refactor | **testing:** remove deprecated protractor harness environment ([#24304](https://github.com/angular/components/pull/24304)) | +### multiple +| Commit | Type | Description | +| -- | -- | -- | +| [c46ece07b3](https://github.com/angular/components/commit/c46ece07b348bad43e54fbad9d10e4fb9aab367f) | perf | Remove IE 11 cruft from table, column-resize, and popover-edit. ([#23900](https://github.com/angular/components/pull/23900)) | +## Special Thanks +Amy Sorto, Dmytro Mezhenskyi, Joey Perrott, Karl Seamon, Kristiyan Kostadinov, Miles Malerba, Paul Gschwendtner, Zach Arend, Zack Elliott and ram + + + + +# 13.2.1 "vinyl-viola" (2022-02-02) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [70d1634e70](https://github.com/angular/components/commit/70d1634e70d3fd61669b7d9680560615b478b87d) | fix | **a11y:** allow for multiple browser-generated description containers ([#23507](https://github.com/angular/components/pull/23507)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [d8ddfb04ca](https://github.com/angular/components/commit/d8ddfb04ca8a8622059d0dc01a2a43bd3123fb7f) | fix | **datepicker:** content overflowing when large custom header is provided ([#24255](https://github.com/angular/components/pull/24255)) | +| [d7fe423a3e](https://github.com/angular/components/commit/d7fe423a3e3f209757792edd5a21a24629850661) | fix | **menu:** adjust overlay size when amount of items changes ([#21457](https://github.com/angular/components/pull/21457)) | +| [974d330dc8](https://github.com/angular/components/commit/974d330dc8f6601e121f6b7a5f1b480b310f16c5) | fix | **slider:** Ticks updated wrongly if the max property 0 ([#24218](https://github.com/angular/components/pull/24218)) | +| [a634505190](https://github.com/angular/components/commit/a63450519060850faf83b768fa8af6c77da094cf) | fix | **tabs:** use buttons for paginator ([#14640](https://github.com/angular/components/pull/14640)) | +### cdk-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [7aff50a6d8](https://github.com/angular/components/commit/7aff50a6d83748fa4d4aff7028dc80aa9ba25441) | fix | **menu:** keep context menus open when mouse is released ([#24308](https://github.com/angular/components/pull/24308)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [c02c43a2b9](https://github.com/angular/components/commit/c02c43a2b960ce8d23c39167e7bab79bec71d689) | fix | **mdc-button:** align outline color with spec ([#24249](https://github.com/angular/components/pull/24249)) | +| [5d7d6ea107](https://github.com/angular/components/commit/5d7d6ea1072facfec3be819cdb629f17610f0e46) | perf | **mdc-list:** reduce bundle size ([#24291](https://github.com/angular/components/pull/24291)) | +### multiple +| Commit | Type | Description | +| -- | -- | -- | +| [b32d8d1624](https://github.com/angular/components/commit/b32d8d16244babdb57f4fad07ed3ccf1615f8c6f) | perf | Remove IE 11 cruft from table, column-resize, and popover-edit. ([#23900](https://github.com/angular/components/pull/23900)) | +## Special Thanks +Dmytro Mezhenskyi, Joey Perrott, Karl Seamon, Kristiyan Kostadinov, Miles Malerba, Paul Gschwendtner, Zach Arend and ram + + + + +# 14.0.0-next.0 "moss-mansion" (2022-01-26) +### material +| Commit | Type | Description | +| -- | -- | -- | +| [e03a77065d](https://github.com/angular/components/commit/e03a77065d81c5af62b60f351aa11a1444cad7bc) | fix | **core:** ripples not being clipped on safari in shadow dom ([#24029](https://github.com/angular/components/pull/24029)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [b3c957941a](https://github.com/angular/components/commit/b3c957941a14555eb7adaeb10af3db4f80c0e10a) | fix | **mdc-form-field:** incorrect alignment with border-box alignment ([#24222](https://github.com/angular/components/pull/24222)) | +## Special Thanks +Andrew Seguin, Joey Perrott, Kristiyan Kostadinov and Miles Malerba + + + + +# 13.2.0 "terracotta-tiramisu" (2022-01-26) +### material +| Commit | Type | Description | +| -- | -- | -- | +| [b9a3908fcf](https://github.com/angular/components/commit/b9a3908fcf1abb3c1d11c888581e193768960b35) | feat | **tabs:** add API to update the pagination ([#23288](https://github.com/angular/components/pull/23288)) | +| [f10d245cca](https://github.com/angular/components/commit/f10d245cca22930e6d88aad03ede12f50f96746f) | feat | **tabs:** label & body classes ([#23691](https://github.com/angular/components/pull/23691)) | +| [ea78a473a1](https://github.com/angular/components/commit/ea78a473a17e0b5c23936af7772914f9db8cd058) | feat | **tabs:** Refactor MatTabNav to follow the ARIA tabs pattern ([#24062](https://github.com/angular/components/pull/24062)) | +| [337634f899](https://github.com/angular/components/commit/337634f899ee4d573643627be79c3d986384389f) | fix | **chips:** don't stop propagation on all click events ([#19763](https://github.com/angular/components/pull/19763)) | +| [2b6739742b](https://github.com/angular/components/commit/2b6739742bd3ac138c06a4a69e305cc34504be69) | fix | **datepicker:** change calendar cells to buttons ([#24171](https://github.com/angular/components/pull/24171)) | +| [c55524a8eb](https://github.com/angular/components/commit/c55524a8eb89e211559f5488559d8a25761b295c) | fix | **list:** add isDisabled to all list item harnesses ([#24212](https://github.com/angular/components/pull/24212)) | +| [fa7cd154d0](https://github.com/angular/components/commit/fa7cd154d04427229a663fc22f37b514bdd3355e) | fix | **list:** fix duplicate focus with chromevox on action-list items ([#23361](https://github.com/angular/components/pull/23361)) | +| [0477022d2c](https://github.com/angular/components/commit/0477022d2c467753a0d6d94236745bc9cbf5c067) | fix | **slide-toggle:** remove divs nested inside label ([#21224](https://github.com/angular/components/pull/21224)) | +### google-maps +| Commit | Type | Description | +| -- | -- | -- | +| [e6359cdc67](https://github.com/angular/components/commit/e6359cdc67617be940201dd9fc5660d2997e20c3) | feat | allow for info window focus behavior to be customized ([#23831](https://github.com/angular/components/pull/23831)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [c5482c945f](https://github.com/angular/components/commit/c5482c945f9f2b80ada2942a4e4f70d65626b32f) | feat | **mdc-chips:** switch to evolution API ([#23931](https://github.com/angular/components/pull/23931)) | +| [723b77ad1f](https://github.com/angular/components/commit/723b77ad1fbff5c372202e8340011dcd1703ed20) | feat | **mdc-core:** add missing color, density, typography mixins ([#24063](https://github.com/angular/components/pull/24063)) | +| [407682012d](https://github.com/angular/components/commit/407682012df0e661898a3114d513b50eac805d83) | feat | **mdc-form-field:** Add option for dynamic su… ([#24241](https://github.com/angular/components/pull/24241)) | +| [871a500fb8](https://github.com/angular/components/commit/871a500fb808aaa9823ecac86df20ce8740c92fa) | feat | **mdc-list:** rework API to support secondary text with wrapping | +| [b0f38b7a64](https://github.com/angular/components/commit/b0f38b7a6425d99375a1e4ac7a986c8f4ceab9a7) | fix | **mdc-button:** remove unwanted native button styles ([#24186](https://github.com/angular/components/pull/24186)) | +| [c9ab38bcae](https://github.com/angular/components/commit/c9ab38bcaed0756ebe6c6ba537cc2f830924b4a2) | fix | **mdc-chips:** fix changed after checked error when restoring focus to input ([#24243](https://github.com/angular/components/pull/24243)) | +| [68a29ff1dd](https://github.com/angular/components/commit/68a29ff1dd059ab51b73ed5bcd2eec0c6432c16e) | fix | **mdc-core:** make mat-option typography easier to override ([#24247](https://github.com/angular/components/pull/24247)) | +| [b79406fee8](https://github.com/angular/components/commit/b79406fee8f36d93026dcdd617a142881b125f3a) | fix | **mdc-form-field:** Properly handle when defaults setting is 'dynamic' and the subscriptSizing input is not present. ([#24263](https://github.com/angular/components/pull/24263)) | +| [38affc3d43](https://github.com/angular/components/commit/38affc3d43f75e2608ee1530e6cd360b8b42073a) | fix | **mdc-list:** ensure selection change event fires properly ([#24174](https://github.com/angular/components/pull/24174)) | +| [c199aa2544](https://github.com/angular/components/commit/c199aa2544f0f0ca5b43e2fd9fa76bec17eea523) | fix | **mdc-list:** incorrect active/hover color for selected items | +| [1ce3e5e905](https://github.com/angular/components/commit/1ce3e5e905bcb7f019e3f2ed3f1ffa62021dc594) | perf | **mdc-checkbox:** reduce bundle size ([#24256](https://github.com/angular/components/pull/24256)) | +| [152c60ba12](https://github.com/angular/components/commit/152c60ba12dfc0e17b76ab1cb460dfb910c1868e) | perf | **mdc-radio:** reduce bundle size ([#24267](https://github.com/angular/components/pull/24267)) | +| [02c8f2aa02](https://github.com/angular/components/commit/02c8f2aa02fe90eef64dc074017c22d5703e943c) | perf | **mdc-tabs:** reduce bundle size ([#24262](https://github.com/angular/components/pull/24262)) | +### expansion-panel +| Commit | Type | Description | +| -- | -- | -- | +| [4ec34b5400](https://github.com/angular/components/commit/4ec34b5400efe38fab1b13d544d1bba618b8079e) | fix | title text not centered with taller description ([#12161](https://github.com/angular/components/pull/12161)) | +## Special Thanks +Amy Sorto, Andrew Seguin, Karl Seamon, Kristiyan Kostadinov, Miles Malerba, Paul Gschwendtner, Ruslan Lekhman, Wagner Maciel, Zach Arend, Zack Elliott, coopermeitz and renovate[bot] + + + + +# 13.1.3 "plastic-koala" (2022-01-19) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [109d5a150f](https://github.com/angular/components/commit/109d5a150f7d59f8a10fd52a783d024ac4441493) | fix | **a11y:** not detecting fake mousedown on firefox ([#23493](https://github.com/angular/components/pull/23493)) | +| [c48742eb4e](https://github.com/angular/components/commit/c48742eb4e97979bd0030559236d7ab63f86dbe9) | fix | **table:** revert breaking change of CdkTable constructor ([#24202](https://github.com/angular/components/pull/24202)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [70e0170b95](https://github.com/angular/components/commit/70e0170b950b00efdf3071bf24a2a32b199390b6) | fix | **autocomplete:** don't handle enter events with modifier keys ([#14717](https://github.com/angular/components/pull/14717)) | +| [eae436fdab](https://github.com/angular/components/commit/eae436fdab503f9d533f473812460b607ebe156a) | fix | **autocomplete:** optionSelections not emitting when the list of options changes ([#14813](https://github.com/angular/components/pull/14813)) | +| [402c07b3c7](https://github.com/angular/components/commit/402c07b3c7691edf6f8caae11fc3ca1113382a00) | fix | **autocomplete** restore focus after emitting option selected event ([#18707](https://github.com/angular/components/pull/18707)) | +| [761f9f25a8](https://github.com/angular/components/commit/761f9f25a8d6adce80ac7185dd21bef57669a1b9) | fix | **card:** handle picture element as mat-card-image ([#23678](https://github.com/angular/components/pull/23678)) | +| [3565cfac59](https://github.com/angular/components/commit/3565cfac59146612b9defb71531c91a104f07671) | fix | **core:** make MatOption generic ([#20242](https://github.com/angular/components/pull/20242)) | +| [f0272cf5eb](https://github.com/angular/components/commit/f0272cf5eb3a969f879ab1c538c633bd729aa976) | fix | **core:** throw error if hue does not exist ([#23612](https://github.com/angular/components/pull/23612)) | +| [304afaef1d](https://github.com/angular/components/commit/304afaef1d711c4e861a8603d10229a0b2a5637a) | fix | **datepicker:** add focus indication to calendar selected date in high contrast mode ([#22889](https://github.com/angular/components/pull/22889)) | +| [805eee8d07](https://github.com/angular/components/commit/805eee8d07ed12d1030ac0b0759029ab52036dc9) | fix | **form-field:** outline gap not recalculated when switching to empty label ([#23949](https://github.com/angular/components/pull/23949)) | +| [feac08f138](https://github.com/angular/components/commit/feac08f13843e3476245535a7fa5f3dfee04b027) | fix | **input:** inconsistently reading name from input with ngModel ([#19233](https://github.com/angular/components/pull/19233)) | +| [439ad2c59d](https://github.com/angular/components/commit/439ad2c59db31824ed6f4dcec16823f704852923) | fix | **list:** fix up disabled list item styles ([#18881](https://github.com/angular/components/pull/18881)) | +| [4182717c57](https://github.com/angular/components/commit/4182717c57abcfd5e93558ad368fb3dd143fb86d) | fix | **menu:** not interrupting keyboard events to other overlays ([#23310](https://github.com/angular/components/pull/23310)) | +| [a4f655856e](https://github.com/angular/components/commit/a4f655856ec4389d1e6b1f58d0884d3e54e42f93) | fix | **paginator:** allow readonly options ([#24054](https://github.com/angular/components/pull/24054)) | +| [966b2c52b7](https://github.com/angular/components/commit/966b2c52b7f8c8cd193114e33ab22c7b9569359a) | fix | **progress-bar:** unable to change value through property setter ([#19025](https://github.com/angular/components/pull/19025)) | +| [462cb6d713](https://github.com/angular/components/commit/462cb6d71322b41c91b06d179831f23cc3204206) | fix | **progress-spinner:** animation not working on some zoom levels in Safari ([#23674](https://github.com/angular/components/pull/23674)) | +| [94d466235a](https://github.com/angular/components/commit/94d466235abfdf9001c551dfd329a7cfbf4e58f3) | fix | **select** component value not in sync with control value on init ([#18443](https://github.com/angular/components/pull/18443)) | +| [ce9d8caa1f](https://github.com/angular/components/commit/ce9d8caa1f70aaf797c8d6f3c003561b10a00f8e) | fix | **sidenav:** end position sidenav tab order not matching visual order ([#18101](https://github.com/angular/components/pull/18101)) | +| [cb0a2ad940](https://github.com/angular/components/commit/cb0a2ad9400d1fd15deee1e596a093d99498ab82) | fix | **sidenav** implicit content element being registered twice with scroll dispatcher ([#13973](https://github.com/angular/components/pull/13973)) | +| [7be61b6357](https://github.com/angular/components/commit/7be61b6357af413a8c22e8ea949db7bc70d894ea) | fix | **slider:** avoid error on some touchstart events ([#23823](https://github.com/angular/components/pull/23823)) | +| [81528bc6a1](https://github.com/angular/components/commit/81528bc6a1fd8fa20f55620fdefb10d50db9ff1a) | fix | **slider:** first keypress ignored if out-of-bounds value is assigned ([#23827](https://github.com/angular/components/pull/23827)) | +| [64dd8ed8b5](https://github.com/angular/components/commit/64dd8ed8b5505ce0115bb81caa0d48a0647aa2e7) | fix | **slider:** incorrectly inheriting color when nested inside component with theme ([#21334](https://github.com/angular/components/pull/21334)) | +| [99e77829cc](https://github.com/angular/components/commit/99e77829cc51c85c60c768061e4b1c02cac6fe8f) | fix | **snack-bar:** handle long single-line content ([#24135](https://github.com/angular/components/pull/24135)) | +| [ad21ee20ae](https://github.com/angular/components/commit/ad21ee20aefb8d0744e9098b565422d987c808ed) | fix | **table** not clearing some internal references on destroy ([#16051](https://github.com/angular/components/pull/16051)) | +| [9752b1d18f](https://github.com/angular/components/commit/9752b1d18fae422c9eedc3ba81683697da93f18d) | fix | **table:** better handling of invalid data ([#18953](https://github.com/angular/components/pull/18953)) | +| [e01e579a49](https://github.com/angular/components/commit/e01e579a498b39577b618c3e8e0a01b69477b087) | fix | **tooltip:** not closing if escape is pressed while trigger isn't focused ([#14434](https://github.com/angular/components/pull/14434)) | +| [4972dc5585](https://github.com/angular/components/commit/4972dc5585d7ae8c66ccb819367f27d87f0a2d74) | perf | **button:** do not run change detection when the anchor is clicked ([#23992](https://github.com/angular/components/pull/23992)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [fe39b55f93](https://github.com/angular/components/commit/fe39b55f934a75bb2f8c9786da6a67245010102d) | fix | **mdc-checkbox:** emitting fallback values for density CSS variables ([#24184](https://github.com/angular/components/pull/24184)) | +| [0ab3dce58a](https://github.com/angular/components/commit/0ab3dce58a8ac35b328537b9ef76403dfff02969) | fix | **mdc-snack-bar:** avoid hard reference to base components and align API ([#21425](https://github.com/angular/components/pull/21425)) | + +## Special Thanks +Andrew Seguin, Artur Androsovych, Jeri Peier, Joey Perrott, Kristiyan Kostadinov, Paul Gschwendtner and Ruslan Lekhman + + + + +# 13.1.2 "rubber-road" (2022-01-12) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [37898c3c1](https://github.com/angular/components/commit/37898c3c1e1919487b21a5fe4b3c3a94c906aba8) | fix | **overlay:** fix positioning when zooming in Safari ([#24160](https://github.com/angular/components/pull/24160)) | +| [af1882311](https://github.com/angular/components/commit/af18823115c6958fe69b20496af47cfaee46c765) | fix | **schematics:** remove file extensions in tilde migration ([#24169](https://github.com/angular/components/pull/24169)) | +| [db5d8cea2](https://github.com/angular/components/commit/db5d8cea2bed25a61c3865aae41b9ecd8945508f) | fix | **table:** Measure column width for sticky columns after new data has rendered. ([#23885](https://github.com/angular/components/pull/23885)) | +| [7705cae78](https://github.com/angular/components/commit/7705cae785803dd17fab47774ef305a1c39f074d) | fix | **text-field:** handle undefined placeholder ([#24159](https://github.com/angular/components/pull/24159)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [69753d711](https://github.com/angular/components/commit/69753d71133f8297036fe0773bb759c7e2e02716) | fix | **core:** disable strong focus indicators in high contrast mode ([#24120](https://github.com/angular/components/pull/24120)) | +| [0631976ca](https://github.com/angular/components/commit/0631976ca79513807902e240f4378a17fa884c7b) | fix | **core:** move pseudo-checkbox module to same directory ([#24132](https://github.com/angular/components/pull/24132)) | +| [c6f7b9468](https://github.com/angular/components/commit/c6f7b946888568a36c56d2db7dd708fd82b08c85) | fix | **datepicker:** fix duplicate nav stop with Voiceover ([#24085](https://github.com/angular/components/pull/24085)) | +| [2ca59f8a6](https://github.com/angular/components/commit/2ca59f8a6a8028bd42759d9e1de803bdaeca034a) | fix | **stepper:** icon not centered in header if direction changes ([#24131](https://github.com/angular/components/pull/24131)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [a7d97d618](https://github.com/angular/components/commit/a7d97d618f9104367775d304a81d04db55e33071) | fix | **mdc-button:** incorrect metadata for fab anchor ([#24179](https://github.com/angular/components/pull/24179)) | +| [ae9f3d5f5](https://github.com/angular/components/commit/ae9f3d5f5119c3c24e5d6d0efad64a298cb1719c) | fix | **mdc-checkbox:** switch to non-deprecated styles ([#23218](https://github.com/angular/components/pull/23218)) | +| [2f668888f](https://github.com/angular/components/commit/2f668888fefa9ed68f872b2f9a49af95b17e54b6) | fix | **mdc-dialog:** remove extra outline in high contrast mode ([#24140](https://github.com/angular/components/pull/24140)) | +| [12f427cdc](https://github.com/angular/components/commit/12f427cdca4e436ee55a6adcc0ece2f77d53db22) | fix | **mdc-list:** export missing harness symbols ([#24175](https://github.com/angular/components/pull/24175)) | +| [eb508be13](https://github.com/angular/components/commit/eb508be1365d21140ebbd56d57bb454d38681bf8) | fix | **mdc-select:** change max height to show scrollability ([#24129](https://github.com/angular/components/pull/24129)) | +| [997589dd8](https://github.com/angular/components/commit/997589dd8dee5ab21e711caa07e2275c77e4b6b3) | fix | **mdc-slide-toggle:** remove aria-required rather than setting to false ([#24105](https://github.com/angular/components/pull/24105)) | +| [be21308bb](https://github.com/angular/components/commit/be21308bbffe7dd5764ea01a34de887720b6efcd) | fix | **mdc-slider:** keep value indicator within bounds ([#24167](https://github.com/angular/components/pull/24167)) | +### multiple +| Commit | Type | Description | +| -- | -- | -- | +| [32f33c6dc](https://github.com/angular/components/commit/32f33c6dcc850c8e7b8623af06107601e70f1ae7) | fix | correct tooltip and table MDC style import paths ([#24077](https://github.com/angular/components/pull/24077)) | +## Special Thanks +Andrew Seguin, Jeremy Elbourn, Jeri Peier, Karl Seamon, Kristiyan Kostadinov, Lukas Spirig, Miles Malerba, Paul Gschwendtner, Pei Wang, Wagner Maciel, Zach Arend and batnyu + + + + +# 13.1.1 "chiffon-cabbage" (2021-12-16) +### material +| Commit | Type | Description | +| -- | -- | -- | +| [0629a2c1b3](https://github.com/angular/components/commit/0629a2c1b381dfe2cc86669d5d81609335a06add) | fix | **schematics:** don't replace variables contained within the names of other variables in theming API migration ([#24021](https://github.com/angular/components/pull/24021)) | +| [6ce89aa0a5](https://github.com/angular/components/commit/6ce89aa0a54a6a94da8b2c119e68e08e75af6de4) | fix | **stepper:** assistive technology reading out stepper icon ([#24025](https://github.com/angular/components/pull/24025)) | +| [655b41ab0f](https://github.com/angular/components/commit/655b41ab0f5d1d35f5a6a5e9c009f82688c3c21f) | fix | **tabs:** remove CSS content from chevron element ([#24091](https://github.com/angular/components/pull/24091)) | +## Special Thanks +Kristiyan Kostadinov and Paul Gschwendtner + + + + +# 13.1.0 "granite-garden" (2021-12-08) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [c381a6c5a](https://github.com/angular/components/commit/c381a6c5ae1bd0b25e91384bc8bf03198064aa2b) | feat | **bidi:** support `auto` direction value ([#23906](https://github.com/angular/components/pull/23906)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [e7494314d](https://github.com/angular/components/commit/e7494314d96a216b2f0715dcc81b563af801f234) | feat | **core:** change ErrorStateMatcher to accept AbstractForm instead of FormControl ([#24012](https://github.com/angular/components/pull/24012)) | +| [1b6c93571](https://github.com/angular/components/commit/1b6c93571c4615deb929f7b0e72c3e42478a31ec) | fix | **table:** set class and role on no data row ([#23749](https://github.com/angular/components/pull/23749)) | +### google-maps +| Commit | Type | Description | +| -- | -- | -- | +| [7dbe9a428](https://github.com/angular/components/commit/7dbe9a42829a2e71cca3363e9a97ec0ea45be276) | feat | Getting google.maps.Map instance ([#23856](https://github.com/angular/components/pull/23856)) | +### material-luxon-adapter +| Commit | Type | Description | +| -- | -- | -- | +| [a52da04a8](https://github.com/angular/components/commit/a52da04a82f9394c832dfd0dfe9974858ecc761e) | feat | add option to set first day of week ([#24027](https://github.com/angular/components/pull/24027)) | +## Special Thanks +Amy Sorto, Andrew Seguin, Jeremy Elbourn, Jiří Balcar, Kristiyan Kostadinov, Lukas Taake, Miles Malerba, Paul Gschwendtner, Umer Naeem, Wagner Maciel and Zach Arend + + + + +# 13.0.4 "marble-mountain" (2021-12-08) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [dddc933c5](https://github.com/angular/components/commit/dddc933c5847eb5ee4b1e5ce35aee6fbae320c0b) | fix | **drag-drop:** last item not returned at initial index when sorting is disabled ([#23934](https://github.com/angular/components/pull/23934)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [8de380837](https://github.com/angular/components/commit/8de380837acbefd5aaee48aefa3f986a6d49b8bc) | fix | **datepicker:** hover styles not disabled on touch devices ([#23915](https://github.com/angular/components/pull/23915)) | +### cdk-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [e103a218e](https://github.com/angular/components/commit/e103a218e88220e42d64626463667674aacf1e6a) | fix | **column-resize:** Ensure resizable entity is not destroyed before applying min/max update ([#24007](https://github.com/angular/components/pull/24007)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [a90861a15](https://github.com/angular/components/commit/a90861a156183073ca9b0b845e1fa00668d7d6e8) | fix | **column-resize:** Update for MDC and spec changes ([#23908](https://github.com/angular/components/pull/23908)) | +| [45b7b1a0b](https://github.com/angular/components/commit/45b7b1a0b4234a9a2b936df05c7926d08b334157) | fix | **mdc-checkbox:** reduce amount of emitted theme css ([#24004](https://github.com/angular/components/pull/24004)) | +| [4671d877e](https://github.com/angular/components/commit/4671d877e87f2ebce820669c3046c8407012db3a) | fix | **mdc-slider:** throw error when thumb is missing ([#24061](https://github.com/angular/components/pull/24061)) | +## Special Thanks +Aristeidis Bampakos, Csaba Sandor, Ekkolon, Karl Seamon, Kristiyan Kostadinov, Nathaniel, Paul Gschwendtner and Robin Richtsfeld + + + + +# 13.0.3 "cerammic-almanac" (2021-12-01) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [a3f99f8c6a](https://github.com/angular/components/commit/a3f99f8c6ad8c7592e385cd49fb3c7fd4941cd74) | fix | **drag-drop:** remove boundary error ([#23966](https://github.com/angular/components/pull/23966)) | +| [b92f0bc806](https://github.com/angular/components/commit/b92f0bc806527e5052e3b0df1cbb67140190d03d) | perf | **a11y:** tree-shake warnings in production ([#23967](https://github.com/angular/components/pull/23967)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [73414a9ba6](https://github.com/angular/components/commit/73414a9ba6daa38d1ae04c5a3edb41f908747cf5) | perf | **bottom-sheet:** do not run change detection when focusing element ([#23965](https://github.com/angular/components/pull/23965)) | +| [a25dda672b](https://github.com/angular/components/commit/a25dda672b545d96d8eb918a91da273cc5f95325) | perf | **core:** tree shake sanity checks ([#23969](https://github.com/angular/components/pull/23969)) | +### multiple +| Commit | Type | Description | +| -- | -- | -- | +| [f05a9c655a](https://github.com/angular/components/commit/f05a9c655a7a5f2e61dbf899337f19785d212e3d) | fix | some experimental components not cleaned up completely ([#23994](https://github.com/angular/components/pull/23994)) | +## Special Thanks +Artur Androsovych, Kristiyan Kostadinov, Paul Gschwendtner and Ruslan Lekhman + + + + +# 13.0.2 "taffy-tangerine" (2021-11-17) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [a24b1ac301](https://github.com/angular/components/commit/a24b1ac301e01e2e9c8d619f0a0628008c2609a7) | fix | **drag-drop:** handle not working when it has a child inside shadow DOM | +| [a38fcc2924](https://github.com/angular/components/commit/a38fcc2924f0de03e8a6fd45bacc9aafea87c1f0) | fix | **testing:** fake events not propagating through shadow DOM | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [ba5d36a0ba](https://github.com/angular/components/commit/ba5d36a0bab9df5220d82c1e28057e7aabe802e7) | fix | **datepicker:** Add aria-current="date" to current date ([#23714](https://github.com/angular/components/pull/23714)) | +| [759d85a2ff](https://github.com/angular/components/commit/759d85a2fff0d287143d0617c4394c864a4c6dcd) | fix | **tabs:** pagination sometimes incorrectly shown after zoom ([#23759](https://github.com/angular/components/pull/23759)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [59ea11602a](https://github.com/angular/components/commit/59ea11602ad9a443c3e1652c5175d3929509f4f1) | fix | **mdc-list:** don't override focus styles with hover ([#23840](https://github.com/angular/components/pull/23840)) | +### multiple +| Commit | Type | Description | +| -- | -- | -- | +| [e5c589d473](https://github.com/angular/components/commit/e5c589d47313da99a438e58e5154e314513b0ffa) | perf | don't emit fallbacks for CSS variables in experimental components ([#23912](https://github.com/angular/components/pull/23912)) | +## Special Thanks +ByzantineFailure, Dario Piotrowicz, Jeremy Elbourn, Joey Perrott, Kristiyan Kostadinov, Miles Malerba and Paul Gschwendtner + + + + +# 13.0.1 "chalk-city" (2021-11-11) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [36fa18b5a4](https://github.com/angular/components/commit/36fa18b5a4dfbd7fbd2a629121d5e59b1d60e3d1) | fix | **overlay:** remove Optional decorator in ConnectedOverlayPositionChange constructor ([#23735](https://github.com/angular/components/pull/23735)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [15237f8c13](https://github.com/angular/components/commit/15237f8c131afde6eb3735689a980a4e18233d03) | fix | **chips:** add selected indication in high contrast mode ([#23828](https://github.com/angular/components/pull/23828)) | +| [e8a6eed7bf](https://github.com/angular/components/commit/e8a6eed7bf19faf1b6a011f56aad08ca70b7fb49) | fix | **chips:** Declare that MatChipInput.inputElement is always defined ([#23868](https://github.com/angular/components/pull/23868)) | +| [2fc63ef9e7](https://github.com/angular/components/commit/2fc63ef9e712483bbb8c850a624e5dcf0b156aac) | fix | **core:** test environment check not picking up jest ([#23722](https://github.com/angular/components/pull/23722)) | +| [5d49df1df6](https://github.com/angular/components/commit/5d49df1df6193bd5f15ebd871ca41473ad4aef6e) | fix | **form-field:** update outline gap when prefix changes ([#23869](https://github.com/angular/components/pull/23869)) | +| [2b99632813](https://github.com/angular/components/commit/2b9963281300a43c33251a3b512a97b7084d6ebe) | fix | **slide-toggle:** remove tabindex from host node ([#23891](https://github.com/angular/components/pull/23891)) | +### multiple +| Commit | Type | Description | +| -- | -- | -- | +| [9a3fc9a1ad](https://github.com/angular/components/commit/9a3fc9a1ad0e306d12c9fb56e74b4d933620f9e2) | fix | update to angular v13.0.1 to emit proper partial compilation output ([#23951](https://github.com/angular/components/pull/23951)) | +## Special Thanks +Jeremy Elbourn, Joey Perrott, Kristiyan Kostadinov, Marco Marche, Miles Malerba, Paul Gschwendtner and Ruslan Lekhman + + + + +# 12.2.13 "sandstone-salamander" (2021-11-11) +### material +| Commit | Type | Description | +| -- | -- | -- | +| [a0cf5220f8](https://github.com/angular/components/commit/a0cf5220f8bad29c3ce979d25b96177cb79d390f) | fix | **core:** test environment check not picking up jest ([#23722](https://github.com/angular/components/pull/23722)) ([#23924](https://github.com/angular/components/pull/23924)) | +## Special Thanks +Amy Sorto, Kristiyan Kostadinov, Paul Gschwendtner and Suguru Inatomi + + + + +# 13.0.0 "fir-valise" (2021-11-03) +## Breaking Changes +### cdk + +If your application imports styles from `~@angular/cdk`, the `@import`/`@use` statements need to +be updated to omit the tilde. The tilde syntax is deprecated within the webpack `sass-loader` and +does not work with [APF v13](https://v13.angular.io/guide/angular-package-format). + +```scss +// before +@use '~@angular/cdk' as cdk; + +// after +@use '@angular/cdk' as cdk; +``` + +The Angular CLI will automatically migrate your application with: `ng update @angular/cdk`. + +Additional breaking changes: +* `CKD_COPY_TO_CLIPBOARD_CONFIG` has been removed. Use `CDK_COPY_TO_CLIPBOARD_CONFIG` instead. +* `ConnectedPositionStrategy` has been removed. Use `FlexibleConnectedPositionStrategy` instead. +* `OverlayPositionBuilder.connectedTo` has been removed. Use `OverlayPositionBuilder.flexibleConnectedTo` instead. + +### material + +If your application imports styles from `~@angular/material`, the `@import`/`@use` statements need to +be updated to omit the tilde. The tilde syntax is deprecated within the webpack `sass-loader` and +does not work with [APF v13](https://v13.angular.io/guide/angular-package-format). + +```scss +// before +@use '~@angular/material' as mat; + +// after +@use '@angular/material' as mat; +``` + +The Angular CLI will automatically migrate your application with: `ng update @angular/material`. + +Additionally, the following breaking changes have been made: + +* The minimum version of Sass has been bumped to `1.34.0`. Version `1.38.0` is recommended. +* `CanColorCtor` is no longer necessary and has been removed. +* `CanDisableRippleCtor` is no longer necessary and has been removed. +* `CanDisableCtor` is no longer necessary and has been removed. +* `CanUpdateErrorStateCtor` is no longer necessary and has been removed. +* `HasInitializedCtor` is no longer necessary and has been removed. +* `HasTabIndexCtor` is no longer necessary and has been removed. +* The `_document` and `_dialog` parameters have been removed from the `MatDatepicker` and `MatDateRangePicker` constructors. +* `MatFormFieldHarness.getHarnessLoaderForPrefix` has been removed. Use `MatFormFieldHarness.getPrefixText` instead. +* `MatFormFieldHarness.getHarnessLoaderForSuffix` has been removed. Use `MatFormFieldHarness.getSuffixText` instead. +* The `_labelOptions` parameter of the `MatFormField` constructor has been removed. +* `MatFormField.underlineRef` has been removed. +* `matTextareaAutosize` has been removed. Use `cdkTextareaAutosize` from the `@angular/cdk/text-field` module instead. +* `MatTabHarness.getHarnessLoaderForContent` has been removed. Use `MatTabHarness.getRootHarnessLoader` instead. + +### youtube-player +- * `YouTubePlayer.createEventsBoundInZone` has been removed. +### material-date-fns-adapter +| Commit | Type | Description | +| -- | -- | -- | +| [e8dd070bbd](https://github.com/angular/components/commit/e8dd070bbdfa77b9799d4baabb97d564176d7c05) | feat | add date adapter for date-fns ([#23262](https://github.com/angular/components/pull/23262)) | +| [2a358120f4](https://github.com/angular/components/commit/2a358120f4623efdb614017719a79cf3df6ba2fd) | fix | locale not passed into parse function ([#23653](https://github.com/angular/components/pull/23653)) | +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [2789d8eb5f](https://github.com/angular/components/commit/2789d8eb5f61ea4cb28ff8c6225178179e610571) | feat | **mdc-card:** add DI token for configuring appearance ([#23302](https://github.com/angular/components/pull/23302)) | +| [a4ae3b88c0](https://github.com/angular/components/commit/a4ae3b88c0f2d7a0110ec08787db33dc1991c2c5) | feat | **mdc-slide-toggle:** switch to non-deprecated styles ([#23143](https://github.com/angular/components/pull/23143)) | +| [e7a77edf1e](https://github.com/angular/components/commit/e7a77edf1e3f0215c26715366a31bf9c3f5e6cfd) | fix | **mdc-tabs:** update theming api ([#23855](https://github.com/angular/components/pull/23855)) | +### youtube-player +| Commit | Type | Description | +| -- | -- | -- | +| [7539cf2837](https://github.com/angular/components/commit/7539cf28371a938bc4f052d14be4bfa1b529300c) | refactor | remove deprecated APIs for v13 ([#23520](https://github.com/angular/components/pull/23520)) | +### google-maps +| Commit | Type | Description | +| -- | -- | -- | +| [7c16258cfb](https://github.com/angular/components/commit/7c16258cfb18c2d74b692e53e640e56b5d877e75) | feat | switch to non-deprecated typings ([#23350](https://github.com/angular/components/pull/23350)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [3dc5af4bfd](https://github.com/angular/components/commit/3dc5af4bfd2e15fe9a1330740068732cfc65d29f) | feat | **dialog:** add support for content sections in harness ([#23357](https://github.com/angular/components/pull/23357)) | +| [e4b54aa2b7](https://github.com/angular/components/commit/e4b54aa2b7afeb9fe228f1d3638eb44192353e8b) | feat | **progress-bar:** add default options injection token ([#23363](https://github.com/angular/components/pull/23363)) | +| [6c724c18a7](https://github.com/angular/components/commit/6c724c18a7520e686ed9779d8aa058d8c1e5e435) | fix | **chips:** show required asterisk when using required validator ([#23379](https://github.com/angular/components/pull/23379)) | +| [728cf1c8eb](https://github.com/angular/components/commit/728cf1c8ebd49e089f4bae945511bb0918972c26) | fix | **dialog:** improve screen reader support when opened ([#23085](https://github.com/angular/components/pull/23085)) | +| [881edec3e6](https://github.com/angular/components/commit/881edec3e6fa837c913006df12299448bba62853) | fix | **icon:** make icon-registry compatible with Trusted Types ([#23140](https://github.com/angular/components/pull/23140)) | +| [1568b35972](https://github.com/angular/components/commit/1568b3597236549b0669aee869f5f0875c18db4d) | fix | **input:** show required asterisk when using required validator ([#23362](https://github.com/angular/components/pull/23362)) | +| [64ba72f1fd](https://github.com/angular/components/commit/64ba72f1fd39623c96589ad00347f895ffb88b8a) | fix | **select:** show required asterisk when using required validator ([#23500](https://github.com/angular/components/pull/23500)) | +| [01734b35af](https://github.com/angular/components/commit/01734b35afa10be68c482dc7370c4d1ae88e499c) | fix | **sidenav:** restore focus with correct origin when closing via the backdrop ([#23492](https://github.com/angular/components/pull/23492)) | +| [7bc9bfb9dc](https://github.com/angular/components/commit/7bc9bfb9dc233256f6e7063c62e4371a5a1da346) | refactor | **core:** remove deprecated APIs for v13 ([#23529](https://github.com/angular/components/pull/23529)) | +| [40f0674e39](https://github.com/angular/components/commit/40f0674e3959d53cd6413cf3a5c30053ca0973d9) | refactor | **core:** update minimum required sass version and clean up workarounds ([#23414](https://github.com/angular/components/pull/23414)) | +| [f8dc1770d1](https://github.com/angular/components/commit/f8dc1770d100e272bbfa7e89e6376751caa35d5c) | refactor | **datepicker:** remove deprecated APIs for v13 ([#23574](https://github.com/angular/components/pull/23574)) | +| [700c0601c0](https://github.com/angular/components/commit/700c0601c03c113925562fd31f49d66a65ac3dae) | refactor | **form-field:** remove deprecated APIs for version 13 ([#23389](https://github.com/angular/components/pull/23389)) | +| [760b4564fa](https://github.com/angular/components/commit/760b4564fa41f1d13d4e07e9cba4fa3440284af7) | refactor | **input:** remove deprecated autosize directive ([#23408](https://github.com/angular/components/pull/23408)) | +| [3ad08940f1](https://github.com/angular/components/commit/3ad08940f13aad9403b89722eb7dd5f388a4d536) | refactor | **tabs:** remove deprecated APIs for v13 ([#23426](https://github.com/angular/components/pull/23426)) | +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [51796e1601](https://github.com/angular/components/commit/51796e160199d0c369931585d4bd3b0eeedf5684) | feat | **overlay:** Extend `cdkConnectedOverlayOrigin` to support more types. ([#23253](https://github.com/angular/components/pull/23253)) | +| [04b5a08190](https://github.com/angular/components/commit/04b5a08190a1d7b126846317d9aad9c954c5e0f9) | feat | **schematics:** add migration for removed symbols ([#23530](https://github.com/angular/components/pull/23530)) | +| [b25283cda9](https://github.com/angular/components/commit/b25283cda9be37d11f8c380ad6fcc078d5be5da0) | fix | **a11y:** error on firefox ([#23395](https://github.com/angular/components/pull/23395)) | +| [219e1f558a](https://github.com/angular/components/commit/219e1f558a93378cad9f9ceeb225fe5a4e833022) | fix | **drag-drop:** add conditional to scroll update ([#23337](https://github.com/angular/components/pull/23337)) | +| [6e1f522d6a](https://github.com/angular/components/commit/6e1f522d6a50d6f589d069775bc771b5590bff4c) | fix | **drag-drop:** allow using cdkDragRootElement w/ comment tag ([#23596](https://github.com/angular/components/pull/23596)) | +| [d70faa0018](https://github.com/angular/components/commit/d70faa001872361cad7ac19cba51fe69f42f73d2) | fix | **drag-drop:** sorted event emitted multiple times for single-item list ([#23589](https://github.com/angular/components/pull/23589)) | +| [f2ff9e3142](https://github.com/angular/components/commit/f2ff9e31425f0e395e6926bcaf48f876688000d8) | fix | **schematics:** drop tilde imports when updating to v13 ([#23732](https://github.com/angular/components/pull/23732)) | +| [692ebafe7b](https://github.com/angular/components/commit/692ebafe7baab75771f0f279b7e7090ec4f903aa) | fix | **testing:** fake touch event does not set proper touch identifier | +| [5833597a7a](https://github.com/angular/components/commit/5833597a7ad8adca95da5533fb6f1efa5340a623) | refactor | **clipboard:** clean up deprecated APIs for v13 ([#23401](https://github.com/angular/components/pull/23401)) | +| [8d39384770](https://github.com/angular/components/commit/8d393847704cb8a2fa9c28bd1feb3ed8700fdea0) | refactor | **overlay:** remove deprecated connected position strategy | +### multiple +| Commit | Type | Description | +| -- | -- | -- | +| [769996ed3f](https://github.com/angular/components/commit/769996ed3f359c1a168ae35abb1de1231958f7bc) | feat | add options to autoFocus field for dialogs ([#22780](https://github.com/angular/components/pull/22780)) | +| [db18b4093f](https://github.com/angular/components/commit/db18b4093f23ae5c0ef76f6a9699c670ee5d55f7) | feat | add support for TypeScript 4.4 ([#23646](https://github.com/angular/components/pull/23646)) | +### ng-add +| Commit | Type | Description | +| -- | -- | -- | +| [5c22a1dbf0](https://github.com/angular/components/commit/5c22a1dbf0c7e808e28749870415fbba31f2d9e9) | fix | syntax error due to ES2020 being used for ng-add with NodeJS 12.x ([#23744](https://github.com/angular/components/pull/23744)) | +## Special Thanks +Amy Sorto, Andrew Seguin, Charles, Jeremy Elbourn, Joey Perrott, Kristiyan Kostadinov, Md. Enzam Hossain, Michael Prentice, Miles Malerba, Paul Gschwendtner, Ruslan Lekhman, Suguru Inatomi, Wagner Maciel, Zach Arend, bjarkler and mmalerba + + + + +# 13.0.0-rc.3 "fir-valise" (2021-11-02) +### material-experimental +| Commit | Type | Description | +| -- | -- | -- | +| [e7a77edf1e](https://github.com/angular/components/commit/e7a77edf1e3f0215c26715366a31bf9c3f5e6cfd) | fix | **mdc-tabs:** update theming api ([#23855](https://github.com/angular/components/pull/23855)) | +## Special Thanks +Andrew Seguin, Joey Perrott, Kristiyan Kostadinov, Paul Gschwendtner and Suguru Inatomi + + + + +# 13.0.0-rc.2 "tweed-thimble" (2021-10-27) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [c4cb63be2](https://github.com/angular/components/commit/c4cb63be230a5c5d58e8d2e6d084c42015dc8cf7) | fix | **portal:** write generic type for TemplateRef in the Template Portal code example ([#23818](https://github.com/angular/components/pull/23818)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [114041f43](https://github.com/angular/components/commit/114041f434573fca279de7c0e064f18bee6b2d95) | fix | **icon:** disable text selection ([#23730](https://github.com/angular/components/pull/23730)) | +## Special Thanks +Kristiyan Kostadinov, Paul Gschwendtner and Sergey Vakhramov + + + +# 12.2.12 "silk-shoe" (2021-10-27) +### cdk +| Commit | Type | Description | +| -- | -- | -- | +| [6161ec622](https://github.com/angular/components/commit/6161ec62273a4455da88530633af79b93cdc387f) | fix | **portal:** write generic type for TemplateRef in the Template Portal code example ([#23818](https://github.com/angular/components/pull/23818)) | +### material +| Commit | Type | Description | +| -- | -- | -- | +| [d8c84d608](https://github.com/angular/components/commit/d8c84d60814adc094d48a65b6e853abab11a6239) | fix | **icon:** disable text selection ([#23730](https://github.com/angular/components/pull/23730)) | +## Special Thanks +Kristiyan Kostadinov, Paul Gschwendtner and Sergey Vakhramov + + + # 13.0.0-rc.1 "acrylic-finger" (2021-10-20) ### cdk diff --git a/CODING_STANDARDS.md b/CODING_STANDARDS.md index 947caa5f802c..c8a0e7221e6a 100644 --- a/CODING_STANDARDS.md +++ b/CODING_STANDARDS.md @@ -274,21 +274,13 @@ For example: ```ts @Input() disabled: boolean; get disabled(): boolean { return this._disabled; } -set disabled(v: boolean) { this._disabled = coerceBooleanProperty(v); } +set disabled(v: BooleanInput) { this._disabled = coerceBooleanProperty(v); } private _disabled = false; - -... - -static ngAcceptInputType_value: BooleanInput; ``` The above code allows users to set `disabled` similar to how it can be set on native inputs: ```html ``` -Even though an empty string is technically what is being provided as the value of `disabled`, -`ngAcceptInputType` allows the mismatched type to be provided and `coerceBooleanProperty` -interprets the given value (an empty string) to the correct type & value, which in this case would -be `true`. #### Expose native inputs Native inputs used in components should be exposed to developers through `ng-content`. This allows diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9be26ab9b6cf..e05401b77ea3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -205,25 +205,24 @@ the SHA of the commit being reverted. ### Type Must be one of the following: -* **feat**: A new feature -* **fix**: A bug fix -* **docs**: Documentation only changes -* **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing - semi-colons, etc) -* **refactor**: A code change that neither fixes a bug nor adds a feature -* **perf**: A code change that improves performance -* **test**: Adding missing tests or correcting existing tests -* **build**: Changes that affect the build system, CI configuration or external dependencies - (example scopes: gulp, broccoli, npm) -* **chore**: Other changes that don't modify `src` or `test` files +* **feat**: Creates a new feature +* **fix**: Fixes a previously discovered failure/bug +* **docs**: Changes which exclusively affects documentation +* **refactor**: Refactor without any change in functionality or API (includes style changes) +* **perf**: Improves performance without any change in functionality or API +* **test**: Improvements or corrections made to the project's test suite +* **build**: Changes to local repository build system and tooling +* **ci**: Changes to CI configuration and CI specific tooling +* **release**: A release point in the repository ### Package The commit message should specify which package is affected by the change. For example: `material`, `cdk-experimental`, etc. ### Scope -The scope could be anything specifying place of the commit change. For example -`datepicker`, `dialog`, etc. +The scope specifies place of the commit change. For example +`material/datepicker`, `cdk-experimental/dialog`, etc. +See full list [here][commit-message-scopes]. ### Subject The subject contains succinct description of the change: @@ -261,6 +260,7 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise [material-group]: https://groups.google.com/forum/#!forum/angular-material2 [coc]: https://github.com/angular/code-of-conduct/blob/master/CODE_OF_CONDUCT.md [commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/preview +[commit-message-scopes]: https://github.com/angular/components/blob/master/.ng-dev/commit-message.ts#L10 [corporate-cla]: http://code.google.com/legal/corporate-cla-v1.0.html [dev-doc]: https://github.com/angular/components/blob/master/DEV_ENVIRONMENT.md [github]: https://github.com/angular/components diff --git a/DEV_ENVIRONMENT.md b/DEV_ENVIRONMENT.md index e24b2e2ac045..820c72904316 100644 --- a/DEV_ENVIRONMENT.md +++ b/DEV_ENVIRONMENT.md @@ -1,5 +1,4 @@ # Developer guide: getting your environment set up - 1. Make sure you have both `node` and `yarn` installed. We recommend using `nvm` to manage your node versions. 2. angular/components uses Bazel which requires certain Bash and UNIX tools. @@ -19,11 +18,13 @@ To bring up a local server, run `yarn dev-app`. This will automatically watch fo and rebuild. The browser should refresh automatically when changes are made. ### Running tests - To run unit tests, run `yarn test `. The `target` can be either a short name (e.g. `yarn test button`) or an explicit path `yarn test src/cdk/stepper`. To run the e2e tests, run `yarn e2e`. To run lint, run `yarn lint`. +You can debug unit tests by running `yarn test` with the `--debug` option. This will allow you to +manually connect a browser to the Karma server. + ### Getting Packages from Build Artifacts Each CI run for a Pull Request stores the built Angular packages as [build artifacts](https://circleci.com/docs/2.0/artifacts). The artifacts are not guaranteed to be @@ -67,7 +68,6 @@ at the file under `tools/public_api_guard/.d.ts`. ### Disabling Git hooks - If your development workflow does not intend the commit message validation to run automatically when commits are being created, or if you do not want to run the formatter upon `git commit`, you can disable any installed Git hooks by setting `HUSKY=0` in your shell environment. e.g. @@ -78,4 +78,21 @@ export HUSKY=0 # .bashrc export HUSKY=0 +``` + +### Injecting variables into the dev app + +A set of environment variables is made available within the dev-app. Such variables +will be injected into the dev-app, so that e.g. API keys can be used for development +without requiring secrets to be committed. + +The following variables are currently used in the dev-app: + +* `GOOGLE_MAPS_KEY` - Optional key for the Google Maps API. + +For example, you can store a personal development Google Maps API key for the +dev-app within your `.bashrc` or `.zshrc` file. + +```bash +export GOOGLE_MAPS_KEY= ``` \ No newline at end of file diff --git a/LICENSE b/LICENSE index 40cf2459805b..c24af42e203d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2021 Google LLC. +Copyright (c) 2022 Google LLC. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index abeb35c605e4..e900272e8eed 100644 --- a/README.md +++ b/README.md @@ -33,20 +33,20 @@ If you'd like to contribute, please follow our [contributing guidelines][contrib our [`help wanted`][help-wanted] label for a list of issues with good opportunities for contribution. -## What we're working on now (Q2 2021): +## What we're working on now (Q4 2021): * Continuing to create new, API-compatible versions of the Angular Material components backed by [MDC Web][] ([see @jelbourn's ng-conf talk](https://youtu.be/4EXQKP-Sihw?t=891)). Much of our effort is dedicated towards rolling out these new versions of the components across Angular apps -inside Google. This work will payoff with the following benefits: +inside Google. This work will pay off with the following benefits: * Dramatically improve consistency with the Material Design spec, which has changed significantly - since Angular Material's 2016 inception. + since Angular Material's 2016 inception. This also makes future versions of Material Design + significantly easier to adopt. * Introduce a new theming API for component density, a top feature request. * Fix a number of longstanding accessibility bugs. - * Increase number of people working to continuously improve the components on an on-going basis + * Increase number of people working to continuously improve the components on an ongoing basis (both the Angular team and the Material Design team). -* Continue work on virtual-scroll support for cdk/table. -* Accessibility - we'll be doing a major pass on outstanding accessibility issues and reviewing all -of the components for accessibility best practices such as WCAG. +* Accessibility - we'll be focusing on improving the accessibility of `MatDatepicker` as well as +evaluating accessibility bugs for mobile web platforms. ## About the team @@ -70,10 +70,10 @@ What do we mean by "high-quality" components? ## Browser and screen reader support The Angular Components team supports the most recent two versions of all major browsers: -Chrome (including Android), Firefox, Safari (including iOS), and IE11 / Edge. +Chrome (including Android), Firefox, Safari (including iOS), and Edge. We aim for great user experience with the following screen readers: -* **Windows**: NVDA and JAWS with IE11 / FF / Chrome. +* **Windows**: NVDA and JAWS with FF / Chrome. * **macOS**: VoiceOver with Safari / Chrome. * **iOS**: VoiceOver with Safari * **Android**: Android Accessibility Suite (formerly TalkBack) with Chrome. diff --git a/WORKSPACE b/WORKSPACE index 8c05601982e9..f44b984a29dd 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -9,17 +9,17 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "build_bazel_rules_nodejs", patches = ["//tools:multiple-node-versions.patch"], - sha256 = "3635797a96c7bfcd0d265dacd722a07335e64d6ded9834af8d3f1b7ba5a25bba", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.3.0/rules_nodejs-4.3.0.tar.gz"], + sha256 = "f7037c8e295fdc921f714962aee7c496110052511e2b14076bd8e2d46bc9819c", + urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.4.5/rules_nodejs-4.4.5.tar.gz"], ) # Add sass rules http_archive( name = "io_bazel_rules_sass", - sha256 = "435efe759f1c8baffadc320ecc1830454da181fa790aa83bb4326f07e903a0f4", - strip_prefix = "rules_sass-1.41.0", + sha256 = "bfb89ca97a4ad452ca5f623dfde23d2a5f3a848a97478d715881b69b4767d3bb", + strip_prefix = "rules_sass-1.49.4", urls = [ - "https://github.com/bazelbuild/rules_sass/archive/1.41.0.zip", + "https://github.com/bazelbuild/rules_sass/archive/1.49.4.zip", ], ) @@ -52,9 +52,7 @@ load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") bazel_skylib_workspace() -load("@build_bazel_rules_nodejs//:index.bzl", "check_bazel_version", "node_repositories", "yarn_install") - -check_bazel_version("4.0.0") +load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") node_repositories( node_version = "16.10.0", diff --git a/build-config.js b/build-config.js deleted file mode 100644 index 1f17293da35d..000000000000 --- a/build-config.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Build configuration for the packaging tool. This file will be automatically detected and used - * to build the different packages inside of Material. - */ -const {join} = require('path'); - -const packageJson = require('./package.json'); - -/** Current version of the project*/ -const buildVersion = packageJson.version; - -/** - * Required Angular version for all Angular Material packages. This version will be used - * as the peer dependency version for Angular in all release packages. - */ -const angularVersion = packageJson.requiredAngularVersion; - -/** - * Required MDC Web version for all Angular Material packages. This version will be used - * as the peer dependency version for MDC Web in all release packages that require MDC Web. - */ -const mdcVersion = packageJson.requiredMDCVersion; - -/** License that will be placed inside of all created bundles. */ -const buildLicense = `/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */`; - -module.exports = { - projectVersion: buildVersion, - angularVersion: angularVersion, - mdcVersion: mdcVersion, - projectDir: __dirname, - packagesDir: join(__dirname, 'src'), - outputDir: join(__dirname, 'dist'), - licenseBanner: buildLicense, -}; diff --git a/firebase.json b/firebase.json index f1218e3d73f8..d3cec544b0e9 100644 --- a/firebase.json +++ b/firebase.json @@ -18,8 +18,6 @@ ] } ], - "ignore": [ - "firebase.json" - ] + "ignore": ["firebase.json"] } } diff --git a/goldens/BUILD.bazel b/goldens/BUILD.bazel index e8a75f0d5692..16bac4c0e639 100644 --- a/goldens/BUILD.bazel +++ b/goldens/BUILD.bazel @@ -1,3 +1,4 @@ exports_files([ "size-test.yaml", + "tsec-exemption.json", ]) diff --git a/goldens/size-test.yaml b/goldens/size-test.yaml index 74acb5d334f8..d9e29c2b69ae 100644 --- a/goldens/size-test.yaml +++ b/goldens/size-test.yaml @@ -1,18 +1,18 @@ -cdk/drag-drop/all-directives: 160859 -cdk/drag-drop/basic: 158225 -material-experimental/mdc-chips/basic: 385551 -material-experimental/mdc-form-field/advanced: 417584 -material-experimental/mdc-form-field/basic: 416339 -material/autocomplete/without-optgroup: 392028 -material/button-toggle/standalone: 124412 -material/chips/basic: 320073 -material/datepicker/range-picker/without-form-field: 505044 -material/expansion/without-accordion: 330526 -material/form-field/advanced: 377468 -material/form-field/basic: 376144 -material/list/nav-list: 328072 -material/menu/without-lazy-content: 398590 -material/radio/without-group: 127571 -material/select/basic: 437305 -material/tabs/advanced: 369608 -material/tabs/basic: 368747 +cdk/drag-drop/all-directives: 155091 +cdk/drag-drop/basic: 152522 +material-experimental/mdc-chips/basic: 249660 +material-experimental/mdc-form-field/advanced: 296409 +material-experimental/mdc-form-field/basic: 294855 +material/autocomplete/without-optgroup: 281544 +material/button-toggle/standalone: 186619 +material/chips/basic: 228157 +material/datepicker/range-picker/without-form-field: 398783 +material/expansion/without-accordion: 200184 +material/form-field/advanced: 247973 +material/form-field/basic: 246355 +material/list/nav-list: 194468 +material/menu/without-lazy-content: 286831 +material/radio/without-group: 189803 +material/select/basic: 329893 +material/tabs/advanced: 248653 +material/tabs/basic: 247787 diff --git a/goldens/ts-circular-deps.json b/goldens/ts-circular-deps.json index 9eff1107cbcb..8405fc95263a 100644 --- a/goldens/ts-circular-deps.json +++ b/goldens/ts-circular-deps.json @@ -3,29 +3,14 @@ "src/cdk-experimental/dialog/dialog-config.ts", "src/cdk-experimental/dialog/dialog-container.ts" ], - [ - "src/cdk/drag-drop/directives/drag.ts", - "src/cdk/drag-drop/directives/drop-list.ts" - ], - [ - "src/cdk/drag-drop/directives/drag.ts", - "src/cdk/drag-drop/drag-events.ts" - ], + ["src/cdk/drag-drop/directives/drag.ts", "src/cdk/drag-drop/directives/drop-list.ts"], + ["src/cdk/drag-drop/directives/drag.ts", "src/cdk/drag-drop/drag-events.ts"], [ "src/cdk/drag-drop/directives/drag.ts", "src/cdk/drag-drop/drag-events.ts", "src/cdk/drag-drop/directives/drop-list.ts" ], - [ - "src/cdk/drag-drop/drag-ref.ts", - "src/cdk/drag-drop/drop-list-ref.ts" - ], - [ - "src/cdk/scrolling/scroll-dispatcher.ts", - "src/cdk/scrolling/scrollable.ts" - ], - [ - "src/cdk/scrolling/virtual-scroll-strategy.ts", - "src/cdk/scrolling/virtual-scroll-viewport.ts" - ] -] \ No newline at end of file + ["src/cdk/drag-drop/drag-ref.ts", "src/cdk/drag-drop/drop-list-ref.ts"], + ["src/cdk/scrolling/scroll-dispatcher.ts", "src/cdk/scrolling/scrollable.ts"], + ["src/cdk/scrolling/virtual-scroll-strategy.ts", "src/cdk/scrolling/virtual-scroll-viewport.ts"] +] diff --git a/goldens/tsec-exemption.json b/goldens/tsec-exemption.json new file mode 100644 index 000000000000..5151eafcce0b --- /dev/null +++ b/goldens/tsec-exemption.json @@ -0,0 +1,13 @@ +{ + "ban-trustedtypes-createpolicy": ["../src/material/icon/trusted-types.ts"], + "ban-element-innerhtml-assignments": ["../src/material/icon/icon-registry.ts"], + "ban-element-setattribute": [ + "../src/cdk/a11y/aria-describer/aria-reference.ts", + "../src/material-experimental/mdc-checkbox/checkbox.ts", + "../src/material-experimental/mdc-list/interactive-list-base.ts", + "../src/material-experimental/mdc-progress-spinner/progress-spinner.ts", + "../src/material-experimental/mdc-slide-toggle/slide-toggle.ts", + "../src/material/icon/icon-registry.ts", + "../src/material/icon/icon.ts" + ] +} diff --git a/guides/theming.md b/guides/theming.md index ade9efc06769..10122e1f02d9 100644 --- a/guides/theming.md +++ b/guides/theming.md @@ -237,7 +237,7 @@ You can use one of these pre-built themes if you don't want to define a custom t |------------------------|----------------|----------------------------------| | `deeppurple-amber.css` | Light | deep-purple, amber, red | | `indigo-pink.css` | Light | indigo, pink, red | -| `pink-bluegray.css` | Dark | pink, bluegray, red | +| `pink-bluegrey.css` | Dark | pink, bluegrey, red | | `purple-green.css` | Dark | purple, green, red | These files include the CSS for every component in the library. To include only the CSS for a subset @@ -308,13 +308,21 @@ $dark-theme: mat.define-dark-theme(( #### Multiple themes across separate files -You can define multiple themes in seprate files by creating multiple theme files per +You can define multiple themes in separate files by creating multiple theme files per [Defining a theme](#defining-a-theme), adding each of the files to the `styles` of your `angular.json`. However, you must additionally set the `inject` option for each of these files to `false` in order to prevent all the theme files from being loaded at the same time. When setting this property to `false`, your application becomes responsible for manually loading the desired file. The approach for this loading depends on your application. +### Application background color + +By default, Angular Material does not apply any styles to your DOM outside +of its own components. If you want to set your application's background color +to match the components' theme, you can either: +1. Put your application's main content inside `mat-sidenav-container`, assuming you're using `MatSidenav`, or +2. Apply the `mat-app-background` CSS class to your main content root element (typically `body`). + ### Scoping style customizations You can use Angular Material's Sass mixins to customize component styles within a specific scope diff --git a/guides/using-component-harnesses.md b/guides/using-component-harnesses.md index b362df7ff3ba..f763722e190d 100644 --- a/guides/using-component-harnesses.md +++ b/guides/using-component-harnesses.md @@ -28,14 +28,14 @@ The following sections will illustrate these benefits in more detail. ## Which kinds of tests can use harnesses? The Angular CDK's component harnesses are designed to work in multiple different test environments. -Support currently includes Angular's Testbed environment in Karma unit tests and Protractor +Support currently includes Angular's Testbed environment in Karma unit tests and Selenium WebDriver end-to-end (e2e) tests. You can also support additional environments by creating custom extensions of the CDK's `HarnessEnvironment` and `TestElement` classes. ## Getting started The foundation for all test harnesses lives in `@angular/cdk/testing`. Start by importing either -`TestbedHarnessEnvironment` or `ProtractorHarnessEnvironment` based on whether you're writing a +`TestbedHarnessEnvironment` or `SeleniumWebDriverHarnessEnvironment` based on whether you're writing a unit test or an e2e test. From the `HarnessEnvironment`, you can get a `HarnessLoader` instance, which you will use to load Angular Material component harnesses. For example, if we're writing unit tests for a `UserProfile` component, the code might look like this: @@ -64,8 +64,8 @@ different paths. - `@angular/cdk/testing` contains symbols that are shared regardless of the environment your tests are in. - `@angular/cdk/testing/testbed` contains symbols that are used only in Karma tests. -- `@angular/cdk/testing/protractor` (not shown above) contains symbols that are used only in - Protractor tests. +- `@angular/cdk/testing/selenium-webdriver` (not shown above) contains symbols that are used only in + Selenium WebDriver tests. ## Loading an Angular Material harness diff --git a/integration/harness-e2e-cli/.browserslistrc b/integration/harness-e2e-cli/.browserslistrc new file mode 100644 index 000000000000..4f9ac26980c1 --- /dev/null +++ b/integration/harness-e2e-cli/.browserslistrc @@ -0,0 +1,16 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# For the full list of supported browsers by the Angular framework, please see: +# https://angular.io/guide/browser-support + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR diff --git a/integration/harness-e2e-cli/.editorconfig b/integration/harness-e2e-cli/.editorconfig new file mode 100644 index 000000000000..59d9a3a3e73f --- /dev/null +++ b/integration/harness-e2e-cli/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/integration/harness-e2e-cli/.gitignore b/integration/harness-e2e-cli/.gitignore new file mode 100644 index 000000000000..105c00f22e08 --- /dev/null +++ b/integration/harness-e2e-cli/.gitignore @@ -0,0 +1,46 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.angular/cache +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/integration/harness-e2e-cli/BUILD.bazel b/integration/harness-e2e-cli/BUILD.bazel new file mode 100644 index 000000000000..96db42e63d2b --- /dev/null +++ b/integration/harness-e2e-cli/BUILD.bazel @@ -0,0 +1,30 @@ +load("@bazel_skylib//lib:dicts.bzl", "dicts") +load("//tools:integration.bzl", "CLI_PROJECT_MAPPINGS") +load("//tools:defaults.bzl", "node_integration_test") + +npmPackageMappings = dicts.add( + CLI_PROJECT_MAPPINGS, + { + "//src/cdk:npm_package_archive": "@angular/cdk", + "//src/material:npm_package_archive": "@angular/material", + }, +) + +node_integration_test( + name = "test", + srcs = glob(["**/*"]), + commands = [ + # Note: We use a cache folder within the integration test as otherwise + # the NPM package mapped archive would be cached in the system. + # See: https://github.com/yarnpkg/yarn/issues/2165. + # TODO(devversion): determine if a solution/workaround could live in the test runner. + "yarn install --cache-folder .yarn_cache_folder/", + "yarn e2e", + ], + npm_packages = npmPackageMappings, + setup_chromium = True, + tags = [ + # This test relies on `yarn` so there needs to be internet access. + "requires-network", + ], +) diff --git a/integration/harness-e2e-cli/README.md b/integration/harness-e2e-cli/README.md new file mode 100644 index 000000000000..f439edb6007f --- /dev/null +++ b/integration/harness-e2e-cli/README.md @@ -0,0 +1,27 @@ +# HarnessE2eCli + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0-next.1. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/integration/harness-e2e-cli/angular.json b/integration/harness-e2e-cli/angular.json new file mode 100644 index 000000000000..d0e36b1cfac3 --- /dev/null +++ b/integration/harness-e2e-cli/angular.json @@ -0,0 +1,101 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "harness-e2e-cli": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + }, + "@schematics/angular:application": { + "strict": true + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/harness-e2e-cli", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "browserTarget": "harness-e2e-cli:build:production" + }, + "development": { + "browserTarget": "harness-e2e-cli:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "harness-e2e-cli:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], + "scripts": [] + } + } + } + } + }, + "defaultProject": "harness-e2e-cli" +} diff --git a/integration/harness-e2e-cli/e2e/driver.ts b/integration/harness-e2e-cli/e2e/driver.ts new file mode 100644 index 000000000000..4290ab111508 --- /dev/null +++ b/integration/harness-e2e-cli/e2e/driver.ts @@ -0,0 +1,19 @@ +import {Builder} from 'selenium-webdriver'; +import { + ServiceBuilder, + Options as ChromeOptions, + setDefaultService, +} from 'selenium-webdriver/chrome.js'; + +export function configureDriver() { + const options = new ChromeOptions(); + const service = new ServiceBuilder(process.env['CHROMEDRIVER_BIN']!); + + options.headless(); + options.addArguments('--no-sandbox'); + options.setChromeBinaryPath(process.env['CHROME_BIN']!); + + setDefaultService(service.build()); + + return new Builder().forBrowser('chrome').setChromeOptions(options).build(); +} diff --git a/integration/harness-e2e-cli/e2e/jasmine.json b/integration/harness-e2e-cli/e2e/jasmine.json new file mode 100644 index 000000000000..7a741b447099 --- /dev/null +++ b/integration/harness-e2e-cli/e2e/jasmine.json @@ -0,0 +1,7 @@ +{ + "spec_dir": "e2e", + "spec_files": ["**/*.spec.ts"], + "env": { + "random": true + } +} diff --git a/integration/harness-e2e-cli/e2e/package.json b/integration/harness-e2e-cli/e2e/package.json new file mode 100644 index 000000000000..3dbc1ca591c0 --- /dev/null +++ b/integration/harness-e2e-cli/e2e/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/integration/harness-e2e-cli/e2e/select-harness.spec.ts b/integration/harness-e2e-cli/e2e/select-harness.spec.ts new file mode 100644 index 000000000000..ef214cff63bc --- /dev/null +++ b/integration/harness-e2e-cli/e2e/select-harness.spec.ts @@ -0,0 +1,32 @@ +import {MatSelectHarness} from '@angular/material/select/testing'; +import {SeleniumWebDriverHarnessEnvironment} from '@angular/cdk/testing/selenium-webdriver'; +import {HarnessLoader} from '@angular/cdk/testing'; +import {configureDriver} from './driver.js'; + +describe('app test', () => { + let loader: HarnessLoader; + + beforeEach(async () => { + const driver = await configureDriver(); + + await driver.get('http://localhost:4200'); + + loader = SeleniumWebDriverHarnessEnvironment.loader(driver); + }); + + it('should work', async () => { + const select = await loader.getHarness(MatSelectHarness); + + expect(select).toBeDefined(); + expect(await select.getValueText()).toBe(''); + + await select.open(); + + const options = await select.getOptions(); + + await options[0].click(); + await select.close(); + + expect(await select.getValueText()).toBe('First'); + }); +}); diff --git a/integration/harness-e2e-cli/e2e/tsconfig.json b/integration/harness-e2e-cli/e2e/tsconfig.json new file mode 100644 index 000000000000..82ff331da23a --- /dev/null +++ b/integration/harness-e2e-cli/e2e/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "module": "es2020", + "target": "es2020", + "moduleResolution": "node" + } +} diff --git a/integration/harness-e2e-cli/karma.conf.js b/integration/harness-e2e-cli/karma.conf.js new file mode 100644 index 000000000000..1f700a8e6126 --- /dev/null +++ b/integration/harness-e2e-cli/karma.conf.js @@ -0,0 +1,41 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma'), + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false, // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true, // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/harness-e2e-cli'), + subdir: '.', + reporters: [{type: 'html'}, {type: 'text-summary'}], + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true, + }); +}; diff --git a/integration/harness-e2e-cli/package.json b/integration/harness-e2e-cli/package.json new file mode 100644 index 000000000000..1d379b9888a5 --- /dev/null +++ b/integration/harness-e2e-cli/package.json @@ -0,0 +1,50 @@ +{ + "name": "harness-e2e-cli", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test", + "run-e2e-specs": "node --loader ts-node/esm node_modules/jasmine/bin/jasmine --config=e2e/jasmine.json", + "wait-and-run-e2e": "wait-on http://localhost:4200 && yarn run-e2e-specs", + "e2e": "concurrently -s first -k 'ng serve' 'yarn wait-and-run-e2e'" + }, + "private": true, + "dependencies": { + "@angular/animations": "file:../../node_modules/@angular/animations", + "@angular/cdk": "file:../../dist/releases/cdk", + "@angular/common": "file:../../node_modules/@angular/common", + "@angular/compiler": "file:../../node_modules/@angular/compiler", + "@angular/core": "file:../../node_modules/@angular/core", + "@angular/forms": "file:../../node_modules/@angular/forms", + "@angular/material": "file:../../dist/releases/material", + "@angular/platform-browser": "file:../../node_modules/@angular/platform-browser", + "@angular/platform-browser-dynamic": "file:../../node_modules/@angular/platform-browser-dynamic", + "@angular/router": "file:../../node_modules/@angular/router", + "rxjs": "file:../../node_modules/rxjs", + "tslib": "^2.3.0", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "file:../../node_modules/@angular-devkit/build-angular", + "@angular/cli": "file:../../node_modules/@angular/cli", + "@angular/compiler-cli": "file:../../node_modules/@angular/compiler-cli", + "@types/jasmine": "~3.10.0", + "@types/node": "^12.11.1", + "@types/selenium-webdriver": "3.0.19", + "concurrently": "^7.0.0", + "jasmine": "^4.0.2", + "jasmine-core": "~3.10.0", + "karma": "~6.3.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.1.0", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "~1.7.0", + "selenium-webdriver": "3.6.0", + "ts-node": "~9.1.1", + "typescript": "file:../../node_modules/typescript", + "wait-on": "^6.0.0" + } +} diff --git a/integration/harness-e2e-cli/src/app/app.component.html b/integration/harness-e2e-cli/src/app/app.component.html new file mode 100644 index 000000000000..821796b3e8d3 --- /dev/null +++ b/integration/harness-e2e-cli/src/app/app.component.html @@ -0,0 +1,7 @@ + + Select + + First + Second + + \ No newline at end of file diff --git a/integration/harness-e2e-cli/src/app/app.component.scss b/integration/harness-e2e-cli/src/app/app.component.scss new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/integration/harness-e2e-cli/src/app/app.component.ts b/integration/harness-e2e-cli/src/app/app.component.ts new file mode 100644 index 000000000000..f88943010790 --- /dev/null +++ b/integration/harness-e2e-cli/src/app/app.component.ts @@ -0,0 +1,10 @@ +import {Component} from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'], +}) +export class AppComponent { + title = 'harness-e2e-cli'; +} diff --git a/integration/harness-e2e-cli/src/app/app.module.ts b/integration/harness-e2e-cli/src/app/app.module.ts new file mode 100644 index 000000000000..51f8c24f3962 --- /dev/null +++ b/integration/harness-e2e-cli/src/app/app.module.ts @@ -0,0 +1,15 @@ +import {NgModule} from '@angular/core'; +import {BrowserModule} from '@angular/platform-browser'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; + +import {AppComponent} from './app.component'; +import {MatSelectModule} from '@angular/material/select'; +import {MatFormFieldModule} from '@angular/material/form-field'; + +@NgModule({ + declarations: [AppComponent], + imports: [MatSelectModule, MatFormFieldModule, NoopAnimationsModule, BrowserModule], + providers: [], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/integration/harness-e2e-cli/src/assets/.gitkeep b/integration/harness-e2e-cli/src/assets/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/integration/harness-e2e-cli/src/environments/environment.prod.ts b/integration/harness-e2e-cli/src/environments/environment.prod.ts new file mode 100644 index 000000000000..c9669790be17 --- /dev/null +++ b/integration/harness-e2e-cli/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true, +}; diff --git a/integration/harness-e2e-cli/src/environments/environment.ts b/integration/harness-e2e-cli/src/environments/environment.ts new file mode 100644 index 000000000000..66998ae9a7c2 --- /dev/null +++ b/integration/harness-e2e-cli/src/environments/environment.ts @@ -0,0 +1,16 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false, +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/integration/harness-e2e-cli/src/favicon.ico b/integration/harness-e2e-cli/src/favicon.ico new file mode 100644 index 000000000000..997406ad22c2 Binary files /dev/null and b/integration/harness-e2e-cli/src/favicon.ico differ diff --git a/integration/harness-e2e-cli/src/index.html b/integration/harness-e2e-cli/src/index.html new file mode 100644 index 000000000000..60b9e739421b --- /dev/null +++ b/integration/harness-e2e-cli/src/index.html @@ -0,0 +1,13 @@ + + + + + HarnessE2eCli + + + + + + + + diff --git a/integration/harness-e2e-cli/src/main.ts b/integration/harness-e2e-cli/src/main.ts new file mode 100644 index 000000000000..947bb036a501 --- /dev/null +++ b/integration/harness-e2e-cli/src/main.ts @@ -0,0 +1,13 @@ +import {enableProdMode} from '@angular/core'; +import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; + +import {AppModule} from './app/app.module'; +import {environment} from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic() + .bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/integration/harness-e2e-cli/src/polyfills.ts b/integration/harness-e2e-cli/src/polyfills.ts new file mode 100644 index 000000000000..e4555ed11fa2 --- /dev/null +++ b/integration/harness-e2e-cli/src/polyfills.ts @@ -0,0 +1,52 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes recent versions of Safari, Chrome (including + * Opera), Edge on the desktop, and iOS and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js'; // Included with Angular CLI. + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/integration/harness-e2e-cli/src/styles.scss b/integration/harness-e2e-cli/src/styles.scss new file mode 100644 index 000000000000..3294246f8703 --- /dev/null +++ b/integration/harness-e2e-cli/src/styles.scss @@ -0,0 +1 @@ +@import '@angular/material/prebuilt-themes/indigo-pink.css'; \ No newline at end of file diff --git a/integration/harness-e2e-cli/src/test.ts b/integration/harness-e2e-cli/src/test.ts new file mode 100644 index 000000000000..ce6458d19576 --- /dev/null +++ b/integration/harness-e2e-cli/src/test.ts @@ -0,0 +1,27 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/testing'; +import {getTestBed} from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting, +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context( + path: string, + deep?: boolean, + filter?: RegExp, + ): { + (id: string): T; + keys(): string[]; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); + +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/integration/harness-e2e-cli/tsconfig.app.json b/integration/harness-e2e-cli/tsconfig.app.json new file mode 100644 index 000000000000..ff396d4ce2d8 --- /dev/null +++ b/integration/harness-e2e-cli/tsconfig.app.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": ["src/main.ts", "src/polyfills.ts"], + "include": ["src/**/*.d.ts"] +} diff --git a/integration/harness-e2e-cli/tsconfig.json b/integration/harness-e2e-cli/tsconfig.json new file mode 100644 index 000000000000..e8b101db71d3 --- /dev/null +++ b/integration/harness-e2e-cli/tsconfig.json @@ -0,0 +1,29 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "es2017", + "module": "es2020", + "lib": ["es2020", "dom"] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/integration/harness-e2e-cli/tsconfig.spec.json b/integration/harness-e2e-cli/tsconfig.spec.json new file mode 100644 index 000000000000..669344f8d2b7 --- /dev/null +++ b/integration/harness-e2e-cli/tsconfig.spec.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": ["jasmine"] + }, + "files": ["src/test.ts", "src/polyfills.ts"], + "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] +} diff --git a/integration/harness-e2e-cli/yarn.lock b/integration/harness-e2e-cli/yarn.lock new file mode 100644 index 000000000000..b46862b8708a --- /dev/null +++ b/integration/harness-e2e-cli/yarn.lock @@ -0,0 +1,6450 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.2.tgz#a7ebbadb71517dd63298420868f27d98fe230a0a" + integrity sha512-SncaVxs+E3EdoA9xJgHfWPxZfowAgeIsd71VpqCKP6KNKm6s7zSqqvUc70UpKUFsrV3dAmy6qxHoIj5NG+3DiA== + dependencies: + "@jridgewell/resolve-uri" "1.0.0" + sourcemap-codec "1.4.8" + +"@angular-devkit/architect@0.1302.0-next.1": + version "0.1302.0-next.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1302.0-next.1.tgz#2668f797be01528b063892c7226dabc131f6f5af" + integrity sha512-iIoXlrview9QiMFx/g+p+OnfjPKNU71YwzPBoJRhI4c/yUv7d2dtCxOyZXK+d5a3aXdiDMccIM+DKEUon+LfCA== + dependencies: + "@angular-devkit/core" "13.2.0-next.1" + rxjs "6.6.7" + +"@angular-devkit/build-angular@file:../../node_modules/@angular-devkit/build-angular": + version "13.2.0-next.1" + dependencies: + "@ampproject/remapping" "1.0.2" + "@angular-devkit/architect" "0.1302.0-next.1" + "@angular-devkit/build-webpack" "0.1302.0-next.1" + "@angular-devkit/core" "13.2.0-next.1" + "@babel/core" "7.16.5" + "@babel/generator" "7.16.5" + "@babel/helper-annotate-as-pure" "7.16.0" + "@babel/plugin-proposal-async-generator-functions" "7.16.5" + "@babel/plugin-transform-async-to-generator" "7.16.5" + "@babel/plugin-transform-runtime" "7.16.5" + "@babel/preset-env" "7.16.5" + "@babel/runtime" "7.16.5" + "@babel/template" "7.16.0" + "@discoveryjs/json-ext" "0.5.6" + "@ngtools/webpack" "13.2.0-next.1" + ansi-colors "4.1.1" + babel-loader "8.2.3" + babel-plugin-istanbul "6.1.1" + browserslist "^4.9.1" + cacache "15.3.0" + circular-dependency-plugin "5.2.2" + copy-webpack-plugin "10.1.0" + core-js "3.19.3" + critters "0.0.15" + css-loader "6.5.1" + esbuild-wasm "0.14.5" + glob "7.2.0" + https-proxy-agent "5.0.0" + inquirer "8.2.0" + jsonc-parser "3.0.0" + karma-source-map-support "1.4.0" + less "4.1.2" + less-loader "10.2.0" + license-webpack-plugin "4.0.0" + loader-utils "3.2.0" + mini-css-extract-plugin "2.4.5" + minimatch "3.0.4" + open "8.4.0" + ora "5.4.1" + parse5-html-rewriting-stream "6.0.1" + piscina "3.2.0" + postcss "8.4.5" + postcss-import "14.0.2" + postcss-loader "6.2.1" + postcss-preset-env "6.7.0" + regenerator-runtime "0.13.9" + resolve-url-loader "4.0.0" + rxjs "6.6.7" + sass "1.45.0" + sass-loader "12.4.0" + semver "7.3.5" + source-map-loader "3.0.0" + source-map-support "0.5.21" + stylus "0.55.0" + stylus-loader "6.2.0" + terser "5.10.0" + text-table "0.2.0" + tree-kill "1.2.2" + tslib "2.3.1" + webpack "5.65.0" + webpack-dev-middleware "5.2.2" + webpack-dev-server "4.6.0" + webpack-merge "5.8.0" + webpack-subresource-integrity "5.0.0" + optionalDependencies: + esbuild "0.14.5" + +"@angular-devkit/build-webpack@0.1302.0-next.1": + version "0.1302.0-next.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1302.0-next.1.tgz#f4b417f800f2a168eb49d1562c75d3bde6b912bd" + integrity sha512-+e0A6JkjFtGIOiC9duEGHvvqoNbpKu1TBxjyL26Ou8Kgd0vRoyuKvUdDBPO9pqQcrApcB50RCFH5SGkLB06ZkQ== + dependencies: + "@angular-devkit/architect" "0.1302.0-next.1" + rxjs "6.6.7" + +"@angular-devkit/core@13.2.0-next.1": + version "13.2.0-next.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.2.0-next.1.tgz#599b8ad65db6d19fef03aaacfe526f3d744e8db3" + integrity sha512-a0WbgZifWm+H8dIsODq2yS3MlLxMkPRr2nioxSPdk/l6JYqgpNms+E0jv/nU4WxBIiloPIFik/223VZoddrJww== + dependencies: + ajv "8.8.2" + ajv-formats "2.1.1" + fast-json-stable-stringify "2.1.0" + magic-string "0.25.7" + rxjs "6.6.7" + source-map "0.7.3" + +"@angular-devkit/schematics@13.2.0-next.1": + version "13.2.0-next.1" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.2.0-next.1.tgz#367a9d782107d5da1fc4a30ccdec4c135af2b09d" + integrity sha512-90UJD+kujR+zAOqfb942P0AQkMcEVdkkAihP7yNSsMSrN5tukTZ45aeBfMvM7gnivqg+ojzGk5mnToM7VhEEIg== + dependencies: + "@angular-devkit/core" "13.2.0-next.1" + jsonc-parser "3.0.0" + magic-string "0.25.7" + ora "5.4.1" + rxjs "6.6.7" + +"@angular/animations@file:../../node_modules/@angular/animations": + version "13.2.0-next.2" + dependencies: + tslib "^2.3.0" + +"@angular/cdk@file:../../dist/releases/cdk": + version "13.0.0-next.7" + dependencies: + tslib "^2.3.0" + optionalDependencies: + parse5 "^5.0.0" + +"@angular/cli@file:../../node_modules/@angular/cli": + version "13.2.0-next.1" + dependencies: + "@angular-devkit/architect" "0.1302.0-next.1" + "@angular-devkit/core" "13.2.0-next.1" + "@angular-devkit/schematics" "13.2.0-next.1" + "@schematics/angular" "13.2.0-next.1" + "@yarnpkg/lockfile" "1.1.0" + ansi-colors "4.1.1" + debug "4.3.3" + ini "2.0.0" + inquirer "8.2.0" + jsonc-parser "3.0.0" + npm-package-arg "8.1.5" + npm-pick-manifest "6.1.1" + open "8.4.0" + ora "5.4.1" + pacote "12.0.2" + resolve "1.20.0" + semver "7.3.5" + symbol-observable "4.0.0" + uuid "8.3.2" + +"@angular/common@file:../../node_modules/@angular/common": + version "13.2.0-next.2" + dependencies: + tslib "^2.3.0" + +"@angular/compiler-cli@file:../../node_modules/@angular/compiler-cli": + version "13.2.0-next.2" + dependencies: + "@babel/core" "^7.8.6" + canonical-path "1.0.0" + chokidar "^3.0.0" + convert-source-map "^1.5.1" + dependency-graph "^0.11.0" + magic-string "^0.25.0" + reflect-metadata "^0.1.2" + semver "^7.0.0" + sourcemap-codec "^1.4.8" + tslib "^2.3.0" + yargs "^17.2.1" + +"@angular/compiler@file:../../node_modules/@angular/compiler": + version "13.2.0-next.2" + dependencies: + tslib "^2.3.0" + +"@angular/core@file:../../node_modules/@angular/core": + version "13.2.0-next.2" + dependencies: + tslib "^2.3.0" + +"@angular/forms@file:../../node_modules/@angular/forms": + version "13.2.0-next.2" + dependencies: + tslib "^2.3.0" + +"@angular/material@file:../../dist/releases/material": + version "13.0.0-next.7" + dependencies: + tslib "^2.3.0" + +"@angular/platform-browser-dynamic@file:../../node_modules/@angular/platform-browser-dynamic": + version "13.2.0-next.2" + dependencies: + tslib "^2.3.0" + +"@angular/platform-browser@file:../../node_modules/@angular/platform-browser": + version "13.2.0-next.2" + dependencies: + tslib "^2.3.0" + +"@angular/router@file:../../node_modules/@angular/router": + version "13.2.0-next.2" + dependencies: + tslib "^2.3.0" + +"@assemblyscript/loader@^0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06" + integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg== + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" + integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== + +"@babel/core@7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c" + integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helpers" "^7.16.5" + "@babel/parser" "^7.16.5" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.6": + version "7.16.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" + integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.16.7" + "@babel/parser" "^7.16.12" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.10" + "@babel/types" "^7.16.8" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.5.tgz#26e1192eb8f78e0a3acaf3eede3c6fc96d22bedf" + integrity sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA== + dependencies: + "@babel/types" "^7.16.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/generator@^7.16.5", "@babel/generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" + integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== + dependencies: + "@babel/types" "^7.16.8" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" + integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.3", "@babel/helper-compilation-targets@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" + integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz#8a6959b9cc818a88815ba3c5474619e9c0f2c21c" + integrity sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" + integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.3.0", "@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.16.5", "@babel/helper-module-transforms@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-remap-async-to-generator@^7.16.5", "@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.14.5", "@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.16.5", "@babel/helpers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" + integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.5", "@babel/parser@^7.16.7": + version "7.16.12" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" + integrity sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + +"@babel/plugin-proposal-async-generator-functions@7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz#fd3bd7e0d98404a3d4cbca15a72d533f8c9a2f67" + integrity sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-async-generator-functions@^7.16.5": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-class-static-block@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" + integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" + integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.16.5", "@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.5": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-proposal-private-property-in-object@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.16.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-transform-arrow-functions@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-async-to-generator@7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz#89c9b501e65bb14c4579a6ce9563f859de9b34e4" + integrity sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w== + dependencies: + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + +"@babel/plugin-transform-async-to-generator@^7.16.5": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" + +"@babel/plugin-transform-block-scoped-functions@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoping@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-classes@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-destructuring@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" + integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-dotall-regex@^7.16.5", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-duplicate-keys@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-exponentiation-operator@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-for-of@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-function-name@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-member-expression-literals@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.16.5": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" + integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" + integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.5": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + +"@babel/plugin-transform-new-target@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-object-super@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.16.5", "@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-property-literals@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-runtime@7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.5.tgz#0cc3f01d69f299d5a42cd9ec43b92ea7a777b8db" + integrity sha512-gxpfS8XQWDbQ8oP5NcmpXxtEgCJkbO+W9VhZlOhr0xPyVaRjAQPOv7ZDj9fg0d5s9+NiVvMCE6gbkEkcsxwGRw== + dependencies: + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typeof-symbol@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-escapes@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.5.tgz#2e94d922f4a890979af04ffeb6a6b4e44ba90847" + integrity sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-async-generator-functions" "^7.16.5" + "@babel/plugin-proposal-class-properties" "^7.16.5" + "@babel/plugin-proposal-class-static-block" "^7.16.5" + "@babel/plugin-proposal-dynamic-import" "^7.16.5" + "@babel/plugin-proposal-export-namespace-from" "^7.16.5" + "@babel/plugin-proposal-json-strings" "^7.16.5" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.5" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.5" + "@babel/plugin-proposal-numeric-separator" "^7.16.5" + "@babel/plugin-proposal-object-rest-spread" "^7.16.5" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.5" + "@babel/plugin-proposal-optional-chaining" "^7.16.5" + "@babel/plugin-proposal-private-methods" "^7.16.5" + "@babel/plugin-proposal-private-property-in-object" "^7.16.5" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.5" + "@babel/plugin-transform-async-to-generator" "^7.16.5" + "@babel/plugin-transform-block-scoped-functions" "^7.16.5" + "@babel/plugin-transform-block-scoping" "^7.16.5" + "@babel/plugin-transform-classes" "^7.16.5" + "@babel/plugin-transform-computed-properties" "^7.16.5" + "@babel/plugin-transform-destructuring" "^7.16.5" + "@babel/plugin-transform-dotall-regex" "^7.16.5" + "@babel/plugin-transform-duplicate-keys" "^7.16.5" + "@babel/plugin-transform-exponentiation-operator" "^7.16.5" + "@babel/plugin-transform-for-of" "^7.16.5" + "@babel/plugin-transform-function-name" "^7.16.5" + "@babel/plugin-transform-literals" "^7.16.5" + "@babel/plugin-transform-member-expression-literals" "^7.16.5" + "@babel/plugin-transform-modules-amd" "^7.16.5" + "@babel/plugin-transform-modules-commonjs" "^7.16.5" + "@babel/plugin-transform-modules-systemjs" "^7.16.5" + "@babel/plugin-transform-modules-umd" "^7.16.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.5" + "@babel/plugin-transform-new-target" "^7.16.5" + "@babel/plugin-transform-object-super" "^7.16.5" + "@babel/plugin-transform-parameters" "^7.16.5" + "@babel/plugin-transform-property-literals" "^7.16.5" + "@babel/plugin-transform-regenerator" "^7.16.5" + "@babel/plugin-transform-reserved-words" "^7.16.5" + "@babel/plugin-transform-shorthand-properties" "^7.16.5" + "@babel/plugin-transform-spread" "^7.16.5" + "@babel/plugin-transform-sticky-regex" "^7.16.5" + "@babel/plugin-transform-template-literals" "^7.16.5" + "@babel/plugin-transform-typeof-symbol" "^7.16.5" + "@babel/plugin-transform-unicode-escapes" "^7.16.5" + "@babel/plugin-transform-unicode-regex" "^7.16.5" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.0" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.19.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.5.tgz#7f3e34bf8bdbbadf03fbb7b1ea0d929569c9487a" + integrity sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.8.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" + integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" + integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/template@^7.16.0", "@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.5", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" + integrity sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.16.8" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.16.10" + "@babel/types" "^7.16.8" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.4.4": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" + integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@discoveryjs/json-ext@0.5.6": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" + integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== + +"@gar/promisify@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" + integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + +"@hapi/hoek@^9.0.0": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" + integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jridgewell/resolve-uri@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz#3fdf5798f0b49e90155896f6291df186eac06c83" + integrity sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA== + +"@ngtools/webpack@13.2.0-next.1": + version "13.2.0-next.1" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.2.0-next.1.tgz#2a4bab214b0f5d8b7e89fd0c1dfca80983065c92" + integrity sha512-pM0pA8ENqDuPvjrjvhq14OzfO1uZ++4cUxQ1mm0gw46bVtWtyLcxqE2RFHSw+qnMeduTu9e70LqcGTjtmipvYA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/fs@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951" + integrity sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/git@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" + integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== + dependencies: + "@npmcli/promise-spawn" "^1.3.2" + lru-cache "^6.0.0" + mkdirp "^1.0.4" + npm-pick-manifest "^6.1.1" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" + +"@npmcli/installed-package-contents@^1.0.6": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@npmcli/node-gyp@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" + integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== + +"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" + integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== + dependencies: + infer-owner "^1.0.4" + +"@npmcli/run-script@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" + integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== + dependencies: + "@npmcli/node-gyp" "^1.0.2" + "@npmcli/promise-spawn" "^1.3.2" + node-gyp "^8.2.0" + read-package-json-fast "^2.0.1" + +"@schematics/angular@13.2.0-next.1": + version "13.2.0-next.1" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.2.0-next.1.tgz#e670e0c9d734dda81e5d712fbbab9a8e25fb3ba7" + integrity sha512-2VUYODbnPETqVyM1xCB4sISZKZNzE7c2uYd/ljMbIg21sFrBD7Ali4gIRpkBaen93+33eAwCFCD9L6wqheUTDA== + dependencies: + "@angular-devkit/core" "13.2.0-next.1" + "@angular-devkit/schematics" "13.2.0-next.1" + jsonc-parser "3.0.0" + +"@sideway/address@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27" + integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@socket.io/base64-arraybuffer@~1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#568d9beae00b0d835f4f8c53fd55714986492e61" + integrity sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ== + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@types/component-emitter@^1.2.10": + version "1.2.11" + resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506" + integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ== + +"@types/cookie@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cors@^2.8.12": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + +"@types/eslint-scope@^3.7.0": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + +"@types/http-proxy@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== + dependencies: + "@types/node" "*" + +"@types/jasmine@~3.10.0": + version "3.10.3" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.10.3.tgz#a89798b3d5a8bd23ca56e855a9aee3e5a93bdaaa" + integrity sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g== + +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + +"@types/node@*", "@types/node@>=10.0.0": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.10.tgz#616f16e9d3a2a3d618136b1be244315d95bd7cab" + integrity sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog== + +"@types/node@^12.11.1": + version "12.20.42" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.42.tgz#2f021733232c2130c26f9eabbdd3bfd881774733" + integrity sha512-aI3/oo5DzyiI5R/xAhxxRzfZlWlsbbqdgxfTPkqu/Zt+23GXiJvMCyPJT4+xKSXOnLqoL8jJYMLTwvK2M3a5hw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/retry@^0.12.0": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" + integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== + +"@types/selenium-webdriver@3.0.19": + version "3.0.19" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.19.tgz#28ecede76f15b13553b4e86074d4cf9a0bbe49c4" + integrity sha512-OFUilxQg+rWL2FMxtmIgCkUDlJB6pskkpvmew7yeXfzzsOBb5rc+y2+DjHm+r3r1ZPPcJefK3DveNSYWGiy68g== + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"@yarnpkg/lockfile@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn@^8.4.1: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agentkeepalive@^4.1.3: + version "4.2.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.0.tgz#616ce94ccb41d1a39a45d203d8076fe98713062d" + integrity sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@2.1.1, ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@8.8.2: + version "8.8.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" + integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.8.0: + version "8.9.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" + integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-union@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.8" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" + integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + picocolors "^0.2.1" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +axios@^0.21.1: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +babel-loader@8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^1.4.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" + integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.0" + core-js-compat "^3.18.0" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.2.0, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +body-parser@1.19.1, body-parser@^1.19.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" + integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== + dependencies: + bytes "3.1.1" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.9.6" + raw-body "2.4.2" + type-is "~1.6.18" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.6.4, browserslist@^4.9.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + dependencies: + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== + +cacache@15.3.0, cacache@^15.0.5, cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001286: + version "1.0.30001301" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz#ebc9086026534cab0dab99425d9c3b4425e5f450" + integrity sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA== + +canonical-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" + integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg== + +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +circular-dependency-plugin@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz#39e836079db1d3cf2f988dc48c5188a44058b600" + integrity sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@^2.0.10: + version "2.0.16" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" + integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + +colors@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concurrently@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.0.0.tgz#78d31b441cec338dab03316c221a2f9a67c529b0" + integrity sha512-WKM7PUsI8wyXpF80H+zjHP32fsgsHNQfPLw/e70Z5dYkV7hF+rf8q3D+ScWJIEr57CpkO3OWBko6hwhQLPR8Pw== + dependencies: + chalk "^4.1.0" + date-fns "^2.16.1" + lodash "^4.17.21" + rxjs "^6.6.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^16.2.0" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.5.1, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.1, cookie@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +copy-anything@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" + integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== + dependencies: + is-what "^3.12.0" + +copy-webpack-plugin@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.1.0.tgz#d27cf1cbe1c9b4ac57f1f96312e6f7da00108d23" + integrity sha512-dPGo+zoW77wiF5LlwkQcZTY7FsrSm7dmovhLDHsjYyciiJ+ZhLFt2EQbw9LRUHJ586JXN0K1A70Kbudclvt00Q== + dependencies: + fast-glob "^3.2.7" + glob-parent "^6.0.1" + globby "^12.0.2" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + +core-js-compat@^3.18.0, core-js-compat@^3.19.1: + version "3.20.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.3.tgz#d71f85f94eb5e4bea3407412e549daa083d23bd6" + integrity sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw== + dependencies: + browserslist "^4.19.1" + semver "7.0.0" + +core-js@3.19.3: + version "3.19.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.3.tgz#6df8142a996337503019ff3235a7022d7cdf4559" + integrity sha512-LeLBMgEGSsG7giquSzvgBrTS7V5UL6ks3eQlUSbN8dJStlLFiRzUm5iqsRyzUB8carhfKjkJ2vzKqE6z1Vga9g== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@~2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +critters@0.0.15: + version "0.0.15" + resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.15.tgz#b1c8d18fd18e614471733d7d749deac0f386b738" + integrity sha512-AE7hkXb3eZUbEvS1SKZa+OU4o2kUOXtzVeE/2E/mjU/0mV1wpBT1HfUCWVRS4zwvkBNJ0AQYsVjAoFm+kIhfdw== + dependencies: + chalk "^4.1.0" + css-select "^4.1.3" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + postcss "^8.3.7" + pretty-bytes "^5.3.0" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.5.1.tgz#0c43d4fbe0d97f699c91e9818cb585759091d1b1" + integrity sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ== + dependencies: + icss-utils "^5.1.0" + postcss "^8.2.15" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.1.0" + semver "^7.3.5" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + +date-fns@^2.16.1: + version "2.28.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== + +date-format@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.3.tgz#f63de5dc08dc02efd8ef32bf2a6918e486f35873" + integrity sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@4.3.3, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@~4.3.1, debug@~4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +debug@^3.1.1, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + 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" + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +del@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" + integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== + 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" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@^1.1.2, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +dependency-graph@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" + integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +dom-serialize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.4.17: + version "1.4.51" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.51.tgz#a432f5a5d983ace79278a33057300cf949627e63" + integrity sha512-JNEmcYl3mk1tGQmy0EvL5eik/CKSBuzAyGP0QFdG6LIgxQe3II0BL1m2zKc2MZMf3uGqHWE1TFddJML0RpjSHQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +encoding@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +engine.io-parser@~5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.3.tgz#ca1f0d7b11e290b4bfda251803baea765ed89c09" + integrity sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg== + dependencies: + "@socket.io/base64-arraybuffer" "~1.0.2" + +engine.io@~6.1.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.1.2.tgz#e7b9d546d90c62246ffcba4d88594be980d3855a" + integrity sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ== + dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.0.0" + ws "~8.2.3" + +enhanced-resolve@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" + integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +esbuild-android-arm64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.5.tgz#a7bc2263e099b67d1d6bc10ad504f396b439a42a" + integrity sha512-Sl6ysm7OAZZz+X3Mv3tOPhjMuSxNmztgoXH4ZZ3Yhbje5emEY6qiTnv3vBSljDlUl/yGaIjqC44qlj8s8G71xA== + +esbuild-darwin-64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.5.tgz#589f4b8663feb044f2425e70618f6a9debebaf14" + integrity sha512-VHZl23sM9BOZXcLxk1vTYls8TCAY+/3llw9vHKIWAHDHzBBOlVv26ORK8gnStNMqTjCSGSMoq4T5jOZf2WrJPQ== + +esbuild-darwin-arm64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.5.tgz#c4def102fddd52ccaf23cf00c3274296de6b12db" + integrity sha512-ugPOLgEQPoPLSqAFBajaczt+lcbUZR+V2fby3572h5jf/kFV6UL8LAZ1Ze58hcbKwfvbh4C09kp0PhqPgXKwOg== + +esbuild-freebsd-64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.5.tgz#e5152bbf256942fe498dfe4a5f92b8bb148a64b5" + integrity sha512-uP0yOixSHF505o/Kzq9e4bvZblCZp9GGx+a7enLOVSuvIvLmtj2yhZLRPGfbVNkPJXktTKNRAnNGkXHl53M6sw== + +esbuild-freebsd-arm64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.5.tgz#7c1ad25ae9ed101df76dc64d83fcfd2ddba5aed0" + integrity sha512-M99NPu8hlirFo6Fgx0WfX6XxUFdGclUNv3MyyfDtTdNYbccMESwLSACGpE7HvJKWscdjaqajeMu2an9adGNfCw== + +esbuild-linux-32@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.5.tgz#047a2d6d9dd5f85e6e6875b048c41ab2515e12ce" + integrity sha512-hfqln4yb/jf/vPvI/A6aCvpIzqF3PdDmrKiikTohEUuRtvEZz234krtNwEAw5ssCue4NX8BJqrMpCTAHOl3LQw== + +esbuild-linux-64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.5.tgz#03793b5a0ae450c725616fc724b3a406cd2da2fa" + integrity sha512-T+OuYPlhytjj5DsvjUXizNjbV+/IrZiaDc9SNUfqiUOXHu0URFqchjhPVbBiBnWykCMJFB6pqNap2Oxth4iuYw== + +esbuild-linux-arm64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.5.tgz#9217283b5ccaf2ec9a31f9b4eaeb5787607252a3" + integrity sha512-ANOzoaH4kfbhEZT0EGY9g1tsZhDA+I0FRwBsj7D8pCU900pXF/l8YAOy5jWFQIb3vjG5+orFc5SqSzAKCisvTQ== + +esbuild-linux-arm@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.5.tgz#e048a681e7f42b12cac1db4a34a84ef17e219333" + integrity sha512-5b10jKJ3lU4BUchOw9TgRResu8UZJf8qVjAzV5muHedonCfBzClGTT4KCNuOcLTJomH3wz6gNVJt1AxMglXnJg== + +esbuild-linux-mips64le@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.5.tgz#c1817c00023d8a1c8fe507e60c63cf8a602bce29" + integrity sha512-sSmGfOUNNB2Nd3tzp1RHSxiJmM5/RUIEP5aAtH+PpOP7FPp15Jcfwq7UNBJ82KLN3SJcwhUeEfcCaUFBzbTKxg== + +esbuild-linux-ppc64le@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.5.tgz#5fa1178c7d7ebd13056c7ccd0604653b0ccc2264" + integrity sha512-usfQrVVIQcpuc/U2NWc7/Ry+m622v+PjJ5eErNPdjWBPlcvD6kXaBTv94uQkVzZOHX3uYqprRrOjseed9ApSYA== + +esbuild-netbsd-64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.5.tgz#757572c7664ae6122c8e4dd89a2b6d337c3c27b2" + integrity sha512-Q5KpvPZcPnNEaTjrvuWqvEnlhI2jyi1wWwYunlEUAhx60spQOTy10sdYOA+s1M+LPb6kwvasrZZDmYyQlcVZeA== + +esbuild-openbsd-64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.5.tgz#046827c211daa2b6a2241a9f910321e116d2cc24" + integrity sha512-RZzRUu1RYKextJgXkHhAsuhLDvm73YP/wogpUG9MaAGvKTxnKAKRuaw2zJfnbz8iBqBQB2no2PmpVBNbqUTQrw== + +esbuild-sunos-64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.5.tgz#3e2b0e79188069a366faec3d5b1b3065b792a733" + integrity sha512-J2ffKsBBWscQlye+/giEgKsQCppwHHFqqt/sh+ojVF+DZy1ve6RpPGwXGcGF6IaZTAI9+Vk4eHleiQxb+PC9Yw== + +esbuild-wasm@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.5.tgz#fdd22d953b5c746db4b22236092391fbca5a2a3a" + integrity sha512-oIC9zxAUE3ce1+2L5H6+ThFQ7sgZViAXGXCTo0i8r+1W+fS9STUp9YSLla/8cL0/HFxfFZ1qRR4XcmIvpxABQQ== + +esbuild-windows-32@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.5.tgz#520f3737719177d76955b8f1c34eca8e8d005eba" + integrity sha512-OTZvuAc1JBnwmeT+hR1+Vmgz6LOD7DggpnwtKMAExruSLxUMl02Z3pyalJ7zKh3gJ/KBRM1JQZLSk4/mFWijeQ== + +esbuild-windows-64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.5.tgz#0100d8aa3c5d57e676aeb37975e948880f751650" + integrity sha512-ZM9rlBDsPEeMVJ1wcpNMXUad9VzYOFeOBUXBi+16HZTvFPy2DkcC2ZWcrByP3IESToD5lvHdjSX/w8rxphjqig== + +esbuild-windows-arm64@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.5.tgz#c1d575f2c6d27159de9b5d273bcde02445f17a1d" + integrity sha512-iK41mKG2LG0AKHE+9g/jDYU5ZQpJObt1uIPSGTiiiJKI5qbHdEck6Gaqq2tmBI933F2zB9yqZIX7IAdxwN/q4A== + +esbuild@0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.5.tgz#45ef0287a94cc7a3d367621e4a7ba470a847669f" + integrity sha512-ofwgH4ITPXhkMo2AM39oXpSe5KIyWjxicdqYVy+tLa1lMgxzPCKwaepcrSRtYbgTUMXwquxB1C3xQYpUNaPAFA== + optionalDependencies: + esbuild-android-arm64 "0.14.5" + esbuild-darwin-64 "0.14.5" + esbuild-darwin-arm64 "0.14.5" + esbuild-freebsd-64 "0.14.5" + esbuild-freebsd-arm64 "0.14.5" + esbuild-linux-32 "0.14.5" + esbuild-linux-64 "0.14.5" + esbuild-linux-arm "0.14.5" + esbuild-linux-arm64 "0.14.5" + esbuild-linux-mips64le "0.14.5" + esbuild-linux-ppc64le "0.14.5" + esbuild-netbsd-64 "0.14.5" + esbuild-openbsd-64 "0.14.5" + esbuild-sunos-64 "0.14.5" + esbuild-windows-32 "0.14.5" + esbuild-windows-64 "0.14.5" + esbuild-windows-arm64 "0.14.5" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter-asyncresource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz#734ff2e44bf448e627f7748f905d6bdd57bdb65b" + integrity sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.1: + version "4.17.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" + integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.4.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.9.6" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2, finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flatted@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" + integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +follow-redirects@^1.0.0, follow-redirects@^1.14.0: + version "1.14.7" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" + integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-monkey@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gauge@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" + integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== + dependencies: + ansi-regex "^5.0.1" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.2.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^11.0.1: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^12.0.2: + version "12.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" + integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== + dependencies: + array-union "^3.0.1" + dir-glob "^3.0.1" + fast-glob "^3.2.7" + ignore "^5.1.9" + merge2 "^1.4.1" + slash "^4.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hdr-histogram-js@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5" + integrity sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g== + dependencies: + "@assemblyscript/loader" "^0.10.1" + base64-js "^1.2.0" + pako "^1.0.3" + +hdr-histogram-percentiles-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c" + integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw== + +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" + integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-cache-semantics@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz#94d7593790aad6b3de48164f13792262f656c332" + integrity sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-walk@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3" + integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw== + dependencies: + minimatch "^3.0.4" + +ignore@^5.1.9, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +inquirer@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" + integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.2.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.2.0, is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-what@^3.12.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isbinaryfile@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" + integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-instrument@^5.0.4: + version "5.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.5: + version "3.1.3" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2" + integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jasmine-core@^3.6.0: + version "3.99.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.99.0.tgz#99a3da0d38ba2de82614d9198b7b1bc1c32a5960" + integrity sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w== + +jasmine-core@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-4.0.0.tgz#8299ed38a100c47a1d154af63449a40967a7be5c" + integrity sha512-tq24OCqHElgU9KDpb/8O21r1IfotgjIzalfW9eCmRR40LZpvwXT68iariIyayMwi0m98RDt16aljdbwK0sBMmQ== + +jasmine-core@~3.10.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.10.1.tgz#7aa6fa2b834a522315c651a128d940eca553989a" + integrity sha512-ooZWSDVAdh79Rrj4/nnfklL3NQVra0BcuhcuWoAwwi+znLDoUeH87AFfeX8s+YeYi6xlv5nveRyaA1v7CintfA== + +jasmine@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-4.0.2.tgz#6f5ff7fbf6b67f56600235fdb7d299ac52876c4b" + integrity sha512-YsrgxJQEggxzByYe4j68eQLOiQeSrPDYGv4sHhGBp3c6HHdq+uPXeAQ73kOAQpdLZ3/0zN7x/TZTloqeE1/qIA== + dependencies: + glob "^7.1.6" + jasmine-core "^4.0.0" + +jest-worker@^27.4.1: + version "27.4.6" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" + integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joi@^17.4.0: + version "17.5.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.5.0.tgz#7e66d0004b5045d971cf416a55fb61d33ac6e011" + integrity sha512-R7hR50COp7StzLnDi4ywOXHrBrgNXuUUfJWIR5lPY5Bm/pOD3jZaTwpluUXVLRWcoWZxkrHBBJ5hLxgnlehbdw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonc-parser@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + +jszip@^3.1.3: + version "3.7.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9" + integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + set-immediate-shim "~1.0.1" + +karma-chrome-launcher@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" + integrity sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg== + dependencies: + which "^1.2.1" + +karma-coverage@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-2.1.0.tgz#843564578d9e1fb889ec141a582c019bb6db14db" + integrity sha512-uIejpnArNFQIovB6EPsKO/T4XofELdJWXcA2ADXztFlKhHbr0Ws6ba7wKTMVWsIhEs4iJxdhQkCQrkkhFJSZCw== + dependencies: + istanbul-lib-coverage "^3.2.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.1" + istanbul-reports "^3.0.5" + minimatch "^3.0.4" + +karma-jasmine-html-reporter@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz#52c489a74d760934a1089bfa5ea4a8fcb84cc28b" + integrity sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ== + +karma-jasmine@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-4.0.1.tgz#b99e073b6d99a5196fc4bffc121b89313b0abd82" + integrity sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw== + dependencies: + jasmine-core "^3.6.0" + +karma-source-map-support@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz#58526ceccf7e8730e56effd97a4de8d712ac0d6b" + integrity sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A== + dependencies: + source-map-support "^0.5.5" + +karma@~6.3.0: + version "6.3.11" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.11.tgz#2c2fb09f1a9f52e1a0739adeedace2a68d4c0d34" + integrity sha512-QGUh4yXgizzDNPLB5nWTvP+wysKexngbyLVWFOyikB661hpa2RZLf5anZQzqliWtAQuYVep0ot0D1U7UQKpsxQ== + dependencies: + body-parser "^1.19.0" + braces "^3.0.2" + chokidar "^3.5.1" + colors "1.4.0" + connect "^3.7.0" + di "^0.0.1" + dom-serialize "^2.2.1" + glob "^7.1.7" + graceful-fs "^4.2.6" + http-proxy "^1.18.1" + isbinaryfile "^4.0.8" + lodash "^4.17.21" + log4js "^6.3.0" + mime "^2.5.2" + minimatch "^3.0.4" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^4.2.0" + source-map "^0.6.1" + tmp "^0.2.1" + ua-parser-js "^0.7.30" + yargs "^16.1.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== + +less-loader@10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.2.0.tgz#97286d8797dc3dc05b1d16b0ecec5f968bdd4e32" + integrity sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg== + dependencies: + klona "^2.0.4" + +less@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" + integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^2.5.2" + source-map "~0.6.0" + +license-webpack-plugin@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.0.tgz#11cf6ac96559f4a987cf55d3d2a33f295ae8f13b" + integrity sha512-b9iMrROrw2fTOJBZ57h0xJfT5/1Cxg4ucYbtpWoukv4Awb2TFPfDDFVHNM8w6SYQpVfB13a5tQJxgGamqwrsyw== + dependencies: + webpack-sources "^3.0.0" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + +loader-utils@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== + +loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash@^4.17.14, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log4js@^6.3.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.4.1.tgz#9d3a8bf2c31c1e213fe3fc398a6053f7a2bc53e8" + integrity sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg== + dependencies: + date-format "^4.0.3" + debug "^4.3.3" + flatted "^3.2.4" + rfdc "^1.3.0" + streamroller "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@0.25.7, magic-string@^0.25.0: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memfs@^3.2.2: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== + dependencies: + fs-monkey "1.0.3" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + dependencies: + mime-db "1.51.0" + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@2.4.5: + version "2.4.5" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.5.tgz#191d6c170226037212c483af1180b4010b7b9eef" + integrity sha512-oEIhRucyn1JbT/1tU2BhnwO6ft1jjH1iCX9Gc59WFMg0n5773rQU0oyQ0zzeYFFuBfONaRbQJyGoPtuNseMxjA== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + dependencies: + yallist "^4.0.0" + +minizlib@^2.0.0, minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nanoid@^3.1.30: + version "3.2.0" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" + integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== + +needle@^2.5.2: + version "2.9.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" + integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +negotiator@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-napi@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b" + integrity sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-gyp-build@^4.2.2: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" + integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== + +node-gyp@^8.2.0: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +npm-bundled@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-install-checks@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" + integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-package-arg@8.1.5, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: + version "8.1.5" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" + integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== + dependencies: + hosted-git-info "^4.0.1" + semver "^7.3.4" + validate-npm-package-name "^3.0.0" + +npm-packlist@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" + integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ== + dependencies: + glob "^7.1.6" + ignore-walk "^4.0.1" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@6.1.1, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" + integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== + dependencies: + npm-install-checks "^4.0.0" + npm-normalize-package-bin "^1.0.1" + npm-package-arg "^8.1.2" + semver "^7.3.4" + +npm-registry-fetch@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" + integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== + dependencies: + make-fetch-happen "^9.0.1" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npmlog@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.0.tgz#ba9ef39413c3d936ea91553db7be49c34ad0520c" + integrity sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.0" + set-blocking "^2.0.0" + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +object-assign@^4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@8.4.0, open@^8.0.9: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +ora@5.4.1, ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" + integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + dependencies: + "@types/retry" "^0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pacote@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.2.tgz#14ae30a81fe62ec4fc18c071150e6763e932527c" + integrity sha512-Ar3mhjcxhMzk+OVZ8pbnXdb0l8+pimvlsqBGRNkble2NVgyqOGE3yrCGi/lAYq7E7NRDMz89R1Wx5HIMCGgeYg== + dependencies: + "@npmcli/git" "^2.1.0" + "@npmcli/installed-package-contents" "^1.0.6" + "@npmcli/promise-spawn" "^1.2.0" + "@npmcli/run-script" "^2.0.0" + cacache "^15.0.5" + chownr "^2.0.0" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + minipass "^3.1.3" + mkdirp "^1.0.3" + npm-package-arg "^8.0.1" + npm-packlist "^3.0.0" + npm-pick-manifest "^6.0.0" + npm-registry-fetch "^11.0.0" + promise-retry "^2.0.1" + read-package-json-fast "^2.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.1.0" + +pako@^1.0.3, pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5-html-rewriting-stream@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz#de1820559317ab4e451ea72dba05fddfd914480b" + integrity sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg== + dependencies: + parse5 "^6.0.1" + parse5-sax-parser "^6.0.1" + +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5-sax-parser@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz#98b4d366b5b266a7cd90b4b58906667af882daba" + integrity sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg== + dependencies: + parse5 "^6.0.1" + +parse5@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +piscina@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.2.0.tgz#f5a1dde0c05567775690cccefe59d9223924d154" + integrity sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA== + dependencies: + eventemitter-asyncresource "^1.0.0" + hdr-histogram-js "^2.0.1" + hdr-histogram-percentiles-obj "^3.0.0" + optionalDependencies: + nice-napi "^1.0.2" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +portfinder@^1.0.28: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-import@14.0.2: + version "14.0.2" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.0.2.tgz#60eff77e6be92e7b67fe469ec797d9424cae1aa1" + integrity sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== + dependencies: + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-loader@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@8.4.5, postcss@^8.2.15, postcss@^8.3.7: + version "8.4.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" + integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== + dependencies: + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^1.0.1" + +postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qjobs@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.9.6: + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== + dependencies: + bytes "3.1.1" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + dependencies: + pify "^2.3.0" + +read-package-json-fast@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +readable-stream@^2.0.1, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reflect-metadata@^0.1.2: + version "0.1.13" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" + integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== + +regenerate-unicode-properties@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" + integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@0.13.9, regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + +regexp.prototype.flags@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpu-core@^4.7.1: + version "4.8.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" + integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^9.0.0" + regjsgen "^0.5.2" + regjsparser "^0.7.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" + integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== + dependencies: + jsesc "~0.5.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" + +resolve@1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^1.1.7, resolve@^1.14.2: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rimraf@^2.5.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@6.6.7, rxjs@^6.6.3, "rxjs@file:../../node_modules/rxjs": + version "6.6.7" + dependencies: + tslib "^1.9.0" + +rxjs@^7.1.0, rxjs@^7.2.0: + version "7.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" + integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-loader@12.4.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.4.0.tgz#260b0d51a8a373bb8e88efc11f6ba5583fea0bcf" + integrity sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sass@1.45.0: + version "1.45.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.45.0.tgz#192ede1908324bb293a3e403d1841dbcaafdd323" + integrity sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selenium-webdriver@3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" + integrity sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +selfsigned@^1.10.11: + version "1.10.14" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574" + integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== + dependencies: + node-forge "^0.10.0" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "1.8.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.2" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-immediate-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.6" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +smart-buffer@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socket.io-adapter@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz#4d6111e4d42e9f7646e365b4f578269821f13486" + integrity sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ== + +socket.io-parser@~4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0" + integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g== + dependencies: + "@types/component-emitter" "^1.2.10" + component-emitter "~1.3.0" + debug "~4.3.1" + +socket.io@^4.2.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.4.1.tgz#cd6de29e277a161d176832bb24f64ee045c56ab8" + integrity sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg== + dependencies: + accepts "~1.3.4" + base64id "~2.0.0" + debug "~4.3.2" + engine.io "~6.1.0" + socket.io-adapter "~2.3.3" + socket.io-parser "~4.0.4" + +sockjs@^0.3.21: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +socks-proxy-agent@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" + integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== + dependencies: + agent-base "^6.0.2" + debug "^4.3.1" + socks "^2.6.1" + +socks@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" + integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== + dependencies: + ip "^1.1.5" + smart-buffer "^4.1.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + +source-map-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049" + integrity sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.2" + source-map-js "^0.6.2" + +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@0.5.21, source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.5.0: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +sourcemap-codec@1.4.8, sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +streamroller@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.0.2.tgz#30418d0eee3d6c93ec897f892ed098e3a81e68b7" + integrity sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA== + dependencies: + date-format "^4.0.3" + debug "^4.1.1" + fs-extra "^10.0.0" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +stylus-loader@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-6.2.0.tgz#0ba499e744e7fb9d9b3977784c8639728a7ced8c" + integrity sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg== + dependencies: + fast-glob "^3.2.7" + klona "^2.0.4" + normalize-path "^3.0.0" + +stylus@0.55.0: + version "0.55.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.55.0.tgz#bd404a36dd93fa87744a9dd2d2b1b8450345e5fc" + integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== + dependencies: + css "^3.0.0" + debug "~3.1.0" + glob "^7.1.6" + mkdirp "~1.0.4" + safer-buffer "^2.1.2" + sax "~1.2.4" + semver "^6.3.0" + source-map "^0.7.3" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0, supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-observable@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +terser-webpack-plugin@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" + integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== + dependencies: + jest-worker "^27.4.1" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@5.10.0, terser@^5.7.2: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + dependencies: + os-tmpdir "~1.0.1" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tree-kill@1.2.2, tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-node@~9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== + dependencies: + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +tslib@2.3.1, tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-assert@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.8.tgz#4bf9f1ce7f3f974d09c3afd7c68d12e1391a233c" + integrity sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g== + +"typescript@file:../../node_modules/typescript": + version "4.5.2" + +ua-parser-js@^0.7.30: + version "0.7.31" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@8.3.2, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +wait-on@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.0.tgz#7e9bf8e3d7fe2daecbb7a570ac8ca41e9311c7e7" + integrity sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw== + dependencies: + axios "^0.21.1" + joi "^17.4.0" + lodash "^4.17.21" + minimist "^1.2.5" + rxjs "^7.1.0" + +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webpack-dev-middleware@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.2.tgz#eb5193faa5479ca1086b9f7bed68b89c731bff62" + integrity sha512-DjZyYrsHhkikAFNvSNKrpnziXukU1EChFAh9j4LAm6ndPLPW8cN0KhM7T+RAiOqsQ6ABfQ8hoKIs9IWMTjov+w== + dependencies: + colorette "^2.0.10" + memfs "^3.2.2" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-middleware@^5.2.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c" + integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg== + dependencies: + colorette "^2.0.10" + memfs "^3.2.2" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz#e8648601c440172d9b6f248d28db98bed335315a" + integrity sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg== + dependencies: + ansi-html-community "^0.0.8" + bonjour "^3.5.0" + chokidar "^3.5.2" + 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" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.0" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + portfinder "^1.0.28" + schema-utils "^4.0.0" + selfsigned "^1.10.11" + serve-index "^1.9.1" + sockjs "^0.3.21" + spdy "^4.0.2" + strip-ansi "^7.0.0" + url "^0.11.0" + webpack-dev-middleware "^5.2.1" + ws "^8.1.0" + +webpack-merge@5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^3.0.0, webpack-sources@^3.2.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-subresource-integrity@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.0.0.tgz#8268b9cc1a229a8f8129ca9eeb59cde52185b6b1" + integrity sha512-x9514FpLRydO+UAQ8DY4aLtCjxmdLkuQVcDFN1kGzuusREYJ1B0rzk/iIlWiL6dnvrhEGFj2+UsdxDkP8Z4UKg== + dependencies: + typed-assert "^1.0.8" + +webpack@5.65.0: + version "5.65.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be" + integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.50" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.8.3" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.3.1" + webpack-sources "^3.2.2" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^8.1.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b" + integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== + +ws@~8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" + integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== + +xml2js@^0.4.17: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.0: + version "21.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" + integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA== + +yargs@^16.1.1, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.2.1: + version "17.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9" + integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +zone.js@~0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.11.4.tgz#0f70dcf6aba80f698af5735cbb257969396e8025" + integrity sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw== + dependencies: + tslib "^2.0.0" diff --git a/integration/linker/BUILD.bazel b/integration/linker/BUILD.bazel index 4747b77cfc4c..f84234bfcbde 100644 --- a/integration/linker/BUILD.bazel +++ b/integration/linker/BUILD.bazel @@ -15,10 +15,8 @@ nodejs_test( "//src/youtube-player:npm_package", "@npm//@angular/compiler-cli", "@npm//@babel/core", - "@npm//@babel/traverse", "@npm//chalk", "@npm//glob", ], entry_point = "link-packages-test.mjs", - tags = ["partial-compilation-integration"], ) diff --git a/integration/linker/link-packages-test.mjs b/integration/linker/link-packages-test.mjs index 12bf58a8d299..d7375d676dc2 100644 --- a/integration/linker/link-packages-test.mjs +++ b/integration/linker/link-packages-test.mjs @@ -9,7 +9,6 @@ import {getNpmPackagesFromRunfiles} from '../npm-packages-from-runfiles.mjs'; import fs from 'fs'; import path from 'path'; import babel from '@babel/core'; -import traverse from '@babel/traverse'; import glob from 'glob'; import chalk from 'chalk'; @@ -57,7 +56,7 @@ if (failedPackages) { * @returns An object containing linker failures and passed files. */ function testPackage(pkg) { - const entryPointFesmFiles = glob.sync(`fesm2015/**/*.js`, {cwd: pkg.pkgPath}); + const entryPointFesmFiles = glob.sync(`+(fesm2015|fesm2020)/**/*.mjs`, {cwd: pkg.pkgPath}); const passedFiles = []; const failures = []; @@ -76,17 +75,19 @@ function testPackage(pkg) { ast: true, filename: diskFilePath, filenameRelative: debugFileName, - plugins: [linkerPlugin] + plugins: [linkerPlugin], }); // Naively check if there are any Angular declarations left that haven't been linked. - traverse(ast, { - Identifier: (astPath) => { + babel.traverse(ast, { + Identifier: astPath => { if (astPath.node.name.startsWith('ɵɵngDeclare')) { throw astPath.buildCodeFrameError( - 'Found Angular declaration that has not been linked.', Error); + 'Found Angular declaration that has not been linked.', + Error, + ); } - } + }, }); passedFiles.push(debugFileName); @@ -95,5 +96,5 @@ function testPackage(pkg) { } } - return {passedFiles, failures} + return {passedFiles, failures}; } diff --git a/integration/ng-add/BUILD.bazel b/integration/ng-add/BUILD.bazel index 0a3f0d8f3d5f..438a493a0c4f 100644 --- a/integration/ng-add/BUILD.bazel +++ b/integration/ng-add/BUILD.bazel @@ -23,12 +23,10 @@ node_integration_test( "yarn test", ], npm_packages = npmPackageMappings, + setup_chromium = True, tags = [ - # Chromium cannot run in Sandbox. For this test, sandbox is disabled. - # Additionally, we need to disable RBE as this test relies on internet - # access for installing the NPM packages. - "no-sandbox", - "no-remote-exec", + # This test relies on `yarn` so there needs to be internet access. + "requires-network", ], ) @@ -41,21 +39,14 @@ node_integration_test( # See: https://github.com/yarnpkg/yarn/issues/2165. # TODO(devversion): determine if a solution/workaround could live in the test runner. "yarn install --cache-folder .yarn_cache_folder/", - "node --version", - "yarn node --version", "yarn ng add @angular/material", "yarn test", ], + node_repository = "node12_host", npm_packages = npmPackageMappings, + setup_chromium = True, tags = [ - # Chromium cannot run in Sandbox. For this test, sandbox is disabled. - # Additionally, we need to disable RBE as this test relies on internet - # access for installing the NPM packages. - "no-sandbox", - "no-remote-exec", + # This test relies on `yarn` so there needs to be internet access. + "requires-network", ], - tool_mappings = { - "@node12_host//:yarn_bin": "yarn", - "@node12_host//:node_bin": "node", - }, ) diff --git a/integration/ng-add/angular.json b/integration/ng-add/angular.json index 44806f56181e..274bde61e36b 100644 --- a/integration/ng-add/angular.json +++ b/integration/ng-add/angular.json @@ -26,13 +26,8 @@ "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.scss" - ], + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], "scripts": [] }, "configurations": { @@ -94,13 +89,8 @@ "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.scss" - ], + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], "scripts": [], "watch": false } diff --git a/integration/ng-add/karma.conf.js b/integration/ng-add/karma.conf.js index 6b6fc49b63ef..6f9087422760 100644 --- a/integration/ng-add/karma.conf.js +++ b/integration/ng-add/karma.conf.js @@ -1,11 +1,6 @@ // Karma configuration file, see link for more information // https://karma-runner.github.io/1.0/config/configuration-file.html -// This code runs within Bazel where the environment does not have access to -// the system Chrome browser. To workaround this we use Puppeteer to provide -// a local version of Chromium that can run within Bazel. -process.env.CHROME_BIN = require('puppeteer').executablePath(); - module.exports = function (config) { config.set({ basePath: '', @@ -34,12 +29,20 @@ module.exports = function (config) { subdir: '.', reporters: [{type: 'html'}, {type: 'text-summary'}], }, + customLaunchers: { + ChromeHeadlessNoSandbox: { + base: 'ChromeHeadless', + flags: ['--no-sandbox'], + }, + }, reporters: ['progress', 'kjhtml'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, - browsers: ['ChromeHeadless'], + // Chrome cannot run with sandbox enabled as this test already runs within + // the Bazel sandbox environment and the sandboxes would conflict otherwise. + browsers: ['ChromeHeadlessNoSandbox'], singleRun: false, restartOnFileChange: true, }); diff --git a/integration/ng-add/package.json b/integration/ng-add/package.json index 3d3fbf5e4a6f..c7b7d3288b5b 100644 --- a/integration/ng-add/package.json +++ b/integration/ng-add/package.json @@ -37,7 +37,6 @@ "karma-coverage": "~2.0.3", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "~1.7.0", - "puppeteer": "^10.4.0", "typescript": "file:../../node_modules/typescript" } } diff --git a/integration/ng-add/src/test.ts b/integration/ng-add/src/test.ts index 6d27e660d668..bea748d09c75 100644 --- a/integration/ng-add/src/test.ts +++ b/integration/ng-add/src/test.ts @@ -19,9 +19,7 @@ declare const require: { }; // First, initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, -}); +getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); // Then we find all the tests. const context = require.context('./', true, /\.spec\.ts$/); diff --git a/integration/ng-add/tsconfig.app.json b/integration/ng-add/tsconfig.app.json index 82d91dc4a4de..ff396d4ce2d8 100644 --- a/integration/ng-add/tsconfig.app.json +++ b/integration/ng-add/tsconfig.app.json @@ -5,11 +5,6 @@ "outDir": "./out-tsc/app", "types": [] }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] + "files": ["src/main.ts", "src/polyfills.ts"], + "include": ["src/**/*.d.ts"] } diff --git a/integration/ng-add/tsconfig.json b/integration/ng-add/tsconfig.json index 9d4bd329a745..9664ff00d13c 100644 --- a/integration/ng-add/tsconfig.json +++ b/integration/ng-add/tsconfig.json @@ -18,10 +18,7 @@ "importHelpers": true, "target": "es2017", "module": "es2020", - "lib": [ - "es2018", - "dom" - ] + "lib": ["es2018", "dom"] }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, diff --git a/integration/ng-add/tsconfig.spec.json b/integration/ng-add/tsconfig.spec.json index 092345b02e80..669344f8d2b7 100644 --- a/integration/ng-add/tsconfig.spec.json +++ b/integration/ng-add/tsconfig.spec.json @@ -3,16 +3,8 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] + "types": ["jasmine"] }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] + "files": ["src/test.ts", "src/polyfills.ts"], + "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] } diff --git a/integration/ng-add/yarn.lock b/integration/ng-add/yarn.lock index 3048a67b3b8c..363cb2eb4d5b 100644 --- a/integration/ng-add/yarn.lock +++ b/integration/ng-add/yarn.lock @@ -2,126 +2,125 @@ # yarn lockfile v1 -"@ampproject/remapping@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.1.tgz#1398e73e567c2a7992df6554c15bb94a89b68ba2" - integrity sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA== +"@ampproject/remapping@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.2.tgz#a7ebbadb71517dd63298420868f27d98fe230a0a" + integrity sha512-SncaVxs+E3EdoA9xJgHfWPxZfowAgeIsd71VpqCKP6KNKm6s7zSqqvUc70UpKUFsrV3dAmy6qxHoIj5NG+3DiA== dependencies: "@jridgewell/resolve-uri" "1.0.0" sourcemap-codec "1.4.8" -"@angular-devkit/architect@0.1300.0-next.7": - version "0.1300.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1300.0-next.7.tgz#b5f6e845ee2b484d5b57bc36bd7b581f46b66832" - integrity sha512-IqtGVsMjcGTgPlYcrWP5PQlc9Y9ESUn0WsIpNHgKUcQa+isimCALNn4KVW8MOhGWeaRw+vrnoN6fMAUQz063xA== +"@angular-devkit/architect@0.1301.0": + version "0.1301.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1301.0.tgz#7e76a319aac76a1457f9214da5c19f84f9ce4b3d" + integrity sha512-XKjdCx4RFRT8Czl0UN9MUXkMzOq/T2l2K1NgnRv15KqiRKtX3rftedEE7vqCw525S1Xzv8sl+AxXac6Dd2gw6w== dependencies: - "@angular-devkit/core" "13.0.0-next.7" + "@angular-devkit/core" "13.1.0" rxjs "6.6.7" "@angular-devkit/build-angular@file:../../node_modules/@angular-devkit/build-angular": - version "13.0.0-next.7" - dependencies: - "@ampproject/remapping" "1.0.1" - "@angular-devkit/architect" "0.1300.0-next.7" - "@angular-devkit/build-webpack" "0.1300.0-next.7" - "@angular-devkit/core" "13.0.0-next.7" - "@babel/core" "7.15.5" - "@babel/generator" "7.15.4" - "@babel/helper-annotate-as-pure" "7.15.4" - "@babel/plugin-proposal-async-generator-functions" "7.15.4" - "@babel/plugin-transform-async-to-generator" "7.14.5" - "@babel/plugin-transform-runtime" "7.15.0" - "@babel/preset-env" "7.15.6" - "@babel/runtime" "7.15.4" - "@babel/template" "7.15.4" - "@discoveryjs/json-ext" "0.5.5" - "@jsdevtools/coverage-istanbul-loader" "3.0.5" - "@ngtools/webpack" "13.0.0-next.7" + version "13.1.0" + dependencies: + "@ampproject/remapping" "1.0.2" + "@angular-devkit/architect" "0.1301.0" + "@angular-devkit/build-webpack" "0.1301.0" + "@angular-devkit/core" "13.1.0" + "@babel/core" "7.16.0" + "@babel/generator" "7.16.0" + "@babel/helper-annotate-as-pure" "7.16.0" + "@babel/plugin-proposal-async-generator-functions" "7.16.4" + "@babel/plugin-transform-async-to-generator" "7.16.0" + "@babel/plugin-transform-runtime" "7.16.4" + "@babel/preset-env" "7.16.4" + "@babel/runtime" "7.16.3" + "@babel/template" "7.16.0" + "@discoveryjs/json-ext" "0.5.6" + "@ngtools/webpack" "13.1.0" ansi-colors "4.1.1" - babel-loader "8.2.2" + babel-loader "8.2.3" + babel-plugin-istanbul "6.1.1" browserslist "^4.9.1" cacache "15.3.0" - caniuse-lite "^1.0.30001032" circular-dependency-plugin "5.2.2" - copy-webpack-plugin "9.0.1" - core-js "3.18.1" - critters "0.0.10" - css-loader "6.3.0" - esbuild-wasm "0.13.3" - find-cache-dir "3.3.2" + copy-webpack-plugin "10.0.0" + core-js "3.19.3" + critters "0.0.15" + css-loader "6.5.1" + esbuild-wasm "0.14.2" glob "7.2.0" https-proxy-agent "5.0.0" - inquirer "8.1.5" + inquirer "8.2.0" + jsonc-parser "3.0.0" karma-source-map-support "1.4.0" - less "4.1.1" - less-loader "10.0.1" - license-webpack-plugin "2.3.21" - loader-utils "2.0.0" - mini-css-extract-plugin "2.3.0" + less "4.1.2" + less-loader "10.2.0" + license-webpack-plugin "4.0.0" + loader-utils "3.2.0" + mini-css-extract-plugin "2.4.5" minimatch "3.0.4" - open "8.2.1" + open "8.4.0" ora "5.4.1" parse5-html-rewriting-stream "6.0.1" piscina "3.1.0" - postcss "8.3.8" + postcss "8.4.4" postcss-import "14.0.2" - postcss-loader "6.1.1" + postcss-loader "6.2.1" postcss-preset-env "6.7.0" regenerator-runtime "0.13.9" resolve-url-loader "4.0.0" rxjs "6.6.7" - sass "1.42.1" - sass-loader "12.1.0" + sass "1.44.0" + sass-loader "12.4.0" semver "7.3.5" source-map-loader "3.0.0" - source-map-support "0.5.20" + source-map-support "0.5.21" stylus "0.55.0" - stylus-loader "6.1.0" - terser "5.9.0" + stylus-loader "6.2.0" + terser "5.10.0" text-table "0.2.0" tree-kill "1.2.2" tslib "2.3.1" - webpack "5.55.1" - webpack-dev-middleware "5.2.1" - webpack-dev-server "4.3.0" + webpack "5.65.0" + webpack-dev-middleware "5.2.2" + webpack-dev-server "4.6.0" webpack-merge "5.8.0" webpack-subresource-integrity "5.0.0" optionalDependencies: - esbuild "0.13.3" + esbuild "0.14.2" -"@angular-devkit/build-webpack@0.1300.0-next.7": - version "0.1300.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1300.0-next.7.tgz#a28e616385dc67b8dcf4cb016ed9f2db3288ded0" - integrity sha512-SgXjfupXcMW0PbTdMvFXrFDNDloPSZ7LAwLadJob5D1Co6Rr7Nzo9uOER31lKA5jbS52ZkhylWINTSgk6YMTJg== +"@angular-devkit/build-webpack@0.1301.0": + version "0.1301.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1301.0.tgz#b96fa1fa713114e0ae08868b55b3026c15234f16" + integrity sha512-a5yKigmQHi5K4qj0Dkd8j7c6FqU236siAo6DQaRjZ4sFVWnk8ZHKfHf8Bmymth85vNLp98cu2XHhOA19wLxqgw== dependencies: - "@angular-devkit/architect" "0.1300.0-next.7" + "@angular-devkit/architect" "0.1301.0" rxjs "6.6.7" -"@angular-devkit/core@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.0.0-next.7.tgz#0a76419dd62827db2fe0af955348fe3f8fba8270" - integrity sha512-UQhdiE4whWiYQTSIHvRvLTAZEG1VOAPNAX4wU9vh3l1VsF9a8ilRExeo9h8pEHaSj6fXpDinM3axhE7M9FA8DQ== +"@angular-devkit/core@13.1.0": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.1.0.tgz#a5455551f16ddf2285b3415dbe4719d54c92a923" + integrity sha512-/blrRk0y53TAaRj6yC+3JQeEPsq4bta5HcRqFWCgLH8m3auoPtQWuvFTpVHE2mOA5dXDRQAOQRWeIi8kE5C//g== dependencies: - ajv "8.6.3" + ajv "8.8.2" ajv-formats "2.1.1" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/schematics@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.0.0-next.7.tgz#c53dd063946add9c2bcd66e886b7865fb9a11677" - integrity sha512-OGQdXJPnmISJFP91KV/y8I5PMtpuXu+26ZLYcVsjhMHY682wqRWUqWUVZRQbeY2K3ky96w3jqQmQKAW2iuRTTA== +"@angular-devkit/schematics@13.1.0": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.1.0.tgz#dc7e5f43cbcfd2bd3fe514ddd373128fca1af735" + integrity sha512-kGA2HKMSvfAi3WxJAVlm0ms2E/NWzwMXxI8IoslCrY0+ziGAppIiiNJqaKauL5y5TMzeW8sYuHeNcWtbT4nwAw== dependencies: - "@angular-devkit/core" "13.0.0-next.7" + "@angular-devkit/core" "13.1.0" jsonc-parser "3.0.0" magic-string "0.25.7" ora "5.4.1" rxjs "6.6.7" "@angular/animations@file:../../node_modules/@angular/animations": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" @@ -133,35 +132,35 @@ parse5 "^5.0.0" "@angular/cli@file:../../node_modules/@angular/cli": - version "13.0.0-next.7" + version "13.1.0" dependencies: - "@angular-devkit/architect" "0.1300.0-next.7" - "@angular-devkit/core" "13.0.0-next.7" - "@angular-devkit/schematics" "13.0.0-next.7" - "@schematics/angular" "13.0.0-next.7" + "@angular-devkit/architect" "0.1301.0" + "@angular-devkit/core" "13.1.0" + "@angular-devkit/schematics" "13.1.0" + "@schematics/angular" "13.1.0" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" - debug "4.3.2" + debug "4.3.3" ini "2.0.0" - inquirer "8.1.5" + inquirer "8.2.0" jsonc-parser "3.0.0" npm-package-arg "8.1.5" npm-pick-manifest "6.1.1" - open "8.2.1" + open "8.4.0" ora "5.4.1" - pacote "11.3.5" + pacote "12.0.2" resolve "1.20.0" semver "7.3.5" symbol-observable "4.0.0" uuid "8.3.2" "@angular/common@file:../../node_modules/@angular/common": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/compiler-cli@file:../../node_modules/@angular/compiler-cli": - version "13.0.0-next.15" + version "13.1.0" dependencies: "@babel/core" "^7.8.6" canonical-path "1.0.0" @@ -176,17 +175,17 @@ yargs "^17.2.1" "@angular/compiler@file:../../node_modules/@angular/compiler": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/core@file:../../node_modules/@angular/core": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/forms@file:../../node_modules/@angular/forms": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" @@ -196,17 +195,17 @@ tslib "^2.3.0" "@angular/platform-browser-dynamic@file:../../node_modules/@angular/platform-browser-dynamic": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/platform-browser@file:../../node_modules/@angular/platform-browser": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/router@file:../../node_modules/@angular/router": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" @@ -222,25 +221,58 @@ dependencies: "@babel/highlight" "^7.14.5" +"@babel/code-frame@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" + integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== + dependencies: + "@babel/highlight" "^7.16.0" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== -"@babel/core@7.15.5": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" +"@babel/compat-data@^7.16.0", "@babel/compat-data@^7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" + integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== + +"@babel/core@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" + integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-compilation-targets" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.0" + "@babel/helpers" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.12.3": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c" + integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helpers" "^7.16.5" + "@babel/parser" "^7.16.5" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -269,12 +301,12 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== +"@babel/generator@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" + integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" jsesc "^2.5.1" source-map "^0.5.0" @@ -287,20 +319,36 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@7.15.4", "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": +"@babel/generator@^7.16.0", "@babel/generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.5.tgz#26e1192eb8f78e0a3acaf3eede3c6fc96d22bedf" + integrity sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA== + dependencies: + "@babel/types" "^7.16.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@7.16.0", "@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" + integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-annotate-as-pure@^7.14.5": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== dependencies: "@babel/types" "^7.15.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz#a8429d064dce8207194b8bf05a70a9ea828746af" + integrity sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA== dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-explode-assignable-expression" "^7.16.0" + "@babel/types" "^7.16.0" "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": version "7.15.4" @@ -312,17 +360,28 @@ browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== +"@babel/helper-compilation-targets@^7.16.0", "@babel/helper-compilation-targets@^7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" + integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/compat-data" "^7.16.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz#5d1bcd096792c1ebec6249eebc6358eec55d0cad" + integrity sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-member-expression-to-functions" "^7.16.5" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" "@babel/helper-create-regexp-features-plugin@^7.14.5": version "7.14.5" @@ -332,10 +391,18 @@ "@babel/helper-annotate-as-pure" "^7.14.5" regexpu-core "^4.7.1" -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +"@babel/helper-create-regexp-features-plugin@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" + integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" + integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -346,14 +413,21 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== +"@babel/helper-environment-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz#f6a7f38b3c6d8b07c88faea083c46c09ef5451b8" + integrity sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" + +"@babel/helper-explode-assignable-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778" + integrity sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ== + dependencies: + "@babel/types" "^7.16.0" -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": +"@babel/helper-function-name@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== @@ -362,6 +436,15 @@ "@babel/template" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" + integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== + dependencies: + "@babel/helper-get-function-arity" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/types" "^7.16.0" + "@babel/helper-get-function-arity@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" @@ -369,6 +452,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-get-function-arity@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" + integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-hoist-variables@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" @@ -376,6 +466,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-hoist-variables@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" + integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-member-expression-to-functions@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" @@ -383,14 +480,28 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": +"@babel/helper-member-expression-to-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz#1bc9f7e87354e86f8879c67b316cb03d3dc2caab" + integrity sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== dependencies: "@babel/types" "^7.15.4" -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.15.8": +"@babel/helper-module-imports@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" + integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-transforms@^7.15.8": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" integrity sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg== @@ -404,6 +515,20 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.6" +"@babel/helper-module-transforms@^7.16.0", "@babel/helper-module-transforms@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz#530ebf6ea87b500f60840578515adda2af470a29" + integrity sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/helper-optimise-call-expression@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" @@ -411,21 +536,33 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-optimise-call-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" + integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== +"@babel/helper-plugin-utils@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz#afe37a45f39fce44a3d50a7958129ea5b1a5c074" + integrity sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ== + +"@babel/helper-remap-async-to-generator@^7.16.0", "@babel/helper-remap-async-to-generator@^7.16.4", "@babel/helper-remap-async-to-generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz#e706646dc4018942acb4b29f7e185bc246d65ac3" + integrity sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-wrap-function" "^7.16.5" + "@babel/types" "^7.16.0" -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": +"@babel/helper-replace-supers@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== @@ -435,6 +572,17 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-replace-supers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz#96d3988bd0ab0a2d22c88c6198c3d3234ca25326" + integrity sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-member-expression-to-functions" "^7.16.5" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/helper-simple-access@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" @@ -442,12 +590,19 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== +"@babel/helper-simple-access@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" + integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" "@babel/helper-split-export-declaration@^7.15.4": version "7.15.4" @@ -456,6 +611,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-split-export-declaration@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" + integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": version "7.15.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" @@ -466,15 +628,15 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== +"@babel/helper-wrap-function@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz#0158fca6f6d0889c3fee8a6ed6e5e07b9b54e41f" + integrity sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA== dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-function-name" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" "@babel/helpers@^7.15.4": version "7.15.4" @@ -485,6 +647,15 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helpers@^7.16.0", "@babel/helpers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.5.tgz#29a052d4b827846dd76ece16f565b9634c554ebd" + integrity sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw== + dependencies: + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/highlight@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -494,150 +665,179 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.15.8": +"@babel/highlight@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.5": + version "7.16.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.6.tgz#8f194828193e8fa79166f34a4b4e52f3e769a314" + integrity sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ== + +"@babel/parser@^7.15.4", "@babel/parser@^7.15.8": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA== -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" - integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": + version "7.16.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz#2977fca9b212db153c195674e57cfab807733183" + integrity sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" -"@babel/plugin-proposal-async-generator-functions@7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e" - integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2" + integrity sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" -"@babel/plugin-proposal-async-generator-functions@^7.15.4": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz#a3100f785fab4357987c4223ab1b02b599048403" - integrity sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA== +"@babel/plugin-proposal-async-generator-functions@7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz#e606eb6015fec6fa5978c940f315eae4e300b081" + integrity sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" + "@babel/helper-remap-async-to-generator" "^7.16.4" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== +"@babel/plugin-proposal-async-generator-functions@^7.16.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz#fd3bd7e0d98404a3d4cbca15a72d533f8c9a2f67" + integrity sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-static-block@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== +"@babel/plugin-proposal-class-properties@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz#3269f44b89122110f6339806e05d43d84106468a" + integrity sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-proposal-class-static-block@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz#df58ab015a7d3b0963aafc8f20792dcd834952a9" + integrity sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +"@babel/plugin-proposal-dynamic-import@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz#2e0d19d5702db4dcb9bc846200ca02f2e9d60e9e" + integrity sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +"@babel/plugin-proposal-export-namespace-from@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz#3b4dd28378d1da2fea33e97b9f25d1c2f5bf1ac9" + integrity sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== +"@babel/plugin-proposal-json-strings@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz#1e726930fca139caab6b084d232a9270d9d16f9c" + integrity sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz#df1f2e4b5a0ec07abf061d2c18e53abc237d3ef5" + integrity sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz#652555bfeeeee2d2104058c6225dc6f75e2d0f07" + integrity sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz#edcb6379b6cf4570be64c45965d8da7a2debf039" + integrity sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== +"@babel/plugin-proposal-object-rest-spread@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz#f30f80dacf7bc1404bf67f99c8d9c01665e830ad" + integrity sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" + "@babel/plugin-transform-parameters" "^7.16.5" -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +"@babel/plugin-proposal-optional-catch-binding@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz#1a5405765cf589a11a33a1fd75b2baef7d48b74e" + integrity sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +"@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz#a5fa61056194d5059366c0009cb9a9e66ed75c1f" + integrity sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +"@babel/plugin-proposal-private-methods@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz#2086f7d78c1b0c712d49b5c3fbc2d1ca21a7ee12" + integrity sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-proposal-private-property-in-object@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== +"@babel/plugin-proposal-private-property-in-object@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz#a42d4b56005db3d405b12841309dbca647e7a21b" + integrity sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz#35fe753afa7c572f322bd068ff3377bde0f37080" + integrity sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== @@ -743,64 +943,82 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +"@babel/plugin-transform-arrow-functions@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz#04c18944dd55397b521d9d7511e791acea7acf2d" + integrity sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-async-to-generator@7.14.5", "@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +"@babel/plugin-transform-async-to-generator@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz#df12637f9630ddfa0ef9d7a11bc414d629d38604" + integrity sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw== dependencies: - "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.16.0" + +"@babel/plugin-transform-async-to-generator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz#89c9b501e65bb14c4579a6ce9563f859de9b34e4" + integrity sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w== + dependencies: + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + +"@babel/plugin-transform-block-scoped-functions@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz#af087494e1c387574260b7ee9b58cdb5a4e9b0b0" + integrity sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-block-scoping@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz#b91f254fe53e210eabe4dd0c40f71c0ed253c5e7" + integrity sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-classes@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz#6acf2ec7adb50fb2f3194dcd2909dbd056dcf216" + integrity sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" + globals "^11.1.0" -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-computed-properties@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz#2af91ebf0cceccfcc701281ada7cfba40a9b322a" + integrity sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-block-scoping@^7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== +"@babel/plugin-transform-destructuring@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz#89ebc87499ac4a81b897af53bb5d3eed261bd568" + integrity sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-classes@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== +"@babel/plugin-transform-dotall-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz#b40739c00b6686820653536d6d143e311de67936" + integrity sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - globals "^11.1.0" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.4.4": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== @@ -808,226 +1026,227 @@ "@babel/helper-create-regexp-features-plugin" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz#2450f2742325412b746d7d005227f5e8973b512a" + integrity sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-exponentiation-operator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz#36e261fa1ab643cfaf30eeab38e00ed1a76081e2" + integrity sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-for-of@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== +"@babel/plugin-transform-for-of@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz#9b544059c6ca11d565457c0ff1f08e13ce225261" + integrity sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-function-name@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz#6896ebb6a5538a75d6a4086a277752f655a7bd15" + integrity sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ== dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-literals@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz#af392b90e3edb2bd6dc316844cbfd6b9e009d320" + integrity sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-member-expression-literals@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz#4bd6ecdc11932361631097b779ca5c7570146dd5" + integrity sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-modules-amd@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz#92c0a3e83f642cb7e75fada9ab497c12c2616527" + integrity sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== +"@babel/plugin-transform-modules-commonjs@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz#4ee03b089536f076b2773196529d27c32b9d7bde" + integrity sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ== dependencies: - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-simple-access" "^7.16.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== +"@babel/plugin-transform-modules-systemjs@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz#07078ba2e3cc94fbdd06836e355c246e98ad006b" + integrity sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA== dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-identifier" "^7.15.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-modules-umd@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz#caa9c53d636fb4e3c99fd35a4c9ba5e5cd7e002e" + integrity sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz#4afd8cdee377ce3568f4e8a9ee67539b69886a3c" + integrity sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-new-target@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz#759ea9d6fbbc20796056a5d89d13977626384416" + integrity sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-object-super@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz#8ccd9a1bcd3e7732ff8aa1702d067d8cd70ce380" + integrity sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" -"@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== +"@babel/plugin-transform-parameters@^7.16.3", "@babel/plugin-transform-parameters@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz#4fc74b18a89638bd90aeec44a11793ecbe031dde" + integrity sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-property-literals@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz#58f1465a7202a2bb2e6b003905212dd7a79abe3f" + integrity sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-regenerator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz#704cc6d8dd3dd4758267621ab7b36375238cef13" + integrity sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-reserved-words@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz#db95e98799675e193dc2b47d3e72a7c0651d0c30" + integrity sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-runtime@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz#d3aa650d11678ca76ce294071fda53d7804183b3" - integrity sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw== +"@babel/plugin-transform-runtime@7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz#f9ba3c7034d429c581e1bd41b4952f3db3c2c7e8" + integrity sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A== dependencies: - "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +"@babel/plugin-transform-shorthand-properties@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz#ccb60b1a23b799f5b9a14d97c5bc81025ffd96d7" + integrity sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-spread@^7.14.6": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz#79d5aa27f68d700449b2da07691dfa32d2f6d468" - integrity sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ== +"@babel/plugin-transform-spread@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz#912b06cff482c233025d3e69cf56d3e8fa166c29" + integrity sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +"@babel/plugin-transform-sticky-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz#593579bb2b5a8adfbe02cb43823275d9098f75f9" + integrity sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +"@babel/plugin-transform-template-literals@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz#343651385fd9923f5aa2275ca352c5d9183e1773" + integrity sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +"@babel/plugin-transform-typeof-symbol@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz#a1d1bf2c71573fe30965d0e4cd6a3291202e20ed" + integrity sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +"@babel/plugin-transform-unicode-escapes@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz#80507c225af49b4f4ee647e2a0ce53d2eeff9e85" + integrity sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +"@babel/plugin-transform-unicode-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz#ac84d6a1def947d71ffb832426aa53b83d7ed49e" + integrity sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/preset-env@7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659" - integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw== +"@babel/preset-env@7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.4.tgz#4f6ec33b2a3fe72d6bfdcdf3859500232563a2e3" + integrity sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" - "@babel/plugin-proposal-async-generator-functions" "^7.15.4" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.15.4" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.15.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.15.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-async-generator-functions" "^7.16.4" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-class-static-block" "^7.16.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.0" + "@babel/plugin-proposal-export-namespace-from" "^7.16.0" + "@babel/plugin-proposal-json-strings" "^7.16.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-object-rest-spread" "^7.16.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-proposal-private-property-in-object" "^7.16.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.0" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -1042,50 +1261,50 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.15.3" - "@babel/plugin-transform-classes" "^7.15.4" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.15.4" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.4" - "@babel/plugin-transform-modules-systemjs" "^7.15.4" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.15.4" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.6" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" + "@babel/plugin-transform-arrow-functions" "^7.16.0" + "@babel/plugin-transform-async-to-generator" "^7.16.0" + "@babel/plugin-transform-block-scoped-functions" "^7.16.0" + "@babel/plugin-transform-block-scoping" "^7.16.0" + "@babel/plugin-transform-classes" "^7.16.0" + "@babel/plugin-transform-computed-properties" "^7.16.0" + "@babel/plugin-transform-destructuring" "^7.16.0" + "@babel/plugin-transform-dotall-regex" "^7.16.0" + "@babel/plugin-transform-duplicate-keys" "^7.16.0" + "@babel/plugin-transform-exponentiation-operator" "^7.16.0" + "@babel/plugin-transform-for-of" "^7.16.0" + "@babel/plugin-transform-function-name" "^7.16.0" + "@babel/plugin-transform-literals" "^7.16.0" + "@babel/plugin-transform-member-expression-literals" "^7.16.0" + "@babel/plugin-transform-modules-amd" "^7.16.0" + "@babel/plugin-transform-modules-commonjs" "^7.16.0" + "@babel/plugin-transform-modules-systemjs" "^7.16.0" + "@babel/plugin-transform-modules-umd" "^7.16.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.0" + "@babel/plugin-transform-new-target" "^7.16.0" + "@babel/plugin-transform-object-super" "^7.16.0" + "@babel/plugin-transform-parameters" "^7.16.3" + "@babel/plugin-transform-property-literals" "^7.16.0" + "@babel/plugin-transform-regenerator" "^7.16.0" + "@babel/plugin-transform-reserved-words" "^7.16.0" + "@babel/plugin-transform-shorthand-properties" "^7.16.0" + "@babel/plugin-transform-spread" "^7.16.0" + "@babel/plugin-transform-sticky-regex" "^7.16.0" + "@babel/plugin-transform-template-literals" "^7.16.0" + "@babel/plugin-transform-typeof-symbol" "^7.16.0" + "@babel/plugin-transform-unicode-escapes" "^7.16.0" + "@babel/plugin-transform-unicode-regex" "^7.16.0" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.0" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.19.1" semver "^6.3.0" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1093,14 +1312,30 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@7.15.4", "@babel/runtime@^7.8.4": +"@babel/runtime@7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" + integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.8.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@7.15.4", "@babel/template@^7.15.4": +"@babel/template@7.16.0", "@babel/template@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" + integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/template@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== @@ -1124,6 +1359,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.16.0", "@babel/traverse@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.5.tgz#d7d400a8229c714a59b87624fc67b0f1fbd4b2b3" + integrity sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.5" + "@babel/types" "^7.16.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.4.4": version "7.15.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" @@ -1132,21 +1383,40 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@babel/types@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + to-fast-properties "^2.0.0" + "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@discoveryjs/json-ext@0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" - integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA== +"@discoveryjs/json-ext@0.5.6": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" + integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== "@gar/promisify@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + "@istanbuljs/schema@^0.1.2": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" @@ -1157,21 +1427,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz#3fdf5798f0b49e90155896f6291df186eac06c83" integrity sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA== -"@jsdevtools/coverage-istanbul-loader@3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz#2a4bc65d0271df8d4435982db4af35d81754ee26" - integrity sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA== - dependencies: - convert-source-map "^1.7.0" - istanbul-lib-instrument "^4.0.3" - loader-utils "^2.0.0" - merge-source-map "^1.1.0" - schema-utils "^2.7.0" - -"@ngtools/webpack@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.0.0-next.7.tgz#260a5f1b50090bf3b6b7391b5480a9b85e771e6a" - integrity sha512-8qgeRMbLlcLpk8qZS2gUtUmPvGRBVOYWlhVc4qBRqccAoDqPgFMCldR8GQupJxeIr1wgk7vWt0g6A0oEuxSIKA== +"@ngtools/webpack@13.1.0": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.1.0.tgz#180a5740ac7f4fcbd91dcb5306daac9a9156f6fc" + integrity sha512-jSsMVN5JuCIiDc5cxANNgLAfdEwfrhLIFFflg68tw81BzF/KGk4aW7kEme/VUckgg/jEbah2W3/0fEoz0EOd7A== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1244,23 +1503,23 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== +"@npmcli/run-script@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" + integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^7.1.0" + node-gyp "^8.2.0" read-package-json-fast "^2.0.1" -"@schematics/angular@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.0.0-next.7.tgz#b8d3ee053d23d49f75db5ea375cdf82df0800695" - integrity sha512-CvpWN4h7Vo4ynu3WfxLr2Ev3ziVl/xKLmyKrUNlXKUK4yl9J2jIyYCs5oA+tXV7BT/sVIJe4+MSRKVUc+XV/+Q== +"@schematics/angular@13.1.0": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.1.0.tgz#648e391838d145f00b72c0186b94a6a391b4b26d" + integrity sha512-KOjAtXQgr5sKENPeHrAtwVY+19scXVO3wfS2SyzwjHtI9vlRUWdtKF1k8z3QaXoHlplKbmWH4StuMxM/8tj9sA== dependencies: - "@angular-devkit/core" "13.0.0-next.7" - "@angular-devkit/schematics" "13.0.0-next.7" + "@angular-devkit/core" "13.1.0" + "@angular-devkit/schematics" "13.1.0" jsonc-parser "3.0.0" "@tootallnate/once@1": @@ -1316,7 +1575,7 @@ resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.9.1.tgz#94c65ee8bf9d24d9e1d84abaed57b6e0da8b49de" integrity sha512-PVpjh8S8lqKFKurWSKdFATlfBHGPzgy0PoDdzQ+rr78jTQ0aacyh9YndzZcAUPxhk4kRujItFFGQdUJ7flHumw== -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== @@ -1341,27 +1600,6 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/webpack-sources@^0.1.5": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.9.tgz#da69b06eb34f6432e6658acb5a6893c55d983920" - integrity sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.6.1" - -"@types/yauzl@^2.9.1": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" - integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA== - dependencies: - "@types/node" "*" - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -1558,7 +1796,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-formats@2.1.1: +ajv-formats@2.1.1, ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== @@ -1570,17 +1808,24 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@8.6.3, ajv@^8.0.0: - version "8.6.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" - integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@8.8.2, ajv@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" + integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1590,6 +1835,16 @@ ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0: + version "8.6.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" + integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -1607,16 +1862,6 @@ ansi-html-community@^0.0.8: resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -1649,18 +1894,25 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: delegates "^1.0.0" - readable-stream "^2.0.6" + readable-stream "^3.6.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" array-flatten@1.1.1: version "1.1.1" @@ -1677,17 +1929,10 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +array-union@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== async@^2.6.2: version "2.6.3" @@ -1696,11 +1941,6 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -1719,20 +1959,10 @@ autoprefixer@^9.6.1: postcss "^7.0.32" postcss-value-parser "^4.1.0" -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-loader@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== +babel-loader@8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" @@ -1746,29 +1976,40 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +babel-plugin-istanbul@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" + integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.0" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92" - integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw== +babel-plugin-polyfill-corejs3@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" + integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.16.2" + "@babel/helper-define-polyfill-provider" "^0.3.0" + core-js-compat "^3.18.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" + integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.0" balanced-match@^1.0.0: version "1.0.2" @@ -1795,13 +2036,6 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -1812,7 +2046,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^4.0.3, bl@^4.1.0: +bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -1849,6 +2083,11 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1864,7 +2103,7 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.3, browserslist@^4.6.4, browserslist@^4.9.1: +browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.6.4, browserslist@^4.9.1: version "4.17.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.4.tgz#72e2508af2a403aec0a49847ef31bd823c57ead4" integrity sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ== @@ -1875,10 +2114,16 @@ browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^ node-releases "^2.0.0" picocolors "^1.0.0" -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +browserslist@^4.17.5, browserslist@^4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + dependencies: + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" buffer-from@^1.0.0: version "1.1.2" @@ -1890,7 +2135,7 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== -buffer@^5.2.1, buffer@^5.5.0: +buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -1950,21 +2195,26 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001265: +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001265: version "1.0.30001265" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3" integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== +caniuse-lite@^1.0.30001286: + version "1.0.30001287" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001287.tgz#5fab6a46ab9e47146d5dd35abfe47beaf8073c71" + integrity sha512-4udbs9bc0hfNrcje++AxBuc6PfLNHwh3PO9kbwnfCQWyqtlzg3py0YgFu8jyRTTo85VAz4U+VLxSlID09vNtWA== + canonical-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1987,7 +2237,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== @@ -2002,11 +2252,6 @@ chardet@^0.7.0: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -2067,11 +2312,6 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2096,6 +2336,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + colorette@^2.0.10: version "2.0.16" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" @@ -2106,13 +2351,6 @@ colors@^1.4.0: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2168,7 +2406,7 @@ connect@^3.7.0: parseurl "~1.3.3" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -2214,36 +2452,30 @@ copy-anything@^2.0.1: dependencies: is-what "^3.12.0" -copy-webpack-plugin@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz#b71d21991599f61a4ee00ba79087b8ba279bbb59" - integrity sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw== +copy-webpack-plugin@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.0.0.tgz#f25a29ca2398a6ca31183b62e76adacb53b981d1" + integrity sha512-tuCVuFMBbRsb7IH0q1CUb50/Skv+7a6c7DJ+xi4fAbOzNLTYVMUTPnf8uGvKPtmqTvzYBrfEFo7YgP4TsUWmtg== dependencies: - fast-glob "^3.2.5" - glob-parent "^6.0.0" - globby "^11.0.3" + fast-glob "^3.2.7" + glob-parent "^6.0.1" + globby "^12.0.2" normalize-path "^3.0.0" - p-limit "^3.1.0" - schema-utils "^3.0.0" + schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.16.0, core-js-compat@^3.16.2: - version "3.18.3" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.3.tgz#e0e7e87abc55efb547e7fa19169e45fa9df27a67" - integrity sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw== +core-js-compat@^3.18.0, core-js-compat@^3.19.1: + version "3.20.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.0.tgz#fd704640c5a213816b6d10ec0192756111e2c9d1" + integrity sha512-relrah5h+sslXssTTOkvqcC/6RURifB0W5yhYBdBkaPYa5/2KBMiog3XiD+s3TwEHWxInWVv4Jx2/Lw0vng+IQ== dependencies: - browserslist "^4.17.3" + browserslist "^4.19.1" semver "7.0.0" -core-js@3.18.1: - version "3.18.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.1.tgz#289d4be2ce0085d40fc1244c0b1a54c00454622f" - integrity sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-js@3.19.3: + version "3.19.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.3.tgz#6df8142a996337503019ff3235a7022d7cdf4559" + integrity sha512-LeLBMgEGSsG7giquSzvgBrTS7V5UL6ks3eQlUSbN8dJStlLFiRzUm5iqsRyzUB8carhfKjkJ2vzKqE6z1Vga9g== core-util-is@~1.0.0: version "1.0.3" @@ -2269,15 +2501,16 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -critters@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.10.tgz#edd0e962fc5af6c4adb6dbf1a71bae2d3f917000" - integrity sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw== +critters@0.0.15: + version "0.0.15" + resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.15.tgz#b1c8d18fd18e614471733d7d749deac0f386b738" + integrity sha512-AE7hkXb3eZUbEvS1SKZa+OU4o2kUOXtzVeE/2E/mjU/0mV1wpBT1HfUCWVRS4zwvkBNJ0AQYsVjAoFm+kIhfdw== dependencies: chalk "^4.1.0" - css "^3.0.0" + css-select "^4.1.3" parse5 "^6.0.1" parse5-htmlparser2-tree-adapter "^6.0.1" + postcss "^8.3.7" pretty-bytes "^5.3.0" cross-spawn@^7.0.3: @@ -2304,10 +2537,10 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.3.0.tgz#334d3500ff0a0c14cfbd4b0670088dbb5b5c1530" - integrity sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg== +css-loader@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.5.1.tgz#0c43d4fbe0d97f699c91e9818cb585759091d1b1" + integrity sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ== dependencies: icss-utils "^5.1.0" postcss "^8.2.15" @@ -2325,6 +2558,22 @@ css-prefers-color-scheme@^3.1.1: dependencies: postcss "^7.0.5" +css-select@^4.1.3: + version "4.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.0.tgz#ab28276d3afb00cc05e818bd33eb030f14f57895" + integrity sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + css@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" @@ -2354,13 +2603,6 @@ custom-event@~1.0.0: resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - date-format@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" @@ -2378,17 +2620,17 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.2, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@~4.3.1: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@~4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" -debug@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" @@ -2423,7 +2665,7 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -default-gateway@^6.0.0: +default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== @@ -2463,11 +2705,6 @@ del@^6.0.0: rimraf "^3.0.2" slash "^3.0.0" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -2493,11 +2730,6 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -devtools-protocol@0.0.901419: - version "0.0.901419" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.901419.tgz#79b5459c48fe7e1c5563c02bd72f8fec3e0cebcd" - integrity sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ== - di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" @@ -2535,18 +2767,40 @@ dom-serialize@^2.2.1: resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== + dependencies: + domelementtype "^2.2.0" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" ee-first@1.1.1: version "1.1.1" @@ -2558,6 +2812,11 @@ electron-to-chromium@^1.3.867: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.867.tgz#7cb484db4b57c28da0b65c51e434c3a1f3f9aa0d" integrity sha512-WbTXOv7hsLhjJyl7jBfDkioaY++iVVZomZ4dU6TMe/SzucV6mUAs2VZn/AehBwuZMiNEQDaPuTGn22YK5o+aDw== +electron-to-chromium@^1.4.17: + version "1.4.20" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.20.tgz#8fbf9677ccac19b4249c0a6204e0943d9d66ce30" + integrity sha512-N7ZVNrdzX8NE90OXEFBMsBf3fp8P/vVDUER3WCUZjzC7OkNTXHVoF6W9qVhq8+dA8tGnbDajzUpj2ISNVVyj+Q== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2580,13 +2839,6 @@ encoding@^0.1.12: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - engine.io-parser@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.3.tgz#83d3a17acfd4226f19e721bb22a1ee8f7662d2f6" @@ -2620,6 +2872,11 @@ ent@~2.2.0: resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -2649,112 +2906,118 @@ es-module-lexer@^0.9.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -esbuild-android-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.3.tgz#ef734c76eeff42e8c53acdffe901da090164a890" - integrity sha512-jc9E8vGTHkzb0Vwl74H8liANV9BWsqtzLHaKvcsRgf1M+aVCBSF0gUheduAKfDsbDMT0judeMLhwBP34EUesTA== - -esbuild-darwin-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.3.tgz#35f29376b7451add79f0640980683ef923365385" - integrity sha512-8bG3Zq+ZNuLlIJebOO2+weI7P2LVf33sOzaUfHj8MuJ+1Ixe4KtQxfYp7qhFnP6xP2ToJaYHxGUfLeiUCEz9hw== - -esbuild-darwin-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.3.tgz#530a1326e7d18d62c9a54b6dce70f2b77ed50eec" - integrity sha512-5E81eImYtTgh8pY7Gq4WQHhWkR/LvYadUXmuYeZBiP+3ADZJZcG60UFceZrjqNPaFOWKr/xmh4aNocwagEubcA== - -esbuild-freebsd-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.3.tgz#ce2896ac362e06eb82ca5dec06b2568901eb5afc" - integrity sha512-ou+f91KkTGexi8HvF/BdtsITL6plbciQfZGys7QX6/QEwyE96PmL5KnU6ZQwoU7E99Ts6Sc9bUDq8HXJubKtBA== - -esbuild-freebsd-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.3.tgz#a20454f99e060bea4e465d131556a9f0533f403f" - integrity sha512-F1zV7nySjHswJuvIgjkiG5liZ63MeazDGXGKViTCeegjZ71sAhOChcaGhKcu6vq9+vqZxlfEi1fmXlx6Pc3coQ== - -esbuild-linux-32@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.3.tgz#ad56f18208ecf007cd9ab16cd39626ca0312b8ee" - integrity sha512-mHHc2v6uLrHH4zaaq5RB/5IWzgimEJ1HGldzf1qtGI513KZWfH0HRRQ8p1di4notJgBn7tDzWQ1f34ZHy69viQ== - -esbuild-linux-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.3.tgz#be1eabadf68d153897ed887678f7496d3949810f" - integrity sha512-FJ1De2O89mrOuqtaEXu41qIYJU6R41F+OA6vheNwcAQcX8fu0aiA13FJeLABq29BYJuTVgRj3cyC8q+tz19/dQ== - -esbuild-linux-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.3.tgz#329348bb4a19cfb5e9046cc5d97ba5017d8f74ad" - integrity sha512-Cauhr45KSo+wRUojs+1qfycQqQCAXTOvsWvkZ6xmEMAXLAm+f8RQGDQeP8CAf8Yeelnegcn6UNdvzdzLHhWDFg== - -esbuild-linux-arm@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.3.tgz#b3b3167c9d5d3038894fbc75b194a4fbe93eaf09" - integrity sha512-9BJNRtLwBh3OP22cln9g3AJdbAQUcjRHqA4BScx9k4RZpGqPokFr548zpeplxWhcwrIjT8qPebwH9CrRVy8Bsw== - -esbuild-linux-mips64le@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.3.tgz#ea1687f28ea2c85399ecc2fe23a48ab343b7b35d" - integrity sha512-YVzJUGCncuuLm2boYyVeuMFsak4ZAhdiBwi0xNDZCC8sy+tS6Boe2mzcrD2uubv5JKAUOrpN186S1DtU4WgBgw== - -esbuild-linux-ppc64le@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.3.tgz#a462cf42eae3d7fc29a9f277679f5adee70afa67" - integrity sha512-GU6CqqKtJEoyxC2QWHiJtmuOz9wc/jMv8ZloK2WwiGY5yMvAmM3PI103Dj7xcjebNTHBqITTUw/aigY1wx5A3w== - -esbuild-openbsd-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.3.tgz#0cb15bd86d20eb19cb548b530f1a533197532cf9" - integrity sha512-HVpkgpn4BQt4BPDAjTOpeMub6mzNWw6Y3gaLQJrpbO24pws6ZwYkY24OI3/Uo3LDCbH6856MM81JxECt92OWjA== - -esbuild-sunos-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.3.tgz#53a941241f881010969cc8f1acb1ada49c4cd3c2" - integrity sha512-XncBVOtnEfUbPV4CaiFBxh38ychnBfwCxuTm9iAqcHzIwkmeNRN5qMzDyfE1jyfJje+Bbt6AvIfz6SdYt8/UEQ== - -esbuild-wasm@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.13.3.tgz#241b261b5cc0d0bf18e205b7d625675f31be78d8" - integrity sha512-kkTvRzVeE8U2oewyeEyrMJAv53zsYLNF4xLsXWZt8yvV9+HEM0TlaLAszvRBdHpqoxDSliLJIvU1TatQn33gXQ== - -esbuild-windows-32@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.3.tgz#265dc0d0cdb5374685a851c584857055e12865a4" - integrity sha512-ZlgDz7d1nk8wQACi+z8IDzNZVUlN9iprAme+1YSTsfFDlkyI8jeaGWPk9EQFNY7rJzsLVYm6eZ2mhPioc7uT5A== - -esbuild-windows-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.3.tgz#ae710c0629ec8c39c5ef1f69e86ed5592bb4128f" - integrity sha512-YX7KvRez3TR+GudlQm9tND/ssj2FsF9vb8ZWzAoZOLxpPzE3y+3SFJNrfDzzQKPzJ0Pnh9KBP4gsaMwJjKHDhw== - -esbuild-windows-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.3.tgz#a236199a26b1205573dcb571f966189326a4c953" - integrity sha512-nP7H0Y2a6OJd3Qi1Q8sehhyP4x4JoXK4S5y6FzH2vgaJgiyEurzFxjUufGdMaw+RxtxiwD/uRndUgwaZ2JD8lg== - -esbuild@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.3.tgz#cc9fc347fc81ff6440cdd1fdb9fe65c02eddcc97" - integrity sha512-98xovMLKnyhv3gcReUuAEi5Ig1rK6SIgvsJuBIcfwzqGSEHsV8UJjMlmkhHoHMf9XZybMpE9Zax8AA8f7i2hlQ== +esbuild-android-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.2.tgz#256b7cf2f9d382a2a92a4ff4e13187587c9b7c6a" + integrity sha512-hEixaKMN3XXCkoe+0WcexO4CcBVU5DCSUT+7P8JZiWZCbAjSkc9b6Yz2X5DSfQmRCtI/cQRU6TfMYrMQ5NBfdw== + +esbuild-darwin-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.2.tgz#891a59ce6bc3aded0265f982469b3eb9571b92f8" + integrity sha512-Uq8t0cbJQkxkQdbUfOl2wZqZ/AtLZjvJulR1HHnc96UgyzG9YlCLSDMiqjM+NANEy7/zzvwKJsy3iNC9wwqLJA== + +esbuild-darwin-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.2.tgz#ab834fffa9c612b2901ca1e77e4695d4d8aa63a2" + integrity sha512-619MSa17sr7YCIrUj88KzQu2ESA4jKYtIYfLU/smX6qNgxQt3Y/gzM4s6sgJ4fPQzirvmXgcHv1ZNQAs/Xh48A== + +esbuild-freebsd-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.2.tgz#f7fc87a83f02de27d5a48472571efa1a432ae86d" + integrity sha512-aP6FE/ZsChZpUV6F3HE3x1Pz0paoYXycJ7oLt06g0G9dhJKknPawXCqQg/WMyD+ldCEZfo7F1kavenPdIT/SGQ== + +esbuild-freebsd-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.2.tgz#bc8758420431106751f3180293cac0b5bc4ce2ee" + integrity sha512-LSm98WTb1QIhyS83+Po0KTpZNdd2XpVpI9ua5rLWqKWbKeNRFwOsjeiuwBaRNc+O32s9oC2ZMefETxHBV6VNkQ== + +esbuild-linux-32@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.2.tgz#0cc2dcd816d6d66e255bc7aeac139b1d04246812" + integrity sha512-8VxnNEyeUbiGflTKcuVc5JEPTqXfsx2O6ABwUbfS1Hp26lYPRPC7pKQK5Dxa0MBejGc50jy7YZae3EGQUQ8EkQ== + +esbuild-linux-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.2.tgz#c790f739aa75b15c153609ea3457153fbe4db93d" + integrity sha512-4bzMS2dNxOJoFIiHId4w+tqQzdnsch71JJV1qZnbnErSFWcR9lRgpSqWnTTFtv6XM+MvltRzSXC5wQ7AEBY6Hg== + +esbuild-linux-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.2.tgz#96858a1f89ad30274dec780d0e3dd8b5691c6b0c" + integrity sha512-RlIVp0RwJrdtasDF1vTFueLYZ8WuFzxoQ1OoRFZOTyJHCGCNgh7xJIC34gd7B7+RT0CzLBB4LcM5n0LS+hIoww== + +esbuild-linux-arm@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.2.tgz#03e193225afa9b1215d2ec6efe8edf0c03eeed6f" + integrity sha512-PaylahvMHhH8YMfJPMKEqi64qA0Su+d4FNfHKvlKes/2dUe4QxgbwXT9oLVgy8iJdcFMrO7By4R8fS8S0p8aVQ== + +esbuild-linux-mips64le@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.2.tgz#972f218d2cb5125237376d40ad60a6e5356a782c" + integrity sha512-Fdwrq2roFnO5oetIiUQQueZ3+5soCxBSJswg3MvYaXDomj47BN6oAWMZgLrFh1oVrtWrxSDLCJBenYdbm2s+qQ== + +esbuild-linux-ppc64le@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.2.tgz#20b71622ac09142b0e523f633af0829def7fed6b" + integrity sha512-vxptskw8JfCDD9QqpRO0XnsM1osuWeRjPaXX1TwdveLogYsbdFtcuiuK/4FxGiNMUr1ojtnCS2rMPbY8puc5NA== + +esbuild-netbsd-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.2.tgz#dbd6a25117902ef67aa11d8779dd9c6bca7fbe82" + integrity sha512-I8+LzYK5iSNpspS9eCV9sW67Rj8FgMHimGri4mKiGAmN0pNfx+hFX146rYtzGtewuxKtTsPywWteHx+hPRLDsw== + +esbuild-openbsd-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.2.tgz#3c5f199eed459b2f88865548394c0b77383d9ca4" + integrity sha512-120HgMe9elidWUvM2E6mMf0csrGwx8sYDqUIJugyMy1oHm+/nT08bTAVXuwYG/rkMIqsEO9AlMxuYnwR6En/3Q== + +esbuild-sunos-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.2.tgz#900a681db6b76c6a7f60fc28d2bfe5b11698641c" + integrity sha512-Q3xcf9Uyfra9UuCFxoLixVvdigo0daZaKJ97TL2KNA4bxRUPK18wwGUk3AxvgDQZpRmg82w9PnkaNYo7a+24ow== + +esbuild-wasm@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.2.tgz#49c59c610a0be48becec87a7d9019d143468f2f9" + integrity sha512-Rs8NjWoo1UdsVjhxT2o6kLCX9Sh65pyd3/h4XeJ3jjQNM6NgL+/CSowuJgvOIjDAXMLXpc6fdGnyZQDil9IUJA== + +esbuild-windows-32@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.2.tgz#61e0ba5bd95b277a55d2b997ac4c04dfe2559220" + integrity sha512-TW7O49tPsrq+N1sW8mb3m24j/iDGa4xzAZH4wHWwoIzgtZAYPKC0hpIhufRRG/LA30bdMChO9pjJZ5mtcybtBQ== + +esbuild-windows-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.2.tgz#6ab59ef721ff75c682a1c8ae0570dabb637abddb" + integrity sha512-Rym6ViMNmi1E2QuQMWy0AFAfdY0wGwZD73BnzlsQBX5hZBuy/L+Speh7ucUZ16gwsrMM9v86icZUDrSN/lNBKg== + +esbuild-windows-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.2.tgz#aca2a4f83d2f0d1592ad4be832ed0045fc888cda" + integrity sha512-ZrLbhr0vX5Em/P1faMnHucjVVWPS+m3tktAtz93WkMZLmbRJevhiW1y4CbulBd2z0MEdXZ6emDa1zFHq5O5bSA== + +esbuild@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.2.tgz#9c1e1a652549cc33e44885eea42ea2cc6267edc2" + integrity sha512-l076A6o/PIgcyM24s0dWmDI/b8RQf41uWoJu9I0M71CtW/YSw5T5NUeXxs5lo2tFQD+O4CW4nBHJXx3OY5NpXg== optionalDependencies: - esbuild-android-arm64 "0.13.3" - esbuild-darwin-64 "0.13.3" - esbuild-darwin-arm64 "0.13.3" - esbuild-freebsd-64 "0.13.3" - esbuild-freebsd-arm64 "0.13.3" - esbuild-linux-32 "0.13.3" - esbuild-linux-64 "0.13.3" - esbuild-linux-arm "0.13.3" - esbuild-linux-arm64 "0.13.3" - esbuild-linux-mips64le "0.13.3" - esbuild-linux-ppc64le "0.13.3" - esbuild-openbsd-64 "0.13.3" - esbuild-sunos-64 "0.13.3" - esbuild-windows-32 "0.13.3" - esbuild-windows-64 "0.13.3" - esbuild-windows-arm64 "0.13.3" + esbuild-android-arm64 "0.14.2" + esbuild-darwin-64 "0.14.2" + esbuild-darwin-arm64 "0.14.2" + esbuild-freebsd-64 "0.14.2" + esbuild-freebsd-arm64 "0.14.2" + esbuild-linux-32 "0.14.2" + esbuild-linux-64 "0.14.2" + esbuild-linux-arm "0.14.2" + esbuild-linux-arm64 "0.14.2" + esbuild-linux-mips64le "0.14.2" + esbuild-linux-ppc64le "0.14.2" + esbuild-netbsd-64 "0.14.2" + esbuild-openbsd-64 "0.14.2" + esbuild-sunos-64 "0.14.2" + esbuild-windows-32 "0.14.2" + esbuild-windows-64 "0.14.2" + esbuild-windows-arm64 "0.14.2" escalade@^3.1.1: version "3.1.1" @@ -2779,6 +3042,11 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -2872,7 +3140,7 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -2886,33 +3154,12 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.5: +fast-glob@^3.1.1, fast-glob@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== @@ -2942,13 +3189,6 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -2976,7 +3216,7 @@ finalhandler@1.1.2, finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@3.3.2, find-cache-dir@^3.3.1: +find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -2985,7 +3225,7 @@ find-cache-dir@3.3.2, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -3008,20 +3248,6 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -3032,11 +3258,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -3073,19 +3294,20 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= +gauge@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" + integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== dependencies: - aproba "^1.0.3" + ansi-regex "^5.0.1" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" + has-unicode "^2.0.1" signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -3106,25 +3328,16 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3132,7 +3345,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.0: +glob-parent@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -3161,7 +3374,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.1, globby@^11.0.3: +globby@^11.0.1: version "11.0.4" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== @@ -3173,7 +3386,19 @@ globby@^11.0.1, globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +globby@^12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-12.0.2.tgz#53788b2adf235602ed4cabfea5c70a1139e1ab11" + integrity sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ== + dependencies: + array-union "^3.0.1" + dir-glob "^3.0.1" + fast-glob "^3.2.7" + ignore "^5.1.8" + merge2 "^1.4.1" + slash "^4.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -3183,19 +3408,6 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3218,7 +3430,7 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.0: +has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -3347,15 +3559,6 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -3400,10 +3603,10 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== +ignore-walk@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3" + integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw== dependencies: minimatch "^3.0.4" @@ -3412,11 +3615,21 @@ ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ignore@^5.1.8: + version "5.1.9" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" + integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -3468,10 +3681,10 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -inquirer@8.1.5: - version "8.1.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.5.tgz#2dc5159203c826d654915b5fe6990fd17f54a150" - integrity sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg== +inquirer@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" + integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.1" @@ -3488,27 +3701,12 @@ inquirer@8.1.5: strip-ansi "^6.0.0" through "^2.3.6" -internal-ip@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" - integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== - dependencies: - default-gateway "^6.0.0" - ipaddr.js "^1.9.1" - is-ip "^3.1.0" - p-event "^4.2.0" - -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.1, ipaddr.js@^1.9.1: +ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -3562,18 +3760,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -3591,13 +3777,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -3643,11 +3822,6 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -3685,17 +3859,17 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - istanbul-lib-coverage@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz#36786d4d82aad2ea5911007e255e2da6b5f80d86" integrity sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g== -istanbul-lib-instrument@^4.0.1, istanbul-lib-instrument@^4.0.3: +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -3705,6 +3879,17 @@ istanbul-lib-instrument@^4.0.1, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" +istanbul-lib-instrument@^5.0.4: + version "5.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -3750,10 +3935,13 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" jsesc@^2.5.1: version "2.5.2" @@ -3785,16 +3973,6 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -3826,16 +4004,6 @@ jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - karma-chrome-launcher@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" @@ -3913,21 +4081,26 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -less-loader@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.0.1.tgz#c05aaba68d00400820275f21c2ad87cb9fa9923f" - integrity sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA== +klona@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== + +less-loader@10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.2.0.tgz#97286d8797dc3dc05b1d16b0ecec5f968bdd4e32" + integrity sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg== dependencies: klona "^2.0.4" -less@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/less/-/less-4.1.1.tgz#15bf253a9939791dc690888c3ff424f3e6c7edba" - integrity sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw== +less@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" + integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== dependencies: copy-anything "^2.0.1" parse-node-version "^1.0.1" - tslib "^1.10.0" + tslib "^2.3.0" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" @@ -3937,13 +4110,12 @@ less@4.1.1: needle "^2.5.2" source-map "~0.6.0" -license-webpack-plugin@2.3.21: - version "2.3.21" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.21.tgz#152f5e82d5f51f8bab78905731f2b8042aa5691b" - integrity sha512-rVaYU9TddZN3ao8M/0PrRSCdTp2EW6VQymlgsuScld1vef0Ou7fALx3ePe83KLP3xAEDcPK5fkqUVqGBnbz1zQ== +license-webpack-plugin@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.0.tgz#11cf6ac96559f4a987cf55d3d2a33f295ae8f13b" + integrity sha512-b9iMrROrw2fTOJBZ57h0xJfT5/1Cxg4ucYbtpWoukv4Awb2TFPfDDFVHNM8w6SYQpVfB13a5tQJxgGamqwrsyw== dependencies: - "@types/webpack-sources" "^0.1.5" - webpack-sources "^1.2.0" + webpack-sources "^3.0.0" lines-and-columns@^1.1.6: version "1.1.6" @@ -3955,14 +4127,10 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@2.0.0, loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" +loader-utils@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== loader-utils@^1.4.0: version "1.4.0" @@ -3973,6 +4141,15 @@ loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -4038,7 +4215,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-fetch-happen@^9.0.1: +make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -4077,19 +4254,12 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -4112,7 +4282,7 @@ mime-db@1.50.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.33" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== @@ -4134,12 +4304,12 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.3.0.tgz#87515f185533752944d753ac7216fc876779dafe" - integrity sha512-uzWaOwC+gJrnKbr23J1ZRWx/Wd9W9Ce1mKPlsBGBV/r8zG7/G7oKMxGmxbI65pVGbae2cR7CUx9Ulk0HQt8BfQ== +mini-css-extract-plugin@2.4.5: + version "2.4.5" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.5.tgz#191d6c170226037212c483af1180b4010b7b9eef" + integrity sha512-oEIhRucyn1JbT/1tU2BhnwO6ft1jjH1iCX9Gc59WFMg0n5773rQU0oyQ0zzeYFFuBfONaRbQJyGoPtuNseMxjA== dependencies: - schema-utils "^3.1.0" + schema-utils "^4.0.0" minimalistic-assert@^1.0.0: version "1.0.1" @@ -4220,7 +4390,7 @@ minizlib@^2.0.0, minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mkdirp@^0.5.1, mkdirp@^0.5.5: +mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -4270,16 +4440,16 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanocolors@^0.2.2: - version "0.2.13" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" - integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA== - -nanoid@^3.1.25, nanoid@^3.1.28: +nanoid@^3.1.28: version "3.1.29" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.29.tgz#214fb2d7a33e1a5bef4757b779dfaeb6a4e5aeb4" integrity sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg== +nanoid@^3.1.30: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== + needle@^2.5.2: version "2.9.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" @@ -4312,11 +4482,6 @@ node-addon-api@^3.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -4327,20 +4492,20 @@ node-gyp-build@^4.2.2: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== +node-gyp@^8.2.0: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== dependencies: env-paths "^2.2.0" glob "^7.1.4" - graceful-fs "^4.2.3" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" + npmlog "^6.0.0" rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" + semver "^7.3.5" + tar "^6.1.2" which "^2.0.2" node-releases@^2.0.0: @@ -4348,6 +4513,11 @@ node-releases@^2.0.0: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.0.tgz#67dc74903100a7deb044037b8a2e5f453bb05400" integrity sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA== +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" @@ -4393,13 +4563,13 @@ npm-package-arg@8.1.5, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-packa semver "^7.3.4" validate-npm-package-name "^3.0.0" -npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== +npm-packlist@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" + integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ== dependencies: glob "^7.1.6" - ignore-walk "^3.0.3" + ignore-walk "^4.0.1" npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" @@ -4432,32 +4602,29 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +npmlog@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.0.tgz#ba9ef39413c3d936ea91553db7be49c34ad0520c" + integrity sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.0" + set-blocking "^2.0.0" + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" + boolbase "^1.0.0" num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.1.0: +object-assign@^4: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -4502,7 +4669,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -4516,10 +4683,10 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" - integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== +open@8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -4554,18 +4721,6 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -p-event@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== - dependencies: - p-timeout "^3.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -4602,27 +4757,20 @@ p-retry@^4.5.0: "@types/retry" "^0.12.0" retry "^0.13.1" -p-timeout@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pacote@11.3.5: - version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== +pacote@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.2.tgz#14ae30a81fe62ec4fc18c071150e6763e932527c" + integrity sha512-Ar3mhjcxhMzk+OVZ8pbnXdb0l8+pimvlsqBGRNkble2NVgyqOGE3yrCGi/lAYq7E7NRDMz89R1Wx5HIMCGgeYg== dependencies: "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" + "@npmcli/run-script" "^2.0.0" cacache "^15.0.5" chownr "^2.0.0" fs-minipass "^2.1.0" @@ -4630,7 +4778,7 @@ pacote@11.3.5: minipass "^3.1.3" mkdirp "^1.0.3" npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" + npm-packlist "^3.0.0" npm-pick-manifest "^6.0.0" npm-registry-fetch "^11.0.0" promise-retry "^2.0.1" @@ -4733,16 +4881,6 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - picocolors@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" @@ -4779,7 +4917,7 @@ piscina@3.1.0: optionalDependencies: nice-napi "^1.0.2" -pkg-dir@4.2.0, pkg-dir@^4.1.0: +pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -4953,13 +5091,13 @@ postcss-lab-function@^2.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-loader@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.1.1.tgz#58dd0a3accd9bc87cc52eff75244db578d11301a" - integrity sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug== +postcss-loader@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: cosmiconfig "^7.0.0" - klona "^2.0.4" + klona "^2.0.5" semver "^7.3.5" postcss-logical@^3.0.0: @@ -5138,14 +5276,14 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@8.3.8: - version "8.3.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.8.tgz#9ebe2a127396b4b4570ae9f7770e7fb83db2bac1" - integrity sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA== +postcss@8.4.4: + version "8.4.4" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.4.tgz#d53d4ec6a75fd62557a66bb41978bf47ff0c2869" + integrity sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q== dependencies: - nanocolors "^0.2.2" - nanoid "^3.1.25" - source-map-js "^0.6.2" + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^1.0.1" postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: version "7.0.39" @@ -5164,6 +5302,15 @@ postcss@^8.2.15: picocolors "^0.2.1" source-map-js "^0.6.2" +postcss@^8.3.7: + version "8.4.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" + integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== + dependencies: + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^1.0.1" + pretty-bytes@^5.3.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -5174,11 +5321,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31" - integrity sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -5200,57 +5342,21 @@ proxy-addr@~2.0.5: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-from-env@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-10.4.0.tgz#a6465ff97fda0576c4ac29601406f67e6fea3dc7" - integrity sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w== - dependencies: - debug "4.3.1" - devtools-protocol "0.0.901419" - extract-zip "2.0.1" - https-proxy-agent "5.0.0" - node-fetch "2.6.1" - pkg-dir "4.2.0" - progress "2.0.1" - proxy-from-env "1.1.0" - rimraf "3.0.2" - tar-fs "2.0.0" - unbzip2-stream "1.3.3" - ws "7.4.6" - qjobs@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" @@ -5261,11 +5367,6 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -5313,7 +5414,7 @@ read-package-json-fast@^2.0.1: json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -readable-stream@^2.0.1, readable-stream@^2.0.6: +readable-stream@^2.0.1: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5326,7 +5427,7 @@ readable-stream@^2.0.1, readable-stream@^2.0.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: +readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5408,32 +5509,6 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5454,6 +5529,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url-loader@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" @@ -5501,7 +5581,7 @@ rfdc@^1.1.4: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -5537,37 +5617,38 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.1.0.tgz#b73324622231009da6fba61ab76013256380d201" - integrity sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg== +sass-loader@12.4.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.4.0.tgz#260b0d51a8a373bb8e88efc11f6ba5583fea0bcf" + integrity sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg== dependencies: klona "^2.0.4" neo-async "^2.6.2" -sass@1.42.1: - version "1.42.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.42.1.tgz#5ab17bebc1cb1881ad2e0c9a932c66ad64e441e2" - integrity sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg== +sass@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.44.0.tgz#619aa0a2275c097f9af5e6b8fe8a95e3056430fb" + integrity sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw== dependencies: chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -schema-utils@^2.6.5, schema-utils@^2.7.0: +schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -5576,7 +5657,7 @@ schema-utils@^2.6.5, schema-utils@^2.7.0: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== @@ -5585,6 +5666,16 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -5602,7 +5693,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -5668,7 +5759,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -5712,6 +5803,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + smart-buffer@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -5772,16 +5868,16 @@ socks@^2.6.1: ip "^1.1.5" smart-buffer "^4.1.0" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - source-map-js@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== +source-map-js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" + integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== + source-map-loader@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049" @@ -5799,7 +5895,15 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@0.5.20, source-map-support@^0.5.5, source-map-support@~0.5.20: +source-map-support@0.5.21: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.5, source-map-support@~0.5.20: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== @@ -5807,7 +5911,7 @@ source-map-support@0.5.20, source-map-support@^0.5.5, source-map-support@~0.5.20 buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -5850,20 +5954,10 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" @@ -5886,24 +5980,7 @@ streamroller@^2.2.4: debug "^4.1.1" fs-extra "^8.1.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^4.1.0, string-width@^4.2.0: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -5926,20 +6003,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -5959,12 +6022,12 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -stylus-loader@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-6.1.0.tgz#7a3a719a27cb2b9617896d6da28fda94c3ed9762" - integrity sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw== +stylus-loader@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-6.2.0.tgz#0ba499e744e7fb9d9b3977784c8639728a7ced8c" + integrity sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg== dependencies: - fast-glob "^3.2.5" + fast-glob "^3.2.7" klona "^2.0.4" normalize-path "^3.0.0" @@ -6013,28 +6076,7 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar-fs@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.0.0.tgz#677700fc0c8b337a78bee3623fdc235f21d7afad" - integrity sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA== - dependencies: - chownr "^1.1.1" - mkdirp "^0.5.1" - pump "^3.0.0" - tar-stream "^2.0.0" - -tar-stream@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^6.0.2, tar@^6.1.0: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -6058,7 +6100,16 @@ terser-webpack-plugin@^5.1.3: source-map "^0.6.1" terser "^5.7.2" -terser@5.9.0, terser@^5.7.2: +terser@5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +terser@^5.7.2: version "5.9.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== @@ -6067,12 +6118,21 @@ terser@5.9.0, terser@^5.7.2: source-map "~0.7.2" source-map-support "~0.5.20" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-table@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through@^2.3.6, through@^2.3.8: +through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -6113,14 +6173,6 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tree-kill@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -6131,7 +6183,7 @@ tslib@2.3.1, tslib@^2.0.0, tslib@^2.3.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tslib@^1.10.0, tslib@^1.9.0: +tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -6141,18 +6193,6 @@ tslib@~2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -6172,21 +6212,13 @@ typed-assert@^1.0.8: integrity sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g== "typescript@file:../../node_modules/typescript": - version "4.4.3" + version "4.5.2" ua-parser-js@^0.7.28: version "0.7.28" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== -unbzip2-stream@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" - integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -6269,7 +6301,7 @@ uuid@8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -6286,24 +6318,15 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= -watchpack@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" - integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -6322,7 +6345,18 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webpack-dev-middleware@5.2.1, webpack-dev-middleware@^5.2.1: +webpack-dev-middleware@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.2.tgz#eb5193faa5479ca1086b9f7bed68b89c731bff62" + integrity sha512-DjZyYrsHhkikAFNvSNKrpnziXukU1EChFAh9j4LAm6ndPLPW8cN0KhM7T+RAiOqsQ6ABfQ8hoKIs9IWMTjov+w== + dependencies: + colorette "^2.0.10" + memfs "^3.2.2" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-middleware@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz#97c948144349177856a3d2d9c612cc3fee180cf1" integrity sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ== @@ -6333,28 +6367,28 @@ webpack-dev-middleware@5.2.1, webpack-dev-middleware@^5.2.1: range-parser "^1.2.1" schema-utils "^3.1.0" -webpack-dev-server@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.3.0.tgz#732f5869d4c06e222b599daee64bc268f5edea24" - integrity sha512-kuqP9Xn4OzcKe7f0rJwd4p8xqiD+4b5Lzu8tJa8OttRL3E1Q8gI2KmUtouJTgDswjjvHOHlZDV8LTQfSY5qZSA== +webpack-dev-server@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz#e8648601c440172d9b6f248d28db98bed335315a" + integrity sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg== dependencies: ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^3.5.1" + chokidar "^3.5.2" 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" graceful-fs "^4.2.6" html-entities "^2.3.2" http-proxy-middleware "^2.0.0" - internal-ip "^6.2.0" ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" portfinder "^1.0.28" - schema-utils "^3.1.0" + schema-utils "^4.0.0" selfsigned "^1.10.11" serve-index "^1.9.1" sockjs "^0.3.21" @@ -6372,18 +6406,10 @@ webpack-merge@5.8.0: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^1.2.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" - integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== +webpack-sources@^3.0.0, webpack-sources@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260" + integrity sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw== webpack-subresource-integrity@5.0.0: version "5.0.0" @@ -6392,10 +6418,10 @@ webpack-subresource-integrity@5.0.0: dependencies: typed-assert "^1.0.8" -webpack@5.55.1: - version "5.55.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.55.1.tgz#426ebe54c15fa57f7b242590f65fd182382b5998" - integrity sha512-EYp9lwaOOAs+AA/KviNZ7bQiITHm4bXQvyTPewD2+f5YGjv6sfiClm40yeX5FgBMxh5bxcB6LryiFoP09B97Ug== +webpack@5.65.0: + version "5.65.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be" + integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50" @@ -6419,8 +6445,8 @@ webpack@5.55.1: schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.2.0" - webpack-sources "^3.2.0" + watchpack "^2.3.1" + webpack-sources "^3.2.2" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -6450,12 +6476,12 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^1.0.2 || 2" + string-width "^1.0.2 || 2 || 3 || 4" wildcard@^2.0.0: version "2.0.0" @@ -6476,16 +6502,16 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -ws@7.4.6, ws@~7.4.2: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - ws@^8.1.0: version "8.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== +ws@~7.4.2: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -6532,14 +6558,6 @@ yargs@^17.2.1: y18n "^5.0.5" yargs-parser "^20.2.2" -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" diff --git a/integration/ng-update-v13/BUILD.bazel b/integration/ng-update-v13/BUILD.bazel index 5d2626399ecf..41a2a1943e8f 100644 --- a/integration/ng-update-v13/BUILD.bazel +++ b/integration/ng-update-v13/BUILD.bazel @@ -23,11 +23,8 @@ node_integration_test( ], npm_packages = npmPackageMappings, tags = [ - # Chromium cannot run in Sandbox. For this test, sandbox is disabled. - # Additionally, we need to disable RBE as this test relies on internet - # access for installing the NPM packages. - "no-sandbox", - "no-remote-exec", + # This test relies on `yarn` so there needs to be internet access. + "requires-network", ], ) @@ -42,16 +39,10 @@ node_integration_test( "yarn install --cache-folder .yarn_cache_folder/", "yarn test", ], + node_repository = "node12_host", npm_packages = npmPackageMappings, tags = [ - # Chromium cannot run in Sandbox. For this test, sandbox is disabled. - # Additionally, we need to disable RBE as this test relies on internet - # access for installing the NPM packages. - "no-sandbox", - "no-remote-exec", + # This test relies on `yarn` so there needs to be internet access. + "requires-network", ], - tool_mappings = { - "@node12_host//:yarn_bin": "yarn", - "@node12_host//:node_bin": "node", - }, ) diff --git a/integration/ng-update-v13/angular.json b/integration/ng-update-v13/angular.json index c7201b0c8111..be048fa46824 100644 --- a/integration/ng-update-v13/angular.json +++ b/integration/ng-update-v13/angular.json @@ -26,13 +26,8 @@ "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.scss" - ], + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], "scripts": [] }, "configurations": { @@ -94,13 +89,8 @@ "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.scss" - ], + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], "scripts": [] } } diff --git a/integration/ng-update-v13/package.json b/integration/ng-update-v13/package.json index 8e811a1f185d..66937af40bc0 100644 --- a/integration/ng-update-v13/package.json +++ b/integration/ng-update-v13/package.json @@ -30,6 +30,7 @@ "@angular/compiler-cli": "file:../../node_modules/@angular/compiler-cli", "@types/jasmine": "~3.9.0", "@types/node": "^12.11.1", + "diff": "^5.0.0", "glob": "^7.2.0", "jasmine-core": "~3.9.0", "karma": "~6.3.0", diff --git a/integration/ng-update-v13/src/test.ts b/integration/ng-update-v13/src/test.ts index 6d27e660d668..bea748d09c75 100644 --- a/integration/ng-update-v13/src/test.ts +++ b/integration/ng-update-v13/src/test.ts @@ -19,9 +19,7 @@ declare const require: { }; // First, initialize the Angular testing environment. -getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, -}); +getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); // Then we find all the tests. const context = require.context('./', true, /\.spec\.ts$/); diff --git a/integration/ng-update-v13/tsconfig.app.json b/integration/ng-update-v13/tsconfig.app.json index 82d91dc4a4de..ff396d4ce2d8 100644 --- a/integration/ng-update-v13/tsconfig.app.json +++ b/integration/ng-update-v13/tsconfig.app.json @@ -5,11 +5,6 @@ "outDir": "./out-tsc/app", "types": [] }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] + "files": ["src/main.ts", "src/polyfills.ts"], + "include": ["src/**/*.d.ts"] } diff --git a/integration/ng-update-v13/tsconfig.json b/integration/ng-update-v13/tsconfig.json index 9d4bd329a745..9664ff00d13c 100644 --- a/integration/ng-update-v13/tsconfig.json +++ b/integration/ng-update-v13/tsconfig.json @@ -18,10 +18,7 @@ "importHelpers": true, "target": "es2017", "module": "es2020", - "lib": [ - "es2018", - "dom" - ] + "lib": ["es2018", "dom"] }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, diff --git a/integration/ng-update-v13/tsconfig.spec.json b/integration/ng-update-v13/tsconfig.spec.json index 092345b02e80..669344f8d2b7 100644 --- a/integration/ng-update-v13/tsconfig.spec.json +++ b/integration/ng-update-v13/tsconfig.spec.json @@ -3,16 +3,8 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] + "types": ["jasmine"] }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] + "files": ["src/test.ts", "src/polyfills.ts"], + "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] } diff --git a/integration/ng-update-v13/yarn.lock b/integration/ng-update-v13/yarn.lock index 3bc8a23abb6e..cdf8595832ba 100644 --- a/integration/ng-update-v13/yarn.lock +++ b/integration/ng-update-v13/yarn.lock @@ -2,126 +2,125 @@ # yarn lockfile v1 -"@ampproject/remapping@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.1.tgz#1398e73e567c2a7992df6554c15bb94a89b68ba2" - integrity sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA== +"@ampproject/remapping@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.2.tgz#a7ebbadb71517dd63298420868f27d98fe230a0a" + integrity sha512-SncaVxs+E3EdoA9xJgHfWPxZfowAgeIsd71VpqCKP6KNKm6s7zSqqvUc70UpKUFsrV3dAmy6qxHoIj5NG+3DiA== dependencies: "@jridgewell/resolve-uri" "1.0.0" sourcemap-codec "1.4.8" -"@angular-devkit/architect@0.1300.0-next.7": - version "0.1300.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1300.0-next.7.tgz#b5f6e845ee2b484d5b57bc36bd7b581f46b66832" - integrity sha512-IqtGVsMjcGTgPlYcrWP5PQlc9Y9ESUn0WsIpNHgKUcQa+isimCALNn4KVW8MOhGWeaRw+vrnoN6fMAUQz063xA== +"@angular-devkit/architect@0.1301.0": + version "0.1301.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1301.0.tgz#7e76a319aac76a1457f9214da5c19f84f9ce4b3d" + integrity sha512-XKjdCx4RFRT8Czl0UN9MUXkMzOq/T2l2K1NgnRv15KqiRKtX3rftedEE7vqCw525S1Xzv8sl+AxXac6Dd2gw6w== dependencies: - "@angular-devkit/core" "13.0.0-next.7" + "@angular-devkit/core" "13.1.0" rxjs "6.6.7" "@angular-devkit/build-angular@file:../../node_modules/@angular-devkit/build-angular": - version "13.0.0-next.7" - dependencies: - "@ampproject/remapping" "1.0.1" - "@angular-devkit/architect" "0.1300.0-next.7" - "@angular-devkit/build-webpack" "0.1300.0-next.7" - "@angular-devkit/core" "13.0.0-next.7" - "@babel/core" "7.15.5" - "@babel/generator" "7.15.4" - "@babel/helper-annotate-as-pure" "7.15.4" - "@babel/plugin-proposal-async-generator-functions" "7.15.4" - "@babel/plugin-transform-async-to-generator" "7.14.5" - "@babel/plugin-transform-runtime" "7.15.0" - "@babel/preset-env" "7.15.6" - "@babel/runtime" "7.15.4" - "@babel/template" "7.15.4" - "@discoveryjs/json-ext" "0.5.5" - "@jsdevtools/coverage-istanbul-loader" "3.0.5" - "@ngtools/webpack" "13.0.0-next.7" + version "13.1.0" + dependencies: + "@ampproject/remapping" "1.0.2" + "@angular-devkit/architect" "0.1301.0" + "@angular-devkit/build-webpack" "0.1301.0" + "@angular-devkit/core" "13.1.0" + "@babel/core" "7.16.0" + "@babel/generator" "7.16.0" + "@babel/helper-annotate-as-pure" "7.16.0" + "@babel/plugin-proposal-async-generator-functions" "7.16.4" + "@babel/plugin-transform-async-to-generator" "7.16.0" + "@babel/plugin-transform-runtime" "7.16.4" + "@babel/preset-env" "7.16.4" + "@babel/runtime" "7.16.3" + "@babel/template" "7.16.0" + "@discoveryjs/json-ext" "0.5.6" + "@ngtools/webpack" "13.1.0" ansi-colors "4.1.1" - babel-loader "8.2.2" + babel-loader "8.2.3" + babel-plugin-istanbul "6.1.1" browserslist "^4.9.1" cacache "15.3.0" - caniuse-lite "^1.0.30001032" circular-dependency-plugin "5.2.2" - copy-webpack-plugin "9.0.1" - core-js "3.18.1" - critters "0.0.10" - css-loader "6.3.0" - esbuild-wasm "0.13.3" - find-cache-dir "3.3.2" + copy-webpack-plugin "10.0.0" + core-js "3.19.3" + critters "0.0.15" + css-loader "6.5.1" + esbuild-wasm "0.14.2" glob "7.2.0" https-proxy-agent "5.0.0" - inquirer "8.1.5" + inquirer "8.2.0" + jsonc-parser "3.0.0" karma-source-map-support "1.4.0" - less "4.1.1" - less-loader "10.0.1" - license-webpack-plugin "2.3.21" - loader-utils "2.0.0" - mini-css-extract-plugin "2.3.0" + less "4.1.2" + less-loader "10.2.0" + license-webpack-plugin "4.0.0" + loader-utils "3.2.0" + mini-css-extract-plugin "2.4.5" minimatch "3.0.4" - open "8.2.1" + open "8.4.0" ora "5.4.1" parse5-html-rewriting-stream "6.0.1" piscina "3.1.0" - postcss "8.3.8" + postcss "8.4.4" postcss-import "14.0.2" - postcss-loader "6.1.1" + postcss-loader "6.2.1" postcss-preset-env "6.7.0" regenerator-runtime "0.13.9" resolve-url-loader "4.0.0" rxjs "6.6.7" - sass "1.42.1" - sass-loader "12.1.0" + sass "1.44.0" + sass-loader "12.4.0" semver "7.3.5" source-map-loader "3.0.0" - source-map-support "0.5.20" + source-map-support "0.5.21" stylus "0.55.0" - stylus-loader "6.1.0" - terser "5.9.0" + stylus-loader "6.2.0" + terser "5.10.0" text-table "0.2.0" tree-kill "1.2.2" tslib "2.3.1" - webpack "5.55.1" - webpack-dev-middleware "5.2.1" - webpack-dev-server "4.3.0" + webpack "5.65.0" + webpack-dev-middleware "5.2.2" + webpack-dev-server "4.6.0" webpack-merge "5.8.0" webpack-subresource-integrity "5.0.0" optionalDependencies: - esbuild "0.13.3" + esbuild "0.14.2" -"@angular-devkit/build-webpack@0.1300.0-next.7": - version "0.1300.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1300.0-next.7.tgz#a28e616385dc67b8dcf4cb016ed9f2db3288ded0" - integrity sha512-SgXjfupXcMW0PbTdMvFXrFDNDloPSZ7LAwLadJob5D1Co6Rr7Nzo9uOER31lKA5jbS52ZkhylWINTSgk6YMTJg== +"@angular-devkit/build-webpack@0.1301.0": + version "0.1301.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1301.0.tgz#b96fa1fa713114e0ae08868b55b3026c15234f16" + integrity sha512-a5yKigmQHi5K4qj0Dkd8j7c6FqU236siAo6DQaRjZ4sFVWnk8ZHKfHf8Bmymth85vNLp98cu2XHhOA19wLxqgw== dependencies: - "@angular-devkit/architect" "0.1300.0-next.7" + "@angular-devkit/architect" "0.1301.0" rxjs "6.6.7" -"@angular-devkit/core@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.0.0-next.7.tgz#0a76419dd62827db2fe0af955348fe3f8fba8270" - integrity sha512-UQhdiE4whWiYQTSIHvRvLTAZEG1VOAPNAX4wU9vh3l1VsF9a8ilRExeo9h8pEHaSj6fXpDinM3axhE7M9FA8DQ== +"@angular-devkit/core@13.1.0": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.1.0.tgz#a5455551f16ddf2285b3415dbe4719d54c92a923" + integrity sha512-/blrRk0y53TAaRj6yC+3JQeEPsq4bta5HcRqFWCgLH8m3auoPtQWuvFTpVHE2mOA5dXDRQAOQRWeIi8kE5C//g== dependencies: - ajv "8.6.3" + ajv "8.8.2" ajv-formats "2.1.1" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/schematics@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.0.0-next.7.tgz#c53dd063946add9c2bcd66e886b7865fb9a11677" - integrity sha512-OGQdXJPnmISJFP91KV/y8I5PMtpuXu+26ZLYcVsjhMHY682wqRWUqWUVZRQbeY2K3ky96w3jqQmQKAW2iuRTTA== +"@angular-devkit/schematics@13.1.0": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.1.0.tgz#dc7e5f43cbcfd2bd3fe514ddd373128fca1af735" + integrity sha512-kGA2HKMSvfAi3WxJAVlm0ms2E/NWzwMXxI8IoslCrY0+ziGAppIiiNJqaKauL5y5TMzeW8sYuHeNcWtbT4nwAw== dependencies: - "@angular-devkit/core" "13.0.0-next.7" + "@angular-devkit/core" "13.1.0" jsonc-parser "3.0.0" magic-string "0.25.7" ora "5.4.1" rxjs "6.6.7" "@angular/animations@file:../../node_modules/@angular/animations": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" @@ -133,35 +132,35 @@ parse5 "^5.0.0" "@angular/cli@file:../../node_modules/@angular/cli": - version "13.0.0-next.7" + version "13.1.0" dependencies: - "@angular-devkit/architect" "0.1300.0-next.7" - "@angular-devkit/core" "13.0.0-next.7" - "@angular-devkit/schematics" "13.0.0-next.7" - "@schematics/angular" "13.0.0-next.7" + "@angular-devkit/architect" "0.1301.0" + "@angular-devkit/core" "13.1.0" + "@angular-devkit/schematics" "13.1.0" + "@schematics/angular" "13.1.0" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" - debug "4.3.2" + debug "4.3.3" ini "2.0.0" - inquirer "8.1.5" + inquirer "8.2.0" jsonc-parser "3.0.0" npm-package-arg "8.1.5" npm-pick-manifest "6.1.1" - open "8.2.1" + open "8.4.0" ora "5.4.1" - pacote "11.3.5" + pacote "12.0.2" resolve "1.20.0" semver "7.3.5" symbol-observable "4.0.0" uuid "8.3.2" "@angular/common@file:../../node_modules/@angular/common": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/compiler-cli@file:../../node_modules/@angular/compiler-cli": - version "13.0.0-next.15" + version "13.1.0" dependencies: "@babel/core" "^7.8.6" canonical-path "1.0.0" @@ -176,17 +175,17 @@ yargs "^17.2.1" "@angular/compiler@file:../../node_modules/@angular/compiler": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/core@file:../../node_modules/@angular/core": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/forms@file:../../node_modules/@angular/forms": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" @@ -196,17 +195,17 @@ tslib "^2.3.0" "@angular/platform-browser-dynamic@file:../../node_modules/@angular/platform-browser-dynamic": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/platform-browser@file:../../node_modules/@angular/platform-browser": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" "@angular/router@file:../../node_modules/@angular/router": - version "13.0.0-next.15" + version "13.1.0" dependencies: tslib "^2.3.0" @@ -222,25 +221,58 @@ dependencies: "@babel/highlight" "^7.14.5" +"@babel/code-frame@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" + integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== + dependencies: + "@babel/highlight" "^7.16.0" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== -"@babel/core@7.15.5": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" +"@babel/compat-data@^7.16.0", "@babel/compat-data@^7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" + integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== + +"@babel/core@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" + integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.0" + "@babel/helper-compilation-targets" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.0" + "@babel/helpers" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.0" + "@babel/types" "^7.16.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/core@^7.12.3": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c" + integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helpers" "^7.16.5" + "@babel/parser" "^7.16.5" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -269,12 +301,12 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== +"@babel/generator@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" + integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" jsesc "^2.5.1" source-map "^0.5.0" @@ -287,20 +319,36 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@7.15.4", "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": +"@babel/generator@^7.16.0", "@babel/generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.5.tgz#26e1192eb8f78e0a3acaf3eede3c6fc96d22bedf" + integrity sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA== + dependencies: + "@babel/types" "^7.16.0" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@7.16.0", "@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" + integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-annotate-as-pure@^7.14.5": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== dependencies: "@babel/types" "^7.15.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz#a8429d064dce8207194b8bf05a70a9ea828746af" + integrity sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA== dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-explode-assignable-expression" "^7.16.0" + "@babel/types" "^7.16.0" "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": version "7.15.4" @@ -312,17 +360,28 @@ browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== +"@babel/helper-compilation-targets@^7.16.0", "@babel/helper-compilation-targets@^7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" + integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/compat-data" "^7.16.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.17.5" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz#5d1bcd096792c1ebec6249eebc6358eec55d0cad" + integrity sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-member-expression-to-functions" "^7.16.5" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" "@babel/helper-create-regexp-features-plugin@^7.14.5": version "7.14.5" @@ -332,10 +391,18 @@ "@babel/helper-annotate-as-pure" "^7.14.5" regexpu-core "^4.7.1" -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +"@babel/helper-create-regexp-features-plugin@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" + integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + regexpu-core "^4.7.1" + +"@babel/helper-define-polyfill-provider@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" + integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -346,14 +413,21 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== +"@babel/helper-environment-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz#f6a7f38b3c6d8b07c88faea083c46c09ef5451b8" + integrity sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" + +"@babel/helper-explode-assignable-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778" + integrity sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ== + dependencies: + "@babel/types" "^7.16.0" -"@babel/helper-function-name@^7.14.5", "@babel/helper-function-name@^7.15.4": +"@babel/helper-function-name@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== @@ -362,6 +436,15 @@ "@babel/template" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-function-name@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" + integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== + dependencies: + "@babel/helper-get-function-arity" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/types" "^7.16.0" + "@babel/helper-get-function-arity@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" @@ -369,6 +452,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-get-function-arity@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" + integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-hoist-variables@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" @@ -376,6 +466,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-hoist-variables@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" + integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-member-expression-to-functions@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" @@ -383,14 +480,28 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": +"@babel/helper-member-expression-to-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz#1bc9f7e87354e86f8879c67b316cb03d3dc2caab" + integrity sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== dependencies: "@babel/types" "^7.15.4" -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.15.8": +"@babel/helper-module-imports@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" + integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-module-transforms@^7.15.8": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" integrity sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg== @@ -404,6 +515,20 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.6" +"@babel/helper-module-transforms@^7.16.0", "@babel/helper-module-transforms@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz#530ebf6ea87b500f60840578515adda2af470a29" + integrity sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/helper-optimise-call-expression@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" @@ -411,21 +536,33 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-optimise-call-expression@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" + integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== -"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== +"@babel/helper-plugin-utils@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz#afe37a45f39fce44a3d50a7958129ea5b1a5c074" + integrity sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ== + +"@babel/helper-remap-async-to-generator@^7.16.0", "@babel/helper-remap-async-to-generator@^7.16.4", "@babel/helper-remap-async-to-generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz#e706646dc4018942acb4b29f7e185bc246d65ac3" + integrity sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-wrap-function" "^7.16.5" + "@babel/types" "^7.16.0" -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": +"@babel/helper-replace-supers@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== @@ -435,6 +572,17 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helper-replace-supers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz#96d3988bd0ab0a2d22c88c6198c3d3234ca25326" + integrity sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-member-expression-to-functions" "^7.16.5" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/helper-simple-access@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" @@ -442,12 +590,19 @@ dependencies: "@babel/types" "^7.15.4" -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== +"@babel/helper-simple-access@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" + integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.0" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" "@babel/helper-split-export-declaration@^7.15.4": version "7.15.4" @@ -456,6 +611,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-split-export-declaration@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" + integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": version "7.15.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" @@ -466,15 +628,15 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== +"@babel/helper-wrap-function@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz#0158fca6f6d0889c3fee8a6ed6e5e07b9b54e41f" + integrity sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA== dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/helper-function-name" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" "@babel/helpers@^7.15.4": version "7.15.4" @@ -485,6 +647,15 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/helpers@^7.16.0", "@babel/helpers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.5.tgz#29a052d4b827846dd76ece16f565b9634c554ebd" + integrity sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw== + dependencies: + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/highlight@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -494,150 +665,179 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.15.8": +"@babel/highlight@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.5": + version "7.16.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.6.tgz#8f194828193e8fa79166f34a4b4e52f3e769a314" + integrity sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ== + +"@babel/parser@^7.15.4", "@babel/parser@^7.15.8": version "7.15.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA== -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" - integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": + version "7.16.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz#2977fca9b212db153c195674e57cfab807733183" + integrity sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" -"@babel/plugin-proposal-async-generator-functions@7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e" - integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2" + integrity sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" -"@babel/plugin-proposal-async-generator-functions@^7.15.4": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz#a3100f785fab4357987c4223ab1b02b599048403" - integrity sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA== +"@babel/plugin-proposal-async-generator-functions@7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz#e606eb6015fec6fa5978c940f315eae4e300b081" + integrity sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" + "@babel/helper-remap-async-to-generator" "^7.16.4" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== +"@babel/plugin-proposal-async-generator-functions@^7.16.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz#fd3bd7e0d98404a3d4cbca15a72d533f8c9a2f67" + integrity sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-static-block@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== +"@babel/plugin-proposal-class-properties@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz#3269f44b89122110f6339806e05d43d84106468a" + integrity sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-proposal-class-static-block@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz#df58ab015a7d3b0963aafc8f20792dcd834952a9" + integrity sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +"@babel/plugin-proposal-dynamic-import@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz#2e0d19d5702db4dcb9bc846200ca02f2e9d60e9e" + integrity sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +"@babel/plugin-proposal-export-namespace-from@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz#3b4dd28378d1da2fea33e97b9f25d1c2f5bf1ac9" + integrity sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== +"@babel/plugin-proposal-json-strings@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz#1e726930fca139caab6b084d232a9270d9d16f9c" + integrity sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz#df1f2e4b5a0ec07abf061d2c18e53abc237d3ef5" + integrity sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz#652555bfeeeee2d2104058c6225dc6f75e2d0f07" + integrity sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz#edcb6379b6cf4570be64c45965d8da7a2debf039" + integrity sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== +"@babel/plugin-proposal-object-rest-spread@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz#f30f80dacf7bc1404bf67f99c8d9c01665e830ad" + integrity sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" + "@babel/plugin-transform-parameters" "^7.16.5" -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +"@babel/plugin-proposal-optional-catch-binding@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz#1a5405765cf589a11a33a1fd75b2baef7d48b74e" + integrity sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +"@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz#a5fa61056194d5059366c0009cb9a9e66ed75c1f" + integrity sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +"@babel/plugin-proposal-private-methods@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz#2086f7d78c1b0c712d49b5c3fbc2d1ca21a7ee12" + integrity sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-proposal-private-property-in-object@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== +"@babel/plugin-proposal-private-property-in-object@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz#a42d4b56005db3d405b12841309dbca647e7a21b" + integrity sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz#35fe753afa7c572f322bd068ff3377bde0f37080" + integrity sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== @@ -743,64 +943,82 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-async-to-generator@7.14.5", "@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-arrow-functions@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz#04c18944dd55397b521d9d7511e791acea7acf2d" + integrity sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-block-scoping@^7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== +"@babel/plugin-transform-async-to-generator@7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz#df12637f9630ddfa0ef9d7a11bc414d629d38604" + integrity sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw== dependencies: + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-remap-async-to-generator" "^7.16.0" + +"@babel/plugin-transform-async-to-generator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz#89c9b501e65bb14c4579a6ce9563f859de9b34e4" + integrity sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w== + dependencies: + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + +"@babel/plugin-transform-block-scoped-functions@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz#af087494e1c387574260b7ee9b58cdb5a4e9b0b0" + integrity sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-block-scoping@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz#b91f254fe53e210eabe4dd0c40f71c0ed253c5e7" + integrity sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-classes@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz#6acf2ec7adb50fb2f3194dcd2909dbd056dcf216" + integrity sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" + globals "^11.1.0" -"@babel/plugin-transform-classes@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== +"@babel/plugin-transform-computed-properties@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz#2af91ebf0cceccfcc701281ada7cfba40a9b322a" + integrity sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - globals "^11.1.0" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +"@babel/plugin-transform-destructuring@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz#89ebc87499ac4a81b897af53bb5d3eed261bd568" + integrity sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== +"@babel/plugin-transform-dotall-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz#b40739c00b6686820653536d6d143e311de67936" + integrity sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.4.4": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== @@ -808,226 +1026,227 @@ "@babel/helper-create-regexp-features-plugin" "^7.14.5" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz#2450f2742325412b746d7d005227f5e8973b512a" + integrity sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-exponentiation-operator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz#36e261fa1ab643cfaf30eeab38e00ed1a76081e2" + integrity sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-for-of@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== +"@babel/plugin-transform-for-of@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz#9b544059c6ca11d565457c0ff1f08e13ce225261" + integrity sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-function-name@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz#6896ebb6a5538a75d6a4086a277752f655a7bd15" + integrity sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ== dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-literals@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz#af392b90e3edb2bd6dc316844cbfd6b9e009d320" + integrity sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-member-expression-literals@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz#4bd6ecdc11932361631097b779ca5c7570146dd5" + integrity sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-modules-amd@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz#92c0a3e83f642cb7e75fada9ab497c12c2616527" + integrity sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== +"@babel/plugin-transform-modules-commonjs@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz#4ee03b089536f076b2773196529d27c32b9d7bde" + integrity sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ== dependencies: - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-simple-access" "^7.16.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== +"@babel/plugin-transform-modules-systemjs@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz#07078ba2e3cc94fbdd06836e355c246e98ad006b" + integrity sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA== dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-identifier" "^7.15.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-modules-umd@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz#caa9c53d636fb4e3c99fd35a4c9ba5e5cd7e002e" + integrity sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz#4afd8cdee377ce3568f4e8a9ee67539b69886a3c" + integrity sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-new-target@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz#759ea9d6fbbc20796056a5d89d13977626384416" + integrity sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-object-super@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz#8ccd9a1bcd3e7732ff8aa1702d067d8cd70ce380" + integrity sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" -"@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== +"@babel/plugin-transform-parameters@^7.16.3", "@babel/plugin-transform-parameters@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz#4fc74b18a89638bd90aeec44a11793ecbe031dde" + integrity sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-property-literals@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz#58f1465a7202a2bb2e6b003905212dd7a79abe3f" + integrity sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-regenerator@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz#704cc6d8dd3dd4758267621ab7b36375238cef13" + integrity sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-reserved-words@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz#db95e98799675e193dc2b47d3e72a7c0651d0c30" + integrity sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-runtime@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz#d3aa650d11678ca76ce294071fda53d7804183b3" - integrity sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw== +"@babel/plugin-transform-runtime@7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz#f9ba3c7034d429c581e1bd41b4952f3db3c2c7e8" + integrity sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A== dependencies: - "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-module-imports" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +"@babel/plugin-transform-shorthand-properties@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz#ccb60b1a23b799f5b9a14d97c5bc81025ffd96d7" + integrity sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-spread@^7.14.6": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz#79d5aa27f68d700449b2da07691dfa32d2f6d468" - integrity sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ== +"@babel/plugin-transform-spread@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz#912b06cff482c233025d3e69cf56d3e8fa166c29" + integrity sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +"@babel/plugin-transform-sticky-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz#593579bb2b5a8adfbe02cb43823275d9098f75f9" + integrity sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +"@babel/plugin-transform-template-literals@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz#343651385fd9923f5aa2275ca352c5d9183e1773" + integrity sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +"@babel/plugin-transform-typeof-symbol@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz#a1d1bf2c71573fe30965d0e4cd6a3291202e20ed" + integrity sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +"@babel/plugin-transform-unicode-escapes@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz#80507c225af49b4f4ee647e2a0ce53d2eeff9e85" + integrity sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +"@babel/plugin-transform-unicode-regex@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz#ac84d6a1def947d71ffb832426aa53b83d7ed49e" + integrity sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/preset-env@7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659" - integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw== +"@babel/preset-env@7.16.4": + version "7.16.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.4.tgz#4f6ec33b2a3fe72d6bfdcdf3859500232563a2e3" + integrity sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" - "@babel/plugin-proposal-async-generator-functions" "^7.15.4" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.15.4" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.15.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.15.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-async-generator-functions" "^7.16.4" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-class-static-block" "^7.16.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.0" + "@babel/plugin-proposal-export-namespace-from" "^7.16.0" + "@babel/plugin-proposal-json-strings" "^7.16.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-object-rest-spread" "^7.16.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-proposal-private-property-in-object" "^7.16.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.0" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -1042,50 +1261,50 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.15.3" - "@babel/plugin-transform-classes" "^7.15.4" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.15.4" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.4" - "@babel/plugin-transform-modules-systemjs" "^7.15.4" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.15.4" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.6" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" + "@babel/plugin-transform-arrow-functions" "^7.16.0" + "@babel/plugin-transform-async-to-generator" "^7.16.0" + "@babel/plugin-transform-block-scoped-functions" "^7.16.0" + "@babel/plugin-transform-block-scoping" "^7.16.0" + "@babel/plugin-transform-classes" "^7.16.0" + "@babel/plugin-transform-computed-properties" "^7.16.0" + "@babel/plugin-transform-destructuring" "^7.16.0" + "@babel/plugin-transform-dotall-regex" "^7.16.0" + "@babel/plugin-transform-duplicate-keys" "^7.16.0" + "@babel/plugin-transform-exponentiation-operator" "^7.16.0" + "@babel/plugin-transform-for-of" "^7.16.0" + "@babel/plugin-transform-function-name" "^7.16.0" + "@babel/plugin-transform-literals" "^7.16.0" + "@babel/plugin-transform-member-expression-literals" "^7.16.0" + "@babel/plugin-transform-modules-amd" "^7.16.0" + "@babel/plugin-transform-modules-commonjs" "^7.16.0" + "@babel/plugin-transform-modules-systemjs" "^7.16.0" + "@babel/plugin-transform-modules-umd" "^7.16.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.0" + "@babel/plugin-transform-new-target" "^7.16.0" + "@babel/plugin-transform-object-super" "^7.16.0" + "@babel/plugin-transform-parameters" "^7.16.3" + "@babel/plugin-transform-property-literals" "^7.16.0" + "@babel/plugin-transform-regenerator" "^7.16.0" + "@babel/plugin-transform-reserved-words" "^7.16.0" + "@babel/plugin-transform-shorthand-properties" "^7.16.0" + "@babel/plugin-transform-spread" "^7.16.0" + "@babel/plugin-transform-sticky-regex" "^7.16.0" + "@babel/plugin-transform-template-literals" "^7.16.0" + "@babel/plugin-transform-typeof-symbol" "^7.16.0" + "@babel/plugin-transform-unicode-escapes" "^7.16.0" + "@babel/plugin-transform-unicode-regex" "^7.16.0" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.0" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.19.1" semver "^6.3.0" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1093,14 +1312,30 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@7.15.4", "@babel/runtime@^7.8.4": +"@babel/runtime@7.16.3": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" + integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.8.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@7.15.4", "@babel/template@^7.15.4": +"@babel/template@7.16.0", "@babel/template@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" + integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/parser" "^7.16.0" + "@babel/types" "^7.16.0" + +"@babel/template@^7.15.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== @@ -1124,6 +1359,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.16.0", "@babel/traverse@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.5.tgz#d7d400a8229c714a59b87624fc67b0f1fbd4b2b3" + integrity sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.5" + "@babel/types" "^7.16.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.4.4": version "7.15.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" @@ -1132,21 +1383,40 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@babel/types@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" + integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== + dependencies: + "@babel/helper-validator-identifier" "^7.15.7" + to-fast-properties "^2.0.0" + "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@discoveryjs/json-ext@0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" - integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA== +"@discoveryjs/json-ext@0.5.6": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" + integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== "@gar/promisify@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + "@istanbuljs/schema@^0.1.2": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" @@ -1157,21 +1427,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz#3fdf5798f0b49e90155896f6291df186eac06c83" integrity sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA== -"@jsdevtools/coverage-istanbul-loader@3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz#2a4bc65d0271df8d4435982db4af35d81754ee26" - integrity sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA== - dependencies: - convert-source-map "^1.7.0" - istanbul-lib-instrument "^4.0.3" - loader-utils "^2.0.0" - merge-source-map "^1.1.0" - schema-utils "^2.7.0" - -"@ngtools/webpack@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.0.0-next.7.tgz#260a5f1b50090bf3b6b7391b5480a9b85e771e6a" - integrity sha512-8qgeRMbLlcLpk8qZS2gUtUmPvGRBVOYWlhVc4qBRqccAoDqPgFMCldR8GQupJxeIr1wgk7vWt0g6A0oEuxSIKA== +"@ngtools/webpack@13.1.0": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.1.0.tgz#180a5740ac7f4fcbd91dcb5306daac9a9156f6fc" + integrity sha512-jSsMVN5JuCIiDc5cxANNgLAfdEwfrhLIFFflg68tw81BzF/KGk4aW7kEme/VUckgg/jEbah2W3/0fEoz0EOd7A== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1244,23 +1503,23 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== +"@npmcli/run-script@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" + integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^7.1.0" + node-gyp "^8.2.0" read-package-json-fast "^2.0.1" -"@schematics/angular@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.0.0-next.7.tgz#b8d3ee053d23d49f75db5ea375cdf82df0800695" - integrity sha512-CvpWN4h7Vo4ynu3WfxLr2Ev3ziVl/xKLmyKrUNlXKUK4yl9J2jIyYCs5oA+tXV7BT/sVIJe4+MSRKVUc+XV/+Q== +"@schematics/angular@13.1.0": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.1.0.tgz#648e391838d145f00b72c0186b94a6a391b4b26d" + integrity sha512-KOjAtXQgr5sKENPeHrAtwVY+19scXVO3wfS2SyzwjHtI9vlRUWdtKF1k8z3QaXoHlplKbmWH4StuMxM/8tj9sA== dependencies: - "@angular-devkit/core" "13.0.0-next.7" - "@angular-devkit/schematics" "13.0.0-next.7" + "@angular-devkit/core" "13.1.0" + "@angular-devkit/schematics" "13.1.0" jsonc-parser "3.0.0" "@tootallnate/once@1": @@ -1316,7 +1575,7 @@ resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.9.1.tgz#94c65ee8bf9d24d9e1d84abaed57b6e0da8b49de" integrity sha512-PVpjh8S8lqKFKurWSKdFATlfBHGPzgy0PoDdzQ+rr78jTQ0aacyh9YndzZcAUPxhk4kRujItFFGQdUJ7flHumw== -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== @@ -1341,20 +1600,6 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/webpack-sources@^0.1.5": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.9.tgz#da69b06eb34f6432e6658acb5a6893c55d983920" - integrity sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.6.1" - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -1551,7 +1796,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-formats@2.1.1: +ajv-formats@2.1.1, ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== @@ -1563,17 +1808,24 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@8.6.3, ajv@^8.0.0: - version "8.6.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" - integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@8.8.2, ajv@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" + integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1583,6 +1835,16 @@ ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0: + version "8.6.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" + integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -1600,16 +1862,6 @@ ansi-html-community@^0.0.8: resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -1642,18 +1894,25 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: delegates "^1.0.0" - readable-stream "^2.0.6" + readable-stream "^3.6.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" array-flatten@1.1.1: version "1.1.1" @@ -1670,17 +1929,10 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +array-union@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== async@^2.6.2: version "2.6.3" @@ -1689,11 +1941,6 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -1712,20 +1959,10 @@ autoprefixer@^9.6.1: postcss "^7.0.32" postcss-value-parser "^4.1.0" -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-loader@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== +babel-loader@8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" @@ -1739,29 +1976,40 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +babel-plugin-istanbul@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" + integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.0" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92" - integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw== +babel-plugin-polyfill-corejs3@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" + integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.16.2" + "@babel/helper-define-polyfill-provider" "^0.3.0" + core-js-compat "^3.18.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" + integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.0" balanced-match@^1.0.0: version "1.0.2" @@ -1788,13 +2036,6 @@ batch@0.6.1: resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -1842,6 +2083,11 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1857,7 +2103,7 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.3, browserslist@^4.6.4, browserslist@^4.9.1: +browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.6.4, browserslist@^4.9.1: version "4.17.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.3.tgz#2844cd6eebe14d12384b0122d217550160d2d624" integrity sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ== @@ -1868,6 +2114,17 @@ browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^ node-releases "^1.1.77" picocolors "^0.2.1" +browserslist@^4.17.5, browserslist@^4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" + integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== + dependencies: + caniuse-lite "^1.0.30001286" + electron-to-chromium "^1.4.17" + escalade "^3.1.1" + node-releases "^2.0.1" + picocolors "^1.0.0" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -1938,21 +2195,26 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001264: +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001264: version "1.0.30001265" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3" integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== +caniuse-lite@^1.0.30001286: + version "1.0.30001287" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001287.tgz#5fab6a46ab9e47146d5dd35abfe47beaf8073c71" + integrity sha512-4udbs9bc0hfNrcje++AxBuc6PfLNHwh3PO9kbwnfCQWyqtlzg3py0YgFu8jyRTTo85VAz4U+VLxSlID09vNtWA== + canonical-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1975,7 +2237,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== @@ -2050,11 +2312,6 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2079,6 +2336,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + colorette@^2.0.10: version "2.0.16" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" @@ -2089,13 +2351,6 @@ colors@^1.4.0: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -2151,7 +2406,7 @@ connect@^3.7.0: parseurl "~1.3.3" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -2197,36 +2452,30 @@ copy-anything@^2.0.1: dependencies: is-what "^3.12.0" -copy-webpack-plugin@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz#b71d21991599f61a4ee00ba79087b8ba279bbb59" - integrity sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw== +copy-webpack-plugin@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.0.0.tgz#f25a29ca2398a6ca31183b62e76adacb53b981d1" + integrity sha512-tuCVuFMBbRsb7IH0q1CUb50/Skv+7a6c7DJ+xi4fAbOzNLTYVMUTPnf8uGvKPtmqTvzYBrfEFo7YgP4TsUWmtg== dependencies: - fast-glob "^3.2.5" - glob-parent "^6.0.0" - globby "^11.0.3" + fast-glob "^3.2.7" + glob-parent "^6.0.1" + globby "^12.0.2" normalize-path "^3.0.0" - p-limit "^3.1.0" - schema-utils "^3.0.0" + schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.16.0, core-js-compat@^3.16.2: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.2.tgz#e40c266fbd613948dd8d2d2156345da8ac03c142" - integrity sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ== +core-js-compat@^3.18.0, core-js-compat@^3.19.1: + version "3.20.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.0.tgz#fd704640c5a213816b6d10ec0192756111e2c9d1" + integrity sha512-relrah5h+sslXssTTOkvqcC/6RURifB0W5yhYBdBkaPYa5/2KBMiog3XiD+s3TwEHWxInWVv4Jx2/Lw0vng+IQ== dependencies: - browserslist "^4.17.3" + browserslist "^4.19.1" semver "7.0.0" -core-js@3.18.1: - version "3.18.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.1.tgz#289d4be2ce0085d40fc1244c0b1a54c00454622f" - integrity sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-js@3.19.3: + version "3.19.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.3.tgz#6df8142a996337503019ff3235a7022d7cdf4559" + integrity sha512-LeLBMgEGSsG7giquSzvgBrTS7V5UL6ks3eQlUSbN8dJStlLFiRzUm5iqsRyzUB8carhfKjkJ2vzKqE6z1Vga9g== core-util-is@~1.0.0: version "1.0.3" @@ -2252,15 +2501,16 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -critters@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.10.tgz#edd0e962fc5af6c4adb6dbf1a71bae2d3f917000" - integrity sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw== +critters@0.0.15: + version "0.0.15" + resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.15.tgz#b1c8d18fd18e614471733d7d749deac0f386b738" + integrity sha512-AE7hkXb3eZUbEvS1SKZa+OU4o2kUOXtzVeE/2E/mjU/0mV1wpBT1HfUCWVRS4zwvkBNJ0AQYsVjAoFm+kIhfdw== dependencies: chalk "^4.1.0" - css "^3.0.0" + css-select "^4.1.3" parse5 "^6.0.1" parse5-htmlparser2-tree-adapter "^6.0.1" + postcss "^8.3.7" pretty-bytes "^5.3.0" cross-spawn@^7.0.3: @@ -2287,10 +2537,10 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.3.0.tgz#334d3500ff0a0c14cfbd4b0670088dbb5b5c1530" - integrity sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg== +css-loader@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.5.1.tgz#0c43d4fbe0d97f699c91e9818cb585759091d1b1" + integrity sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ== dependencies: icss-utils "^5.1.0" postcss "^8.2.15" @@ -2308,6 +2558,22 @@ css-prefers-color-scheme@^3.1.1: dependencies: postcss "^7.0.5" +css-select@^4.1.3: + version "4.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.0.tgz#ab28276d3afb00cc05e818bd33eb030f14f57895" + integrity sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw== + dependencies: + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + css@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" @@ -2337,13 +2603,6 @@ custom-event@~1.0.0: resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - date-format@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" @@ -2361,13 +2620,20 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.2, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@~4.3.1: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@~4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + debug@^3.1.1, debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -2399,7 +2665,7 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -default-gateway@^6.0.0: +default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== @@ -2439,11 +2705,6 @@ del@^6.0.0: rimraf "^3.0.2" slash "^3.0.0" -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -2474,6 +2735,11 @@ di@^0.0.1: resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= +diff@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2511,13 +2777,35 @@ dom-serialize@^2.2.1: extend "^3.0.0" void-elements "^2.0.0" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" ee-first@1.1.1: version "1.1.1" @@ -2529,6 +2817,11 @@ electron-to-chromium@^1.3.857: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.866.tgz#d446338f5ad6948b27a50739760e7b0b5cc5032f" integrity sha512-iYze6TpDXWxk+sfcpUUdTs6Pv/3kG45Pnjer2DxEeFw0N08bZeNLuz97s2lMgy8yObon48o0WHY2Bkg3xuAPOA== +electron-to-chromium@^1.4.17: + version "1.4.20" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.20.tgz#8fbf9677ccac19b4249c0a6204e0943d9d66ce30" + integrity sha512-N7ZVNrdzX8NE90OXEFBMsBf3fp8P/vVDUER3WCUZjzC7OkNTXHVoF6W9qVhq8+dA8tGnbDajzUpj2ISNVVyj+Q== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2584,6 +2877,11 @@ ent@~2.2.0: resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -2613,112 +2911,118 @@ es-module-lexer@^0.9.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -esbuild-android-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.3.tgz#ef734c76eeff42e8c53acdffe901da090164a890" - integrity sha512-jc9E8vGTHkzb0Vwl74H8liANV9BWsqtzLHaKvcsRgf1M+aVCBSF0gUheduAKfDsbDMT0judeMLhwBP34EUesTA== - -esbuild-darwin-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.3.tgz#35f29376b7451add79f0640980683ef923365385" - integrity sha512-8bG3Zq+ZNuLlIJebOO2+weI7P2LVf33sOzaUfHj8MuJ+1Ixe4KtQxfYp7qhFnP6xP2ToJaYHxGUfLeiUCEz9hw== - -esbuild-darwin-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.3.tgz#530a1326e7d18d62c9a54b6dce70f2b77ed50eec" - integrity sha512-5E81eImYtTgh8pY7Gq4WQHhWkR/LvYadUXmuYeZBiP+3ADZJZcG60UFceZrjqNPaFOWKr/xmh4aNocwagEubcA== - -esbuild-freebsd-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.3.tgz#ce2896ac362e06eb82ca5dec06b2568901eb5afc" - integrity sha512-ou+f91KkTGexi8HvF/BdtsITL6plbciQfZGys7QX6/QEwyE96PmL5KnU6ZQwoU7E99Ts6Sc9bUDq8HXJubKtBA== - -esbuild-freebsd-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.3.tgz#a20454f99e060bea4e465d131556a9f0533f403f" - integrity sha512-F1zV7nySjHswJuvIgjkiG5liZ63MeazDGXGKViTCeegjZ71sAhOChcaGhKcu6vq9+vqZxlfEi1fmXlx6Pc3coQ== - -esbuild-linux-32@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.3.tgz#ad56f18208ecf007cd9ab16cd39626ca0312b8ee" - integrity sha512-mHHc2v6uLrHH4zaaq5RB/5IWzgimEJ1HGldzf1qtGI513KZWfH0HRRQ8p1di4notJgBn7tDzWQ1f34ZHy69viQ== - -esbuild-linux-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.3.tgz#be1eabadf68d153897ed887678f7496d3949810f" - integrity sha512-FJ1De2O89mrOuqtaEXu41qIYJU6R41F+OA6vheNwcAQcX8fu0aiA13FJeLABq29BYJuTVgRj3cyC8q+tz19/dQ== - -esbuild-linux-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.3.tgz#329348bb4a19cfb5e9046cc5d97ba5017d8f74ad" - integrity sha512-Cauhr45KSo+wRUojs+1qfycQqQCAXTOvsWvkZ6xmEMAXLAm+f8RQGDQeP8CAf8Yeelnegcn6UNdvzdzLHhWDFg== - -esbuild-linux-arm@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.3.tgz#b3b3167c9d5d3038894fbc75b194a4fbe93eaf09" - integrity sha512-9BJNRtLwBh3OP22cln9g3AJdbAQUcjRHqA4BScx9k4RZpGqPokFr548zpeplxWhcwrIjT8qPebwH9CrRVy8Bsw== - -esbuild-linux-mips64le@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.3.tgz#ea1687f28ea2c85399ecc2fe23a48ab343b7b35d" - integrity sha512-YVzJUGCncuuLm2boYyVeuMFsak4ZAhdiBwi0xNDZCC8sy+tS6Boe2mzcrD2uubv5JKAUOrpN186S1DtU4WgBgw== - -esbuild-linux-ppc64le@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.3.tgz#a462cf42eae3d7fc29a9f277679f5adee70afa67" - integrity sha512-GU6CqqKtJEoyxC2QWHiJtmuOz9wc/jMv8ZloK2WwiGY5yMvAmM3PI103Dj7xcjebNTHBqITTUw/aigY1wx5A3w== - -esbuild-openbsd-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.3.tgz#0cb15bd86d20eb19cb548b530f1a533197532cf9" - integrity sha512-HVpkgpn4BQt4BPDAjTOpeMub6mzNWw6Y3gaLQJrpbO24pws6ZwYkY24OI3/Uo3LDCbH6856MM81JxECt92OWjA== - -esbuild-sunos-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.3.tgz#53a941241f881010969cc8f1acb1ada49c4cd3c2" - integrity sha512-XncBVOtnEfUbPV4CaiFBxh38ychnBfwCxuTm9iAqcHzIwkmeNRN5qMzDyfE1jyfJje+Bbt6AvIfz6SdYt8/UEQ== - -esbuild-wasm@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.13.3.tgz#241b261b5cc0d0bf18e205b7d625675f31be78d8" - integrity sha512-kkTvRzVeE8U2oewyeEyrMJAv53zsYLNF4xLsXWZt8yvV9+HEM0TlaLAszvRBdHpqoxDSliLJIvU1TatQn33gXQ== - -esbuild-windows-32@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.3.tgz#265dc0d0cdb5374685a851c584857055e12865a4" - integrity sha512-ZlgDz7d1nk8wQACi+z8IDzNZVUlN9iprAme+1YSTsfFDlkyI8jeaGWPk9EQFNY7rJzsLVYm6eZ2mhPioc7uT5A== - -esbuild-windows-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.3.tgz#ae710c0629ec8c39c5ef1f69e86ed5592bb4128f" - integrity sha512-YX7KvRez3TR+GudlQm9tND/ssj2FsF9vb8ZWzAoZOLxpPzE3y+3SFJNrfDzzQKPzJ0Pnh9KBP4gsaMwJjKHDhw== - -esbuild-windows-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.3.tgz#a236199a26b1205573dcb571f966189326a4c953" - integrity sha512-nP7H0Y2a6OJd3Qi1Q8sehhyP4x4JoXK4S5y6FzH2vgaJgiyEurzFxjUufGdMaw+RxtxiwD/uRndUgwaZ2JD8lg== - -esbuild@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.3.tgz#cc9fc347fc81ff6440cdd1fdb9fe65c02eddcc97" - integrity sha512-98xovMLKnyhv3gcReUuAEi5Ig1rK6SIgvsJuBIcfwzqGSEHsV8UJjMlmkhHoHMf9XZybMpE9Zax8AA8f7i2hlQ== +esbuild-android-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.2.tgz#256b7cf2f9d382a2a92a4ff4e13187587c9b7c6a" + integrity sha512-hEixaKMN3XXCkoe+0WcexO4CcBVU5DCSUT+7P8JZiWZCbAjSkc9b6Yz2X5DSfQmRCtI/cQRU6TfMYrMQ5NBfdw== + +esbuild-darwin-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.2.tgz#891a59ce6bc3aded0265f982469b3eb9571b92f8" + integrity sha512-Uq8t0cbJQkxkQdbUfOl2wZqZ/AtLZjvJulR1HHnc96UgyzG9YlCLSDMiqjM+NANEy7/zzvwKJsy3iNC9wwqLJA== + +esbuild-darwin-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.2.tgz#ab834fffa9c612b2901ca1e77e4695d4d8aa63a2" + integrity sha512-619MSa17sr7YCIrUj88KzQu2ESA4jKYtIYfLU/smX6qNgxQt3Y/gzM4s6sgJ4fPQzirvmXgcHv1ZNQAs/Xh48A== + +esbuild-freebsd-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.2.tgz#f7fc87a83f02de27d5a48472571efa1a432ae86d" + integrity sha512-aP6FE/ZsChZpUV6F3HE3x1Pz0paoYXycJ7oLt06g0G9dhJKknPawXCqQg/WMyD+ldCEZfo7F1kavenPdIT/SGQ== + +esbuild-freebsd-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.2.tgz#bc8758420431106751f3180293cac0b5bc4ce2ee" + integrity sha512-LSm98WTb1QIhyS83+Po0KTpZNdd2XpVpI9ua5rLWqKWbKeNRFwOsjeiuwBaRNc+O32s9oC2ZMefETxHBV6VNkQ== + +esbuild-linux-32@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.2.tgz#0cc2dcd816d6d66e255bc7aeac139b1d04246812" + integrity sha512-8VxnNEyeUbiGflTKcuVc5JEPTqXfsx2O6ABwUbfS1Hp26lYPRPC7pKQK5Dxa0MBejGc50jy7YZae3EGQUQ8EkQ== + +esbuild-linux-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.2.tgz#c790f739aa75b15c153609ea3457153fbe4db93d" + integrity sha512-4bzMS2dNxOJoFIiHId4w+tqQzdnsch71JJV1qZnbnErSFWcR9lRgpSqWnTTFtv6XM+MvltRzSXC5wQ7AEBY6Hg== + +esbuild-linux-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.2.tgz#96858a1f89ad30274dec780d0e3dd8b5691c6b0c" + integrity sha512-RlIVp0RwJrdtasDF1vTFueLYZ8WuFzxoQ1OoRFZOTyJHCGCNgh7xJIC34gd7B7+RT0CzLBB4LcM5n0LS+hIoww== + +esbuild-linux-arm@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.2.tgz#03e193225afa9b1215d2ec6efe8edf0c03eeed6f" + integrity sha512-PaylahvMHhH8YMfJPMKEqi64qA0Su+d4FNfHKvlKes/2dUe4QxgbwXT9oLVgy8iJdcFMrO7By4R8fS8S0p8aVQ== + +esbuild-linux-mips64le@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.2.tgz#972f218d2cb5125237376d40ad60a6e5356a782c" + integrity sha512-Fdwrq2roFnO5oetIiUQQueZ3+5soCxBSJswg3MvYaXDomj47BN6oAWMZgLrFh1oVrtWrxSDLCJBenYdbm2s+qQ== + +esbuild-linux-ppc64le@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.2.tgz#20b71622ac09142b0e523f633af0829def7fed6b" + integrity sha512-vxptskw8JfCDD9QqpRO0XnsM1osuWeRjPaXX1TwdveLogYsbdFtcuiuK/4FxGiNMUr1ojtnCS2rMPbY8puc5NA== + +esbuild-netbsd-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.2.tgz#dbd6a25117902ef67aa11d8779dd9c6bca7fbe82" + integrity sha512-I8+LzYK5iSNpspS9eCV9sW67Rj8FgMHimGri4mKiGAmN0pNfx+hFX146rYtzGtewuxKtTsPywWteHx+hPRLDsw== + +esbuild-openbsd-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.2.tgz#3c5f199eed459b2f88865548394c0b77383d9ca4" + integrity sha512-120HgMe9elidWUvM2E6mMf0csrGwx8sYDqUIJugyMy1oHm+/nT08bTAVXuwYG/rkMIqsEO9AlMxuYnwR6En/3Q== + +esbuild-sunos-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.2.tgz#900a681db6b76c6a7f60fc28d2bfe5b11698641c" + integrity sha512-Q3xcf9Uyfra9UuCFxoLixVvdigo0daZaKJ97TL2KNA4bxRUPK18wwGUk3AxvgDQZpRmg82w9PnkaNYo7a+24ow== + +esbuild-wasm@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.2.tgz#49c59c610a0be48becec87a7d9019d143468f2f9" + integrity sha512-Rs8NjWoo1UdsVjhxT2o6kLCX9Sh65pyd3/h4XeJ3jjQNM6NgL+/CSowuJgvOIjDAXMLXpc6fdGnyZQDil9IUJA== + +esbuild-windows-32@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.2.tgz#61e0ba5bd95b277a55d2b997ac4c04dfe2559220" + integrity sha512-TW7O49tPsrq+N1sW8mb3m24j/iDGa4xzAZH4wHWwoIzgtZAYPKC0hpIhufRRG/LA30bdMChO9pjJZ5mtcybtBQ== + +esbuild-windows-64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.2.tgz#6ab59ef721ff75c682a1c8ae0570dabb637abddb" + integrity sha512-Rym6ViMNmi1E2QuQMWy0AFAfdY0wGwZD73BnzlsQBX5hZBuy/L+Speh7ucUZ16gwsrMM9v86icZUDrSN/lNBKg== + +esbuild-windows-arm64@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.2.tgz#aca2a4f83d2f0d1592ad4be832ed0045fc888cda" + integrity sha512-ZrLbhr0vX5Em/P1faMnHucjVVWPS+m3tktAtz93WkMZLmbRJevhiW1y4CbulBd2z0MEdXZ6emDa1zFHq5O5bSA== + +esbuild@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.2.tgz#9c1e1a652549cc33e44885eea42ea2cc6267edc2" + integrity sha512-l076A6o/PIgcyM24s0dWmDI/b8RQf41uWoJu9I0M71CtW/YSw5T5NUeXxs5lo2tFQD+O4CW4nBHJXx3OY5NpXg== optionalDependencies: - esbuild-android-arm64 "0.13.3" - esbuild-darwin-64 "0.13.3" - esbuild-darwin-arm64 "0.13.3" - esbuild-freebsd-64 "0.13.3" - esbuild-freebsd-arm64 "0.13.3" - esbuild-linux-32 "0.13.3" - esbuild-linux-64 "0.13.3" - esbuild-linux-arm "0.13.3" - esbuild-linux-arm64 "0.13.3" - esbuild-linux-mips64le "0.13.3" - esbuild-linux-ppc64le "0.13.3" - esbuild-openbsd-64 "0.13.3" - esbuild-sunos-64 "0.13.3" - esbuild-windows-32 "0.13.3" - esbuild-windows-64 "0.13.3" - esbuild-windows-arm64 "0.13.3" + esbuild-android-arm64 "0.14.2" + esbuild-darwin-64 "0.14.2" + esbuild-darwin-arm64 "0.14.2" + esbuild-freebsd-64 "0.14.2" + esbuild-freebsd-arm64 "0.14.2" + esbuild-linux-32 "0.14.2" + esbuild-linux-64 "0.14.2" + esbuild-linux-arm "0.14.2" + esbuild-linux-arm64 "0.14.2" + esbuild-linux-mips64le "0.14.2" + esbuild-linux-ppc64le "0.14.2" + esbuild-netbsd-64 "0.14.2" + esbuild-openbsd-64 "0.14.2" + esbuild-sunos-64 "0.14.2" + esbuild-windows-32 "0.14.2" + esbuild-windows-64 "0.14.2" + esbuild-windows-arm64 "0.14.2" escalade@^3.1.1: version "3.1.1" @@ -2743,6 +3047,11 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -2836,7 +3145,7 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -2850,22 +3159,12 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.5: +fast-glob@^3.1.1, fast-glob@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== @@ -2922,7 +3221,7 @@ finalhandler@1.1.2, finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@3.3.2, find-cache-dir@^3.3.1: +find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -2931,7 +3230,7 @@ find-cache-dir@3.3.2, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -2954,20 +3253,6 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -3014,19 +3299,20 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= +gauge@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" + integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== dependencies: - aproba "^1.0.3" + ansi-regex "^5.0.1" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" + has-unicode "^2.0.1" signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -3047,18 +3333,16 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3066,7 +3350,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.0: +glob-parent@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -3095,7 +3379,7 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.1, globby@^11.0.3: +globby@^11.0.1: version "11.0.4" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== @@ -3107,7 +3391,19 @@ globby@^11.0.1, globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: +globby@^12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-12.0.2.tgz#53788b2adf235602ed4cabfea5c70a1139e1ab11" + integrity sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ== + dependencies: + array-union "^3.0.1" + dir-glob "^3.0.1" + fast-glob "^3.2.7" + ignore "^5.1.8" + merge2 "^1.4.1" + slash "^4.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -3117,19 +3413,6 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3152,7 +3435,7 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.0: +has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -3281,15 +3564,6 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -3334,10 +3608,10 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== +ignore-walk@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3" + integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw== dependencies: minimatch "^3.0.4" @@ -3346,11 +3620,21 @@ ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ignore@^5.1.8: + version "5.1.9" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" + integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -3402,10 +3686,10 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -inquirer@8.1.5: - version "8.1.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.5.tgz#2dc5159203c826d654915b5fe6990fd17f54a150" - integrity sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg== +inquirer@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" + integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.1" @@ -3422,27 +3706,12 @@ inquirer@8.1.5: strip-ansi "^6.0.0" through "^2.3.6" -internal-ip@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" - integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== - dependencies: - default-gateway "^6.0.0" - ipaddr.js "^1.9.1" - is-ip "^3.1.0" - p-event "^4.2.0" - -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - ip@^1.1.0, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.1, ipaddr.js@^1.9.1: +ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -3496,18 +3765,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -3525,13 +3782,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -3577,11 +3827,6 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -3619,17 +3864,17 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - istanbul-lib-coverage@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.2.tgz#36786d4d82aad2ea5911007e255e2da6b5f80d86" integrity sha512-o5+eTUYzCJ11/+JhW5/FUCdfsdoYVdQ/8I/OveE2XsjehYn5DdeSnNQAbjYaO8gQ6hvGTN6GM6ddQqpTVG5j8g== -istanbul-lib-instrument@^4.0.1, istanbul-lib-instrument@^4.0.3: +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -3639,6 +3884,17 @@ istanbul-lib-instrument@^4.0.1, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" +istanbul-lib-instrument@^5.0.4: + version "5.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -3684,10 +3940,13 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" jsesc@^2.5.1: version "2.5.2" @@ -3719,16 +3978,6 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -3760,16 +4009,6 @@ jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - karma-chrome-launcher@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" @@ -3847,21 +4086,26 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -less-loader@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.0.1.tgz#c05aaba68d00400820275f21c2ad87cb9fa9923f" - integrity sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA== +klona@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== + +less-loader@10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.2.0.tgz#97286d8797dc3dc05b1d16b0ecec5f968bdd4e32" + integrity sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg== dependencies: klona "^2.0.4" -less@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/less/-/less-4.1.1.tgz#15bf253a9939791dc690888c3ff424f3e6c7edba" - integrity sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw== +less@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" + integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== dependencies: copy-anything "^2.0.1" parse-node-version "^1.0.1" - tslib "^1.10.0" + tslib "^2.3.0" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" @@ -3871,13 +4115,12 @@ less@4.1.1: needle "^2.5.2" source-map "~0.6.0" -license-webpack-plugin@2.3.21: - version "2.3.21" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.21.tgz#152f5e82d5f51f8bab78905731f2b8042aa5691b" - integrity sha512-rVaYU9TddZN3ao8M/0PrRSCdTp2EW6VQymlgsuScld1vef0Ou7fALx3ePe83KLP3xAEDcPK5fkqUVqGBnbz1zQ== +license-webpack-plugin@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.0.tgz#11cf6ac96559f4a987cf55d3d2a33f295ae8f13b" + integrity sha512-b9iMrROrw2fTOJBZ57h0xJfT5/1Cxg4ucYbtpWoukv4Awb2TFPfDDFVHNM8w6SYQpVfB13a5tQJxgGamqwrsyw== dependencies: - "@types/webpack-sources" "^0.1.5" - webpack-sources "^1.2.0" + webpack-sources "^3.0.0" lines-and-columns@^1.1.6: version "1.1.6" @@ -3889,14 +4132,10 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@2.0.0, loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" +loader-utils@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== loader-utils@^1.4.0: version "1.4.0" @@ -3907,6 +4146,15 @@ loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -3972,7 +4220,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-fetch-happen@^9.0.1: +make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -4011,19 +4259,12 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -4046,7 +4287,7 @@ mime-db@1.50.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24: version "2.1.33" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== @@ -4068,12 +4309,12 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.3.0.tgz#87515f185533752944d753ac7216fc876779dafe" - integrity sha512-uzWaOwC+gJrnKbr23J1ZRWx/Wd9W9Ce1mKPlsBGBV/r8zG7/G7oKMxGmxbI65pVGbae2cR7CUx9Ulk0HQt8BfQ== +mini-css-extract-plugin@2.4.5: + version "2.4.5" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.5.tgz#191d6c170226037212c483af1180b4010b7b9eef" + integrity sha512-oEIhRucyn1JbT/1tU2BhnwO6ft1jjH1iCX9Gc59WFMg0n5773rQU0oyQ0zzeYFFuBfONaRbQJyGoPtuNseMxjA== dependencies: - schema-utils "^3.1.0" + schema-utils "^4.0.0" minimalistic-assert@^1.0.0: version "1.0.1" @@ -4204,16 +4445,16 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanocolors@^0.2.2: - version "0.2.13" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" - integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA== - -nanoid@^3.1.25, nanoid@^3.1.28: +nanoid@^3.1.28: version "3.1.29" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.29.tgz#214fb2d7a33e1a5bef4757b779dfaeb6a4e5aeb4" integrity sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg== +nanoid@^3.1.30: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== + needle@^2.5.2: version "2.9.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" @@ -4256,20 +4497,20 @@ node-gyp-build@^4.2.2: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== +node-gyp@^8.2.0: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== dependencies: env-paths "^2.2.0" glob "^7.1.4" - graceful-fs "^4.2.3" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" + npmlog "^6.0.0" rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" + semver "^7.3.5" + tar "^6.1.2" which "^2.0.2" node-releases@^1.1.77: @@ -4277,6 +4518,11 @@ node-releases@^1.1.77: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== +node-releases@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" + integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + nopt@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" @@ -4322,13 +4568,13 @@ npm-package-arg@8.1.5, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-packa semver "^7.3.4" validate-npm-package-name "^3.0.0" -npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== +npm-packlist@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" + integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ== dependencies: glob "^7.1.6" - ignore-walk "^3.0.3" + ignore-walk "^4.0.1" npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" @@ -4361,32 +4607,29 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +npmlog@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.0.tgz#ba9ef39413c3d936ea91553db7be49c34ad0520c" + integrity sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.0" + set-blocking "^2.0.0" + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" + boolbase "^1.0.0" num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.1.0: +object-assign@^4: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -4445,10 +4688,10 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" - integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== +open@8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -4483,18 +4726,6 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -p-event@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== - dependencies: - p-timeout "^3.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -4531,27 +4762,20 @@ p-retry@^4.5.0: "@types/retry" "^0.12.0" retry "^0.13.1" -p-timeout@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pacote@11.3.5: - version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== +pacote@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.2.tgz#14ae30a81fe62ec4fc18c071150e6763e932527c" + integrity sha512-Ar3mhjcxhMzk+OVZ8pbnXdb0l8+pimvlsqBGRNkble2NVgyqOGE3yrCGi/lAYq7E7NRDMz89R1Wx5HIMCGgeYg== dependencies: "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" + "@npmcli/run-script" "^2.0.0" cacache "^15.0.5" chownr "^2.0.0" fs-minipass "^2.1.0" @@ -4559,7 +4783,7 @@ pacote@11.3.5: minipass "^3.1.3" mkdirp "^1.0.3" npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" + npm-packlist "^3.0.0" npm-pick-manifest "^6.0.0" npm-registry-fetch "^11.0.0" promise-retry "^2.0.1" @@ -4662,16 +4886,16 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - picocolors@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -4872,13 +5096,13 @@ postcss-lab-function@^2.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-loader@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.1.1.tgz#58dd0a3accd9bc87cc52eff75244db578d11301a" - integrity sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug== +postcss-loader@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: cosmiconfig "^7.0.0" - klona "^2.0.4" + klona "^2.0.5" semver "^7.3.5" postcss-logical@^3.0.0: @@ -5057,14 +5281,14 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@8.3.8: - version "8.3.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.8.tgz#9ebe2a127396b4b4570ae9f7770e7fb83db2bac1" - integrity sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA== +postcss@8.4.4: + version "8.4.4" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.4.tgz#d53d4ec6a75fd62557a66bb41978bf47ff0c2869" + integrity sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q== dependencies: - nanocolors "^0.2.2" - nanoid "^3.1.25" - source-map-js "^0.6.2" + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^1.0.1" postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: version "7.0.39" @@ -5083,6 +5307,15 @@ postcss@^8.2.15: picocolors "^0.2.1" source-map-js "^0.6.2" +postcss@^8.3.7: + version "8.4.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" + integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== + dependencies: + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^1.0.1" + pretty-bytes@^5.3.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -5119,17 +5352,12 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -5144,11 +5372,6 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" @@ -5196,7 +5419,7 @@ read-package-json-fast@^2.0.1: json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -readable-stream@^2.0.1, readable-stream@^2.0.6: +readable-stream@^2.0.1: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -5209,7 +5432,7 @@ readable-stream@^2.0.1, readable-stream@^2.0.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.4.0: +readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -5291,32 +5514,6 @@ regjsparser@^0.7.0: dependencies: jsesc "~0.5.0" -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5337,6 +5534,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url-loader@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" @@ -5420,37 +5622,38 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.1.0.tgz#b73324622231009da6fba61ab76013256380d201" - integrity sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg== +sass-loader@12.4.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.4.0.tgz#260b0d51a8a373bb8e88efc11f6ba5583fea0bcf" + integrity sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg== dependencies: klona "^2.0.4" neo-async "^2.6.2" -sass@1.42.1: - version "1.42.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.42.1.tgz#5ab17bebc1cb1881ad2e0c9a932c66ad64e441e2" - integrity sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg== +sass@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.44.0.tgz#619aa0a2275c097f9af5e6b8fe8a95e3056430fb" + integrity sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw== dependencies: chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -schema-utils@^2.6.5, schema-utils@^2.7.0: +schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -5459,7 +5662,7 @@ schema-utils@^2.6.5, schema-utils@^2.7.0: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== @@ -5468,6 +5671,16 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -5485,7 +5698,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -5551,7 +5764,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -5595,6 +5808,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + smart-buffer@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -5655,16 +5873,16 @@ socks@^2.6.1: ip "^1.1.5" smart-buffer "^4.1.0" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - source-map-js@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== +source-map-js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" + integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== + source-map-loader@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049" @@ -5682,7 +5900,15 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@0.5.20, source-map-support@^0.5.5, source-map-support@~0.5.20: +source-map-support@0.5.21: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.5, source-map-support@~0.5.20: version "0.5.20" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== @@ -5690,7 +5916,7 @@ source-map-support@0.5.20, source-map-support@^0.5.5, source-map-support@~0.5.20 buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -5733,20 +5959,10 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" @@ -5769,24 +5985,7 @@ streamroller@^2.2.4: debug "^4.1.1" fs-extra "^8.1.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^4.1.0, string-width@^4.2.0: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -5809,20 +6008,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -5842,12 +6027,12 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -stylus-loader@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-6.1.0.tgz#7a3a719a27cb2b9617896d6da28fda94c3ed9762" - integrity sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw== +stylus-loader@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-6.2.0.tgz#0ba499e744e7fb9d9b3977784c8639728a7ced8c" + integrity sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg== dependencies: - fast-glob "^3.2.5" + fast-glob "^3.2.7" klona "^2.0.4" normalize-path "^3.0.0" @@ -5896,7 +6081,7 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^6.0.2, tar@^6.1.0: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -5920,7 +6105,16 @@ terser-webpack-plugin@^5.1.3: source-map "^0.6.1" terser "^5.7.2" -terser@5.9.0, terser@^5.7.2: +terser@5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +terser@^5.7.2: version "5.9.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== @@ -5929,6 +6123,15 @@ terser@5.9.0, terser@^5.7.2: source-map "~0.7.2" source-map-support "~0.5.20" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-table@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -5975,14 +6178,6 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tree-kill@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -5993,7 +6188,7 @@ tslib@2.3.1, tslib@^2.0.0, tslib@^2.3.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tslib@^1.10.0, tslib@^1.9.0: +tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -6003,18 +6198,6 @@ tslib@~2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -6034,7 +6217,7 @@ typed-assert@^1.0.8: integrity sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g== "typescript@file:../../node_modules/typescript": - version "4.4.3" + version "4.5.2" ua-parser-js@^0.7.28: version "0.7.28" @@ -6123,7 +6306,7 @@ uuid@8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -6140,24 +6323,15 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= -watchpack@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" - integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -6176,7 +6350,18 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webpack-dev-middleware@5.2.1, webpack-dev-middleware@^5.2.1: +webpack-dev-middleware@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.2.tgz#eb5193faa5479ca1086b9f7bed68b89c731bff62" + integrity sha512-DjZyYrsHhkikAFNvSNKrpnziXukU1EChFAh9j4LAm6ndPLPW8cN0KhM7T+RAiOqsQ6ABfQ8hoKIs9IWMTjov+w== + dependencies: + colorette "^2.0.10" + memfs "^3.2.2" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-middleware@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz#97c948144349177856a3d2d9c612cc3fee180cf1" integrity sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ== @@ -6187,28 +6372,28 @@ webpack-dev-middleware@5.2.1, webpack-dev-middleware@^5.2.1: range-parser "^1.2.1" schema-utils "^3.1.0" -webpack-dev-server@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.3.0.tgz#732f5869d4c06e222b599daee64bc268f5edea24" - integrity sha512-kuqP9Xn4OzcKe7f0rJwd4p8xqiD+4b5Lzu8tJa8OttRL3E1Q8gI2KmUtouJTgDswjjvHOHlZDV8LTQfSY5qZSA== +webpack-dev-server@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz#e8648601c440172d9b6f248d28db98bed335315a" + integrity sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg== dependencies: ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^3.5.1" + chokidar "^3.5.2" 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" graceful-fs "^4.2.6" html-entities "^2.3.2" http-proxy-middleware "^2.0.0" - internal-ip "^6.2.0" ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" portfinder "^1.0.28" - schema-utils "^3.1.0" + schema-utils "^4.0.0" selfsigned "^1.10.11" serve-index "^1.9.1" sockjs "^0.3.21" @@ -6226,18 +6411,10 @@ webpack-merge@5.8.0: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^1.2.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" - integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== +webpack-sources@^3.0.0, webpack-sources@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260" + integrity sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw== webpack-subresource-integrity@5.0.0: version "5.0.0" @@ -6246,10 +6423,10 @@ webpack-subresource-integrity@5.0.0: dependencies: typed-assert "^1.0.8" -webpack@5.55.1: - version "5.55.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.55.1.tgz#426ebe54c15fa57f7b242590f65fd182382b5998" - integrity sha512-EYp9lwaOOAs+AA/KviNZ7bQiITHm4bXQvyTPewD2+f5YGjv6sfiClm40yeX5FgBMxh5bxcB6LryiFoP09B97Ug== +webpack@5.65.0: + version "5.65.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be" + integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50" @@ -6273,8 +6450,8 @@ webpack@5.55.1: schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.2.0" - webpack-sources "^3.2.0" + watchpack "^2.3.1" + webpack-sources "^3.2.2" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -6304,12 +6481,12 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^1.0.2 || 2" + string-width "^1.0.2 || 2 || 3 || 4" wildcard@^2.0.0: version "2.0.0" diff --git a/integration/npm-packages-from-runfiles.mjs b/integration/npm-packages-from-runfiles.mjs index a649b63c1f05..db16950d7c07 100644 --- a/integration/npm-packages-from-runfiles.mjs +++ b/integration/npm-packages-from-runfiles.mjs @@ -20,12 +20,14 @@ export function getNpmPackagesFromRunfiles() { const workspacePath = 'angular_material/src'; if (!runfilesManifestPath) { const packageRunfilesDir = path.join(process.env.RUNFILES, workspacePath); - return fs.readdirSync(packageRunfilesDir) + return fs + .readdirSync(packageRunfilesDir) .map(name => ({name, pkgPath: path.join(packageRunfilesDir, name, 'npm_package/')})) .filter(({pkgPath}) => fs.existsSync(pkgPath)); } const workspaceManifestPathRegex = new RegExp(`^${workspacePath}/[\\w-]+/npm_package$`); - return fs.readFileSync(runfilesManifestPath, 'utf8') + return fs + .readFileSync(runfilesManifestPath, 'utf8') .split('\n') .map(mapping => mapping.split(' ')) .filter(([runfilePath]) => runfilePath.match(workspaceManifestPathRegex)) diff --git a/integration/size-test/BUILD.bazel b/integration/size-test/BUILD.bazel index ecd3817d7448..b8252c3f4cbf 100644 --- a/integration/size-test/BUILD.bazel +++ b/integration/size-test/BUILD.bazel @@ -1,3 +1,4 @@ +load("@npm//@bazel/esbuild:index.bzl", "esbuild_config") load("//tools:defaults.bzl", "ts_library") package(default_visibility = ["//visibility:public"]) @@ -8,6 +9,16 @@ exports_files([ "index-tmpl.ts", ]) +esbuild_config( + name = "esbuild_config", + config_file = "esbuild.config.mjs", + deps = [ + "@npm//@angular-devkit/build-angular", + "@npm//@angular/compiler-cli", + "@npm//@babel/core", + ], +) + ts_library( name = "check-size", srcs = ["check-size.ts"], diff --git a/integration/size-test/esbuild.config.mjs b/integration/size-test/esbuild.config.mjs new file mode 100644 index 000000000000..cbfef364c0f5 --- /dev/null +++ b/integration/size-test/esbuild.config.mjs @@ -0,0 +1,90 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import babel from '@babel/core'; +import {createEs2015LinkerPlugin} from '@angular/compiler-cli/linker/babel'; +import {ConsoleLogger, NodeJSFileSystem, LogLevel} from '@angular/compiler-cli'; +import {GLOBAL_DEFS_FOR_TERSER_WITH_AOT} from '@angular/compiler-cli/private/tooling'; +import adjustStaticClassMembersPlugin from '@angular-devkit/build-angular/src/babel/plugins/adjust-static-class-members.js'; +import elideAngularMetadataPlugin from '@angular-devkit/build-angular/src/babel/plugins/elide-angular-metadata.js'; +import adjustTypeScriptEnumsPlugin from '@angular-devkit/build-angular/src/babel/plugins/adjust-typescript-enums.js'; +import pureToplevelFunctionsPlugin from '@angular-devkit/build-angular/src/babel/plugins/pure-toplevel-functions.js'; +import fs from 'fs'; + +/** Babel plugin running the Angular linker. */ +const linkerBabelPlugin = createEs2015LinkerPlugin({ + fileSystem: new NodeJSFileSystem(), + logger: new ConsoleLogger(LogLevel.warn), + linkerJitMode: false, +}); + +/** + * ESBuild plugin configuring various optimization Babel plugins. The Babel plugins + * configured as part of this plugin run in the Angular CLI compilation pipeline as well. + */ +const esbuildBabelOptimizePlugin = { + name: 'ng-babel-optimize-esbuild', + setup: build => { + build.onLoad({filter: /.*/}, async args => { + const filePath = args.path; + const content = await fs.promises.readFile(filePath, 'utf8'); + const plugins = [ + linkerBabelPlugin, + adjustStaticClassMembersPlugin, + elideAngularMetadataPlugin, + adjustTypeScriptEnumsPlugin, + ]; + + // All files except for the auto-generated module entry-point are considered side-effect + // free. For these we can add the pure-top level Babel plugin. This matches conceptually + // with what is done in the Angular CLI compilation pipeline, with respect to everything + // in this repo being an official side-effect free APF package. + if (!args.path.includes('autogenerated_module_index.mjs')) { + plugins.push(pureToplevelFunctionsPlugin); + } + + const {code} = await babel.transformAsync(content, { + filename: filePath, + filenameRelative: filePath, + plugins: plugins, + // Sourcemaps are generated inline so that ESBuild can process them. + sourceMaps: 'inline', + compact: false, + }); + + return {contents: code}; + }); + }, +}; + +export default { + // Note: We prefer `.mjs` here as this is the extension used by Angular APF packages. + resolveExtensions: ['.mjs', '.js'], + conditions: ['es2020', 'es2015'], + mainFields: ['fesm2020', 'es2020', 'es2015', 'module'], + format: 'iife', + // The majority of these options match with the ones the CLI sets: + // https://github.com/angular/angular-cli/blob/0d76bf04bca6e083865972b5398a32bbe9396e14/packages/angular_devkit/build_angular/src/webpack/plugins/javascript-optimizer-worker.ts#L133. + treeShaking: true, + minifyIdentifiers: true, + minifySyntax: true, + minifyWhitespace: false, + pure: ['forwardRef'], + legalComments: 'none', + // ESBuild requires the `define` option to take a string-based dictionary. + define: convertObjectToStringDictionary(GLOBAL_DEFS_FOR_TERSER_WITH_AOT), + plugins: [esbuildBabelOptimizePlugin], +}; + +/** Converts an object to a string dictionary. */ +function convertObjectToStringDictionary(value) { + return Object.entries(value).reduce((result, [propName, value]) => { + result[propName] = String(value); + return result; + }, {}); +} diff --git a/integration/size-test/index.bzl b/integration/size-test/index.bzl index 54ff065ed190..4f64f0f9dd2e 100644 --- a/integration/size-test/index.bzl +++ b/integration/size-test/index.bzl @@ -1,13 +1,13 @@ load("@npm//@angular/dev-infra-private/bazel:expand_template.bzl", "expand_template") load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary", "nodejs_test") load("@bazel_skylib//lib:paths.bzl", "paths") -load("@npm//@bazel/rollup:index.bzl", "rollup_bundle") +load("@npm//@bazel/esbuild:index.bzl", "esbuild") load("@npm//@bazel/terser:index.bzl", "terser_minified") load("//tools:defaults.bzl", "ng_module") """ Performs size measurements for the specified file. The file will be built as part - of a `ng_module` and then will be optimized with build-optimizer, rollup and Terser. + of a `ng_module` and then will be optimized with esbuild, babel and terser. The resulting size will be validated against a golden file to ensure that we don't regress in payload size, or that we can improvements to payload size. @@ -35,31 +35,31 @@ def size_test(name, file, deps): testonly = True, deps = [ "@npm//@angular/core", - "@npm//@angular/platform-browser-dynamic", + "@npm//@angular/platform-browser", ] + deps, ) - rollup_bundle( + esbuild( name = "%s_bundle" % name, - config_file = "//integration/size-test:rollup.config.js", + config = "//integration/size-test:esbuild_config", testonly = True, - entry_points = { - (index_file): "%s_bundled" % name, - }, + minify = True, + entry_point = index_file, deps = [ ":%s_lib" % name, - "@npm//@rollup/plugin-node-resolve", - "@npm//@angular-devkit/build-optimizer", ], + target = "es2020", + platform = "browser", # Link the workspace root so that files can be loaded from the workspace. link_workspace_root = True, - sourcemap = "false", + sourcemap = "external", + sources_content = True, ) terser_minified( testonly = True, name = "%s_bundle_min" % name, - src = ":%s_bundle" % name, + src = "%s_bundle" % name, config_file = "//integration/size-test:terser-config.json", sourcemap = False, ) diff --git a/integration/size-test/material-experimental/mdc-chips/basic.ts b/integration/size-test/material-experimental/mdc-chips/basic.ts index bf44c255ee35..53c77cbb5d60 100644 --- a/integration/size-test/material-experimental/mdc-chips/basic.ts +++ b/integration/size-test/material-experimental/mdc-chips/basic.ts @@ -1,5 +1,4 @@ import {Component, NgModule} from '@angular/core'; -import {platformBrowser} from '@angular/platform-browser'; import {MatChipsModule} from '@angular/material-experimental/mdc-chips'; /** @@ -21,5 +20,3 @@ export class TestComponent {} bootstrap: [TestComponent], }) export class AppModule {} - -platformBrowser().bootstrapModule(AppModule); diff --git a/integration/size-test/material/chips/basic.ts b/integration/size-test/material/chips/basic.ts index 41cd96ab7096..8dc2673f5968 100644 --- a/integration/size-test/material/chips/basic.ts +++ b/integration/size-test/material/chips/basic.ts @@ -1,5 +1,4 @@ import {Component, NgModule} from '@angular/core'; -import {platformBrowser} from '@angular/platform-browser'; import {MatChipsModule} from '@angular/material/chips'; /** @@ -21,5 +20,3 @@ export class TestComponent {} bootstrap: [TestComponent], }) export class AppModule {} - -platformBrowser().bootstrapModule(AppModule); diff --git a/integration/size-test/rollup.config.js b/integration/size-test/rollup.config.js deleted file mode 100644 index a3e283a6958b..000000000000 --- a/integration/size-test/rollup.config.js +++ /dev/null @@ -1,35 +0,0 @@ -const { - buildOptimizer, -} = require('@angular-devkit/build-optimizer/src/build-optimizer/build-optimizer'); -const {nodeResolve} = require('@rollup/plugin-node-resolve'); - -const buildOptimizerPlugin = { - name: 'build-optimizer', - transform: (content, id) => { - const {content: code, sourceMap: map} = buildOptimizer({ - content, - inputFilePath: id, - emitSourceMap: true, - // Always assume side-effect free source files, except for the autogenerated - // module index file. The bootstrap module call should not be eliminated. - isSideEffectFree: !id.endsWith('_autogenerated_module_index.mjs'), - isAngularCoreFile: false, - }); - if (!code) { - return null; - } - if (!map) { - throw new Error('No sourcemap produced by build optimizer'); - } - return {code, map}; - }, -}; - -module.exports = { - plugins: [ - buildOptimizerPlugin, - nodeResolve({ - mainFields: ['es2020', 'module'], - }), - ], -}; diff --git a/integration/size-test/terser-config.json b/integration/size-test/terser-config.json index 000fc5b4ef43..d0af1569ea37 100644 --- a/integration/size-test/terser-config.json +++ b/integration/size-test/terser-config.json @@ -1,17 +1,12 @@ { - "output": { - "ecma": "es2015", - "comments": false - }, + "ecma": "es2020", "compress": { - "global_defs": { - "ngDevMode": false, - "ngI18nClosureMode": false, - "ngJitMode": false - }, - "passes": 3, + "passes": 2, "pure_getters": true }, - "toplevel": true, - "mangle": true + "format": { + "ascii_only": true, + "wrap_func_args": false + }, + "mangle": false } diff --git a/integration/ts-compat/BUILD.bazel b/integration/ts-compat/BUILD.bazel index c0232d31eb76..bbf06e36993b 100644 --- a/integration/ts-compat/BUILD.bazel +++ b/integration/ts-compat/BUILD.bazel @@ -13,6 +13,7 @@ write_file( # List of TypeScript packages that we want to run the compatibility test against. # The list contains NPM module names that resolve to the desired TypeScript version. typescript_version_packages = [ + "typescript-4.4", "typescript", ] diff --git a/integration/ts-compat/helpers.mjs b/integration/ts-compat/helpers.mjs index c5ab89a8512f..685b520b6073 100644 --- a/integration/ts-compat/helpers.mjs +++ b/integration/ts-compat/helpers.mjs @@ -1,8 +1,8 @@ -import {join} from 'path'; -import {unlinkSync} from 'fs'; +import {join} from 'path'; +import {unlinkSync} from 'fs'; import shelljs from 'shelljs'; -import {fork} from 'child_process'; -import {getNpmPackagesFromRunfiles} from '../npm-packages-from-runfiles.mjs'; +import {fork} from 'child_process'; +import {getNpmPackagesFromRunfiles} from '../npm-packages-from-runfiles.mjs'; import {runfiles} from '@bazel/runfiles'; // Exit if any command fails. @@ -14,7 +14,8 @@ const npmPackages = getNpmPackagesFromRunfiles(); const nodeModulesDir = runfiles.resolve('npm/node_modules'); // Path to the generated file that imports all entry-points. const testFilePath = runfiles.resolveWorkspaceRelative( - 'integration/ts-compat/import-all-entry-points.ts'); + 'integration/ts-compat/import-all-entry-points.ts', +); /** * Runs the TypeScript compatibility test with the specified tsc binary. The @@ -40,17 +41,19 @@ export async function runTypeScriptCompatibilityTest(tscBinPath) { // Disables automatic type resolution. In non-sandbox environments, the node modules // are accessible and types could end up as part of the program. '--types', - '--lib', 'es2015,dom', + '--lib', + 'es2015,dom', // Ensures that `node_modules` can be resolved. By default, in sandbox environments the // node modules cannot be resolved because they are wrapped in the `npm/node_modules` folder - '--baseUrl', nodeModulesDir, - testFilePath + '--baseUrl', + nodeModulesDir, + testFilePath, ]; // Run `tsc` to compile the project. The stdout/stderr output is inherited, so that // warnings and errors are printed to the console. const tscProcess = fork(tscBinPath, tscArgs, {stdio: 'inherit'}); - tscProcess.on('exit', (exitCode) => { + tscProcess.on('exit', exitCode => { // Remove symlinks to keep a clean repository state. for (const {name} of npmPackages) { console.info(`Removing link for "@angular/${name}"..`); @@ -60,5 +63,4 @@ export async function runTypeScriptCompatibilityTest(tscBinPath) { exitCode === 0 ? resolve() : reject(); }); }); -}; - +} diff --git a/package.json b/package.json index 2b9d24835792..0807737269a6 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "test": "node ./scripts/run-component-tests.js", "test-local": "yarn -s test --local", "test-firefox": "yarn -s test --firefox", + "test-tsec": "yarn bazelisk test //... --build_tag_filters=tsec --test_tag_filters=tsec", "lint": "yarn -s tslint && yarn -s stylelint && yarn -s ownerslint && yarn -s ng-dev format changed --check", "e2e": "bazel test //src/... --build_tag_filters=e2e --test_tag_filters=e2e --build_tests_only", "deploy-dev-app": "node ./scripts/deploy-dev-app.js", @@ -32,7 +33,7 @@ "cherry-pick-patch": "ts-node --project tools/cherry-pick-patch/tsconfig.json tools/cherry-pick-patch/cherry-pick-patch.ts", "ownerslint": "ts-node --project scripts/tsconfig.json scripts/ownerslint.ts", "tslint": "tslint -c tslint.json --project ./tsconfig.json", - "stylelint": "stylelint \"src/**/*.+(css|scss)\" --config .stylelintrc.json --syntax scss", + "stylelint": "stylelint \"src/**/*.+(css|scss)\" --config .stylelintrc.json", "resync-caretaker-app": "ts-node --project scripts/tsconfig.json scripts/caretaking/resync-caretaker-app-prs.ts", "ts-circular-deps:check": "yarn -s ng-dev ts-circular-deps check --config ./src/circular-deps-test.conf.js", "ts-circular-deps:approve": "yarn -s ng-dev ts-circular-deps approve --config ./src/circular-deps-test.conf.js", @@ -40,194 +41,188 @@ "approve-api": "node ./scripts/approve-api-golden.js", "approve-size-tests": "node ./scripts/approve-size-golden.js", "integration-tests": "bazel test --test_tag_filters=-linker-integration-test --build_tests_only -- //integration/... -//integration/size-test/...", - "integration-tests:partial-ivy": "bazel test --partial_compilation --test_tag_filters=partial-compilation-integration,-firefox --build_tests_only -- //integration/... //src/...", "integration-tests:size-test": "bazel test //integration/size-test/...", + "test-linker-aot": "bazel test --partial_compilation --test_tag_filters=partial-compilation-integration,-firefox --build_tests_only -- //integration/... //src/...", + "test-linker-jit": "bazel test --partial_compilation --test_tag_filters=partial-compilation-integration,-firefox --build_tests_only --//tools:force_partial_jit_compilation=True -- //integration/... //src/...", "check-mdc-tests": "ts-node --project scripts/tsconfig.json scripts/check-mdc-tests.ts", "check-mdc-exports": "ts-node --project scripts/tsconfig.json scripts/check-mdc-exports.ts", "check-tooling-setup": "yarn tsc --project tools/tsconfig.json && yarn tsc --project .ng-dev/tsconfig.json", "tsc": "node ./node_modules/typescript/bin/tsc", "prepare": "husky install" }, - "version": "13.1.0-next.0", + "version": "14.0.0-next.4", "dependencies": { - "@angular/animations": "13.0.0-next.15", - "@angular/common": "13.0.0-next.15", - "@angular/compiler": "13.0.0-next.15", - "@angular/core": "13.0.0-next.15", - "@angular/forms": "13.0.0-next.15", - "@angular/platform-browser": "13.0.0-next.15", - "@types/google.maps": "^3.45.6", - "@types/youtube": "^0.0.42", - "core-js-bundle": "^3.8.2", - "material-components-web": "14.0.0-canary.c78ff0429.0", - "rxjs": "^6.5.3", - "rxjs-tslint-rules": "^4.33.1", - "tslib": "^2.3.0", - "zone.js": "~0.11.3" + "@angular/animations": "14.0.0-next.4", + "@angular/common": "14.0.0-next.4", + "@angular/compiler": "14.0.0-next.4", + "@angular/core": "14.0.0-next.4", + "@angular/forms": "14.0.0-next.4", + "@angular/platform-browser": "14.0.0-next.4", + "@types/google.maps": "^3.47.3", + "@types/youtube": "^0.0.46", + "material-components-web": "14.0.0-canary.9736ddce9.0", + "rxjs": "^6.6.7", + "rxjs-tslint-rules": "^4.34.8", + "tslib": "^2.3.1", + "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "13.0.0-next.7", - "@angular-devkit/build-optimizer": "0.1300.0-next.7", - "@angular-devkit/core": "13.0.0-next.7", - "@angular-devkit/schematics": "13.0.0-next.7", - "@angular/bazel": "13.0.0-next.15", - "@angular/cli": "13.0.0-next.7", - "@angular/compiler-cli": "13.0.0-next.15", - "@angular/dev-infra-private": "https://github.com/angular/dev-infra-private-builds.git#26d2e72c0311590097861c87319ba8acbd898f63", - "@angular/localize": "13.0.0-next.15", - "@angular/platform-browser-dynamic": "13.0.0-next.15", - "@angular/platform-server": "13.0.0-next.15", - "@angular/router": "13.0.0-next.15", - "@axe-core/webdriverjs": "^4.1.0", - "@babel/core": "^7.13.10", - "@babel/traverse": "^7.13.0", - "@bazel/bazelisk": "1.10.1", - "@bazel/buildifier": "4.2.1", - "@bazel/concatjs": "4.3.0", - "@bazel/esbuild": "4.3.0", + "@angular-devkit/build-angular": "14.0.0-next.3", + "@angular-devkit/core": "14.0.0-next.3", + "@angular-devkit/schematics": "14.0.0-next.3", + "@angular/bazel": "14.0.0-next.4", + "@angular/cli": "14.0.0-next.3", + "@angular/compiler-cli": "14.0.0-next.4", + "@angular/dev-infra-private": "https://github.com/angular/dev-infra-private-builds.git#3dda1f7073b1fda030268f83f436370fe349b23f", + "@angular/localize": "14.0.0-next.4", + "@angular/platform-browser-dynamic": "14.0.0-next.4", + "@angular/platform-server": "14.0.0-next.4", + "@angular/router": "14.0.0-next.4", + "@axe-core/webdriverjs": "^4.3.2", + "@babel/core": "^7.16.12", + "@bazel/bazelisk": "1.11.0", + "@bazel/buildifier": "4.2.5", + "@bazel/concatjs": "4.4.5", + "@bazel/esbuild": "4.4.5", "@bazel/ibazel": "0.15.10", - "@bazel/jasmine": "4.2.0", - "@bazel/protractor": "4.3.0", - "@bazel/rollup": "4.3.0", - "@bazel/runfiles": "4.3.0", - "@bazel/terser": "4.3.0", - "@bazel/typescript": "4.3.0", - "@firebase/app-types": "^0.6.1", - "@material/animation": "14.0.0-canary.c78ff0429.0", - "@material/auto-init": "14.0.0-canary.c78ff0429.0", - "@material/banner": "14.0.0-canary.c78ff0429.0", - "@material/base": "14.0.0-canary.c78ff0429.0", - "@material/button": "14.0.0-canary.c78ff0429.0", - "@material/card": "14.0.0-canary.c78ff0429.0", - "@material/checkbox": "14.0.0-canary.c78ff0429.0", - "@material/chips": "14.0.0-canary.c78ff0429.0", - "@material/circular-progress": "14.0.0-canary.c78ff0429.0", - "@material/data-table": "14.0.0-canary.c78ff0429.0", - "@material/density": "14.0.0-canary.c78ff0429.0", - "@material/dialog": "14.0.0-canary.c78ff0429.0", - "@material/dom": "14.0.0-canary.c78ff0429.0", - "@material/drawer": "14.0.0-canary.c78ff0429.0", - "@material/elevation": "14.0.0-canary.c78ff0429.0", - "@material/fab": "14.0.0-canary.c78ff0429.0", - "@material/feature-targeting": "14.0.0-canary.c78ff0429.0", - "@material/floating-label": "14.0.0-canary.c78ff0429.0", - "@material/form-field": "14.0.0-canary.c78ff0429.0", - "@material/icon-button": "14.0.0-canary.c78ff0429.0", - "@material/image-list": "14.0.0-canary.c78ff0429.0", - "@material/layout-grid": "14.0.0-canary.c78ff0429.0", - "@material/line-ripple": "14.0.0-canary.c78ff0429.0", - "@material/linear-progress": "14.0.0-canary.c78ff0429.0", - "@material/list": "14.0.0-canary.c78ff0429.0", - "@material/menu": "14.0.0-canary.c78ff0429.0", - "@material/menu-surface": "14.0.0-canary.c78ff0429.0", - "@material/notched-outline": "14.0.0-canary.c78ff0429.0", - "@material/radio": "14.0.0-canary.c78ff0429.0", - "@material/ripple": "14.0.0-canary.c78ff0429.0", - "@material/rtl": "14.0.0-canary.c78ff0429.0", - "@material/segmented-button": "14.0.0-canary.c78ff0429.0", - "@material/select": "14.0.0-canary.c78ff0429.0", - "@material/shape": "14.0.0-canary.c78ff0429.0", - "@material/slider": "14.0.0-canary.c78ff0429.0", - "@material/snackbar": "14.0.0-canary.c78ff0429.0", - "@material/switch": "14.0.0-canary.c78ff0429.0", - "@material/tab": "14.0.0-canary.c78ff0429.0", - "@material/tab-bar": "14.0.0-canary.c78ff0429.0", - "@material/tab-indicator": "14.0.0-canary.c78ff0429.0", - "@material/tab-scroller": "14.0.0-canary.c78ff0429.0", - "@material/textfield": "14.0.0-canary.c78ff0429.0", - "@material/theme": "14.0.0-canary.c78ff0429.0", - "@material/tooltip": "14.0.0-canary.c78ff0429.0", - "@material/top-app-bar": "14.0.0-canary.c78ff0429.0", - "@material/touch-target": "14.0.0-canary.c78ff0429.0", - "@material/typography": "14.0.0-canary.c78ff0429.0", + "@bazel/jasmine": "4.4.5", + "@bazel/protractor": "4.4.5", + "@bazel/rollup": "4.4.5", + "@bazel/runfiles": "4.4.5", + "@bazel/terser": "4.4.5", + "@bazel/typescript": "4.4.5", + "@firebase/app-types": "^0.7.0", + "@material/animation": "14.0.0-canary.9736ddce9.0", + "@material/auto-init": "14.0.0-canary.9736ddce9.0", + "@material/banner": "14.0.0-canary.9736ddce9.0", + "@material/base": "14.0.0-canary.9736ddce9.0", + "@material/button": "14.0.0-canary.9736ddce9.0", + "@material/card": "14.0.0-canary.9736ddce9.0", + "@material/checkbox": "14.0.0-canary.9736ddce9.0", + "@material/chips": "14.0.0-canary.9736ddce9.0", + "@material/circular-progress": "14.0.0-canary.9736ddce9.0", + "@material/data-table": "14.0.0-canary.9736ddce9.0", + "@material/density": "14.0.0-canary.9736ddce9.0", + "@material/dialog": "14.0.0-canary.9736ddce9.0", + "@material/dom": "14.0.0-canary.9736ddce9.0", + "@material/drawer": "14.0.0-canary.9736ddce9.0", + "@material/elevation": "14.0.0-canary.9736ddce9.0", + "@material/fab": "14.0.0-canary.9736ddce9.0", + "@material/feature-targeting": "14.0.0-canary.9736ddce9.0", + "@material/floating-label": "14.0.0-canary.9736ddce9.0", + "@material/form-field": "14.0.0-canary.9736ddce9.0", + "@material/icon-button": "14.0.0-canary.9736ddce9.0", + "@material/image-list": "14.0.0-canary.9736ddce9.0", + "@material/layout-grid": "14.0.0-canary.9736ddce9.0", + "@material/line-ripple": "14.0.0-canary.9736ddce9.0", + "@material/linear-progress": "14.0.0-canary.9736ddce9.0", + "@material/list": "14.0.0-canary.9736ddce9.0", + "@material/menu": "14.0.0-canary.9736ddce9.0", + "@material/menu-surface": "14.0.0-canary.9736ddce9.0", + "@material/notched-outline": "14.0.0-canary.9736ddce9.0", + "@material/radio": "14.0.0-canary.9736ddce9.0", + "@material/ripple": "14.0.0-canary.9736ddce9.0", + "@material/rtl": "14.0.0-canary.9736ddce9.0", + "@material/segmented-button": "14.0.0-canary.9736ddce9.0", + "@material/select": "14.0.0-canary.9736ddce9.0", + "@material/shape": "14.0.0-canary.9736ddce9.0", + "@material/slider": "14.0.0-canary.9736ddce9.0", + "@material/snackbar": "14.0.0-canary.9736ddce9.0", + "@material/switch": "14.0.0-canary.9736ddce9.0", + "@material/tab": "14.0.0-canary.9736ddce9.0", + "@material/tab-bar": "14.0.0-canary.9736ddce9.0", + "@material/tab-indicator": "14.0.0-canary.9736ddce9.0", + "@material/tab-scroller": "14.0.0-canary.9736ddce9.0", + "@material/textfield": "14.0.0-canary.9736ddce9.0", + "@material/theme": "14.0.0-canary.9736ddce9.0", + "@material/tooltip": "14.0.0-canary.9736ddce9.0", + "@material/top-app-bar": "14.0.0-canary.9736ddce9.0", + "@material/touch-target": "14.0.0-canary.9736ddce9.0", + "@material/typography": "14.0.0-canary.9736ddce9.0", "@octokit/rest": "18.3.5", - "@rollup/plugin-babel": "^5.3.0", - "@rollup/plugin-commonjs": "^20.0.0", - "@rollup/plugin-node-resolve": "^13.0.5", - "@schematics/angular": "13.0.0-next.7", - "@types/babel__core": "^7.1.16", - "@types/browser-sync": "^2.26.1", - "@types/fs-extra": "^9.0.5", - "@types/glob": "^7.1.3", - "@types/inquirer": "^7.3.1", - "@types/jasmine": "^3.6.0", + "@rollup/plugin-commonjs": "^21.0.0", + "@rollup/plugin-node-resolve": "^13.1.3", + "@schematics/angular": "14.0.0-next.3", + "@types/babel__core": "^7.1.18", + "@types/browser-sync": "^2.26.3", + "@types/fs-extra": "^9.0.13", + "@types/glob": "^7.2.0", + "@types/jasmine": "^3.10.3", "@types/luxon": "^1.27.0", "@types/marked": "^2.0.0", - "@types/merge2": "^0.3.30", - "@types/minimist": "^1.2.0", - "@types/node": "^14.14.22", + "@types/node": "^16.10.9", "@types/node-fetch": "^2.5.5", - "@types/parse5": "^6.0.0", - "@types/sass": "^1.16.0", + "@types/parse5": "^6.0.3", + "@types/sass": "^1.43.1", "@types/selenium-webdriver": "^3.0.17", - "@types/semver": "^7.3.4", - "@types/send": "^0.14.5", - "@types/shelljs": "^0.8.9", - "@types/stylelint": "^13.13.2", + "@types/semver": "^7.3.9", + "@types/send": "^0.17.1", + "@types/shelljs": "^0.8.11", "@types/yaml": "^1.9.7", - "autoprefixer": "^10.2.5", + "@types/yargs": "^17.0.8", + "autoprefixer": "^10.4.2", "browser-sync": "2.26.13", "chalk": "^4.1.0", "codelyzer": "^6.0.2", - "conventional-changelog": "^3.0.5", - "date-fns": "^2.23.0", - "dgeni": "^0.4.11", - "dgeni-packages": "^0.28.4", - "diff": "^5.0.0", - "esbuild": "^0.13.3", + "date-fns": "^2.28.0", + "dgeni": "^0.4.14", + "dgeni-packages": "^0.29.3", + "esbuild": "^0.14.14", "firebase-tools": "^9.2.1", "fs-extra": "^9.0.1", - "glob": "^7.1.2", + "glob": "^7.2.0", "highlight.js": "^10.7.0", - "husky": "^7.0.1", - "inquirer": "^8.0.0", + "husky": "^7.0.4", + "inquirer": "^8.2.0", "jasmine": "^3.6.0", "jasmine-core": "^3.6.0", "jsonc-parser": "^3.0.0", "kagekiri": "^1.4.1", - "karma": "^4.4.1", + "karma": "^6.3.12", "karma-browserstack-launcher": "^1.6.0", "karma-chrome-launcher": "^3.1.0", - "karma-firefox-launcher": "^2.0.0", + "karma-firefox-launcher": "^2.1.2", "karma-jasmine": "^4.0.1", - "karma-parallel": "^0.3.0", + "karma-parallel": "^0.3.1", "karma-requirejs": "^1.1.0", "karma-sauce-launcher": "^4.3.6", - "karma-sourcemap-loader": "^0.3.7", - "luxon": "^2.0.0", + "karma-sourcemap-loader": "^0.3.8", + "luxon": "^2.3.0", "madge": "^4.0.0", "marked": "^2.0.0", - "merge2": "^1.2.3", "minimatch": "^3.0.4", - "minimist": "^1.2.0", - "moment": "^2.18.1", + "moment": "^2.29.1", "node-fetch": "^2.6.0", "parse5": "^6.0.1", - "postcss": "^8.2.1", + "postcss": "^8.4.5", + "postcss-scss": "^4.0.3", "protractor": "^7.0.0", - "reflect-metadata": "^0.1.3", + "reflect-metadata": "^0.1.13", "requirejs": "^2.3.6", - "rollup": "^2.58.0", + "rollup": "^2.66.1", "rollup-plugin-sourcemaps": "^0.6.3", - "sass": "^1.41.0", + "sass": "^1.49.4", "selenium-webdriver": "^3.6.0", - "semver": "^7.3.4", - "send": "^0.17.1", - "shelljs": "^0.8.3", - "stylelint": "^13.13.1", - "terser": "^5.9.0", - "ts-node": "^10.2.1", + "semver": "^7.3.5", + "send": "^0.17.2", + "shelljs": "^0.8.5", + "stylelint": "^14.5.0", + "terser": "^5.10.0", + "ts-node": "^10.4.0", + "tsec": "0.2.1", "tsickle": "0.39.1", "tslint": "^6.1.3", "tsutils": "^3.21.0", - "typescript": "~4.4.2", + "typescript": "~4.5.5", + "typescript-4.4": "npm:typescript@4.4.2", "vrsource-tslint-rules": "6.0.0", - "yaml": "^1.10.0" + "yaml": "^1.10.2", + "yargs": "^17.3.1" }, "resolutions": { - "@angular/dev-infra-private/typescript": "~4.4.2", + "@angular/dev-infra-private/typescript": "~4.5.2", "browser-sync-client": "2.26.13", - "dgeni-packages/typescript": "4.4.2", + "dgeni-packages/typescript": "4.5.2", "**/https-proxy-agent": "5.0.0" } } diff --git a/packages.bzl b/packages.bzl index ff1a76f5169c..42a790b67650 100644 --- a/packages.bzl +++ b/packages.bzl @@ -1,10 +1,10 @@ # Each individual package uses a placeholder for the version of Angular to ensure they're # all in-sync. This map is passed to each ng_package rule to stamp out the appropriate # version for the placeholders. -ANGULAR_PACKAGE_VERSION = "^13.0.0-0 || ^14.0.0-0" -MDC_PACKAGE_VERSION = "14.0.0-canary.c78ff0429.0" +ANGULAR_PACKAGE_VERSION = "^14.0.0-0 || ^15.0.0" +MDC_PACKAGE_VERSION = "14.0.0-canary.9736ddce9.0" TSLIB_PACKAGE_VERSION = "^2.3.0" -RXJS_PACKAGE_VERSION = "^6.5.3 || ^7.0.0" +RXJS_PACKAGE_VERSION = "^6.5.3 || ^7.4.0" # Each placeholder is used to stamp versions during the build process, replacing the key with it's # value pair. These replacements occur during building of `npm_package` and `ng_package` stamping in diff --git a/renovate.json b/renovate.json new file mode 100644 index 000000000000..e379e73f5a80 --- /dev/null +++ b/renovate.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "automerge": false, + "baseBranches": ["master"], + "enabledManagers": ["npm", "bazel", "github-actions"], + "stopUpdatingLabel": "merge ready", + "labels": ["target: patch", "merge safe"], + "lockFileMaintenance": { + "enabled": true + }, + "pinDigests": true, + "prHourlyLimit": 2, + "rebaseWhen": "behind-base-branch", + "semanticCommits": "enabled", + "semanticCommitScope": "", + "semanticCommitType": "build", + "separateMajorMinor": false, + "ignorePaths": ["integration/**"], + "packageRules": [ + { + "matchPackagePatterns": ["*"], + "enabled": false + }, + { + "matchPackageNames": ["@angular/dev-infra-private", "angular/dev-infra"], + "groupName": "angular shared dev-infra code", + "enabled": true + }, + { + "matchPaths": [".github/workflows/scorecard.yml"], + "matchPackagePatterns": ["*"], + "groupName": "scorecard action dependencies", + "groupSlug": "scorecard-action" + } + ] +} diff --git a/.circleci/gcp_token b/scripts/bazel/gcp_token similarity index 100% rename from .circleci/gcp_token rename to scripts/bazel/gcp_token diff --git a/scripts/bazel/setup-remote-execution.sh b/scripts/bazel/setup-remote-execution.sh new file mode 100755 index 000000000000..87068416c12b --- /dev/null +++ b/scripts/bazel/setup-remote-execution.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# The script should immediately exit if any command in the script fails. +set -e + +if [[ -z "${GCP_DECRYPT_TOKEN}" ]]; then + echo "Please specify the \"GCP_DECRYPT_TOKEN\" environment variable when setting up remote " \ + "execution" + exit 1 +fi + +# Decode the GCP token that is needed to authenticate the Bazel remote execution. +openssl aes-256-cbc -d -in scripts/bazel/gcp_token -md md5 -k ${GCP_DECRYPT_TOKEN} \ + -out $HOME/.gcp_credentials + +# Set the "GOOGLE_APPLICATION_CREDENTIALS" environment variable. It should point to the GCP credentials +# file. Bazel will then automatically picks up the credentials from that variable. +# https://docs.bazel.build/versions/main/command-line-reference.html#flag--google_default_credentials +# https://cloud.google.com/docs/authentication/production. +if [[ ! -z "${BASH_ENV}" ]]; then + # CircleCI uses the `BASH_ENV` variable for environment variables. + echo "export GOOGLE_APPLICATION_CREDENTIALS=${HOME}/.gcp_credentials" >> ${BASH_ENV} +elif [[ ! -z "${GITHUB_ENV}" ]]; then + # Github actions use the `GITHUB_ENV` variable for environment variables. + echo "GOOGLE_APPLICATION_CREDENTIALS=${HOME}/.gcp_credentials" >> ${GITHUB_ENV} +fi + +# Update the project Bazel configuration to always use remote execution. +# Note: We add the remote config flag to the user bazelrc file that is not tracked +# by Git. This is necessary to avoid stamping builds with `.with-local-changes`. +echo "build --config=remote" >> .bazelrc.user diff --git a/scripts/breaking-changes.ts b/scripts/breaking-changes.ts index 21cf4a014975..0f5588847ca8 100644 --- a/scripts/breaking-changes.ts +++ b/scripts/breaking-changes.ts @@ -1,7 +1,7 @@ import {join, relative} from 'path'; import {readFileSync} from 'fs'; -import * as chalk from 'chalk'; -import * as ts from 'typescript'; +import chalk from 'chalk'; +import ts from 'typescript'; import * as tsutils from 'tsutils'; const projectRoot = process.cwd(); diff --git a/scripts/caretaking/firebase-functions/package.json b/scripts/caretaking/firebase-functions/package.json index 2c5e22cf87ff..6dfadaadef33 100644 --- a/scripts/caretaking/firebase-functions/package.json +++ b/scripts/caretaking/firebase-functions/package.json @@ -11,7 +11,7 @@ "firebase-functions": "^3.11.0" }, "devDependencies": { - "typescript": "^4.4.2", + "typescript": "^4.5.2", "firebase-tools": "^8.6.0" }, "private": true diff --git a/scripts/caretaking/firebase-functions/tsconfig.json b/scripts/caretaking/firebase-functions/tsconfig.json index e352dab0b2b8..9388ecac027b 100644 --- a/scripts/caretaking/firebase-functions/tsconfig.json +++ b/scripts/caretaking/firebase-functions/tsconfig.json @@ -11,7 +11,5 @@ "types": [] }, "compileOnSave": true, - "include": [ - "src" - ] + "include": ["src"] } diff --git a/scripts/caretaking/firebase-functions/yarn.lock b/scripts/caretaking/firebase-functions/yarn.lock index 5dcc7fa36017..254fceaab8d9 100644 --- a/scripts/caretaking/firebase-functions/yarn.lock +++ b/scripts/caretaking/firebase-functions/yarn.lock @@ -2,69 +2,115 @@ # yarn lockfile v1 +"@apidevtools/json-schema-ref-parser@^9.0.3": + version "9.0.9" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" + integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + call-me-maybe "^1.0.1" + js-yaml "^4.1.0" + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@dabh/diagnostics@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" - integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== dependencies: colorspace "1.1.x" enabled "2.0.x" kuler "^2.0.0" -"@firebase/app-types@0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.1.tgz#dcbd23030a71c0c74fc95d4a3f75ba81653850e9" - integrity sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg== +"@firebase/app-types@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.3.tgz#3f10514786aad846d74cd63cb693556309918f4b" + integrity sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw== -"@firebase/auth-interop-types@0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557" - integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw== +"@firebase/app-types@0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.7.0.tgz#c9e16d1b8bed1a991840b8d2a725fb58d0b5899f" + integrity sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg== -"@firebase/component@0.1.17": - version "0.1.17" - resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.17.tgz#2ce3e1aa060eccf0f06d20368ef9a32cf07c07be" - integrity sha512-/tN5iLcFp9rdpTfCJPfQ/o2ziGHlDxOzNx6XD2FoHlu4pG/PPGu+59iRfQXIowBGhxcTGD/l7oJhZEY/PVg0KQ== - dependencies: - "@firebase/util" "0.3.0" - tslib "^1.11.1" +"@firebase/auth-interop-types@0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz#5ce13fc1c527ad36f1bb1322c4492680a6cf4964" + integrity sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g== -"@firebase/database-types@0.5.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.5.1.tgz#fab2f3fb48eec374a9f435ed21e138635cb9b71c" - integrity sha512-onQxom1ZBYBJ648w/VNRzUewovEDAH7lvnrrpCd69ukkyrMk6rGEO/PQ9BcNEbhlNtukpsqRS0oNOFlHs0FaSA== +"@firebase/component@0.5.10": + version "0.5.10" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.5.10.tgz#eab8acfd9b1a2b6534a63cbcd7cbc7660c47663d" + integrity sha512-mzUpg6rsBbdQJvAdu1rNWabU3O7qdd+B+/ubE1b+pTbBKfw5ySRpRRE6sKcZ/oQuwLh0HHB6FRJHcylmI7jDzA== dependencies: - "@firebase/app-types" "0.6.1" + "@firebase/util" "1.4.3" + tslib "^2.1.0" -"@firebase/database@^0.6.0": - version "0.6.9" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.6.9.tgz#18a4bdc93b0b10c19a8ad4ff616bba196e5a16e0" - integrity sha512-+X2dNFDpcLEcDRdXp2Hgkf0RnNz3AOIC+Y7UFMQYadm9buB+snXomlnlkMzOj6o+Cp3V7GnpBrKKeeFqzF6wGQ== - dependencies: - "@firebase/auth-interop-types" "0.1.5" - "@firebase/component" "0.1.17" - "@firebase/database-types" "0.5.1" - "@firebase/logger" "0.2.6" - "@firebase/util" "0.3.0" - faye-websocket "0.11.3" - tslib "^1.11.1" - -"@firebase/logger@0.2.6": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989" - integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw== +"@firebase/database-compat@^0.1.1": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.1.5.tgz#df451ce6a8d0ea2ebc2b1c8017da7d773424371d" + integrity sha512-UVxkHL24sZfsjsjs+yiKIdYdrWXHrLxSFCYNdwNXDlTkAc0CWP9AAY3feLhBVpUKk+4Cj0I4sGnyIm2C1ltAYg== + dependencies: + "@firebase/component" "0.5.10" + "@firebase/database" "0.12.5" + "@firebase/database-types" "0.9.4" + "@firebase/logger" "0.3.2" + "@firebase/util" "1.4.3" + tslib "^2.1.0" + +"@firebase/database-types@0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.9.4.tgz#08b7da33d8dca8f5adab45bfb1cdf8654f2c6720" + integrity sha512-uAQuc6NUZ5Oh/cWZPeMValtcZ+4L1stgKOeYvz7mLn8+s03tnCDL2N47OLCHdntktVkhImQTwGNARgqhIhtNeA== + dependencies: + "@firebase/app-types" "0.7.0" + "@firebase/util" "1.4.3" + +"@firebase/database-types@^0.7.2": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.7.3.tgz#819f16dd4c767c864b460004458620f265a3f735" + integrity sha512-dSOJmhKQ0nL8O4EQMRNGpSExWCXeHtH57gGg0BfNAdWcKhC8/4Y+qfKLfWXzyHvrSecpLmO0SmAi/iK2D5fp5A== + dependencies: + "@firebase/app-types" "0.6.3" + +"@firebase/database@0.12.5": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.12.5.tgz#e7f8e8052c3038aff79633e5395c3cc5c30ca7b2" + integrity sha512-1Pd2jYqvqZI7SQWAiXbTZxmsOa29PyOaPiUtr8pkLSfLp4AeyMBegYAXCLYLW6BNhKn3zNKFkxYDxYHq4q+Ixg== + dependencies: + "@firebase/auth-interop-types" "0.1.6" + "@firebase/component" "0.5.10" + "@firebase/logger" "0.3.2" + "@firebase/util" "1.4.3" + faye-websocket "0.11.4" + tslib "^2.1.0" + +"@firebase/logger@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.3.2.tgz#5046ffa8295c577846d54b6ca95645a03809800e" + integrity sha512-lzLrcJp9QBWpo40OcOM9B8QEtBw2Fk1zOZQdvv+rWS6gKmhQBCEMc4SMABQfWdjsylBcDfniD1Q+fUX1dcBTXA== + dependencies: + tslib "^2.1.0" -"@firebase/util@0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.3.0.tgz#c3e938192cde4e1c6260aecaaf22103add2352f5" - integrity sha512-GTwC+FSLeCPc44/TXCDReNQ5FPRIS5cb8Gr1XcD1TgiNBOvmyx61Om2YLwHp2GnN++6m6xmwmXARm06HOukATA== +"@firebase/util@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.4.3.tgz#4358cf5f18beaa9c8a1e5a5fc4c7c44a4ccd4b7b" + integrity sha512-gQJl6r0a+MElLQEyU8Dx0kkC2coPj67f/zKZrGR7z7WpLgVanhaCUqEsptwpwoxi9RMFIaebleG+C9xxoARq+Q== dependencies: - tslib "^1.11.1" + tslib "^2.1.0" -"@google-cloud/common@^3.0.0": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-3.3.2.tgz#595ce85ebbcaa8b38519336bf6747e32e7706df7" - integrity sha512-W7JRLBEJWYtZQQuGQX06U6GBOSLrSrlvZxv6kGNwJtFrusu6AVgZltQ9Pajuz9Dh9aSXy9aTnBcyxn2/O0EGUw== +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@google-cloud/common@^3.8.1": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-3.9.0.tgz#d93e62d13e66edacfad1cd25b20fdbbc11d9f6dd" + integrity sha512-R9PfmCKbpOizvcLY+fz/TS4HdOQhvmf4EY4xEXvWnotGbGXujuTLJTJ2URy8BGT8TDxlh6gjjfEwjJ8McnNPIg== dependencies: "@google-cloud/projectify" "^2.0.0" "@google-cloud/promisify" "^2.0.0" @@ -72,18 +118,19 @@ duplexify "^4.1.1" ent "^2.2.0" extend "^3.0.2" - google-auth-library "^6.0.0" - retry-request "^4.1.1" + google-auth-library "^7.9.2" + retry-request "^4.2.2" teeny-request "^7.0.0" -"@google-cloud/firestore@^4.0.0": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-4.1.1.tgz#bd7478cbead2d516cc8d173339198180ad7f6e35" - integrity sha512-HFy2OEOrYJ7jYUir90Kg7+AWM6fsFoWYiHiryoseHfkL9//AnXm2sn0CiaOhsTsxphc69G8LBBvUj6ws0QDa7g== +"@google-cloud/firestore@^4.5.0": + version "4.15.1" + resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-4.15.1.tgz#ed764fc76823ce120e68fe8c27ef1edd0650cd93" + integrity sha512-2PWsCkEF1W02QbghSeRsNdYKN1qavrHBP3m72gPDMHQSYrGULOaTi7fSJquQmAtc4iPVB2/x6h80rdLHTATQtA== dependencies: fast-deep-equal "^3.1.1" functional-red-black-tree "^1.0.1" - google-gax "^2.2.0" + google-gax "^2.24.1" + protobufjs "^6.8.6" "@google-cloud/paginator@^2.0.0": version "2.0.3" @@ -93,10 +140,10 @@ arrify "^2.0.0" extend "^3.0.2" -"@google-cloud/paginator@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.3.tgz#23e0cd4c84a2f9332817dce572ab665c9eebefce" - integrity sha512-bu9AUf6TvDOtA6z5Su+kRLmMTNEA23QFjr41lH/7UpcEjGoLmXxEiJIU1hwfiiBi9c6IrgtpTsA89Zy7gjxw3w== +"@google-cloud/paginator@^3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" + integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ== dependencies: arrify "^2.0.0" extend "^3.0.2" @@ -112,9 +159,9 @@ integrity sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg== "@google-cloud/projectify@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65" - integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ== + version "2.1.1" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" + integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== "@google-cloud/promisify@^1.0.0": version "1.0.4" @@ -122,9 +169,9 @@ integrity sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ== "@google-cloud/promisify@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.2.tgz#81d654b4cb227c65c7ad2f9a7715262febd409ed" - integrity sha512-EvuabjzzZ9E2+OaYf+7P9OAiiwbTxKYL0oGLnREQd+Su2NTQBpomkdlkBowFvyWsaV0d1sSGxrKpSNcrhPqbxg== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" + integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== "@google-cloud/pubsub@^1.7.0": version "1.7.3" @@ -147,32 +194,32 @@ p-defer "^3.0.0" protobufjs "^6.8.1" -"@google-cloud/storage@^5.0.0": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.1.2.tgz#e80cc3922046facf3e278daa90f43cda31745cdc" - integrity sha512-j2blsBVv6Tt5Z7ff6kOSIg5zVQPdlcTQh/4zMb9h7xMj4ekwndQA60le8c1KEa+Y6SR3EM6ER2AvKYK53P7vdQ== +"@google-cloud/storage@^5.3.0": + version "5.18.2" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.18.2.tgz#0ded98a69323d253e6dd986650edc89b5c504bf9" + integrity sha512-hL/6epBF2uPt7YtJoOKI6mVxe6RsKBs7S8o2grE0bFGdQKSOngVHBcstH8jDw7aN2rXGouA2TfVTxH+VapY5cg== dependencies: - "@google-cloud/common" "^3.0.0" - "@google-cloud/paginator" "^3.0.0" + "@google-cloud/common" "^3.8.1" + "@google-cloud/paginator" "^3.0.7" "@google-cloud/promisify" "^2.0.0" + abort-controller "^3.0.0" arrify "^2.0.0" + async-retry "^1.3.3" compressible "^2.0.12" - concat-stream "^2.0.0" - date-and-time "^0.13.0" - duplexify "^3.5.0" + configstore "^5.0.0" + date-and-time "^2.0.0" + duplexify "^4.0.0" extend "^3.0.2" - gaxios "^3.0.0" - gcs-resumable-upload "^3.0.0" + gaxios "^4.0.0" + get-stream "^6.0.0" + google-auth-library "^7.0.0" hash-stream-validation "^0.2.2" - mime "^2.2.0" + mime "^3.0.0" mime-types "^2.0.8" - onetime "^5.1.0" p-limit "^3.0.1" pumpify "^2.0.0" - readable-stream "^3.4.0" snakeize "^0.1.0" - stream-events "^1.0.1" - through2 "^4.0.0" + stream-events "^1.0.4" xdg-basedir "^4.0.0" "@grpc/grpc-js@^0.6.12": @@ -182,28 +229,66 @@ dependencies: semver "^6.2.0" -"@grpc/grpc-js@~1.0.3": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.0.5.tgz#09948c0810e62828fdd61455b2eb13d7879888b0" - integrity sha512-Hm+xOiqAhcpT9RYM8lc15dbQD7aQurM7ZU8ulmulepiPlN7iwBXXwP3vSBUimoFoApRqz7pSIisXU8pZaCB4og== +"@grpc/grpc-js@~1.3.6": + version "1.3.8" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.8.tgz#0d7dce9de7aeb20702a28f0704e61b0bf34061c1" + integrity sha512-4qJqqn+CU/nBydz9ePJP+oa8dz0U42Ut/GejlbyaQ1xTkynCc+ndNHHnISlNeHawDsv4MOAyP3mV/EnDNUw2zA== dependencies: - semver "^6.2.0" + "@types/node" ">=12.12.47" -"@grpc/grpc-js@~1.1.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.1.3.tgz#0b91b166d744b6a43b00430dceff0f0ff88c98d5" - integrity sha512-HtOsk2YUofBcm1GkPqGzb6pwHhv+74eC2CUO229USIDKRtg30ycbZmqC+HdNtY3nHqoc9IgcRlntFgopyQoYCA== +"@grpc/grpc-js@~1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.5.5.tgz#f850a1bb7de8a1d0bb4821aabd3655d1c928d4c6" + integrity sha512-FTd27ItHlsSG/7hp62xgI9YnqSwRbHRSVmDVR8DwOoC+6t8JhHRXe2JL0U8N9GLc0jS0HrtEbO/KP5+G0ebjLQ== dependencies: - semver "^6.2.0" + "@grpc/proto-loader" "^0.6.4" + "@types/node" ">=12.12.47" "@grpc/proto-loader@^0.5.1": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.5.tgz#6725e7a1827bdf8e92e29fbf4e9ef0203c0906a9" - integrity sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ== + version "0.5.6" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.6.tgz#1dea4b8a6412b05e2d58514d507137b63a52a98d" + integrity sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ== dependencies: lodash.camelcase "^4.3.0" protobufjs "^6.8.6" +"@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4": + version "0.6.9" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7" + integrity sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg== + dependencies: + "@types/long" "^4.0.1" + lodash.camelcase "^4.3.0" + long "^4.0.0" + protobufjs "^6.10.0" + yargs "^16.2.0" + +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@panva/asn1.js@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" + integrity sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw== + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -257,42 +342,89 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@types/body-parser@*": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" "@types/node" "*" "@types/connect@*": - version "3.4.33" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" - integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" +"@types/cors@^2.8.5": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + "@types/duplexify@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.0.tgz#dfc82b64bd3a2168f5bd26444af165bf0237dcd8" - integrity sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A== + version "3.6.1" + resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.1.tgz#5685721cf7dc4a21b6f0e8a8efbec6b4d2fbafad" + integrity sha512-n0zoEj/fMdMOvqbHxmqnza/kXyoGgJmEpsXjpP+gEqE1Ye4yNqc7xWipKnUoMpWhMuzJQSfK2gMrwlElly7OGQ== dependencies: "@types/node" "*" -"@types/express-serve-static-core@*": - version "4.17.9" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz#2d7b34dcfd25ec663c25c85d76608f8b249667f1" - integrity sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA== +"@types/express-jwt@0.0.42": + version "0.0.42" + resolved "https://registry.yarnpkg.com/@types/express-jwt/-/express-jwt-0.0.42.tgz#4f04e1fadf9d18725950dc041808a4a4adf7f5ae" + integrity sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag== + dependencies: + "@types/express" "*" + "@types/express-unless" "*" + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.28" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" + integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" +"@types/express-unless@*": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@types/express-unless/-/express-unless-0.5.3.tgz#271f8603617445568ed0d6efe25a7d2f338544c1" + integrity sha512-TyPLQaF6w8UlWdv4gj8i46B+INBVzURBNRahCozCSXfsK2VTlL1wNyTlMKw817VHygBtlcl5jfnPadlydr06Yw== + dependencies: + "@types/express" "*" + +"@types/express@*": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/express@4.17.3": version "4.17.3" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.3.tgz#38e4458ce2067873b09a73908df488870c303bd9" @@ -303,54 +435,49 @@ "@types/serve-static" "*" "@types/fs-extra@^8.0.1": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068" - integrity sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w== + version "8.1.2" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.2.tgz#7125cc2e4bdd9bd2fc83005ffdb1d0ba00cca61f" + integrity sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg== dependencies: "@types/node" "*" +"@types/json-schema@^7.0.6": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "@types/long@^4.0.0", "@types/long@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== -"@types/mime@*": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a" - integrity sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q== - -"@types/node@*": - version "14.0.26" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.26.tgz#22a3b8a46510da8944b67bfc27df02c34a35331c" - integrity sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA== +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/node@^10.10.0": - version "10.17.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.28.tgz#0e36d718a29355ee51cec83b42d921299200f6d9" - integrity sha512-dzjES1Egb4c1a89C7lKwQh8pwjYmlOAG9dW1pBgxEk57tMrLnssOfEthz8kdkNaBd7lIqQx7APm5+mZ619IiCQ== - -"@types/node@^13.7.0": - version "13.13.15" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.15.tgz#fe1cc3aa465a3ea6858b793fd380b66c39919766" - integrity sha512-kwbcs0jySLxzLsa2nWUAGOd/s21WU1jebrEdtzhsj1D4Yps1EOuyI1Qcu+FD56dL7NRNIJtDDjcqIG22NwkgLw== +"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "17.0.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.19.tgz#726171367f404bfbe8512ba608a09ebad810c7e6" + integrity sha512-PfeQhvcMR4cPFVuYfBN4ifG7p9c+Dlh3yUZR6k+5yQK7wX3gDgVxBly4/WkBRs9x4dmcy1TVl08SY67wwtEvmA== "@types/qs@*": - version "6.9.4" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a" - integrity sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ== + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/serve-static@*": - version "1.13.5" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.5.tgz#3d25d941a18415d3ab092def846e135a08bbcf53" - integrity sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ== + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== dependencies: - "@types/express-serve-static-core" "*" - "@types/mime" "*" + "@types/mime" "^1" + "@types/node" "*" JSONStream@^1.2.1: version "1.3.5" @@ -360,6 +487,11 @@ JSONStream@^1.2.1: jsonparse "^1.2.0" through ">=2.2.7 <3" +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -367,37 +499,54 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" -agent-base@6: - version "6.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -ajv@^6.5.5: - version "6.12.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" - integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== +agentkeepalive@^4.1.3: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.12.2, ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - string-width "^2.0.0" + string-width "^4.1.0" ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" @@ -419,6 +568,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -431,19 +585,31 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + archiver-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" @@ -473,6 +639,14 @@ archiver@^3.0.0: tar-stream "^2.1.0" zip-stream "^2.1.2" +are-we-there-yet@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" + integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -480,6 +654,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + array-flatten@1.1.1, array-flatten@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -510,9 +689,9 @@ as-array@^2.0.0: integrity sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc= asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" @@ -526,7 +705,14 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -async@^1.3.0, async@^1.5.2: +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +async@^1.3.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= @@ -538,10 +724,10 @@ async@^2.6.2, async@^2.6.3: dependencies: lodash "^4.17.14" -async@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== +async@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== asynckit@^0.4.0: version "0.4.0" @@ -554,19 +740,19 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2, base64-js@^1.2.3, base64-js@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== basic-auth-connect@^1.0.0: version "1.0.0" @@ -588,19 +774,19 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" big-integer@^1.6.17: - version "1.6.48" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" - integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== bignumber.js@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + version "9.0.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== binary@~0.3.0: version "0.3.0" @@ -610,48 +796,54 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" -bl@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: buffer "^5.5.0" inherits "^2.0.4" readable-stream "^3.4.0" +blakejs@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" + integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== + bluebird@~3.4.1: version "3.4.7" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= -body-parser@1.19.0, body-parser@^1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +body-parser@1.19.2, body-parser@^1.18.3, body-parser@^1.19.0: + version "1.19.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "1.7.2" + http-errors "1.8.1" iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + qs "6.9.7" + raw-body "2.4.3" + type-is "~1.6.18" -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" brace-expansion@^1.1.7: version "1.1.11" @@ -678,23 +870,18 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - buffer-indexof-polyfill@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz#a9fb806ce8145d5428510ce72f278bb363a638bf" - integrity sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8= + version "1.0.2" + resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" + integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== buffer@^5.1.0, buffer@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + base64-js "^1.3.1" + ieee754 "^1.1.13" buffers@~0.1.1: version "0.1.1" @@ -706,20 +893,65 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -camelcase@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" -capture-stack-trace@^1.0.0: +call-me-maybe@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== cardinal@^2.1.1: version "2.1.1" @@ -761,10 +993,13 @@ chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -char-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081" - integrity sha1-5upnvSR+EHESmDt6sEee02KAAIE= +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" chardet@^0.7.0: version "0.7.0" @@ -772,29 +1007,34 @@ chardet@^0.7.0: integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chokidar@^3.0.2: - version "3.4.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1" - integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g== + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.4.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.2" -chownr@^1.1.1: +chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -ci-info@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== cjson@^0.3.1: version "0.3.3" @@ -803,10 +1043,15 @@ cjson@^0.3.1: dependencies: json-parse-helpfulerror "^1.0.3" -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-color@^1.2.0: version "1.4.0" @@ -828,14 +1073,14 @@ cli-cursor@^2.1.0: restore-cursor "^2.0.0" cli-spinners@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" - integrity sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= + version "0.3.11" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" + integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== dependencies: colors "1.0.3" @@ -844,60 +1089,83 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== +color-string@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" - integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" + color-convert "^1.9.3" + color-string "^1.6.0" colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - colorspace@1.1.x: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" - integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== dependencies: - color "3.0.x" + color "^3.1.3" text-hex "1.0.x" combined-stream@^1.0.6, combined-stream@~1.0.6: @@ -954,28 +1222,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - configstore@^5.0.0, configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -988,13 +1234,6 @@ configstore@^5.0.0, configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -connect-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/connect-query/-/connect-query-1.0.0.tgz#de44f577209da2404d1fc04692d1a4118e582119" - integrity sha1-3kT1dyCdokBNH8BGktGkEY5YIRk= - dependencies: - qs "~6.4.0" - connect@^3.6.2: version "3.7.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" @@ -1005,14 +1244,19 @@ connect@^3.6.2: parseurl "~1.3.3" utils-merge "1.0.1" -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" -content-type@~1.0.4: +content-type@^1.0.4, content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== @@ -1022,16 +1266,21 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cors@^2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -1055,13 +1304,6 @@ crc@^3.4.4: dependencies: buffer "^5.1.0" -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - cross-env@^5.1.3: version "5.2.1" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d" @@ -1069,15 +1311,6 @@ cross-env@^5.1.3: dependencies: cross-spawn "^6.0.5" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -1098,11 +1331,6 @@ cross-spawn@^7.0.1: shebang-command "^2.0.0" which "^2.0.1" -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -1130,10 +1358,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-and-time@^0.13.0: - version "0.13.1" - resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.13.1.tgz#d12ba07ac840d5b112dc4c83f8a03e8a51f78dd6" - integrity sha512-/Uge9DJAT+s+oAcDxtBhyR8+sKjUnZbYmyhbmWjTHNtX7B7oWD8YyYdeXcBRbwSj6hVvj+IQegJam7m7czhbFw== +date-and-time@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-2.1.2.tgz#5b0e71296bbdd66ff1ce0e456c77d40f1479db5a" + integrity sha512-YlQUtuqYGPR58I7jzx4TIjknN9wCKjwewiylIp+P4xMuO23mlZje3Qe9gYCKp/6ncbeNpU8ZnPdhQNZnVphveQ== debug@2.6.9: version "2.6.9" @@ -1142,36 +1370,48 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: - ms "^2.1.1" + ms "2.1.2" -debug@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: - ms "^2.1.1" + ms "2.1.2" debug@^3.1.1: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +deep-freeze@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= + deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== defaults@^1.0.3: version "1.0.3" @@ -1180,44 +1420,52 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@~2.0.0: +depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -destroy@^1.0.4, destroy@~1.0.4: +depd@^1.1.2, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.1.0.tgz#b77ae22e472d85437141319d32ae40b344dff38a" + integrity sha512-R5QZrOXxSs0JDUIU/VANvRJlQVMts9C0L76HToQdPdlftfZCE7W6dyH0G4GZ5UW9fRqUOhAoCE2aGekuu+3HjQ== + +destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= dicer@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" - integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA== - dependencies: - streamsearch "0.1.2" - -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + version "0.3.1" + resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.1.tgz#abf28921e3475bc5e801e74e0159fd94f927ba97" + integrity sha512-ObioMtXnmjYs3aRtpIJt9rgQSPCIhKVkFPip+E9GUDyWl8N435znUxK/JfNwGZJ2wnn5JKQ7Ly3vOK5Q5dylGA== dependencies: - is-obj "^1.0.0" + streamsearch "^1.1.0" dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" @@ -1238,7 +1486,7 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexify@^3.5.0, duplexify@^3.6.0: +duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== @@ -1248,10 +1496,10 @@ duplexify@^3.5.0, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" -duplexify@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" - integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== +duplexify@^4.0.0, duplexify@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== dependencies: end-of-stream "^1.4.1" inherits "^2.0.3" @@ -1278,6 +1526,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + enabled@2.0.x: version "2.0.0" resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" @@ -1288,6 +1541,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -1300,7 +1560,17 @@ ent@^2.2.0: resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= -es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -1326,7 +1596,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.2: +es6-weak-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== @@ -1336,6 +1606,16 @@ es6-weak-map@^2.0.2: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1369,18 +1649,39 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" +events-listener@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/events-listener/-/events-listener-1.1.0.tgz#dd49b4628480eba58fde31b870ee346b3990b349" + integrity sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g== + +exegesis-express@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/exegesis-express/-/exegesis-express-2.0.1.tgz#f162cdd68ee93dc14d832b02b1dbeab053697ee9" + integrity sha512-8ORl1YRygYGPdR+zcClMqzaU+JQuvdNIw/s0RNwYluxNecEHkDEcXFmO6A5T79p7e48KI8iXJYt6KIn4Z9z4bg== + dependencies: + exegesis "^2.5.7" + +exegesis@^2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/exegesis/-/exegesis-2.5.7.tgz#232c4b01361bc2bf0d9d4c07549c479e77f2b7a3" + integrity sha512-Y0gEY3hgoLa80aMUm8rhhlIW3/KWo4uqN5hKJqok2GLh3maZjRLRC+p0gj33Jw3upAOKOXeRgScT5rtRoMyxwQ== + dependencies: + "@apidevtools/json-schema-ref-parser" "^9.0.3" + ajv "^6.12.2" + body-parser "^1.18.3" + content-type "^1.0.4" + deep-freeze "0.0.1" + events-listener "^1.1.0" + glob "^7.1.3" + json-ptr "^2.2.0" + json-schema-traverse "^1.0.0" + lodash "^4.17.11" + openapi3-ts "^2.0.1" + promise-breaker "^5.0.0" + pump "^3.0.0" + qs "^6.6.0" + raw-body "^2.3.3" + semver "^7.0.0" exit-code@^1.0.2: version "1.0.2" @@ -1388,16 +1689,16 @@ exit-code@^1.0.2: integrity sha1-zhZYEcnxF69qX4gpQLlq5/muzDQ= express@^4.16.4, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + version "4.17.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.19.2" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.4.2" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" @@ -1411,24 +1712,24 @@ express@^4.16.4, express@^4.17.1: on-finished "~2.3.0" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.9.7" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" statuses "~1.5.0" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== dependencies: - type "^2.0.0" + type "^2.5.0" extend@^3.0.2, extend@~3.0.2: version "3.0.2" @@ -1450,9 +1751,9 @@ extsprintf@1.3.0: integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^3.1.1: version "3.1.3" @@ -1464,12 +1765,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-safe-stringify@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== - -fast-text-encoding@^1.0.0: +fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53" integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig== @@ -1481,17 +1777,17 @@ fast-url-parser@^1.1.3: dependencies: punycode "^1.3.2" -faye-websocket@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== +faye-websocket@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" fecha@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" - integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== + version "4.2.1" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" + integrity sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q== figures@^2.0.0: version "2.0.0" @@ -1526,36 +1822,40 @@ finalhandler@1.1.2, finalhandler@~1.1.2: unpipe "~1.0.0" firebase-admin@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.0.0.tgz#d68551a33e9c14252453743cd6ef9e5ad3251816" - integrity sha512-LP4xD+JxfEZ+e1kBIKT2kbDa9UFChwgL4488NexvTjhynNcJsKCGmawl2FMvZ2UPwXKgWBpLXJ07cYp6gk5lcw== + version "9.12.0" + resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.12.0.tgz#d7e889e97c9c31610efbcd131bb6d06a783af757" + integrity sha512-AtA7OH5RbIFGoc0gZOQgaYC6cdjdhZv4w3XgWoupkPKO1HY+0GzixOuXDa75kFeoVyhIyo4PkLg/GAC1dC1P6w== dependencies: - "@firebase/database" "^0.6.0" - "@types/node" "^10.10.0" + "@firebase/database-compat" "^0.1.1" + "@firebase/database-types" "^0.7.2" + "@types/node" ">=12.12.47" dicer "^0.3.0" jsonwebtoken "^8.5.1" - node-forge "^0.9.1" + jwks-rsa "^2.0.2" + node-forge "^0.10.0" optionalDependencies: - "@google-cloud/firestore" "^4.0.0" - "@google-cloud/storage" "^5.0.0" + "@google-cloud/firestore" "^4.5.0" + "@google-cloud/storage" "^5.3.0" firebase-functions@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-3.11.0.tgz#92f5a6af6a10641da6dc9b41b29974658b621a7b" - integrity sha512-i1uMhZ/M6i5SCI3ulKo7EWX0/LD+I5o6N+sk0HbOWfzyWfOl0iJTvQkR3BVDcjrlhPVC4xG1bDTLxd+DTkLqaw== + version "3.18.1" + resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-3.18.1.tgz#810146e966091c3b85e112a379d55d3e33b7fa68" + integrity sha512-sPYZc9U/o0MjrpL3yz0pmoviJ1SkDoMV54X1rT/O2g0JTbV9eoQZsZuRoIUeaY3gmWFcMnN5TbJsPQUVh+omtw== dependencies: + "@types/cors" "^2.8.5" "@types/express" "4.17.3" cors "^2.8.5" express "^4.17.1" lodash "^4.17.14" firebase-tools@^8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-8.6.0.tgz#c18533131170d2e9d069d50ed83ff62d49209e50" - integrity sha512-8w4vIe7LIMltnxqUyYeZ55YPA+fvmIh0P75ML+b8lt5XT0C1MIs/y2ft4Zh6SetKLTyB3wjz0btdf6MeUkRsbQ== + version "8.20.0" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-8.20.0.tgz#0c7b69a611f584c44ca4cbf9e3003b18ebfd17be" + integrity sha512-FovOHkPEvdT31EqxDzjJkaJIYLrc+0GZwQ3ixT1WI3yF3o4TG8MCVo+QidmcNqyX0XZnI3/5sF3dpxXQ/HzaVw== dependencies: "@google-cloud/pubsub" "^1.7.0" JSONStream "^1.2.1" + abort-controller "^3.0.0" archiver "^3.0.0" body-parser "^1.19.0" chokidar "^3.0.2" @@ -1568,6 +1868,7 @@ firebase-tools@^8.6.0: cross-spawn "^7.0.1" csv-streamify "^3.0.4" dotenv "^6.1.0" + exegesis-express "^2.0.0" exit-code "^1.0.2" express "^4.16.4" filesize "^3.1.3" @@ -1580,11 +1881,12 @@ firebase-tools@^8.6.0: jsonschema "^1.0.2" jsonwebtoken "^8.2.1" leven "^3.1.0" - lodash "^4.17.14" + lodash "^4.17.19" marked "^0.7.0" marked-terminal "^3.3.0" minimatch "^3.0.4" morgan "^1.10.0" + node-fetch "^2.6.1" open "^6.3.0" ora "^3.4.0" plist "^3.0.1" @@ -1593,14 +1895,15 @@ firebase-tools@^8.6.0: request "^2.87.0" rimraf "^3.0.0" semver "^5.7.1" - superstatic "^6.0.1" + superstatic "^7.1.0" tar "^4.3.0" tcp-port-used "^1.0.1" tmp "0.0.33" triple-beam "^1.3.0" + tweetsodium "0.0.5" universal-analytics "^0.4.16" unzipper "^0.10.10" - update-notifier "^2.5.0" + update-notifier "^4.1.0" uuid "^3.0.0" winston "^3.0.0" ws "^7.2.3" @@ -1634,10 +1937,10 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fresh@0.5.2: version "0.5.2" @@ -1659,33 +1962,38 @@ fs-extra@^0.23.1: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" -fs-minipass@^1.2.5: +fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== fstream@^1.0.12: version "1.0.12" @@ -1697,11 +2005,31 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gauge@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.1.tgz#82984bc08c90357d60b0a46c03a296beb1affec4" + integrity sha512-zJ4jePUHR8cceduZ53b6temRalyGpkC2Kc2r3ecNphmL+uWNoJ3YcOcUjpbG6WwoE/Ef6/+aEZz63neI2WIa1Q== + dependencies: + ansi-regex "^5.0.1" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gaxios@^2.1.0: version "2.3.4" resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-2.3.4.tgz#eea99353f341c270c5f3c29fc46b8ead56f0a173" @@ -1713,16 +2041,16 @@ gaxios@^2.1.0: is-stream "^2.0.0" node-fetch "^2.3.0" -gaxios@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-3.0.4.tgz#4714fbb003d6f6f08a297f772284463e041e04db" - integrity sha512-97NmFuMETFQh6gqPUxkqjxRMjmY8aRKRMphIkgO/b90AbCt5wAVuXsp8oWjIXlLN2pIK/fsXD8edcM7ULkFMLg== +gaxios@^4.0.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.3.2.tgz#845827c2dc25a0213c8ab4155c7a28910f5be83f" + integrity sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q== dependencies: abort-controller "^3.0.0" extend "^3.0.2" https-proxy-agent "^5.0.0" is-stream "^2.0.0" - node-fetch "^2.3.0" + node-fetch "^2.6.1" gcp-metadata@^3.4.0: version "3.5.0" @@ -1732,31 +2060,46 @@ gcp-metadata@^3.4.0: gaxios "^2.1.0" json-bigint "^0.3.0" -gcp-metadata@^4.1.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.1.4.tgz#3adadb9158c716c325849ee893741721a3c09e7e" - integrity sha512-5J/GIH0yWt/56R3dNaNWPGQ/zXsZOddYECfJaqxFWgrZ9HC2Kvc5vl9upOgUUHKzURjAVf2N+f6tEJiojqXUuA== +gcp-metadata@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" + integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== dependencies: - gaxios "^3.0.0" + gaxios "^4.0.0" json-bigint "^1.0.0" -gcs-resumable-upload@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-3.1.1.tgz#67c766a0555d6a352f9651b7603337207167d0de" - integrity sha512-RS1osvAicj9+MjCc6jAcVL1Pt3tg7NK2C2gXM5nqD1Gs0klF2kj5nnAFSBy97JrtslMIQzpb7iSuxaG8rFWd2A== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== dependencies: - abort-controller "^3.0.0" - configstore "^5.0.0" - extend "^3.0.2" - gaxios "^3.0.0" - google-auth-library "^6.0.0" - pumpify "^2.0.0" - stream-events "^1.0.4" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== getpass@^0.1.1: version "0.1.7" @@ -1765,10 +2108,10 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" @@ -1787,9 +2130,9 @@ glob-slasher@^1.0.1: toxic "^1.0.0" glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1798,12 +2141,12 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= +global-dirs@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" + integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== dependencies: - ini "^1.3.4" + ini "1.3.7" google-auth-library@^5.0.0, google-auth-library@^5.5.0: version "5.10.1" @@ -1820,27 +2163,27 @@ google-auth-library@^5.0.0, google-auth-library@^5.5.0: jws "^4.0.0" lru-cache "^5.0.0" -google-auth-library@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.0.5.tgz#f7266859dbb02dadf92af479272fb1e344635cb5" - integrity sha512-Wj31lfTm2yR4g3WfOOB1Am1tt478Xq9OvzTPQJi17tn/I9R5IcsxjANBsE93nYmxYxtwDedhOdIb8l3vSPG49Q== +google-auth-library@^7.0.0, google-auth-library@^7.6.1, google-auth-library@^7.9.2: + version "7.12.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" + integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== dependencies: arrify "^2.0.0" base64-js "^1.3.0" ecdsa-sig-formatter "^1.0.11" fast-text-encoding "^1.0.0" - gaxios "^3.0.0" - gcp-metadata "^4.1.0" - gtoken "^5.0.0" + gaxios "^4.0.0" + gcp-metadata "^4.2.0" + gtoken "^5.0.4" jws "^4.0.0" lru-cache "^6.0.0" google-gax@^1.14.2: - version "1.15.3" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.15.3.tgz#e88cdcbbd19c7d88cc5fd7d7b932c4d1979a5aca" - integrity sha512-3JKJCRumNm3x2EksUTw4P1Rad43FTpqrtW9jzpf3xSMYXx+ogaqTM1vGo7VixHB4xkAyATXVIa3OcNSh8H9zsQ== + version "1.15.4" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-1.15.4.tgz#dc37dea2a8c58717cd50db40f01b21cbf9da7739" + integrity sha512-Wzl43ueWEKNsLcMJ33sPps179nD7wn6Jcl/P+ZQNS+HxdCJcoQEgJe3AmulsJnatwjBE3pVPIE4HFJNhpRGvUw== dependencies: - "@grpc/grpc-js" "~1.0.3" + "@grpc/grpc-js" "~1.3.6" "@grpc/proto-loader" "^0.5.1" "@types/fs-extra" "^8.0.1" "@types/long" "^4.0.0" @@ -1856,25 +2199,24 @@ google-gax@^1.14.2: semver "^6.0.0" walkdir "^0.4.0" -google-gax@^2.2.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.6.3.tgz#81510dfd44f7827937d0b81ae6d9f96d85a247f1" - integrity sha512-hqY6H53Qmaku8rE8dGAM89RSUc1nc4JYG81whrVJRmDQZ2jhJK8AwCd3pJQ3V48rgp9xiWBzBQsyeaxnb3Eikw== +google-gax@^2.24.1: + version "2.29.7" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.29.7.tgz#d238dad424f40f6809205dee3c7d4d6e61511e8b" + integrity sha512-yC0Q4OqX6s081jV72Idt9sxZnuRHOjg0SR0FFH15gT3LDE2u/78xqLjZwa3VuprBvaOLM29jzU19Vv4I7E8ETQ== dependencies: - "@grpc/grpc-js" "~1.1.1" - "@grpc/proto-loader" "^0.5.1" + "@grpc/grpc-js" "~1.5.0" + "@grpc/proto-loader" "^0.6.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" - duplexify "^3.6.0" - google-auth-library "^6.0.0" + duplexify "^4.0.0" + fast-text-encoding "^1.0.3" + google-auth-library "^7.6.1" is-stream-ended "^0.1.4" - lodash.at "^4.6.0" - lodash.has "^4.5.2" - node-fetch "^2.6.0" - protobufjs "^6.9.0" + node-fetch "^2.6.1" + object-hash "^2.1.1" + proto3-json-serializer "^0.1.8" + protobufjs "6.11.2" retry-request "^4.0.0" - semver "^6.0.0" - walkdir "^0.4.0" google-gax@~1.12.0: version "1.12.0" @@ -1897,40 +2239,40 @@ google-gax@~1.12.0: walkdir "^0.4.0" google-p12-pem@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-2.0.4.tgz#036462394e266472632a78b685f0cc3df4ef337b" - integrity sha512-S4blHBQWZRnEW44OcR7TL9WR+QCqByRvhNDZ/uuQfpxywfupikf/miba8js1jZi6ZOGv5slgSuoshCWh6EMDzg== + version "2.0.5" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-2.0.5.tgz#b1c44164d567ae894f7a19b4ff362a06be5b793b" + integrity sha512-7RLkxwSsMsYh9wQ5Vb2zRtkAHvqPvfoMGag+nugl1noYO7gf0844Yr9TIFA5NEBMAeVt2Z+Imu7CQMp3oNatzQ== dependencies: - node-forge "^0.9.0" + node-forge "^0.10.0" -google-p12-pem@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.0.2.tgz#12d443994b6f4cd8c9e4ac479f2f18d4694cbdb8" - integrity sha512-tbjzndQvSIHGBLzHnhDs3cL4RBjLbLXc2pYvGH+imGVu5b4RMAttUTdnmW2UH0t11QeBTXZ7wlXPS7hrypO/tg== +google-p12-pem@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.3.tgz#5497998798ee86c2fc1f4bb1f92b7729baf37537" + integrity sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ== dependencies: - node-forge "^0.9.0" + node-forge "^1.0.0" -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: - create-error-class "^3.0.0" + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.6: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== gtoken@^4.1.0: version "4.1.4" @@ -1942,15 +2284,14 @@ gtoken@^4.1.0: jws "^4.0.0" mime "^2.2.0" -gtoken@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.0.3.tgz#b76ef8e9a2fed6fef165e47f7d05b60c498e4d05" - integrity sha512-Nyd1wZCMRc2dj/mAD0LlfQLcAO06uKdpKJXvK85SGrF5+5+Bpfil9u/2aw35ltvEHjvl0h5FMKN5knEU+9JrOg== +gtoken@^5.0.4: + version "5.3.2" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" + integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== dependencies: - gaxios "^3.0.0" - google-p12-pem "^3.0.0" + gaxios "^4.0.0" + google-p12-pem "^3.1.3" jws "^4.0.0" - mime "^2.2.0" har-schema@^2.0.0: version "2.0.0" @@ -1958,11 +2299,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -1982,46 +2323,76 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -hash-stream-validation@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/hash-stream-validation/-/hash-stream-validation-0.2.3.tgz#44e3479d1767c4f1d6924cc2da61eca08ebba8af" - integrity sha512-OEohGLoUOh+bwsIpHpdvhIXFyRGjeLqJbT8Yc5QTZPbRM7LKywagTQxnX/6mghLDOrD9YGz88hy5mLN2eKflYQ== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - through2 "^2.0.0" + function-bind "^1.1.1" + +hash-stream-validation@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz#ee68b41bf822f7f44db1142ec28ba9ee7ccb7512" + integrity sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ== home-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/home-dir/-/home-dir-1.0.0.tgz#2917eb44bdc9072ceda942579543847e3017fe4e" integrity sha1-KRfrRL3JByztqUJXlUOEfjAX/k4= -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== dependencies: depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" + inherits "2.0.4" + setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + toidentifier "1.0.1" -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== -http-proxy-agent@^4.0.0: +http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== @@ -2030,6 +2401,15 @@ http-proxy-agent@^4.0.0: agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -2047,6 +2427,13 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -2054,10 +2441,17 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== import-lazy@^2.1.0: version "2.1.0" @@ -2069,6 +2463,16 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2082,12 +2486,12 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" + integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== -ini@^1.3.4, ini@~1.3.0: +ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -2111,10 +2515,20 @@ inquirer@~6.3.1: strip-ansi "^5.1.0" through "^2.3.6" -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= +install-artifact-from-github@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.0.tgz#cab6ff821976b8a35b0c079da19a727c90381a40" + integrity sha512-iT8v1GwOAX0pPXifF/5ihnMhHOCo3OeK7z3TQa4CtSNCIg8k0UxqBEk9jRwz8OP68hHXvJ2gxRa89KYHtBkqGA== + +ip-regex@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= ipaddr.js@1.9.1: version "1.9.1" @@ -2133,12 +2547,12 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-ci@^1.0.10: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" - integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - ci-info "^1.5.0" + ci-info "^2.0.0" is-extglob@^2.1.1: version "2.1.1" @@ -2150,84 +2564,72 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= +is-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" + global-dirs "^2.0.1" + is-path-inside "^3.0.1" -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - is-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" +is-path-inside@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-promise@^2.1: +is-promise@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - is-stream-ended@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda" integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw== -is-stream@^1.0.0, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-url@^1.2.2: +is-url@^1.2.2, is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== @@ -2237,14 +2639,19 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.1.tgz#8ac355644840921ce435d94f05d3a94634d3481a" - integrity sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA== +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +is2@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.7.tgz#d084e10cab3bd45d6c9dfde7a48599fcbb93fcac" + integrity sha512-4vBQoURAXC6hnLFxD4VW7uc04XiwTTl/8ydYJxKvPwkWQrSjInkuM5VZVg6BGr1/natq69zDuvO9lGpLClJqvA== dependencies: deep-is "^0.1.3" - ip-regex "^2.1.0" - is-url "^1.2.2" + ip-regex "^4.1.0" + is-url "^1.2.4" isarray@0.0.1: version "0.0.1" @@ -2280,14 +2687,28 @@ join-path@^1.1.1: url-join "0.0.1" valid-url "^1" +jose@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/jose/-/jose-2.0.5.tgz#29746a18d9fff7dcf9d5d2a6f62cb0c7cd27abd3" + integrity sha512-BAiDNeDKTMgk4tvD0BbxJ8xHEHBZgpeRZ1zGPPsitSyMgjoMWiLGYAE7H7NpP5h0lPppQajQs871E8NHUrzVPA== + dependencies: + "@panva/asn1.js" "^1.0.0" + js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -2307,6 +2728,11 @@ json-bigint@^1.0.0: dependencies: bignumber.js "^9.0.0" +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-helpfulerror@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" @@ -2314,15 +2740,27 @@ json-parse-helpfulerror@^1.0.3: dependencies: jju "^1.1.0" +json-ptr@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json-ptr/-/json-ptr-2.2.0.tgz#a4de4ed638cb23ae4cd4b51f8bf972a1c2293f1e" + integrity sha512-w9f6/zhz4kykltXMG7MLJWMajxiPj0q+uzQPR1cggNAE/sXoq/C5vjUb/7QNcC3rJsVIIKy37ALTXy1O+3c8QQ== + dependencies: + tslib "^2.2.0" + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stringify-safe@~5.0.1: version "5.0.1" @@ -2336,15 +2774,22 @@ jsonfile@^2.1.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsonschema@^1.0.2: - version "1.2.6" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.6.tgz#52b0a8e9dc06bbae7295249d03e4b9faee8a0c0b" - integrity sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2" + integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== jsonwebtoken@^8.2.1, jsonwebtoken@^8.5.1: version "8.5.1" @@ -2363,13 +2808,13 @@ jsonwebtoken@^8.2.1, jsonwebtoken@^8.5.1: semver "^5.6.0" jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" jwa@^1.4.1: @@ -2390,6 +2835,17 @@ jwa@^2.0.0: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" +jwks-rsa@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-2.0.5.tgz#5dc911cdade803a149b7d4d41404a7c1bf2c221a" + integrity sha512-fliHfsiBRzEU0nXzSvwnh0hynzGB0WihF+CinKbSRlaqRxbqqKf2xbBPgwc8mzf18/WgwlG8e5eTpfSTBcU4DQ== + dependencies: + "@types/express-jwt" "0.0.42" + debug "^4.3.2" + jose "^2.0.5" + limiter "^1.1.5" + lru-memoizer "^2.1.4" + jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" @@ -2406,29 +2862,29 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" kuler@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: - package-json "^4.0.0" + package-json "^6.3.0" lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== dependencies: readable-stream "^2.0.5" @@ -2437,6 +2893,11 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +limiter@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" + integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== + listenercount@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" @@ -2469,6 +2930,11 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -2560,11 +3026,6 @@ lodash.snakecase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - lodash.union@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" @@ -2577,7 +3038,7 @@ lodash.values@^2.4.1: dependencies: lodash.keys "~2.4.1" -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.4, lodash@^4.17.5: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.5: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2589,15 +3050,15 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -logform@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2" - integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg== +logform@^2.3.2, logform@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe" + integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw== dependencies: - colors "^1.2.1" - fast-safe-stringify "^2.0.4" + "@colors/colors" "1.5.0" fecha "^4.2.0" ms "^2.1.1" + safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" long@^4.0.0: @@ -2605,18 +3066,15 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -lowercase-keys@^1.0.0: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lru-cache@^5.0.0: version "5.1.1" @@ -2632,20 +3090,29 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-queue@0.1: +lru-cache@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + integrity sha1-HRdnnAac2l0ECZGgnbwsDbN35V4= + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +lru-memoizer@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/lru-memoizer/-/lru-memoizer-2.1.4.tgz#b864d92b557f00b1eeb322156a0409cb06dafac6" + integrity sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ== + dependencies: + lodash.clonedeep "^4.5.0" + lru-cache "~4.0.0" + +lru-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= dependencies: es5-ext "~0.10.2" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -2653,6 +3120,28 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-fetch-happen@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" + marked-terminal@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" @@ -2676,18 +3165,18 @@ media-typer@0.3.0: integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= memoizee@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" - integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== dependencies: - d "1" - es5-ext "^0.10.45" - es6-weak-map "^2.0.2" + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" event-emitter "^0.3.5" - is-promise "^2.1" - lru-queue "0.1" - next-tick "1" - timers-ext "^0.1.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" merge-descriptors@1.0.1: version "1.0.1" @@ -2699,17 +3188,22 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -mime-db@1.44.0, "mime-db@>= 1.43.0 < 2": - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== + +"mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== +mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== dependencies: - mime-db "1.44.0" + mime-db "1.51.0" mime@1.6.0: version "1.6.0" @@ -2717,24 +3211,29 @@ mime@1.6.0: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.2.0: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" @@ -2743,7 +3242,46 @@ minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== @@ -2751,20 +3289,40 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.2.1: +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + dependencies: + yallist "^4.0.0" + +minizlib@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: minipass "^2.9.0" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +minizlib@^2.0.0, minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +"mkdirp@>=0.5 0", mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + morgan@^1.10.0, morgan@^1.8.2: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -2781,21 +3339,26 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +nan@^2.15.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + nash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/nash/-/nash-3.0.0.tgz#bced3a0cb8434c2ad30d1a0d567cfc0c37128eea" @@ -2806,12 +3369,12 @@ nash@^3.0.0: lodash "^4.17.5" minimist "^1.1.0" -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3, negotiator@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -next-tick@1: +next-tick@1, next-tick@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== @@ -2827,33 +3390,71 @@ nice-try@^1.0.4: integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-emoji@^1.4.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== dependencies: - lodash.toarray "^4.4.0" + lodash "^4.17.21" -node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" -node-forge@^0.9.0, node-forge@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" - integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ== +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-forge@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c" + integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== + +node-gyp@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +npmlog@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17" + integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg== dependencies: - path-key "^2.0.0" + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.0" + set-blocking "^2.0.0" oauth-sign@~0.9.0: version "0.9.0" @@ -2865,7 +3466,24 @@ object-assign@^4: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -on-finished@^2.2.0, on-finished@~2.3.0: +object-hash@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + +on-finished@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.0.tgz#115776bd5bdfaa1e7c7a2f1db4e2f9d6a4e4c95c" + integrity sha512-SLhghll9XN3OK9DGGmXDaxw6rq7Eza7HfuwdAy1w5S/YWieJ7Jtuv2NfFqnOtu8whIMP81QkEESy8y9/CMccbg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= @@ -2898,13 +3516,6 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - open@^6.3.0: version "6.4.0" resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" @@ -2912,6 +3523,13 @@ open@^6.3.0: dependencies: is-wsl "^1.1.0" +openapi3-ts@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-2.0.2.tgz#a200dd838bf24c9086c8eedcfeb380b7eb31e82a" + integrity sha512-TxhYBMoqx9frXyOgnRHufjQfPXomTIHYKhSKJ6jHfj13kS8OEIhvmE8CTuQyKtjjWttAjX5DPxM1vmalEpo8Qw== + dependencies: + yaml "^1.10.2" + ora@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" @@ -2929,37 +3547,39 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + p-defer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - p-limit@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^2.0.0" + yocto-queue "^0.1.0" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" parseurl@~1.3.3: version "1.3.3" @@ -2971,12 +3591,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: +path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= @@ -2991,7 +3606,7 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@^1.7.0: +path-to-regexp@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== @@ -3004,37 +3619,31 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== plist@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" - integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== + version "3.0.4" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.4.tgz#a62df837e3aed2bb3b735899d510c4f186019cbe" + integrity sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg== dependencies: - base64-js "^1.2.3" + base64-js "^1.5.1" xmlbuilder "^9.0.7" - xmldom "0.1.x" portfinder@^1.0.23: - version "1.0.27" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.27.tgz#a41333c116b5e5f3d380f9745ac2f35084c4c758" - integrity sha512-bJ3U3MThKnyJ9Dx1Idtm5pQmxXqw08+XOHhi/Lie8OF1OlhVaBFhsntAIhkZYjfDcCzszSr0w1yCbccThhzgxQ== + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== dependencies: async "^2.6.2" debug "^3.1.1" - mkdirp "^0.5.1" + mkdirp "^0.5.5" -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= process-nextick-args@~1.0.6: version "1.0.7" @@ -3051,10 +3660,35 @@ progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8, protobufjs@^6.8.9, protobufjs@^6.9.0: - version "6.10.1" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.1.tgz#e6a484dd8f04b29629e9053344e3970cccf13cd2" - integrity sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ== +promise-breaker@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/promise-breaker/-/promise-breaker-5.0.0.tgz#58e8541f1619554057da95a211794d7834d30c1d" + integrity sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +proto3-json-serializer@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-0.1.8.tgz#f80f9afc1efe5ed9a9856bbbd17dc7cabd7ce9a3" + integrity sha512-ACilkB6s1U1gWnl5jtICpnDai4VCxmI9GFxuEaYdxtDG2oVI3sVFIUsvUZcQbJgtPM6p+zqKbjTKQZp6Y4FpQw== + dependencies: + protobufjs "^6.11.2" + +protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2, protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8, protobufjs@^6.8.9: + version "6.11.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" + integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -3067,18 +3701,18 @@ protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8, protobufjs@^6.8.9, prot "@protobufjs/pool" "^1.1.0" "@protobufjs/utf8" "^1.1.0" "@types/long" "^4.0.1" - "@types/node" "^13.7.0" + "@types/node" ">=13.7.0" long "^4.0.0" -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" -pseudomap@^1.0.2: +pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= @@ -3115,37 +3749,56 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +pupa@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= +qs@6.9.7: + version "6.9.7" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== + +qs@^6.6.0: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "1.8.1" iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.0.1, rc@^1.1.6: +raw-body@^2.3.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.0.tgz#865890d9435243e9fe6141feb4decf929a6e1525" + integrity sha512-XpyZ6O7PVu3ItMQl0LslfsRoKxMOxi3SzDkrOtxMES5AqLFpYjQCryxI4LGygUN2jL+RgFsPkMPPlG7cg/47+A== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -3155,16 +3808,16 @@ rc@^1.0.1, rc@^1.1.6: minimist "^1.2.0" strip-json-comments "~2.0.1" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +re2@^1.15.8: + version "1.17.3" + resolved "https://registry.yarnpkg.com/re2/-/re2-1.17.3.tgz#8cceb48f52c45b860b1f67cee8a44726f7d05e9a" + integrity sha512-Dp5iWVR8W3C7Nm9DziMY4BleMPRb/pe6kvfbzLv80dVYaXRc9jRnwwNqU0oE/taRm0qYR1+Qrtzk9rPjS9ecaQ== dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" + install-artifact-from-github "^1.3.0" + nan "^2.15.0" + node-gyp "^8.4.1" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -3177,6 +3830,15 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@~2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" @@ -3189,10 +3851,10 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" @@ -3203,20 +3865,19 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -registry-auth-token@^3.0.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" - integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" + rc "^1.2.8" -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - rc "^1.0.1" + rc "^1.2.8" request@^2.87.0, request@^2.88.2: version "2.88.2" @@ -3244,6 +3905,18 @@ request@^2.87.0, request@^2.88.2: tunnel-agent "^0.6.0" uuid "^3.3.2" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -3252,13 +3925,23 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -retry-request@^4.0.0, retry-request@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.1.1.tgz#f676d0db0de7a6f122c048626ce7ce12101d2bd8" - integrity sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ== +retry-request@^4.0.0, retry-request@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" + integrity sha512-xA93uxUD/rogV7BV59agW/JHPGXeREMWiZc9jhcwY4YdZ7QOtC7qbomYg0n4wyk2lJhggjvKvhNX8wln/Aldhg== dependencies: debug "^4.1.1" - through2 "^3.0.1" + extend "^3.0.2" + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= rimraf@2, rimraf@^2.2.8: version "2.7.1" @@ -3267,7 +3950,7 @@ rimraf@2, rimraf@^2.2.8: dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -3275,9 +3958,9 @@ rimraf@^3.0.0: glob "^7.1.3" router@^1.3.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/router/-/router-1.3.5.tgz#cb2f47f74fd99a77fb3bc01cc947f46b79b1790f" - integrity sha512-kozCJZUhuSJ5VcLhSb3F8fsmGXy+8HaDbKCAerR1G6tq3mnMZFMuSohbFvGv1c5oMFipijDjRZuuN/Sq5nMf3g== + version "1.3.6" + resolved "https://registry.yarnpkg.com/router/-/router-1.3.6.tgz#35302dc8d69f75b00797d618d92d6c9fb35604bf" + integrity sha512-gsjhou+LFApzkIP8VDrouG6Z4pqkeF11n3o5orlwPPvPTl0x7c+dbF71itKOhDoFHygmc3N3uqm55Uq/gIDUwg== dependencies: array-flatten "3.0.0" debug "2.6.9" @@ -3287,10 +3970,10 @@ router@^1.3.1: setprototypeof "1.2.0" utils-merge "1.0.1" -rsvp@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== +rsvp@^4.8.5: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0: version "2.4.1" @@ -3298,9 +3981,9 @@ run-async@^2.2.0: integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== rxjs@^6.4.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" - integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg== + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" @@ -3309,37 +3992,49 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safe-stable-stringify@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" + integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== dependencies: - semver "^5.0.3" + semver "^6.3.0" -semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: +semver@^5.0.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.2.0: +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +semver@^7.0.0, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== dependencies: debug "2.6.9" depd "~1.1.2" @@ -3348,33 +4043,33 @@ send@0.17.1: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "1.8.1" mime "1.6.0" - ms "2.1.1" + ms "2.1.3" on-finished "~2.3.0" range-parser "~1.2.1" statuses "~1.5.0" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.17.2" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= setimmediate@~1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -3404,10 +4099,19 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== simple-swizzle@^0.2.2: version "0.2.2" @@ -3416,20 +4120,42 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snakeize@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/snakeize/-/snakeize-0.1.0.tgz#10c088d8b58eb076b3229bb5a04e232ce126422d" integrity sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0= +socks-proxy-agent@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" + integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== + dependencies: + agent-base "^6.0.2" + debug "^4.3.1" + socks "^2.6.1" + +socks@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" + integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== + dependencies: + ip "^1.1.5" + smart-buffer "^4.2.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -3441,17 +4167,29 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: +stream-events@^1.0.4, stream-events@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== @@ -3463,10 +4201,10 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -streamsearch@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== string-length@^1.0.0: version "1.0.1" @@ -3475,7 +4213,16 @@ string-length@^1.0.0: dependencies: strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -3523,10 +4270,12 @@ strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" strip-json-comments@~2.0.1: version "2.0.1" @@ -3538,41 +4287,37 @@ stubs@^3.0.0: resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" integrity sha1-6NK6H6nJBXAwPAMLaQD31fiavls= -superstatic@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-6.0.4.tgz#5c38fe05e2e9513b68d5ba2798925e4839c151dd" - integrity sha512-Nfli9mSPa9fJloKuDeUOdqC1lcw4c4SnxiWPB8s7Yn1iYo7Ja3pj7qc8AXMqHVqn/Kf7QsxBjAeOJTpuJ0mcrQ== +superstatic@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-7.1.0.tgz#42cc773a0f500fb691841e0533d0b8c31f25997f" + integrity sha512-yBU8iw07nM3Bu4jFc8lnKwLey0cj61OaGmFJZcYC2X+kEpXVmXzERJ3OTAHZAESe1OTeNIuWadt81U5IULGGAA== dependencies: - as-array "^2.0.0" - async "^1.5.2" basic-auth-connect "^1.0.0" chalk "^1.1.3" - char-spinner "^1.0.1" compare-semver "^1.0.0" compression "^1.7.0" connect "^3.6.2" - connect-query "^1.0.0" destroy "^1.0.4" fast-url-parser "^1.1.3" - fs-extra "^0.30.0" - glob "^7.1.2" + fs-extra "^8.1.0" glob-slasher "^1.0.1" home-dir "^1.0.0" is-url "^1.2.2" join-path "^1.1.1" - lodash "^4.17.4" + lodash "^4.17.19" mime-types "^2.1.16" minimatch "^3.0.4" morgan "^1.8.2" nash "^3.0.0" on-finished "^2.2.0" on-headers "^1.0.0" - path-to-regexp "^1.7.0" + path-to-regexp "^1.8.0" router "^1.3.1" - rsvp "^3.6.2" + rsvp "^4.8.5" string-length "^1.0.0" - try-require "^1.0.0" - update-notifier "^2.5.0" + update-notifier "^4.1.1" + optionalDependencies: + re2 "^1.15.8" supports-color@^2.0.0: version "2.0.0" @@ -3586,6 +4331,13 @@ supports-color@^5.0.0, supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" @@ -3595,54 +4347,64 @@ supports-hyperlinks@^1.0.1: supports-color "^5.0.0" tar-stream@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.3.tgz#1e2022559221b7866161660f118255e20fa79e41" - integrity sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== dependencies: - bl "^4.0.1" + bl "^4.0.3" end-of-stream "^1.4.1" fs-constants "^1.0.0" inherits "^2.0.3" readable-stream "^3.1.1" tar@^4.3.0: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +tar@^6.0.2, tar@^6.1.2: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" tcp-port-used@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.1.tgz#46061078e2d38c73979a2c2c12b5a674e6689d70" - integrity sha512-rwi5xJeU6utXoEIiMvVBMc9eJ2/ofzB+7nLOdnZuFTmNCLqRiQh2sMG9MqCxHU/69VC/Fwp5dV9306Qd54ll1Q== + version "1.0.2" + resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.2.tgz#9652b7436eb1f4cfae111c79b558a25769f6faea" + integrity sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA== dependencies: - debug "4.1.0" - is2 "2.0.1" + debug "4.3.1" + is2 "^2.0.6" teeny-request@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.0.0.tgz#0e5c090bd9102ed559ffc8c9ddb00fbe1256db30" - integrity sha512-kWD3sdGmIix6w7c8ZdVKxWq+3YwVPGWz+Mq0wRZXayEKY/YHb63b8uphfBzcFDmyq8frD9+UTc3wLyOhltRbtg== + version "7.1.3" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.1.3.tgz#5a3d90c559a6c664a993477b138e331a518765ba" + integrity sha512-Ew3aoFzgQEatLA5OBIjdr1DWJUaC1xardG+qbPPo5k/y/3fMwXLxpjh5UB5dVfElktLaQbbMs80chkz53ByvSg== dependencies: - http-proxy-agent "^4.0.0" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" - node-fetch "^2.2.0" + node-fetch "^2.6.1" stream-events "^1.0.5" uuid "^8.0.0" -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" +term-size@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== text-hex@1.0.x: version "1.0.0" @@ -3657,40 +4419,12 @@ through2@2.0.1: readable-stream "~2.0.0" xtend "~4.0.0" -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" - integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== - dependencies: - inherits "^2.0.4" - readable-stream "2 || 3" - -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -timers-ext@^0.1.5: +timers-ext@^0.1.5, timers-ext@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== @@ -3705,6 +4439,11 @@ tmp@0.0.33, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -3712,10 +4451,10 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tough-cookie@~2.5.0: version "2.5.0" @@ -3732,25 +4471,30 @@ toxic@^1.0.0: dependencies: lodash "^4.17.10" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + "traverse@>=0.3.0 <0.4": version "0.3.9" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= -triple-beam@^1.2.0, triple-beam@^1.3.0: +triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== -try-require@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/try-require/-/try-require-1.2.1.tgz#34489a2cac0c09c1cc10ed91ba011594d4333be2" - integrity sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I= +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^1.11.1, tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tslib@^2.1.0, tslib@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== tunnel-agent@^0.6.0: version "0.6.0" @@ -3764,7 +4508,25 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -type-is@~1.6.17, type-is@~1.6.18: +tweetnacl@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +tweetsodium@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/tweetsodium/-/tweetsodium-0.0.5.tgz#f63ab4b1d26d6355d82d512a2bbf03cae96eb3e8" + integrity sha512-T3aXZtx7KqQbutTtBfn+P5By3HdBuB1eCoGviIrRJV2sXeToxv2X2cv5RvYqgG26PSnN5m3fYixds22Gkfd11w== + dependencies: + blakejs "^1.1.0" + tweetnacl "^1.0.1" + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -3777,10 +4539,10 @@ type@^1.0.1: resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== +type@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" + integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -3789,22 +4551,24 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^4.5.2: + version "4.5.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" + integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== -typescript@^4.4.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" - integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: - crypto-random-string "^1.0.0" + imurmurhash "^0.1.4" unique-string@^2.0.0: version "2.0.0" @@ -3822,16 +4586,16 @@ universal-analytics@^0.4.16: request "^2.88.2" uuid "^3.0.0" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - unzipper@^0.10.10: version "0.10.11" resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" @@ -3848,26 +4612,29 @@ unzipper@^0.10.10: readable-stream "~2.3.6" setimmediate "~1.0.4" -update-notifier@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== +update-notifier@^4.1.0, update-notifier@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" + integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" + boxen "^4.2.0" + chalk "^3.0.0" + configstore "^5.0.1" + has-yarn "^2.1.0" import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" + is-ci "^2.0.0" + is-installed-globally "^0.3.1" + is-npm "^4.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + pupa "^2.0.1" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -3876,12 +4643,12 @@ url-join@0.0.1: resolved "https://registry.yarnpkg.com/url-join/-/url-join-0.0.1.tgz#1db48ad422d3402469a87f7d97bdebfe4fb1e3c8" integrity sha1-HbSK1CLTQCRpqH99l73r/k+x48g= -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: - prepend-http "^1.0.1" + prepend-http "^2.0.0" util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" @@ -3899,9 +4666,9 @@ uuid@^3.0.0, uuid@^3.3.2: integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^8.0.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" - integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== valid-url@^1: version "1.0.9" @@ -3934,6 +4701,11 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" @@ -3948,6 +4720,14 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3955,57 +4735,66 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^2.1.1" + string-width "^1.0.2 || 2 || 3 || 4" -winston-transport@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59" - integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw== +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: - readable-stream "^2.3.7" - triple-beam "^1.2.0" + string-width "^4.0.0" + +winston-transport@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" + integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== + dependencies: + logform "^2.3.2" + readable-stream "^3.6.0" + triple-beam "^1.3.0" winston@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" - integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6" + integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w== dependencies: "@dabh/diagnostics" "^2.0.2" - async "^3.1.0" + async "^3.2.3" is-stream "^2.0.0" - logform "^2.2.0" + logform "^2.4.0" one-time "^1.0.0" readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" stack-trace "0.0.x" triple-beam "^1.3.0" - winston-transport "^4.4.0" + winston-transport "^4.5.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" @@ -4017,14 +4806,9 @@ write-file-atomic@^3.0.0: typedarray-to-buffer "^3.1.5" ws@^7.2.3: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== xdg-basedir@^4.0.0: version "4.0.0" @@ -4036,22 +4820,22 @@ xmlbuilder@^9.0.7: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= -xmldom@0.1.x: - version "0.1.31" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" - integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== - -xtend@~4.0.0, xtend@~4.0.1: +xtend@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -yallist@^2.1.2: +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -4061,6 +4845,34 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + zip-stream@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b" diff --git a/scripts/check-entry-point-setup.js b/scripts/check-entry-point-setup.js index 15c5c7f1e327..96782f9081be 100644 --- a/scripts/check-entry-point-setup.js +++ b/scripts/check-entry-point-setup.js @@ -21,7 +21,13 @@ const packagesDir = join(__dirname, '../src'); * Globs that matches directories which should never be considered * as entry-points. */ -const excludeGlobs = ['cdk/testing/private', '*/schematics/**']; +const excludeGlobs = [ + 'cdk/testing/private', + '*/schematics/**', + // The protractor testing entry-point is no longer publicly available, + // but exists in the repository until it can be removed in g3. + 'cdk/testing/protractor', +]; /** List of detected entry-points which are not properly configured. */ const nonConfigured = []; diff --git a/scripts/check-mdc-exports-config.ts b/scripts/check-mdc-exports-config.ts index 780fa76f489b..d80dbf57f72a 100644 --- a/scripts/check-mdc-exports-config.ts +++ b/scripts/check-mdc-exports-config.ts @@ -1,10 +1,21 @@ export const config = { - // The MDC sidenav hasn't been implemented yet. - skippedPackages: ['mdc-sidenav'], + skippedPackages: [] as string[], // We have to export some underscored symbols so that they can be used with MDC. // Exclude them from this check since they aren't part of the public API. skippedSymbols: [/^_/], skippedExports: { + 'mdc-core': [ + // The line directive is not used by the MDC-based list and therefore does + // not need to be re-exposed. + 'MatLine', + 'MatLineModule', + ], + 'mdc-list': [ + // These classes are docs-private and have actual public classes in the + // MDC-based list, such as `MatListItemIcon` or `MatListItemAvatar`. + 'MatListAvatarCssMatStyler', + 'MatListIconCssMatStyler', + ], 'mdc-chips': [ // These components haven't been implemented for MDC due to a different accessibility pattern. 'MatChipListChange', diff --git a/scripts/check-mdc-exports.ts b/scripts/check-mdc-exports.ts index 5c3ff99b0c1a..bc64816a48ec 100644 --- a/scripts/check-mdc-exports.ts +++ b/scripts/check-mdc-exports.ts @@ -1,7 +1,7 @@ import {join} from 'path'; import {readdirSync, existsSync} from 'fs'; -import * as ts from 'typescript'; -import * as chalk from 'chalk'; +import ts from 'typescript'; +import chalk from 'chalk'; import {config} from './check-mdc-exports-config'; // Script which ensures that a particular MDC package exports all of the same symbols as its diff --git a/scripts/check-mdc-tests-config.ts b/scripts/check-mdc-tests-config.ts index 17017e95e54f..04592566f8a5 100644 --- a/scripts/check-mdc-tests-config.ts +++ b/scripts/check-mdc-tests-config.ts @@ -36,6 +36,12 @@ export const config = { // This test checks something that isn't supported in the MDC form field. 'should propagate the dynamic `placeholder` value to the form field', + + // Disabled, because the MDC-based chip input doesn't deal with focus escaping anymore. + 'should not allow focus to escape when tabbing backwards', + + // Disabled, because preventing the default action isn't required. + 'should prevent the default click action when the chip is disabled', ], 'mdc-dialog': [ // These tests are verifying implementation details that are not relevant for MDC. @@ -75,6 +81,7 @@ export const config = { 'should update the outline gap if the direction changes', 'should update the outline gap correctly if the direction changes multiple times', 'should calculate the outline gaps inside the shadow DOM', + 'should recalculate the outline gap when the label changes to empty after init', 'should be legacy appearance if no default options provided', 'should be legacy appearance if empty default options provided', ], @@ -100,13 +107,8 @@ export const config = { 'should not change focus when pressing HOME with a modifier key', 'should not change focus when pressing END with a modifier key', - // MDC does not support the common CTRL + A keyboard shortcut. - // Tracked with: https://github.com/material-components/material-components-web/issues/6366 - 'should select all items using ctrl + a', - 'should not select disabled items when pressing ctrl + a', - 'should select all items using ctrl + a if some items are selected', - 'should deselect all with ctrl + a if all options are selected', - 'should dispatch the selectionChange event when selecting via ctrl + a', + // MDC-based list does not support more than three lines. + 'should apply a particular class to lists with more than 3 lines', ], 'mdc-progress-bar': [ // These tests are verifying implementation details that are not relevant for MDC. diff --git a/scripts/check-mdc-tests.ts b/scripts/check-mdc-tests.ts index 2b7e9f54781c..c2078a94f9e4 100644 --- a/scripts/check-mdc-tests.ts +++ b/scripts/check-mdc-tests.ts @@ -1,8 +1,8 @@ import {readdirSync, readFileSync} from 'fs'; import {join, basename} from 'path'; import {sync as glob} from 'glob'; -import * as chalk from 'chalk'; -import * as ts from 'typescript'; +import chalk from 'chalk'; +import ts from 'typescript'; import {config} from './check-mdc-tests-config'; const srcDirectory = join(__dirname, '../src'); @@ -91,7 +91,7 @@ function getTestNames(files: string[]): string[] { if ( ts.isCallExpression(node) && ts.isIdentifier(node.expression) && - node.expression.text === 'it' + (node.expression.text === 'it' || node.expression.text === 'xit') ) { // Note that this is a little naive since it'll take the literal text of the test // name expression which could include things like string concatenation. It's fine diff --git a/scripts/check-package-externals.ts b/scripts/check-package-externals.ts index 577e7ada8804..27b335b0a0b3 100644 --- a/scripts/check-package-externals.ts +++ b/scripts/check-package-externals.ts @@ -8,11 +8,11 @@ * be passed to this script to ensure that the list is up-to-date. */ -import * as chalk from 'chalk'; +import chalk from 'chalk'; import {readFileSync} from 'fs'; -import * as minimatch from 'minimatch'; +import minimatch from 'minimatch'; import {join, relative} from 'path'; -import * as ts from 'typescript'; +import ts from 'typescript'; const projectRoot = join(__dirname, '../'); const args = process.argv.slice(2); diff --git a/scripts/circleci/bazel/setup-remote-execution.sh b/scripts/circleci/bazel/setup-remote-execution.sh deleted file mode 100755 index dfe9d2713609..000000000000 --- a/scripts/circleci/bazel/setup-remote-execution.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# The script should immediately exit if any command in the script fails. -set -e - -if [[ -z "${GCP_DECRYPT_TOKEN}" ]]; then - echo "Please specify the \"GCP_DECRYPT_TOKEN\" environment variable when setting up remote " \ - "execution" - exit 1 -fi - -# Decode the GCP token that is needed to authenticate the Bazel remote execution. -openssl aes-256-cbc -d -in .circleci/gcp_token -md md5 -k ${GCP_DECRYPT_TOKEN} \ - -out $HOME/.gcp_credentials - -# Export the "GOOGLE_APPLICATION_CREDENTIALS" variable that should refer to the GCP credentials -# file. Bazel automatically picks up the credentials from that variable. -# https://github.com/bazelbuild/bazel/blob/master/third_party/grpc/include/grpc/grpc_security.h#L134-L137 -echo "export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.gcp_credentials" >> $BASH_ENV - -# Update the CircleCI Bazel configuration to always use remote execution. -echo "build --config=remote" >> .circleci/bazel.rc diff --git a/scripts/circleci/setup-angular-snapshots.js b/scripts/circleci/setup-angular-snapshots.js index e5d4783c850c..a51c0c89714c 100644 --- a/scripts/circleci/setup-angular-snapshots.js +++ b/scripts/circleci/setup-angular-snapshots.js @@ -14,6 +14,18 @@ * Read more here: https://yarnpkg.com/lang/en/docs/package-json/#toc-resolutions */ +/** + * Array defining the packages we would like to install snapshots for. + * + * Additionally each entry will have a mapping to the corresponding snapshot + * builds repo name. This is necessary as the repository names are inconsistent. + */ +const snapshotPackages = [ + {matcher: /^@angular\/(.+)$/, repoName: `angular/$1-builds`}, + {matcher: /^@angular-devkit\/(.+)$/, repoName: `angular/angular-devkit-$1-builds`}, + {matcher: /^@schematics\/(.+)$/, repoName: `angular/schematics-$1-builds`}, +]; + /** List of packages which should not be updated to a snapshot build. */ const ignorePackages = [ // Skip update for the shared dev-infra package. We do not want to update to a snapshot @@ -35,33 +47,45 @@ const packageSuffix = tag ? ` (${tag})` : ''; // See: https://yarnpkg.com/lang/en/docs/package-json/#toc-resolutions for the API. packageJson['resolutions'] = packageJson['resolutions'] || {}; -// List of packages which should be updated to their most recent snapshot version, or -// snapshot version based on the specified tag. -const snapshotPackages = Object.keys({ +const packagesToConsider = Object.keys({ ...packageJson.dependencies, ...packageJson.devDependencies, -}).filter( - packageName => packageName.startsWith('@angular/') && !ignorePackages.includes(packageName), -); +}); + +// List of packages which should be updated to their most recent snapshot version, or +// snapshot version based on the specified tag. +const packagesToUpdate = packagesToConsider.reduce((result, name) => { + if (ignorePackages.includes(name)) { + return result; + } + + const matchedEntry = snapshotPackages.find(p => p.matcher.test(name)); + if (matchedEntry === undefined) { + return result; + } + const repoName = name.replace(matchedEntry.matcher, matchedEntry.repoName); + + return result.concat([{name, repoName}]); +}, []); console.log('Setting up snapshot builds for:\n'); -console.log(` ${snapshotPackages.map(n => `${n}${packageSuffix}`).join('\n ')}\n`); +console.log(` ${packagesToUpdate.map(p => `${p.name}${packageSuffix}`).join('\n ')}\n`); // Setup the snapshot version for each Angular package specified in the "package.json" file. -snapshotPackages.forEach(packageName => { - const buildsUrl = `github:angular/${packageName.split('/')[1]}-builds${tag ? `#${tag}` : ''}`; +packagesToUpdate.forEach(({name, repoName}) => { + const buildsUrl = `github:angular/${repoName}${tag ? `#${tag}` : ''}`; // Add resolutions for each package in the format "**/{PACKAGE}" so that all // nested versions of that specific Angular package will have the same version. - packageJson.resolutions[`**/${packageName}`] = buildsUrl; + packageJson.resolutions[`**/${name}`] = buildsUrl; // Since the resolutions only cover the version of all nested installs, we also need // to explicitly set the version for the package listed in the project "package.json". - packageJson.dependencies[packageName] = buildsUrl; + packageJson.dependencies[name] = buildsUrl; // In case this dependency was previously a dev dependency, just remove it because we // re-added it as a normal dependency for simplicity. - delete packageJson.devDependencies[packageName]; + delete packageJson.devDependencies[name]; }); // Write changes to the "packageJson", so that we can install the new versions afterwards. diff --git a/scripts/create-legacy-tests-bundle.mjs b/scripts/create-legacy-tests-bundle.mjs index eaea311483f9..57c9119034c3 100644 --- a/scripts/create-legacy-tests-bundle.mjs +++ b/scripts/create-legacy-tests-bundle.mjs @@ -1,8 +1,6 @@ #!/usr/bin/env node -import {ConsoleLogger, LogLevel, NodeJSFileSystem} from '@angular/compiler-cli'; -import {createEs2015LinkerPlugin} from '@angular/compiler-cli/linker/babel'; -import {transformAsync} from '@babel/core'; +import {createLinkerEsbuildPlugin} from '@angular/dev-infra-private/shared-scripts/angular-linker/esbuild-plugin.mjs'; import child_process from 'child_process'; import esbuild from 'esbuild'; import fs from 'fs'; @@ -21,7 +19,6 @@ const outFile = join(distDir, 'legacy-test-bundle.spec.js'); const ngcBinFile = join(nodeModulesDir, '@angular/compiler-cli/bundles/src/bin/ngc.js'); const legacyOutputDir = join(distDir, 'legacy-test-out'); - /** * This script builds the whole library in `angular/components` together with its * spec files into a single IIFE bundle. @@ -38,7 +35,7 @@ async function main() { await compileProjectWithNgtsc(); const specEntryPointFile = await createEntryPointSpecFile(); - const esbuildLinkerPlugin = await createLinkerEsbuildPlugin(); + const esbuildLinkerPlugin = await createLinkerEsbuildPlugin(/fesm2020/, false); const esbuildResolvePlugin = await createResolveEsbuildPlugin(); const result = await esbuild.build({ @@ -72,10 +69,10 @@ async function compileSassFiles() { for (const file of sassFiles) { const outRelativePath = relative(projectDir, file).replace(/\.scss$/, '.css'); const outPath = join(projectDir, outRelativePath); - const task = renderSassFileAsync(file).then(async (content) => { + const task = renderSassFileAsync(file).then(async content => { console.info('Compiled, now writing:', outRelativePath); await fs.promises.mkdir(dirname(outPath), {recursive: true}); - await fs.promises.writeFile(outPath, content) + await fs.promises.writeFile(outPath, content); }); sassTasks.push(task); @@ -93,7 +90,10 @@ async function compileSassFiles() { async function compileProjectWithNgtsc() { // Build the project with Ngtsc so that external resources are inlined. const ngcProcess = child_process.spawnSync( - 'node', [ngcBinFile, '--project', legacyTsconfigPath], {shell: true, stdio: 'inherit'}); + 'node', + [ngcBinFile, '--project', legacyTsconfigPath], + {shell: true, stdio: 'inherit'}, + ); if (ngcProcess.error || ngcProcess.status !== 0) { throw Error('Unable to compile tests and library. See error above.'); @@ -137,9 +137,9 @@ async function createEntryPointSpecFile() { /** Helper function to render a Sass file asynchronously using promises. */ async function renderSassFileAsync(inputFile) { return new Promise((resolve, reject) => { - sass.render( - {file: inputFile, includePaths: [nodeModulesDir]}, - (err, result) => err ? reject(err) : resolve(result.css)); + sass.render({file: inputFile, includePaths: [nodeModulesDir]}, (err, result) => + err ? reject(err) : resolve(result.css), + ); }); } @@ -149,10 +149,11 @@ async function renderSassFileAsync(inputFile) { */ async function createResolveEsbuildPlugin() { return { - name: 'ng-resolve-esbuild', setup: (build) => { - build.onResolve({filter: /@angular\//}, async (args) => { + name: 'ng-resolve-esbuild', + setup: build => { + build.onResolve({filter: /@angular\//}, async args => { const pkgName = args.path.substr('@angular/'.length); - let resolvedPath = join(legacyOutputDir, pkgName) + let resolvedPath = join(legacyOutputDir, pkgName); let stats = await statGraceful(resolvedPath); // If the resolved path points to a directory, resolve the contained `index.js` file @@ -168,33 +169,6 @@ async function createResolveEsbuildPlugin() { return stats !== null ? {path: resolvedPath} : undefined; }); - } - } -} - -/** Creates an ESBuild plugin that runs the Angular linker on framework packages. */ -async function createLinkerEsbuildPlugin() { - const linkerBabelPlugin = createEs2015LinkerPlugin({ - fileSystem: new NodeJSFileSystem(), - logger: new ConsoleLogger(LogLevel.warn), - // We enable JIT mode as unit tests also will rely on the linked ESM files. - linkerJitMode: true, - }); - - return { - name: 'ng-linker-esbuild', - setup: (build) => { - build.onLoad({filter: /fesm2020/}, async (args) => { - const filePath = args.path; - const content = await fs.promises.readFile(filePath, 'utf8'); - const {code} = await transformAsync(content, { - filename: filePath, - filenameRelative: filePath, - plugins: [linkerBabelPlugin], - sourceMaps: 'inline', - }); - return {contents: code}; - }); }, }; } diff --git a/scripts/create-package-archives.js b/scripts/create-package-archives.js index 4373f7667409..b22904d75d4e 100755 --- a/scripts/create-package-archives.js +++ b/scripts/create-package-archives.js @@ -12,17 +12,15 @@ const {join} = require('path'); const {rm, mkdir, test, ls, set, exec, cd} = require('shelljs'); const {red, green} = require('chalk'); -const minimist = require('minimist'); +const yargs = require('yargs'); const projectDir = join(__dirname, '../'); const archivesDir = 'dist/release-archives'; const releasesDir = 'dist/releases'; -let {suffix} = minimist(process.argv.slice(2), {string: ['suffix']}); - -if (!suffix) { - console.error(red('No suffix specified. Pass one with --suffix ')); - process.exit(1); -} +const {suffix} = yargs(process.argv.slice(2)) + .option('suffix', {type: 'string', demandOption: true}) + .strict() + .parseSync(); // Fail if any ShellJS command fails. set('-e'); diff --git a/scripts/generate-schematic-imports-map.ts b/scripts/generate-schematic-imports-map.ts index 4ad1011598e2..dd64d0884268 100644 --- a/scripts/generate-schematic-imports-map.ts +++ b/scripts/generate-schematic-imports-map.ts @@ -1,7 +1,7 @@ import {sync as glob} from 'glob'; import {readFileSync, writeFileSync} from 'fs'; import {join, basename} from 'path'; -import * as ts from 'typescript'; +import ts from 'typescript'; // Script that generates mappings from our publicly-exported symbols to their entry points. The // mappings are intended to be used by the secondary entry points schematic and should be committed diff --git a/scripts/github/fetch-workflow-artifact.mjs b/scripts/github/fetch-workflow-artifact.mjs new file mode 100755 index 000000000000..bdac64108b40 --- /dev/null +++ b/scripts/github/fetch-workflow-artifact.mjs @@ -0,0 +1,35 @@ +#!/usr/bin/env node + +/** + * Fetches a specified artifact by name from the given workflow and writes + * the downloaded zip file to the stdout. + * + * Command line usage: + * ./fetch-workflow-artifact.js + */ + +import octokit from '@octokit/rest'; + +async function main() { + const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/', 2); + const [token, workflowId, artifactName] = process.argv.slice(2); + const github = new octokit.Octokit({auth: token}); + const artifacts = await github.actions.listWorkflowRunArtifacts({ + owner, + repo, + run_id: workflowId, + }); + + const matchArtifact = artifacts.data.artifacts.find(artifact => artifact.name === artifactName); + + const download = await github.actions.downloadArtifact({ + owner, + repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + + process.stdout.write(Buffer.from(download.data)); +} + +await main(); diff --git a/scripts/ownerslint.ts b/scripts/ownerslint.ts index c202e0f887aa..e1f39fe9b839 100644 --- a/scripts/ownerslint.ts +++ b/scripts/ownerslint.ts @@ -1,4 +1,4 @@ -import * as chalk from 'chalk'; +import chalk from 'chalk'; import {readdirSync, readFileSync, statSync} from 'fs'; import {IMinimatch, Minimatch} from 'minimatch'; import {join} from 'path'; diff --git a/scripts/run-component-tests.js b/scripts/run-component-tests.js index f1a98c57e85d..9ad69f6023a2 100644 --- a/scripts/run-component-tests.js +++ b/scripts/run-component-tests.js @@ -12,12 +12,12 @@ * * Supported command line flags: * - * --local | If specified, no browser will be launched. - * --firefox | Instead of Chrome being used for tests, Firefox will be used. - * --no-watch | Watch mode is enabled by default. This flag opts-out to standard Bazel. + * --debug | If specified, no browser will be launched. + * --firefox | Instead of Chrome being used for tests, Firefox will be used. + * --no-watch | Watch mode is enabled by default. This flag opts-out to standard Bazel. */ -const minimist = require('minimist'); +const yargs = require('yargs'); const shelljs = require('shelljs'); const chalk = require('chalk'); const path = require('path'); @@ -35,26 +35,37 @@ shelljs.set('-e'); shelljs.cd(projectDir); // Extracts the supported command line options. -const { - _: components, - local, - firefox, - watch, -} = minimist(args, { - boolean: ['local', 'firefox', 'watch'], - default: {watch: true}, -}); +const {components, debug, firefox, watch} = yargs(args) + .command('* ', 'Run tests for specified components', args => + args.positional('components', {type: 'array'}), + ) + .option('debug', { + alias: 'local', + type: 'boolean', + description: 'Whether test should run in debug mode. You can manually connect a browser then.', + }) + .option('firefox', { + type: 'boolean', + description: 'Whether browser tests should run within Firefox.', + }) + .option('watch', { + type: 'boolean', + default: true, + description: 'Whether tests should be re-run automatically upon changes.', + }) + .strict() + .parseSync(); // Whether tests for all components should be run. const all = components.length === 1 && components[0] === 'all'; -// We can only run a single target with "--local". Running multiple targets within the +// We can only run a single target with "--debug". Running multiple targets within the // same Karma server is not possible since each test target runs isolated from the others. -if (local && (components.length > 1 || all)) { +if (debug && (components.length > 1 || all)) { console.error( chalk.red( - 'Unable to run multiple components tests in local mode. ' + - 'Only one component at a time can be run with "--local"', + 'Unable to run multiple components tests in debug mode. ' + + 'Only one component at a time can be run with "--debug"', ), ); process.exit(1); @@ -95,7 +106,7 @@ if (!components.length) { process.exit(1); } -const bazelAction = local ? 'run' : 'test'; +const bazelAction = debug ? 'run' : 'test'; const testLabels = components.map(t => `${getBazelPackageOfComponentName(t)}:${getTargetName(t)}`); // Runs Bazel for the determined test labels. @@ -142,10 +153,10 @@ function convertPathToBazelLabel(name) { /** Gets the name of the target that should be run. */ function getTargetName(packageName) { - // Schematics don't have _local and browser targets. + // Schematics don't have _debug and browser targets. if (packageName && packageName.endsWith('schematics')) { return 'unit_tests'; } - return `unit_tests_${local ? 'local' : browserName}`; + return `unit_tests_${debug ? 'debug' : browserName}`; } diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json index 471fe3315a43..8fd13db06ac6 100644 --- a/scripts/tsconfig.json +++ b/scripts/tsconfig.json @@ -8,7 +8,8 @@ "strict": true, "noEmit": true, "skipLibCheck": true, - "downlevelIteration": true + "downlevelIteration": true, + "esModuleInterop": true }, // The `firebase-functions` folder has its own `package.json` and does // not pass type-checking. This excludes it from being checked. diff --git a/src/BUILD.bazel b/src/BUILD.bazel index d84776afa83c..5bd9ad3bf60e 100644 --- a/src/BUILD.bazel +++ b/src/BUILD.bazel @@ -49,3 +49,12 @@ ts_library( name = "dev_mode_types", srcs = ["dev-mode-types.d.ts"], ) + +ts_config( + name = "tsec_config", + src = "tsconfig-tsec.json", + deps = [ + ":bazel-tsconfig-build.json", + "//goldens:tsec-exemption.json", + ], +) diff --git a/src/bazel-tsconfig-build.json b/src/bazel-tsconfig-build.json index d67e14706e12..1a0c7ecbc4b3 100644 --- a/src/bazel-tsconfig-build.json +++ b/src/bazel-tsconfig-build.json @@ -15,6 +15,7 @@ "noImplicitReturns": true, "strictFunctionTypes": true, "noImplicitOverride": true, + "useUnknownInCatchVariables": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": true, "noImplicitThis": true, diff --git a/src/cdk-experimental/column-resize/column-resize.ts b/src/cdk-experimental/column-resize/column-resize.ts index ed4146084072..273f12e656ee 100644 --- a/src/cdk-experimental/column-resize/column-resize.ts +++ b/src/cdk-experimental/column-resize/column-resize.ts @@ -10,7 +10,7 @@ import {AfterViewInit, Directive, ElementRef, NgZone, OnDestroy} from '@angular/ import {fromEvent, merge, Subject} from 'rxjs'; import {filter, map, mapTo, pairwise, startWith, take, takeUntil} from 'rxjs/operators'; -import {_closest, _matches} from '@angular/cdk-experimental/popover-edit'; +import {_closest} from '@angular/cdk-experimental/popover-edit'; import {ColumnResizeNotifier, ColumnResizeNotifierSource} from './column-resize-notifier'; import {HEADER_CELL_SELECTOR, RESIZE_OVERLAY_SELECTOR} from './selectors'; @@ -83,7 +83,7 @@ export abstract class ColumnResize implements AfterViewInit, OnDestroy { filter( event => !!event.relatedTarget && - !_matches(event.relatedTarget as Element, RESIZE_OVERLAY_SELECTOR), + !(event.relatedTarget as Element).matches(RESIZE_OVERLAY_SELECTOR), ), mapTo(null), takeUntil(this.destroyed), diff --git a/src/cdk-experimental/column-resize/resizable.ts b/src/cdk-experimental/column-resize/resizable.ts index 975aedddd680..3a26093b32b0 100644 --- a/src/cdk-experimental/column-resize/resizable.ts +++ b/src/cdk-experimental/column-resize/resizable.ts @@ -67,6 +67,7 @@ export abstract class Resizable protected abstract readonly changeDetectorRef: ChangeDetectorRef; private _viewInitialized = false; + private _isDestroyed = false; /** The minimum width to allow the column to be sized to. */ get minWidthPx(): number { @@ -100,6 +101,7 @@ export abstract class Resizable this._appendInlineHandle(); this.styleScheduler.scheduleEnd(() => { + if (this._isDestroyed) return; this._viewInitialized = true; this._applyMinWidthPx(); this._applyMaxWidthPx(); @@ -107,6 +109,7 @@ export abstract class Resizable } ngOnDestroy(): void { + this._isDestroyed = true; this.destroyed.next(); this.destroyed.complete(); this.inlineHandle?.remove(); diff --git a/src/cdk-experimental/combobox/combobox.ts b/src/cdk-experimental/combobox/combobox.ts index 7e6c2cc9d9cb..049576ea199b 100644 --- a/src/cdk-experimental/combobox/combobox.ts +++ b/src/cdk-experimental/combobox/combobox.ts @@ -70,7 +70,7 @@ export class CdkCombobox implements OnDestroy, AfterContentInit { get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } private _disabled: boolean = false; @@ -79,7 +79,7 @@ export class CdkCombobox implements OnDestroy, AfterContentInit { get openActions(): OpenAction[] { return this._openActions; } - set openActions(action: OpenAction[]) { + set openActions(action: OpenActionInput) { this._openActions = this._coerceOpenActionProperty(action); } private _openActions: OpenAction[] = ['click']; @@ -89,7 +89,7 @@ export class CdkCombobox implements OnDestroy, AfterContentInit { get autoSetText(): boolean { return this._autoSetText; } - set autoSetText(value: boolean) { + set autoSetText(value: BooleanInput) { this._autoSetText = coerceBooleanProperty(value); } private _autoSetText: boolean = true; @@ -287,18 +287,14 @@ export class CdkCombobox implements OnDestroy, AfterContentInit { return this._panelContent; } - private _coerceOpenActionProperty(input: string | OpenAction[]): OpenAction[] { + private _coerceOpenActionProperty(input: OpenActionInput): OpenAction[] { let actions = typeof input === 'string' ? input.trim().split(/[ ,]+/) : input; if ( (typeof ngDevMode === 'undefined' || ngDevMode) && - actions.some(a => allowedOpenActions.indexOf(a) === -1) + actions?.some(a => allowedOpenActions.indexOf(a) === -1) ) { throw Error(`${input} is not a support open action for CdkCombobox`); } return actions as OpenAction[]; } - - static ngAcceptInputType_openActions: OpenActionInput; - static ngAcceptInputType_autoSetText: OpenActionInput; - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/cdk-experimental/dialog/dialog-container.ts b/src/cdk-experimental/dialog/dialog-container.ts index 57298e0fd86a..aa7744418b8b 100644 --- a/src/cdk-experimental/dialog/dialog-container.ts +++ b/src/cdk-experimental/dialog/dialog-container.ts @@ -24,7 +24,6 @@ import { ComponentRef, ElementRef, EmbeddedViewRef, - HostBinding, Inject, NgZone, OnDestroy, @@ -70,6 +69,11 @@ export function throwDialogContentAlreadyAttachedError() { }`, '(@dialog.start)': '_onAnimationStart($event)', '(@dialog.done)': '_animationDone.next($event)', + 'tabindex': '-1', + '[attr.role]': '_config.role', + 'aria-modal': 'true', + '[attr.aria-label]': '_config.ariaLabel || null', + '[attr.aria-describedby]': '_config.ariaDescribedBy', }, }) export class CdkDialogContainer extends BasePortalOutlet implements OnDestroy { @@ -84,30 +88,6 @@ export class CdkDialogContainer extends BasePortalOutlet implements OnDestroy { /** The class that traps and manages focus within the dialog. */ private _focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement); - // @HostBinding is used in the class as it is expected to be extended. Since @Component decorator - // metadata is not inherited by child classes, instead the host binding data is defined in a way - // that can be inherited. - // tslint:disable:no-host-decorator-in-concrete no-private-getters - @HostBinding('attr.aria-label') get _ariaLabel() { - return this._config.ariaLabel || null; - } - - @HostBinding('attr.aria-describedby') - get _ariaDescribedBy() { - return this._config.ariaDescribedBy; - } - - @HostBinding('attr.role') get _role() { - return this._config.role; - } - - @HostBinding('attr.aria-modal') _ariaModal: boolean = true; - - @HostBinding('attr.tabindex') get _tabindex() { - return -1; - } - // tslint:disable:no-host-decorator-in-concrete no-private-getters - /** The portal host inside of this container into which the dialog content will be loaded. */ @ViewChild(CdkPortalOutlet, {static: true}) _portalHost: CdkPortalOutlet; diff --git a/src/cdk-experimental/dialog/dialog-module.ts b/src/cdk-experimental/dialog/dialog-module.ts index e6be6d315a14..22bccdc6c8c0 100644 --- a/src/cdk-experimental/dialog/dialog-module.ts +++ b/src/cdk-experimental/dialog/dialog-module.ts @@ -37,6 +37,5 @@ import { {provide: DIALOG_CONTAINER, useValue: CdkDialogContainer}, {provide: DIALOG_CONFIG, useValue: DialogConfig}, ], - entryComponents: [CdkDialogContainer], }) export class DialogModule {} diff --git a/src/cdk-experimental/dialog/dialog.spec.ts b/src/cdk-experimental/dialog/dialog.spec.ts index e0bb4631492a..ca98a1335e5f 100644 --- a/src/cdk-experimental/dialog/dialog.spec.ts +++ b/src/cdk-experimental/dialog/dialog.spec.ts @@ -13,7 +13,6 @@ import { Directive, Inject, Injector, - NgModule, TemplateRef, ViewChild, ViewContainerRef, @@ -45,7 +44,16 @@ describe('Dialog', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [DialogModule, DialogTestModule], + imports: [DialogModule, NoopAnimationsModule], + declarations: [ + ComponentWithChildViewContainer, + ComponentWithTemplateRef, + PizzaMsg, + ContentElementDialog, + DialogWithInjectedData, + DialogWithoutFocusableElements, + DirectiveWithViewContainer, + ], providers: [{provide: Location, useClass: SpyLocation}], }); @@ -1138,7 +1146,7 @@ describe('Dialog with a parent Dialog', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [DialogModule, DialogTestModule], + imports: [DialogModule, NoopAnimationsModule], declarations: [ComponentThatProvidesMatDialog], providers: [ { @@ -1315,32 +1323,3 @@ class DialogWithoutFocusableElements {} encapsulation: ViewEncapsulation.ShadowDom, }) class ShadowDomComponent {} - -// Create a real (non-test) NgModule as a workaround for -// https://github.com/angular/angular/issues/10760 -const TEST_DIRECTIVES = [ - ComponentWithChildViewContainer, - ComponentWithTemplateRef, - PizzaMsg, - DirectiveWithViewContainer, - ComponentWithOnPushViewContainer, - ContentElementDialog, - DialogWithInjectedData, - DialogWithoutFocusableElements, - ShadowDomComponent, -]; - -@NgModule({ - imports: [DialogModule, NoopAnimationsModule], - exports: TEST_DIRECTIVES, - declarations: TEST_DIRECTIVES, - entryComponents: [ - ComponentWithChildViewContainer, - ComponentWithTemplateRef, - PizzaMsg, - ContentElementDialog, - DialogWithInjectedData, - DialogWithoutFocusableElements, - ], -}) -class DialogTestModule {} diff --git a/src/cdk-experimental/listbox/listbox.ts b/src/cdk-experimental/listbox/listbox.ts index e29b8fbfc401..6f15c1ff67c5 100644 --- a/src/cdk-experimental/listbox/listbox.ts +++ b/src/cdk-experimental/listbox/listbox.ts @@ -74,7 +74,7 @@ export class CdkOption implements ListKeyManagerOption, Highlightab get selected(): boolean { return this._selected; } - set selected(value: boolean) { + set selected(value: BooleanInput) { if (!this._disabled) { this._selected = coerceBooleanProperty(value); } @@ -84,7 +84,7 @@ export class CdkOption implements ListKeyManagerOption, Highlightab get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } @@ -198,9 +198,6 @@ export class CdkOption implements ListKeyManagerOption, Highlightab setInactiveStyles() { this._active = false; } - - static ngAcceptInputType_selected: BooleanInput; - static ngAcceptInputType_disabled: BooleanInput; } @Directive({ @@ -261,16 +258,17 @@ export class CdkListbox implements AfterContentInit, OnDestroy, OnInit, Contr get multiple(): boolean { return this._multiple; } - set multiple(value: boolean) { - this._updateSelectionOnMultiSelectionChange(value); - this._multiple = coerceBooleanProperty(value); + set multiple(value: BooleanInput) { + const coercedValue = coerceBooleanProperty(value); + this._updateSelectionOnMultiSelectionChange(coercedValue); + this._multiple = coercedValue; } @Input() get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } @@ -279,7 +277,7 @@ export class CdkListbox implements AfterContentInit, OnDestroy, OnInit, Contr get useActiveDescendant(): boolean { return this._useActiveDescendant; } - set useActiveDescendant(shouldUseActiveDescendant: boolean) { + set useActiveDescendant(shouldUseActiveDescendant: BooleanInput) { this._useActiveDescendant = coerceBooleanProperty(shouldUseActiveDescendant); } @@ -288,7 +286,7 @@ export class CdkListbox implements AfterContentInit, OnDestroy, OnInit, Contr get autoFocus(): boolean { return this._autoFocus; } - set autoFocus(shouldAutoFocus: boolean) { + set autoFocus(shouldAutoFocus: BooleanInput) { this._autoFocus = coerceBooleanProperty(shouldAutoFocus); } @@ -553,11 +551,6 @@ export class CdkListbox implements AfterContentInit, OnDestroy, OnInit, Contr } } } - - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_multiple: BooleanInput; - static ngAcceptInputType_useActiveDescendant: BooleanInput; - static ngAcceptInputType_autoFocus: BooleanInput; } /** Change event that is being fired whenever the selected state of an option changes. */ diff --git a/src/cdk-experimental/menu/context-menu.spec.ts b/src/cdk-experimental/menu/context-menu.spec.ts index f5a2d6abd753..f260378b3461 100644 --- a/src/cdk-experimental/menu/context-menu.spec.ts +++ b/src/cdk-experimental/menu/context-menu.spec.ts @@ -39,7 +39,7 @@ describe('CdkContextMenuTrigger', () => { /** Get the context in which the context menu should trigger. */ function getMenuContext() { - return fixture.componentInstance.trigger.nativeElement; + return fixture.componentInstance.triggerElement.nativeElement; } /** Open up the context menu and run change detection. */ @@ -73,6 +73,29 @@ describe('CdkContextMenuTrigger', () => { expect(getContextMenu()).not.toBeDefined(); }); + it('should not close the menu on first auxclick after opening via contextmenu event', () => { + openContextMenu(); + + fixture.nativeElement.querySelector('#other').dispatchEvent(new MouseEvent('auxclick')); + fixture.detectChanges(); + + expect(getContextMenu()).toBeDefined(); + + fixture.nativeElement.querySelector('#other').dispatchEvent(new MouseEvent('auxclick')); + fixture.detectChanges(); + + expect(getContextMenu()).not.toBeDefined(); + }); + + it('should close the menu on first auxclick after opening programmatically', () => { + fixture.componentInstance.trigger.open({x: 0, y: 0}); + + fixture.nativeElement.querySelector('#other').dispatchEvent(new MouseEvent('auxclick')); + fixture.detectChanges(); + + expect(getContextMenu()).not.toBeDefined(); + }); + it('should close out the context menu when clicking a menu item', () => { openContextMenu(); @@ -103,7 +126,7 @@ describe('CdkContextMenuTrigger', () => { it('should focus the first menuitem when the context menu is opened', () => { openContextMenu(); - expect(document.querySelector(':focus')!.id).toEqual('first_menu_item'); + expect(document.activeElement!.id).toEqual('first_menu_item'); }); }); @@ -397,7 +420,8 @@ describe('CdkContextMenuTrigger', () => { `, }) class SimpleContextMenu { - @ViewChild(CdkContextMenuTrigger, {read: ElementRef}) trigger: ElementRef; + @ViewChild(CdkContextMenuTrigger) trigger: CdkContextMenuTrigger; + @ViewChild(CdkContextMenuTrigger, {read: ElementRef}) triggerElement: ElementRef; @ViewChild(CdkMenu) menu?: CdkMenu; @ViewChild(CdkMenu, {read: ElementRef}) nativeMenu?: ElementRef; diff --git a/src/cdk-experimental/menu/context-menu.ts b/src/cdk-experimental/menu/context-menu.ts index ba97d7a98746..481add83506d 100644 --- a/src/cdk-experimental/menu/context-menu.ts +++ b/src/cdk-experimental/menu/context-menu.ts @@ -8,28 +8,28 @@ import { Directive, - Input, - ViewContainerRef, - Output, EventEmitter, - Optional, - OnDestroy, Inject, Injectable, InjectionToken, + Input, + OnDestroy, + Optional, + Output, + ViewContainerRef, } from '@angular/core'; import {Directionality} from '@angular/cdk/bidi'; import { - OverlayRef, + ConnectedPosition, + FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, - FlexibleConnectedPositionStrategy, - ConnectedPosition, + OverlayRef, } from '@angular/cdk/overlay'; -import {TemplatePortal, Portal} from '@angular/cdk/portal'; -import {coerceBooleanProperty, BooleanInput} from '@angular/cdk/coercion'; -import {Subject, merge} from 'rxjs'; -import {takeUntil} from 'rxjs/operators'; +import {Portal, TemplatePortal} from '@angular/cdk/portal'; +import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; +import {merge, partition, Subject} from 'rxjs'; +import {skip, takeUntil} from 'rxjs/operators'; import {CdkMenuPanel} from './menu-panel'; import {MenuStack} from './menu-stack'; import {throwExistingMenuStackError} from './menu-errors'; @@ -114,10 +114,10 @@ export class CdkContextMenuTrigger implements OnDestroy { /** Whether the context menu should be disabled. */ @Input('cdkContextMenuDisabled') - get disabled() { + get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } private _disabled = false; @@ -152,6 +152,10 @@ export class CdkContextMenuTrigger implements OnDestroy { * @param coordinates where to open the context menu */ open(coordinates: ContextMenuCoordinates) { + this._open(coordinates, false); + } + + private _open(coordinates: ContextMenuCoordinates, ignoreFirstOutsideAuxClick: boolean) { if (this.disabled) { return; } else if (this.isOpen()) { @@ -176,7 +180,7 @@ export class CdkContextMenuTrigger implements OnDestroy { } this._overlayRef.attach(this._getMenuContent()); - this._subscribeToOutsideClicks(); + this._subscribeToOutsideClicks(ignoreFirstOutsideAuxClick); } } @@ -200,7 +204,7 @@ export class CdkContextMenuTrigger implements OnDestroy { event.stopPropagation(); this._contextMenuTracker.update(this); - this.open({x: event.clientX, y: event.clientY}); + this._open({x: event.clientX, y: event.clientY}, true); // A context menu can be triggered via a mouse right click or a keyboard shortcut. if (event.button === 2) { @@ -285,16 +289,20 @@ export class CdkContextMenuTrigger implements OnDestroy { * Subscribe to the overlays outside pointer events stream and handle closing out the stack if a * click occurs outside the menus. */ - private _subscribeToOutsideClicks() { + private _subscribeToOutsideClicks(ignoreFirstAuxClick: boolean) { if (this._overlayRef) { - this._overlayRef - .outsidePointerEvents() - .pipe(takeUntil(this._stopOutsideClicksListener)) - .subscribe(event => { - if (!isClickInsideMenuOverlay(event.target as Element)) { - this._menuStack.closeAll(); - } - }); + let outsideClicks = this._overlayRef.outsidePointerEvents(); + // If the menu was triggered by the `contextmenu` event, skip the first `auxclick` event + // because it fires when the mouse is released on the same click that opened the menu. + if (ignoreFirstAuxClick) { + const [auxClicks, nonAuxClicks] = partition(outsideClicks, ({type}) => type === 'auxclick'); + outsideClicks = merge(nonAuxClicks, auxClicks.pipe(skip(1))); + } + outsideClicks.pipe(takeUntil(this._stopOutsideClicksListener)).subscribe(event => { + if (!isClickInsideMenuOverlay(event.target as Element)) { + this._menuStack.closeAll(); + } + }); } } @@ -326,6 +334,4 @@ export class CdkContextMenuTrigger implements OnDestroy { this._menuPanel._menuStack = null; } } - - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/cdk-experimental/menu/menu-bar.spec.ts b/src/cdk-experimental/menu/menu-bar.spec.ts index 1c4e0cf29cfb..61aafbe534f7 100644 --- a/src/cdk-experimental/menu/menu-bar.spec.ts +++ b/src/cdk-experimental/menu/menu-bar.spec.ts @@ -986,8 +986,8 @@ describe('MenuBar', () => { dispatchMouseEvent(menuBarNativeItems[0], 'mouseenter'); detectChanges(); - expect(document.querySelector(':focus')).not.toEqual(menuBarNativeItems[0]); - expect(document.querySelector(':focus')).not.toEqual(menuBarNativeItems[1]); + expect(document.activeElement).not.toEqual(menuBarNativeItems[0]); + expect(document.activeElement).not.toEqual(menuBarNativeItems[1]); }, ); @@ -1089,7 +1089,7 @@ describe('MenuBar', () => { dispatchKeyboardEvent(nativeMenus[0], 'keydown', DOWN_ARROW); - expect(document.querySelector(':focus')).toEqual(fileMenuNativeItems[1]); + expect(document.activeElement).toEqual(fileMenuNativeItems[1]); }, ); diff --git a/src/cdk-experimental/menu/menu-bar.ts b/src/cdk-experimental/menu/menu-bar.ts index c68a7f006b52..255f8623cfd7 100644 --- a/src/cdk-experimental/menu/menu-bar.ts +++ b/src/cdk-experimental/menu/menu-bar.ts @@ -15,7 +15,6 @@ import { OnDestroy, Optional, NgZone, - HostListener, ElementRef, Inject, Self, @@ -46,6 +45,8 @@ import {MenuAim, MENU_AIM} from './menu-aim'; 'class': 'cdk-menu-bar', 'tabindex': '0', '[attr.aria-orientation]': 'orientation', + '(focus)': 'focusFirstItem()', + '(keydown)': '_handleKeyEvent($event)', }, providers: [ {provide: CdkMenuGroup, useExisting: CdkMenuBar}, @@ -97,11 +98,6 @@ export class CdkMenuBar extends CdkMenuGroup implements Menu, AfterContentInit, this._menuAim?.initialize(this, this._pointerTracker!); } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('focus') /** Place focus on the first MenuItem in the menu and set the focus origin. */ focusFirstItem(focusOrigin: FocusOrigin = 'program') { this._keyManager.setFocusOrigin(focusOrigin); @@ -114,11 +110,6 @@ export class CdkMenuBar extends CdkMenuGroup implements Menu, AfterContentInit, this._keyManager.setLastItemActive(); } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('keydown', ['$event']) /** * Handle keyboard events, specifically changing the focused element and/or toggling the active * items menu. diff --git a/src/cdk-experimental/menu/menu-item-selectable.ts b/src/cdk-experimental/menu/menu-item-selectable.ts index 59207253e065..d6073454c75f 100644 --- a/src/cdk-experimental/menu/menu-item-selectable.ts +++ b/src/cdk-experimental/menu/menu-item-selectable.ts @@ -25,10 +25,10 @@ export abstract class CdkMenuItemSelectable extends CdkMenuItem { /** Whether the element is checked */ @Input() - get checked() { + get checked(): boolean { return this._checked; } - set checked(value: boolean) { + set checked(value: BooleanInput) { this._checked = coerceBooleanProperty(value); } private _checked = false; @@ -45,6 +45,4 @@ export abstract class CdkMenuItemSelectable extends CdkMenuItem { this.toggled.next(this); } } - - static ngAcceptInputType_checked: BooleanInput; } diff --git a/src/cdk-experimental/menu/menu-item.ts b/src/cdk-experimental/menu/menu-item.ts index 62ae49e1f5d8..e7f8acb5caa9 100644 --- a/src/cdk-experimental/menu/menu-item.ts +++ b/src/cdk-experimental/menu/menu-item.ts @@ -15,7 +15,6 @@ import { Output, EventEmitter, Inject, - HostListener, NgZone, OnDestroy, } from '@angular/core'; @@ -53,6 +52,12 @@ function removeIcons(element: Element) { 'role': 'menuitem', 'class': 'cdk-menu-item', '[attr.aria-disabled]': 'disabled || null', + '(blur)': '_resetTabIndex()', + '(mouseout)': '_resetTabIndex()', + '(focus)': '_setTabIndex()', + '(mouseenter)': '_setTabIndex($event)', + '(click)': 'trigger()', + '(keydown)': '_onKeydown($event)', }, }) export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, OnDestroy { @@ -61,7 +66,7 @@ export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } private _disabled = false; @@ -104,12 +109,6 @@ export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, this._elementRef.nativeElement.focus(); } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('blur') - @HostListener('mouseout') /** Reset the _tabindex to -1. */ _resetTabIndex() { if (!this._isStandaloneItem()) { @@ -117,12 +116,6 @@ export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, } } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('focus') - @HostListener('mouseenter', ['$event']) /** * Set the tab index to 0 if not disabled and it's a focus event, or a mouse enter if this element * is not in a menu bar. @@ -143,11 +136,6 @@ export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, return !this._parentMenu; } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('click') /** * If the menu item is not disabled and the element does not have a menu trigger attached, emit * on the cdkMenuItemTriggered emitter and close all open menus. @@ -192,11 +180,6 @@ export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, return clone.textContent?.trim() || ''; } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('keydown', ['$event']) /** * Handles keyboard events for the menu item, specifically either triggering the user defined * callback or opening/closing the current menu based on whether the left or right arrow key was @@ -276,6 +259,4 @@ export class CdkMenuItem implements FocusableOption, FocusableElement, Toggler, ngOnDestroy() { this._destroyed.next(); } - - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/cdk-experimental/menu/menu.spec.ts b/src/cdk-experimental/menu/menu.spec.ts index c9b2526241a7..0152952520a0 100644 --- a/src/cdk-experimental/menu/menu.spec.ts +++ b/src/cdk-experimental/menu/menu.spec.ts @@ -214,7 +214,7 @@ describe('Menu', () => { dispatchKeyboardEvent(document, 'keydown', TAB); nativeMenu.focus(); - expect(document.querySelector(':focus')).toEqual(nativeMenuItems[0]); + expect(document.activeElement).toEqual(nativeMenuItems[0]); }); }); diff --git a/src/cdk-experimental/menu/menu.ts b/src/cdk-experimental/menu/menu.ts index c168940dd213..369dcbaa21eb 100644 --- a/src/cdk-experimental/menu/menu.ts +++ b/src/cdk-experimental/menu/menu.ts @@ -18,7 +18,6 @@ import { Optional, OnInit, NgZone, - HostListener, ElementRef, Inject, Self, @@ -60,6 +59,8 @@ import {MENU_AIM, MenuAim} from './menu-aim'; 'class': 'cdk-menu', '[class.cdk-menu-inline]': '_isInline()', '[attr.aria-orientation]': 'orientation', + '(focus)': 'focusFirstItem()', + '(keydown)': '_handleKeyEvent($event)', }, providers: [ {provide: CdkMenuGroup, useExisting: CdkMenu}, @@ -136,11 +137,6 @@ export class CdkMenu extends CdkMenuGroup implements Menu, AfterContentInit, OnI this._menuAim?.initialize(this, this._pointerTracker!); } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('focus') /** Place focus on the first MenuItem in the menu and set the focus origin. */ focusFirstItem(focusOrigin: FocusOrigin = 'program') { this._keyManager.setFocusOrigin(focusOrigin); @@ -153,11 +149,6 @@ export class CdkMenu extends CdkMenuGroup implements Menu, AfterContentInit, OnI this._keyManager.setLastItemActive(); } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('keydown', ['$event']) /** Handle keyboard events for the Menu. */ _handleKeyEvent(event: KeyboardEvent) { const keyManager = this._keyManager; @@ -349,6 +340,7 @@ export class CdkMenu extends CdkMenuGroup implements Menu, AfterContentInit, OnI } override ngOnDestroy() { + super.ngOnDestroy(); this._emitClosedEvent(); this._pointerTracker?.destroy(); } diff --git a/src/cdk-experimental/popover-edit/lens-directives.ts b/src/cdk-experimental/popover-edit/lens-directives.ts index 312731cded75..7d5670707640 100644 --- a/src/cdk-experimental/popover-edit/lens-directives.ts +++ b/src/cdk-experimental/popover-edit/lens-directives.ts @@ -7,15 +7,7 @@ */ import {Subject} from 'rxjs'; -import { - Directive, - ElementRef, - EventEmitter, - OnDestroy, - OnInit, - Input, - HostListener, -} from '@angular/core'; +import {Directive, ElementRef, EventEmitter, OnDestroy, OnInit, Input} from '@angular/core'; import {hasModifierKey} from '@angular/cdk/keycodes'; import {EDIT_PANE_SELECTOR} from './constants'; import {closest} from './polyfill'; @@ -39,6 +31,11 @@ export type PopoverEditClickOutBehavior = 'close' | 'submit' | 'noop'; ], outputs: ['preservedFormValueChange: cdkEditControlPreservedFormValueChange'], providers: [EditRef], + host: { + '(ngSubmit)': 'handleFormSubmit()', + '(document:click)': 'handlePossibleClickOut($event)', + '(keydown)': '_handleKeydown($event)', + }, }) export class CdkEditControl implements OnDestroy, OnInit { protected readonly destroyed = new Subject(); @@ -81,11 +78,6 @@ export class CdkEditControl implements OnDestroy, OnInit { * the form for validity before proceeding. * Updates the revert state with the latest submitted value then closes the edit. */ - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('ngSubmit') handleFormSubmit(): void { if (this.ignoreSubmitUnlessValid && !this.editRef.isValid()) { return; @@ -106,11 +98,6 @@ export class CdkEditControl implements OnDestroy, OnInit { * Called on click anywhere in the document. * If the click was outside of the lens, trigger the specified click out behavior. */ - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('document:click', ['$event']) handlePossibleClickOut(evt: Event): void { if (closest(evt.target, EDIT_PANE_SELECTOR)) { return; @@ -129,11 +116,6 @@ export class CdkEditControl implements OnDestroy, OnInit { } } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('keydown', ['$event']) _handleKeydown(event: KeyboardEvent) { if (event.key === 'Escape' && !hasModifierKey(event)) { this.close(); @@ -159,6 +141,7 @@ export class CdkEditControl implements OnDestroy, OnInit { selector: 'button[cdkEditRevert]', host: { 'type': 'button', // Prevents accidental form submits. + '(click)': 'revertEdit()', }, }) export class CdkEditRevert { @@ -167,18 +150,20 @@ export class CdkEditRevert { constructor(protected readonly editRef: EditRef) {} - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('click') revertEdit(): void { this.editRef.reset(); } } /** Closes the lens on click. */ -@Directive({selector: '[cdkEditClose]'}) +@Directive({ + selector: '[cdkEditClose]', + host: { + '(click)': 'closeEdit()', + '(keydown.enter)': 'closeEdit()', + '(keydown.space)': 'closeEdit()', + }, +}) export class CdkEditClose { constructor( protected readonly elementRef: ElementRef, @@ -192,15 +177,6 @@ export class CdkEditClose { } } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('click') - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('keydown.enter') - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('keydown.space') closeEdit(): void { // Note that we use `click` here, rather than a keyboard event, because some screen readers // will emit a fake click event instead of an enter keyboard event on buttons. For the keyboard diff --git a/src/cdk-experimental/popover-edit/polyfill.ts b/src/cdk-experimental/popover-edit/polyfill.ts index d71e8cfaa96a..efe2f36375ca 100644 --- a/src/cdk-experimental/popover-edit/polyfill.ts +++ b/src/cdk-experimental/popover-edit/polyfill.ts @@ -6,14 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -/** IE 11 compatible matches implementation. */ -export function matches(element: Element, selector: string): boolean { - return element.matches - ? element.matches(selector) - : (element as any)['msMatchesSelector'](selector); -} - -/** IE 11 compatible closest implementation that is able to start from non-Element Nodes. */ +/** closest implementation that is able to start from non-Element Nodes. */ export function closest( element: EventTarget | Element | null | undefined, selector: string, @@ -27,22 +20,5 @@ export function closest( curr = curr.parentNode; } - return ( - curr && - ((hasNativeClosest - ? curr.closest(selector) - : polyfillClosest(curr, selector)) as Element | null) - ); + return curr?.closest(selector) ?? null; } - -/** Polyfill for browsers without Element.closest. */ -function polyfillClosest(element: Element, selector: string): Element | null { - let curr: Node | null = element; - while (curr != null && !(curr instanceof Element && matches(curr, selector))) { - curr = curr.parentNode; - } - - return (curr || null) as Element | null; -} - -const hasNativeClosest = !!Element.prototype.closest; diff --git a/src/cdk-experimental/popover-edit/public-api.ts b/src/cdk-experimental/popover-edit/public-api.ts index db5e67108b82..96346bf8c856 100644 --- a/src/cdk-experimental/popover-edit/public-api.ts +++ b/src/cdk-experimental/popover-edit/public-api.ts @@ -17,4 +17,4 @@ export * from './table-directives'; // Private to Angular Components export {CELL_SELECTOR as _CELL_SELECTOR} from './constants'; -export {closest as _closest, matches as _matches} from './polyfill'; +export {closest as _closest} from './polyfill'; diff --git a/src/cdk-experimental/popover-edit/table-directives.ts b/src/cdk-experimental/popover-edit/table-directives.ts index 2c128a075afd..05520e727a4b 100644 --- a/src/cdk-experimental/popover-edit/table-directives.ts +++ b/src/cdk-experimental/popover-edit/table-directives.ts @@ -17,7 +17,6 @@ import { OnDestroy, TemplateRef, ViewContainerRef, - HostListener, } from '@angular/core'; import {fromEvent, fromEventPattern, merge, Subject} from 'rxjs'; import { @@ -496,6 +495,9 @@ export class CdkRowHoverContent implements AfterViewInit, OnDestroy { */ @Directive({ selector: '[cdkEditOpen]', + host: { + '(click)': 'openEdit($event)', + }, }) export class CdkEditOpen { constructor( @@ -510,11 +512,6 @@ export class CdkEditOpen { } } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('click', ['$event']) openEdit(evt: Event): void { this.editEventDispatcher.editing.next(closest(this.elementRef.nativeElement!, CELL_SELECTOR)); evt.stopPropagation(); diff --git a/src/cdk-experimental/scrolling/auto-size-virtual-scroll.ts b/src/cdk-experimental/scrolling/auto-size-virtual-scroll.ts index 4116402000ca..016058c9fdba 100644 --- a/src/cdk-experimental/scrolling/auto-size-virtual-scroll.ts +++ b/src/cdk-experimental/scrolling/auto-size-virtual-scroll.ts @@ -472,7 +472,7 @@ export class CdkAutoSizeVirtualScroll implements OnChanges { get minBufferPx(): number { return this._minBufferPx; } - set minBufferPx(value: number) { + set minBufferPx(value: NumberInput) { this._minBufferPx = coerceNumberProperty(value); } _minBufferPx = 100; @@ -487,7 +487,7 @@ export class CdkAutoSizeVirtualScroll implements OnChanges { get maxBufferPx(): number { return this._maxBufferPx; } - set maxBufferPx(value: number) { + set maxBufferPx(value: NumberInput) { this._maxBufferPx = coerceNumberProperty(value); } _maxBufferPx = 200; @@ -498,7 +498,4 @@ export class CdkAutoSizeVirtualScroll implements OnChanges { ngOnChanges() { this._scrollStrategy.updateBufferSize(this.minBufferPx, this.maxBufferPx); } - - static ngAcceptInputType_minBufferPx: NumberInput; - static ngAcceptInputType_maxBufferPx: NumberInput; } diff --git a/src/cdk-experimental/selection/row-selection.ts b/src/cdk-experimental/selection/row-selection.ts index 9516bea4dd06..faae627bba2c 100644 --- a/src/cdk-experimental/selection/row-selection.ts +++ b/src/cdk-experimental/selection/row-selection.ts @@ -32,12 +32,10 @@ export class CdkRowSelection { get index(): number | undefined { return this._index; } - set index(index: number | undefined) { + set index(index: NumberInput) { this._index = coerceNumberProperty(index); } protected _index?: number; constructor(readonly _selection: CdkSelection) {} - - static ngAcceptInputType_index: NumberInput; } diff --git a/src/cdk-experimental/selection/selection-toggle.ts b/src/cdk-experimental/selection/selection-toggle.ts index 7f2a8d1c2f33..14f7f62d222f 100644 --- a/src/cdk-experimental/selection/selection-toggle.ts +++ b/src/cdk-experimental/selection/selection-toggle.ts @@ -37,7 +37,7 @@ export class CdkSelectionToggle implements OnDestroy, OnInit { get index(): number | undefined { return this._index; } - set index(index: number | undefined) { + set index(index: NumberInput) { this._index = coerceNumberProperty(index); } protected _index?: number; @@ -96,6 +96,4 @@ export class CdkSelectionToggle implements OnDestroy, OnInit { private _isSelected(): boolean { return this._selection.isSelected(this.value, this.index); } - - static ngAcceptInputType_index: NumberInput; } diff --git a/src/cdk-experimental/selection/selection.ts b/src/cdk-experimental/selection/selection.ts index 5f7d128ee460..15089716f7ea 100644 --- a/src/cdk-experimental/selection/selection.ts +++ b/src/cdk-experimental/selection/selection.ts @@ -54,7 +54,7 @@ export class CdkSelection implements OnInit, AfterContentChecked, CollectionV get multiple(): boolean { return this._multiple; } - set multiple(multiple: boolean) { + set multiple(multiple: BooleanInput) { this._multiple = coerceBooleanProperty(multiple); } protected _multiple: boolean; @@ -217,8 +217,6 @@ export class CdkSelection implements OnInit, AfterContentChecked, CollectionV } selectAllState: SelectAllState = 'none'; - - static ngAcceptInputType_multiple: BooleanInput; } type SelectAllState = 'all' | 'none' | 'partial'; diff --git a/src/cdk/a11y/_index.scss b/src/cdk/a11y/_index.scss index f49e590fbf88..2db185eb6518 100644 --- a/src/cdk/a11y/_index.scss +++ b/src/cdk/a11y/_index.scss @@ -1,5 +1,5 @@ /// Emits a CSS class, `.cdk-visually-hidden`. This class can be applied to an element -/// to make that element visually hidden while remaining available to assitive technology. +/// to make that element visually hidden while remaining available to assistive technology. @mixin a11y-visually-hidden() { .cdk-visually-hidden { border: 0; diff --git a/src/cdk/a11y/a11y-module.ts b/src/cdk/a11y/a11y-module.ts index 0670bc5a78a3..b83eacd7f1f3 100644 --- a/src/cdk/a11y/a11y-module.ts +++ b/src/cdk/a11y/a11y-module.ts @@ -7,7 +7,6 @@ */ import {ObserversModule} from '@angular/cdk/observers'; -import {PlatformModule} from '@angular/cdk/platform'; import {NgModule} from '@angular/core'; import {CdkMonitorFocus} from './focus-monitor/focus-monitor'; import {CdkTrapFocus} from './focus-trap/focus-trap'; @@ -15,7 +14,7 @@ import {HighContrastModeDetector} from './high-contrast-mode/high-contrast-mode- import {CdkAriaLive} from './live-announcer/live-announcer'; @NgModule({ - imports: [PlatformModule, ObserversModule], + imports: [ObserversModule], declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], }) diff --git a/src/cdk/a11y/aria-describer/aria-describer.spec.ts b/src/cdk/a11y/aria-describer/aria-describer.spec.ts index 01ffe74caeed..28f70523ba6a 100644 --- a/src/cdk/a11y/aria-describer/aria-describer.spec.ts +++ b/src/cdk/a11y/aria-describer/aria-describer.spec.ts @@ -1,5 +1,5 @@ import {A11yModule, CDK_DESCRIBEDBY_HOST_ATTRIBUTE} from '../index'; -import {AriaDescriber, MESSAGES_CONTAINER_ID} from './aria-describer'; +import {AriaDescriber} from './aria-describer'; import {ComponentFixture, TestBed} from '@angular/core/testing'; import {Component, ElementRef, ViewChild, Provider} from '@angular/core'; @@ -209,16 +209,28 @@ describe('AriaDescriber', () => { expect(() => ariaDescriber.describe(node, 'This looks like an element')).not.toThrow(); }); - it('should clear any pre-existing containers', () => { + it('should clear any pre-existing containers coming in from the server', () => { createFixture(); const extraContainer = document.createElement('div'); - extraContainer.id = MESSAGES_CONTAINER_ID; + extraContainer.classList.add('cdk-describedby-message-container'); + extraContainer.setAttribute('platform', 'server'); document.body.appendChild(extraContainer); ariaDescriber.describe(component.element1, 'Hello'); - // Use `querySelectorAll` with an attribute since `getElementById` will stop at the first match. - expect(document.querySelectorAll(`[id='${MESSAGES_CONTAINER_ID}']`).length).toBe(1); + expect(document.querySelectorAll('.cdk-describedby-message-container').length).toBe(1); + extraContainer.remove(); + }); + + it('should not clear any pre-existing containers coming from the browser', () => { + createFixture(); + const extraContainer = document.createElement('div'); + extraContainer.classList.add('cdk-describedby-message-container'); + document.body.appendChild(extraContainer); + + ariaDescriber.describe(component.element1, 'Hello'); + + expect(document.querySelectorAll('.cdk-describedby-message-container').length).toBe(2); extraContainer.remove(); }); @@ -337,7 +349,7 @@ describe('AriaDescriber', () => { }); function getMessagesContainer() { - return document.querySelector(`#${MESSAGES_CONTAINER_ID}`)!; + return document.querySelector('.cdk-describedby-message-container')!; } function getMessageElements(): Element[] | null { diff --git a/src/cdk/a11y/aria-describer/aria-describer.ts b/src/cdk/a11y/aria-describer/aria-describer.ts index 171b3ca83b3f..c7129e135306 100644 --- a/src/cdk/a11y/aria-describer/aria-describer.ts +++ b/src/cdk/a11y/aria-describer/aria-describer.ts @@ -8,6 +8,7 @@ import {DOCUMENT} from '@angular/common'; import {Inject, Injectable, OnDestroy} from '@angular/core'; +import {Platform} from '@angular/cdk/platform'; import {addAriaReferencedId, getAriaReferenceIds, removeAriaReferencedId} from './aria-reference'; /** @@ -22,24 +23,30 @@ export interface RegisteredMessage { referenceCount: number; } -/** ID used for the body container where all messages are appended. */ +/** + * ID used for the body container where all messages are appended. + * @deprecated No longer being used. To be removed. + * @breaking-change 14.0.0 + */ export const MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container'; -/** ID prefix used for each created message element. */ +/** + * ID prefix used for each created message element. + * @deprecated To be turned into a private variable. + * @breaking-change 14.0.0 + */ export const CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message'; -/** Attribute given to each host element that is described by a message element. */ +/** + * Attribute given to each host element that is described by a message element. + * @deprecated To be turned into a private variable. + * @breaking-change 14.0.0 + */ export const CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host'; /** Global incremental identifier for each registered message element. */ let nextId = 0; -/** Global map of all registered message elements that have been placed into the document. */ -const messageRegistry = new Map(); - -/** Container for all registered messages. */ -let messagesContainer: HTMLElement | null = null; - /** * Utility that creates visually hidden elements with a message content. Useful for elements that * want to use aria-describedby to further describe themselves without adding additional visual @@ -49,7 +56,23 @@ let messagesContainer: HTMLElement | null = null; export class AriaDescriber implements OnDestroy { private _document: Document; - constructor(@Inject(DOCUMENT) _document: any) { + /** Map of all registered message elements that have been placed into the document. */ + private _messageRegistry = new Map(); + + /** Container for all registered messages. */ + private _messagesContainer: HTMLElement | null = null; + + /** Unique ID for the service. */ + private readonly _id = `${nextId++}`; + + constructor( + @Inject(DOCUMENT) _document: any, + /** + * @deprecated To be turned into a required parameter. + * @breaking-change 14.0.0 + */ + private _platform?: Platform, + ) { this._document = _document; } @@ -75,8 +98,8 @@ export class AriaDescriber implements OnDestroy { if (typeof message !== 'string') { // We need to ensure that the element has an ID. setMessageId(message); - messageRegistry.set(key, {messageElement: message, referenceCount: 0}); - } else if (!messageRegistry.has(key)) { + this._messageRegistry.set(key, {messageElement: message, referenceCount: 0}); + } else if (!this._messageRegistry.has(key)) { this._createMessageElement(message, role); } @@ -105,21 +128,22 @@ export class AriaDescriber implements OnDestroy { // If the message is a string, it means that it's one that we created for the // consumer so we can remove it safely, otherwise we should leave it in place. if (typeof message === 'string') { - const registeredMessage = messageRegistry.get(key); + const registeredMessage = this._messageRegistry.get(key); if (registeredMessage && registeredMessage.referenceCount === 0) { this._deleteMessageElement(key); } } - if (messagesContainer && messagesContainer.childNodes.length === 0) { - this._deleteMessagesContainer(); + if (this._messagesContainer?.childNodes.length === 0) { + this._messagesContainer.remove(); + this._messagesContainer = null; } } /** Unregisters all created message elements and removes the message container. */ ngOnDestroy() { const describedElements = this._document.querySelectorAll( - `[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`, + `[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}="${this._id}"]`, ); for (let i = 0; i < describedElements.length; i++) { @@ -127,11 +151,9 @@ export class AriaDescriber implements OnDestroy { describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE); } - if (messagesContainer) { - this._deleteMessagesContainer(); - } - - messageRegistry.clear(); + this._messagesContainer?.remove(); + this._messagesContainer = null; + this._messageRegistry.clear(); } /** @@ -148,49 +170,54 @@ export class AriaDescriber implements OnDestroy { } this._createMessagesContainer(); - messagesContainer!.appendChild(messageElement); - messageRegistry.set(getKey(message, role), {messageElement, referenceCount: 0}); + this._messagesContainer!.appendChild(messageElement); + this._messageRegistry.set(getKey(message, role), {messageElement, referenceCount: 0}); } /** Deletes the message element from the global messages container. */ private _deleteMessageElement(key: string | Element) { - const registeredMessage = messageRegistry.get(key); - registeredMessage?.messageElement?.remove(); - messageRegistry.delete(key); + this._messageRegistry.get(key)?.messageElement?.remove(); + this._messageRegistry.delete(key); } /** Creates the global container for all aria-describedby messages. */ private _createMessagesContainer() { - if (!messagesContainer) { - const preExistingContainer = this._document.getElementById(MESSAGES_CONTAINER_ID); + if (this._messagesContainer) { + return; + } + const containerClassName = 'cdk-describedby-message-container'; + const serverContainers = this._document.querySelectorAll( + `.${containerClassName}[platform="server"]`, + ); + + for (let i = 0; i < serverContainers.length; i++) { // When going from the server to the client, we may end up in a situation where there's // already a container on the page, but we don't have a reference to it. Clear the // old container so we don't get duplicates. Doing this, instead of emptying the previous // container, should be slightly faster. - preExistingContainer?.remove(); - - messagesContainer = this._document.createElement('div'); - messagesContainer.id = MESSAGES_CONTAINER_ID; - // We add `visibility: hidden` in order to prevent text in this container from - // being searchable by the browser's Ctrl + F functionality. - // Screen-readers will still read the description for elements with aria-describedby even - // when the description element is not visible. - messagesContainer.style.visibility = 'hidden'; - // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that - // the description element doesn't impact page layout. - messagesContainer.classList.add('cdk-visually-hidden'); - - this._document.body.appendChild(messagesContainer); + serverContainers[i].remove(); } - } - /** Deletes the global messages container. */ - private _deleteMessagesContainer() { - if (messagesContainer) { - messagesContainer.remove(); - messagesContainer = null; + const messagesContainer = this._document.createElement('div'); + + // We add `visibility: hidden` in order to prevent text in this container from + // being searchable by the browser's Ctrl + F functionality. + // Screen-readers will still read the description for elements with aria-describedby even + // when the description element is not visible. + messagesContainer.style.visibility = 'hidden'; + // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that + // the description element doesn't impact page layout. + messagesContainer.classList.add(containerClassName); + messagesContainer.classList.add('cdk-visually-hidden'); + + // @breaking-change 14.0.0 Remove null check for `_platform`. + if (this._platform && !this._platform.isBrowser) { + messagesContainer.setAttribute('platform', 'server'); } + + this._document.body.appendChild(messagesContainer); + this._messagesContainer = messagesContainer; } /** Removes all cdk-describedby messages that are hosted through the element. */ @@ -207,12 +234,12 @@ export class AriaDescriber implements OnDestroy { * message's reference count. */ private _addMessageReference(element: Element, key: string | Element) { - const registeredMessage = messageRegistry.get(key)!; + const registeredMessage = this._messageRegistry.get(key)!; // Add the aria-describedby reference and set the // describedby_host attribute to mark the element. addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id); - element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, ''); + element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id); registeredMessage.referenceCount++; } @@ -221,7 +248,7 @@ export class AriaDescriber implements OnDestroy { * and decrements the registered message's reference count. */ private _removeMessageReference(element: Element, key: string | Element) { - const registeredMessage = messageRegistry.get(key)!; + const registeredMessage = this._messageRegistry.get(key)!; registeredMessage.referenceCount--; removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id); @@ -231,7 +258,7 @@ export class AriaDescriber implements OnDestroy { /** Returns true if the element has been described by the provided message ID. */ private _isElementDescribedByMessage(element: Element, key: string | Element): boolean { const referenceIds = getAriaReferenceIds(element, 'aria-describedby'); - const registeredMessage = messageRegistry.get(key); + const registeredMessage = this._messageRegistry.get(key); const messageId = registeredMessage && registeredMessage.messageElement.id; return !!messageId && referenceIds.indexOf(messageId) != -1; diff --git a/src/cdk/a11y/fake-event-detection.ts b/src/cdk/a11y/fake-event-detection.ts index 2f7750a83a16..d4d6e80ae2af 100644 --- a/src/cdk/a11y/fake-event-detection.ts +++ b/src/cdk/a11y/fake-event-detection.ts @@ -10,10 +10,12 @@ export function isFakeMousedownFromScreenReader(event: MouseEvent): boolean { // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are - // zero. Note that there's an edge case where the user could click the 0x0 spot of the screen - // themselves, but that is unlikely to contain interaction elements. Historically we used to - // check `event.buttons === 0`, however that no longer works on recent versions of NVDA. - return event.offsetX === 0 && event.offsetY === 0; + // zero or `event.buttons` is zero, depending on the browser: + // - `event.buttons` works on Firefox, but fails on Chrome. + // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox. + // Note that there's an edge case where the user could click the 0x0 spot of the + // screen themselves, but that is unlikely to contain interactive elements. + return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0); } /** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */ diff --git a/src/cdk/a11y/focus-monitor/focus-monitor.spec.ts b/src/cdk/a11y/focus-monitor/focus-monitor.spec.ts index e26a03e1dd05..73e9ed4150f5 100644 --- a/src/cdk/a11y/focus-monitor/focus-monitor.spec.ts +++ b/src/cdk/a11y/focus-monitor/focus-monitor.spec.ts @@ -161,7 +161,7 @@ describe('FocusMonitor', () => { expect(changeHandler).toHaveBeenCalledWith('program'); })); - it('should detect fake mousedown from a screen reader', fakeAsync(() => { + it('should detect fake mousedown from a screen reader on Chrome', fakeAsync(() => { // Simulate focus via a fake mousedown from a screen reader. dispatchMouseEvent(buttonElement, 'mousedown'); const event = createMouseEvent('mousedown'); @@ -184,6 +184,29 @@ describe('FocusMonitor', () => { expect(changeHandler).toHaveBeenCalledWith('keyboard'); })); + it('should detect fake mousedown from a screen reader on Firefox', fakeAsync(() => { + // Simulate focus via a fake mousedown from a screen reader. + dispatchMouseEvent(buttonElement, 'mousedown'); + const event = createMouseEvent('mousedown'); + Object.defineProperties(event, {buttons: {get: () => 0}}); + dispatchEvent(buttonElement, event); + + buttonElement.focus(); + fixture.detectChanges(); + flush(); + + expect(buttonElement.classList.length) + .withContext('button should have exactly 2 focus classes') + .toBe(2); + expect(buttonElement.classList.contains('cdk-focused')) + .withContext('button should have cdk-focused class') + .toBe(true); + expect(buttonElement.classList.contains('cdk-keyboard-focused')) + .withContext('button should have cdk-keyboard-focused class') + .toBe(true); + expect(changeHandler).toHaveBeenCalledWith('keyboard'); + })); + it('focusVia keyboard should simulate keyboard focus', fakeAsync(() => { focusMonitor.focusVia(buttonElement, 'keyboard'); flush(); diff --git a/src/cdk/a11y/focus-monitor/focus-monitor.ts b/src/cdk/a11y/focus-monitor/focus-monitor.ts index 9e0149a9b5e2..fe7b50acaf54 100644 --- a/src/cdk/a11y/focus-monitor/focus-monitor.ts +++ b/src/cdk/a11y/focus-monitor/focus-monitor.ts @@ -95,10 +95,10 @@ export class FocusMonitor implements OnDestroy { private _windowFocused = false; /** The timeout id of the window focus timeout. */ - private _windowFocusTimeoutId: any; + private _windowFocusTimeoutId: number; /** The timeout id of the origin clearing timeout. */ - private _originTimeoutId: any; + private _originTimeoutId: number; /** * Whether the origin was determined via a touch interaction. Necessary as properly attributing @@ -134,7 +134,7 @@ export class FocusMonitor implements OnDestroy { // Make a note of when the window regains focus, so we can // restore the origin info for the focused element. this._windowFocused = true; - this._windowFocusTimeoutId = setTimeout(() => (this._windowFocused = false)); + this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false)); }; /** Used to reference correct document/window */ diff --git a/src/cdk/a11y/focus-trap/focus-trap.ts b/src/cdk/a11y/focus-trap/focus-trap.ts index f292f41ab634..970c779ea2c0 100644 --- a/src/cdk/a11y/focus-trap/focus-trap.ts +++ b/src/cdk/a11y/focus-trap/focus-trap.ts @@ -164,26 +164,28 @@ export class FocusTrap { */ private _getRegionBoundary(bound: 'start' | 'end'): HTMLElement | null { // Contains the deprecated version of selector, for temporary backwards comparability. - let markers = this._element.querySelectorAll( + const markers = this._element.querySelectorAll( `[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`, ) as NodeListOf; - for (let i = 0; i < markers.length; i++) { - // @breaking-change 8.0.0 - if (markers[i].hasAttribute(`cdk-focus-${bound}`)) { - console.warn( - `Found use of deprecated attribute 'cdk-focus-${bound}', ` + - `use 'cdkFocusRegion${bound}' instead. The deprecated ` + - `attribute will be removed in 8.0.0.`, - markers[i], - ); - } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) { - console.warn( - `Found use of deprecated attribute 'cdk-focus-region-${bound}', ` + - `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` + - `will be removed in 8.0.0.`, - markers[i], - ); + if (typeof ngDevMode === 'undefined' || ngDevMode) { + for (let i = 0; i < markers.length; i++) { + // @breaking-change 8.0.0 + if (markers[i].hasAttribute(`cdk-focus-${bound}`)) { + console.warn( + `Found use of deprecated attribute 'cdk-focus-${bound}', ` + + `use 'cdkFocusRegion${bound}' instead. The deprecated ` + + `attribute will be removed in 8.0.0.`, + markers[i], + ); + } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) { + console.warn( + `Found use of deprecated attribute 'cdk-focus-region-${bound}', ` + + `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` + + `will be removed in 8.0.0.`, + markers[i], + ); + } } } @@ -207,7 +209,10 @@ export class FocusTrap { if (redirectToElement) { // @breaking-change 8.0.0 - if (redirectToElement.hasAttribute(`cdk-focus-initial`)) { + if ( + (typeof ngDevMode === 'undefined' || ngDevMode) && + redirectToElement.hasAttribute(`cdk-focus-initial`) + ) { console.warn( `Found use of deprecated attribute 'cdk-focus-initial', ` + `use 'cdkFocusInitial' instead. The deprecated attribute ` + @@ -412,7 +417,7 @@ export class CdkTrapFocus implements OnDestroy, AfterContentInit, OnChanges, DoC get enabled(): boolean { return this.focusTrap.enabled; } - set enabled(value: boolean) { + set enabled(value: BooleanInput) { this.focusTrap.enabled = coerceBooleanProperty(value); } @@ -424,7 +429,7 @@ export class CdkTrapFocus implements OnDestroy, AfterContentInit, OnChanges, DoC get autoCapture(): boolean { return this._autoCapture; } - set autoCapture(value: boolean) { + set autoCapture(value: BooleanInput) { this._autoCapture = coerceBooleanProperty(value); } private _autoCapture: boolean; @@ -483,7 +488,4 @@ export class CdkTrapFocus implements OnDestroy, AfterContentInit, OnChanges, DoC this._previouslyFocusedElement = _getFocusedElementPierceShadowDom(); this.focusTrap.focusInitialElementWhenReady(); } - - static ngAcceptInputType_enabled: BooleanInput; - static ngAcceptInputType_autoCapture: BooleanInput; } diff --git a/src/cdk/a11y/high-contrast-mode/high-contrast-mode-detector.ts b/src/cdk/a11y/high-contrast-mode/high-contrast-mode-detector.ts index be2e40d41a4f..a92a39a2e990 100644 --- a/src/cdk/a11y/high-contrast-mode/high-contrast-mode-detector.ts +++ b/src/cdk/a11y/high-contrast-mode/high-contrast-mode-detector.ts @@ -92,19 +92,18 @@ export class HighContrastModeDetector { _applyBodyHighContrastModeCssClasses(): void { if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) { const bodyClasses = this._document.body.classList; - // IE11 doesn't support `classList` operations with multiple arguments - bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS); - bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS); - bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS); + bodyClasses.remove( + HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, + BLACK_ON_WHITE_CSS_CLASS, + WHITE_ON_BLACK_CSS_CLASS, + ); this._hasCheckedHighContrastMode = true; const mode = this.getHighContrastMode(); if (mode === HighContrastMode.BLACK_ON_WHITE) { - bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS); - bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS); + bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS); } else if (mode === HighContrastMode.WHITE_ON_BLACK) { - bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS); - bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS); + bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS); } } } diff --git a/src/cdk/a11y/input-modality/input-modality-detector.spec.ts b/src/cdk/a11y/input-modality/input-modality-detector.spec.ts index b36ac402719b..b403c0d48937 100644 --- a/src/cdk/a11y/input-modality/input-modality-detector.spec.ts +++ b/src/cdk/a11y/input-modality/input-modality-detector.spec.ts @@ -133,7 +133,7 @@ describe('InputModalityDetector', () => { expect(emitted).toEqual(['keyboard', 'mouse', 'touch', 'keyboard']); }); - it('should detect fake screen reader mouse events as keyboard input modality', () => { + it('should detect fake screen reader mouse events as keyboard input modality on Chrome', () => { setupTest(); // Create a fake screen-reader mouse event. @@ -144,6 +144,17 @@ describe('InputModalityDetector', () => { expect(detector.mostRecentModality).toBe('keyboard'); }); + it('should detect fake screen reader mouse events as keyboard input modality on Firefox', () => { + setupTest(); + + // Create a fake screen-reader mouse event. + const event = createMouseEvent('mousedown'); + Object.defineProperties(event, {buttons: {get: () => 0}}); + dispatchEvent(document, event); + + expect(detector.mostRecentModality).toBe('keyboard'); + }); + it('should detect fake screen reader touch events as keyboard input modality', () => { setupTest(); diff --git a/src/cdk/a11y/live-announcer/live-announcer.spec.ts b/src/cdk/a11y/live-announcer/live-announcer.spec.ts index 84b7c1ceab58..accde0d9b5a1 100644 --- a/src/cdk/a11y/live-announcer/live-announcer.spec.ts +++ b/src/cdk/a11y/live-announcer/live-announcer.spec.ts @@ -1,8 +1,8 @@ import {MutationObserverFactory} from '@angular/cdk/observers'; -import {Component, Input} from '@angular/core'; +import {Component} from '@angular/core'; import {ComponentFixture, fakeAsync, flush, inject, TestBed, tick} from '@angular/core/testing'; import {By} from '@angular/platform-browser'; -import {A11yModule, AriaLivePoliteness} from '../index'; +import {A11yModule} from '../index'; import {LiveAnnouncer} from './live-announcer'; import { LIVE_ANNOUNCER_ELEMENT_TOKEN, @@ -280,7 +280,7 @@ describe('CdkAriaLive', () => { invokeMutationCallbacks(); flush(); - expect(announcer.announce).toHaveBeenCalledWith('New content', 'polite'); + expect(announcer.announce).toHaveBeenCalledWith('New content', 'polite', undefined); })); it('should dynamically update the politeness', fakeAsync(() => { @@ -289,7 +289,7 @@ describe('CdkAriaLive', () => { invokeMutationCallbacks(); flush(); - expect(announcer.announce).toHaveBeenCalledWith('New content', 'polite'); + expect(announcer.announce).toHaveBeenCalledWith('New content', 'polite', undefined); announcerSpy.calls.reset(); fixture.componentInstance.politeness = 'off'; @@ -307,7 +307,7 @@ describe('CdkAriaLive', () => { invokeMutationCallbacks(); flush(); - expect(announcer.announce).toHaveBeenCalledWith('Newest content', 'assertive'); + expect(announcer.announce).toHaveBeenCalledWith('Newest content', 'assertive', undefined); })); it('should not announce the same text multiple times', fakeAsync(() => { @@ -324,6 +324,16 @@ describe('CdkAriaLive', () => { expect(announcer.announce).toHaveBeenCalledTimes(1); })); + + it('should be able to pass in a duration', fakeAsync(() => { + fixture.componentInstance.content = 'New content'; + fixture.componentInstance.duration = 1337; + fixture.detectChanges(); + invokeMutationCallbacks(); + flush(); + + expect(announcer.announce).toHaveBeenCalledWith('New content', 'polite', 1337); + })); }); function getLiveElement(): Element { @@ -339,8 +349,14 @@ class TestApp { } } -@Component({template: `
{{content}}
`}) +@Component({ + template: ` +
{{content}}
`, +}) class DivWithCdkAriaLive { - @Input() politeness: AriaLivePoliteness; - @Input() content = 'Initial content'; + politeness = 'polite'; + content = 'Initial content'; + duration: number; } diff --git a/src/cdk/a11y/live-announcer/live-announcer.ts b/src/cdk/a11y/live-announcer/live-announcer.ts index 551e7b3e0058..4eb584b6993d 100644 --- a/src/cdk/a11y/live-announcer/live-announcer.ts +++ b/src/cdk/a11y/live-announcer/live-announcer.ts @@ -30,7 +30,7 @@ import { export class LiveAnnouncer implements OnDestroy { private _liveElement: HTMLElement; private _document: Document; - private _previousTimeout: any; + private _previousTimeout: number; constructor( @Optional() @Inject(LIVE_ANNOUNCER_ELEMENT_TOKEN) elementToken: any, @@ -198,7 +198,7 @@ export class CdkAriaLive implements OnDestroy { // The `MutationObserver` fires also for attribute // changes which we don't want to announce. if (elementText !== this._previousAnnouncedText) { - this._liveAnnouncer.announce(elementText, this._politeness); + this._liveAnnouncer.announce(elementText, this._politeness, this.duration); this._previousAnnouncedText = elementText; } }); @@ -207,6 +207,9 @@ export class CdkAriaLive implements OnDestroy { } private _politeness: AriaLivePoliteness = 'polite'; + /** Time in milliseconds after which to clear out the announcer element. */ + @Input('cdkAriaLiveDuration') duration: number; + private _previousAnnouncedText?: string; private _subscription: Subscription | null; diff --git a/src/cdk/accordion/accordion-item.ts b/src/cdk/accordion/accordion-item.ts index 55db00818839..2a2366ebd16a 100644 --- a/src/cdk/accordion/accordion-item.ts +++ b/src/cdk/accordion/accordion-item.ts @@ -63,7 +63,7 @@ export class CdkAccordionItem implements OnDestroy { get expanded(): boolean { return this._expanded; } - set expanded(expanded: boolean) { + set expanded(expanded: BooleanInput) { expanded = coerceBooleanProperty(expanded); // Only emit events and update the internal value if the value changes. @@ -95,7 +95,7 @@ export class CdkAccordionItem implements OnDestroy { get disabled(): boolean { return this._disabled; } - set disabled(disabled: boolean) { + set disabled(disabled: BooleanInput) { this._disabled = coerceBooleanProperty(disabled); } private _disabled = false; @@ -166,7 +166,4 @@ export class CdkAccordionItem implements OnDestroy { } }); } - - static ngAcceptInputType_expanded: BooleanInput; - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/cdk/accordion/accordion.ts b/src/cdk/accordion/accordion.ts index 9a34cd3e3083..3127c869a67a 100644 --- a/src/cdk/accordion/accordion.ts +++ b/src/cdk/accordion/accordion.ts @@ -43,7 +43,7 @@ export class CdkAccordion implements OnDestroy, OnChanges { get multi(): boolean { return this._multi; } - set multi(multi: boolean) { + set multi(multi: BooleanInput) { this._multi = coerceBooleanProperty(multi); } private _multi: boolean = false; @@ -68,6 +68,4 @@ export class CdkAccordion implements OnDestroy, OnChanges { this._stateChanges.complete(); this._openCloseAllActions.complete(); } - - static ngAcceptInputType_multi: BooleanInput; } diff --git a/src/cdk/bidi/bidi.md b/src/cdk/bidi/bidi.md index 272c92e1b466..3c79bdf5709d 100644 --- a/src/cdk/bidi/bidi.md +++ b/src/cdk/bidi/bidi.md @@ -1,34 +1,34 @@ The `bidi` package provides a common system for components to get and respond to change in the -application's LTR/RTL layout direction. +application's LTR/RTL layout direction. ### Directionality - + When including the CDK's `BidiModule`, components can inject `Directionality` to get the current text direction (RTL or LTR); #### Example ```ts -@Component({ ... }) +@Component({ ... }) export class MyWidget implements OnDestroy { /** Whether the widget is in RTL mode or not. */ private isRtl: boolean; - + /** Subscription to the Directionality change EventEmitter. */ - private _dirChangeSubscription = Subscription.EMPTY; - + private _dirChangeSubscription = Subscription.EMPTY; + constructor(dir: Directionality) { this.isRtl = dir.value === 'rtl'; - + this._dirChangeSubscription = dir.change.subscribe(() => { this.flipDirection(); }); } - + ngOnDestroy() { this._dirChangeSubscription.unsubscribe(); } -} +} ``` ### The `Dir` directive @@ -36,3 +36,11 @@ The `BidiModule` also includes a directive that matches any elements with a `dir directive has the same API as Directionality and provides itself _as_ `Directionality`. By doing this, any component that injects `Directionality` will get the closest ancestor layout direction context. + +### Interpreting the `auto` value +The CDK also supports the native `auto` value for the `dir` attribute, however there's a difference +in how it is interpreted. Some parts of the CDK, like overlays and keyboard navigation, need to know +if the element is in an RTL or LTR layout in order to work correctly. For performance reasons, we +resolve the `auto` value by looking at the browser's language (`navigator.language`) and matching +it against a set of known RTL locales. This differs from the way the browser handles it, which is +based on the text content of the element. diff --git a/src/cdk/bidi/dir.ts b/src/cdk/bidi/dir.ts index 1ce6b20802a3..249fab27b467 100644 --- a/src/cdk/bidi/dir.ts +++ b/src/cdk/bidi/dir.ts @@ -8,7 +8,7 @@ import {Directive, Output, Input, EventEmitter, AfterContentInit, OnDestroy} from '@angular/core'; -import {Direction, Directionality} from './directionality'; +import {Direction, Directionality, _resolveDirectionality} from './directionality'; /** * Directive to listen for changes of direction of part of the DOM. @@ -40,14 +40,16 @@ export class Dir implements Directionality, AfterContentInit, OnDestroy { get dir(): Direction { return this._dir; } - set dir(value: Direction) { - const old = this._dir; - const normalizedValue = value ? value.toLowerCase() : value; + set dir(value: Direction | 'auto') { + const previousValue = this._dir; + // Note: `_resolveDirectionality` resolves the language based on the browser's language, + // whereas the browser does it based on the content of the element. Since doing so based + // on the content can be expensive, for now we're doing the simpler matching. + this._dir = _resolveDirectionality(value); this._rawDir = value; - this._dir = normalizedValue === 'ltr' || normalizedValue === 'rtl' ? normalizedValue : 'ltr'; - if (old !== this._dir && this._isInitialized) { + if (previousValue !== this._dir && this._isInitialized) { this.change.emit(this._dir); } } diff --git a/src/cdk/bidi/directionality.ts b/src/cdk/bidi/directionality.ts index 91d0fa358443..3eda68cfc6b1 100644 --- a/src/cdk/bidi/directionality.ts +++ b/src/cdk/bidi/directionality.ts @@ -11,6 +11,21 @@ import {DIR_DOCUMENT} from './dir-document-token'; export type Direction = 'ltr' | 'rtl'; +/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */ +const RTL_LOCALE_PATTERN = + /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i; + +/** Resolves a string value to a specific direction. */ +export function _resolveDirectionality(rawValue: string): Direction { + const value = rawValue?.toLowerCase() || ''; + + if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) { + return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr'; + } + + return value === 'rtl' ? 'rtl' : 'ltr'; +} + /** * The directionality (LTR / RTL) context for the application (or a subtree of it). * Exposes the current direction and a stream of direction changes. @@ -25,14 +40,9 @@ export class Directionality implements OnDestroy { constructor(@Optional() @Inject(DIR_DOCUMENT) _document?: any) { if (_document) { - // TODO: handle 'auto' value - - // We still need to account for dir="auto". - // It looks like HTMLElemenet.dir is also "auto" when that's set to the attribute, - // but getComputedStyle return either "ltr" or "rtl". avoiding getComputedStyle for now const bodyDir = _document.body ? _document.body.dir : null; const htmlDir = _document.documentElement ? _document.documentElement.dir : null; - const value = bodyDir || htmlDir; - this.value = value === 'ltr' || value === 'rtl' ? value : 'ltr'; + this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr'); } } diff --git a/src/cdk/coercion/coercion.md b/src/cdk/coercion/coercion.md index 6a6fdd3058c2..bdb27f4b4c0f 100644 --- a/src/cdk/coercion/coercion.md +++ b/src/cdk/coercion/coercion.md @@ -3,7 +3,7 @@ Utility functions for coercing `@Input`s into specific types. ### Example ```ts -import {Directive, ElementRef, HostListener} from '@angular/core'; +import {Directive, ElementRef} from '@angular/core'; import { coerceBooleanProperty, BooleanInput, @@ -25,7 +25,7 @@ class MyButton { // It also allows for a string to be passed like ``. @Input() get disabled() { return this._disabled; } - set disabled(value: any) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } private _disabled = false; @@ -37,7 +37,7 @@ class MyButton { // parsed to a number. @Input() get greetDelay() { return this._greetDelay; } - set greetDelay(value: any) { + set greetDelay(value: NumberInput) { this._greetDelay = coerceNumberProperty(value, 0); } private _greetDelay = 0; @@ -51,9 +51,5 @@ class MyButton { getElement(elementOrRef: ElementRef | HTMLElement): HTMLElement { return coerceElement(elementOrRef); } - - // Required so that the template type checker can infer the type of the coerced inputs. - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_greetDelay: NumberInput; } ``` diff --git a/src/cdk/config.bzl b/src/cdk/config.bzl index 583a9e317e07..ba749f162c2d 100644 --- a/src/cdk/config.bzl +++ b/src/cdk/config.bzl @@ -19,7 +19,6 @@ CDK_ENTRYPOINTS = [ "text-field", "tree", "testing", - "testing/protractor", "testing/testbed", "testing/selenium-webdriver", ] diff --git a/src/cdk/drag-drop/directives/drag-handle.ts b/src/cdk/drag-drop/directives/drag-handle.ts index 58db302f0b45..0cf5223ba97e 100644 --- a/src/cdk/drag-drop/directives/drag-handle.ts +++ b/src/cdk/drag-drop/directives/drag-handle.ts @@ -48,7 +48,7 @@ export class CdkDragHandle implements OnDestroy { get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); this._stateChanges.next(this); } @@ -68,6 +68,4 @@ export class CdkDragHandle implements OnDestroy { ngOnDestroy() { this._stateChanges.complete(); } - - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/cdk/drag-drop/directives/drag-preview.ts b/src/cdk/drag-drop/directives/drag-preview.ts index 7d1e2fa177c2..64f189d8924a 100644 --- a/src/cdk/drag-drop/directives/drag-preview.ts +++ b/src/cdk/drag-drop/directives/drag-preview.ts @@ -33,12 +33,10 @@ export class CdkDragPreview { get matchSize(): boolean { return this._matchSize; } - set matchSize(value: boolean) { + set matchSize(value: BooleanInput) { this._matchSize = coerceBooleanProperty(value); } private _matchSize = false; constructor(public templateRef: TemplateRef) {} - - static ngAcceptInputType_matchSize: BooleanInput; } diff --git a/src/cdk/drag-drop/directives/drag.spec.ts b/src/cdk/drag-drop/directives/drag.spec.ts index 71b67e7f0451..bdb320187086 100644 --- a/src/cdk/drag-drop/directives/drag.spec.ts +++ b/src/cdk/drag-drop/directives/drag.spec.ts @@ -259,6 +259,18 @@ describe('CdkDrag', () => { expect(dragElement.style.transform).toBeFalsy(); })); + + it('should prevent the default dragstart action', fakeAsync(() => { + const fixture = createComponent(StandaloneDraggable); + fixture.detectChanges(); + const event = dispatchFakeEvent( + fixture.componentInstance.dragElement.nativeElement, + 'dragstart', + ); + fixture.detectChanges(); + + expect(event.defaultPrevented).toBe(true); + })); }); describe('touch dragging', () => { @@ -409,7 +421,10 @@ describe('CdkDrag', () => { // Assert the event like this, rather than `toHaveBeenCalledWith`, because Jasmine will // go into an infinite loop trying to stringify the event, if the test fails. - expect(event).toEqual({source: fixture.componentInstance.dragInstance}); + expect(event).toEqual({ + source: fixture.componentInstance.dragInstance, + event: jasmine.anything(), + }); })); it('should dispatch an event when the user has stopped dragging', fakeAsync(() => { @@ -428,6 +443,7 @@ describe('CdkDrag', () => { source: fixture.componentInstance.dragInstance, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -442,6 +458,7 @@ describe('CdkDrag', () => { source: jasmine.anything(), distance: {x: 25, y: 30}, dropPoint: {x: 25, y: 30}, + event: jasmine.anything(), }); dragElementViaMouse(fixture, fixture.componentInstance.dragElement.nativeElement, 40, 50); @@ -451,6 +468,7 @@ describe('CdkDrag', () => { source: jasmine.anything(), distance: {x: 40, y: 50}, dropPoint: {x: 40, y: 50}, + event: jasmine.anything(), }); })); @@ -1581,6 +1599,26 @@ describe('CdkDrag', () => { flush(); }).toThrowError(/^cdkDragHandle must be attached to an element node/); })); + + it('should be able to drag an element using a handle with a shadow DOM child', fakeAsync(() => { + if (!_supportsShadowDom()) { + return; + } + + const fixture = createComponent( + StandaloneDraggableWithShadowInsideHandle, + undefined, + undefined, + [ShadowWrapper], + ); + fixture.detectChanges(); + const dragElement = fixture.componentInstance.dragElement.nativeElement; + const handleChild = fixture.componentInstance.handleChild.nativeElement; + + expect(dragElement.style.transform).toBeFalsy(); + dragElementViaMouse(fixture, handleChild, 50, 100); + expect(dragElement.style.transform).toBe('translate3d(50px, 100px, 0px)'); + })); }); describe('in a drop container', () => { @@ -1789,6 +1827,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); expect(dragItems.map(drag => drag.element.nativeElement.textContent!.trim())).toEqual([ @@ -1963,6 +2002,7 @@ describe('CdkDrag', () => { isPointerOverContainer: false, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); expect(dragItems.map(drag => drag.element.nativeElement.textContent!.trim())).toEqual([ @@ -2039,6 +2079,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); expect(dragItems.map(drag => drag.element.nativeElement.textContent!.trim())).toEqual([ @@ -2095,6 +2136,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); expect(dragItems.map(drag => drag.element.nativeElement.textContent!.trim())).toEqual([ @@ -2145,6 +2187,7 @@ describe('CdkDrag', () => { isPointerOverContainer: false, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); expect(dragItems.map(drag => drag.element.nativeElement.textContent!.trim())).toEqual([ @@ -2193,6 +2236,7 @@ describe('CdkDrag', () => { isPointerOverContainer: jasmine.any(Boolean), distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -2245,6 +2289,7 @@ describe('CdkDrag', () => { isPointerOverContainer: jasmine.any(Boolean), distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -2294,6 +2339,7 @@ describe('CdkDrag', () => { isPointerOverContainer: jasmine.any(Boolean), distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); scrollTo(0, 0); @@ -2932,6 +2978,9 @@ describe('CdkDrag', () => { expect(placeholder.textContent!.trim()) .withContext('Expected placeholder content to match element') .toContain('One'); + expect(placeholder.style.pointerEvents) + .withContext('Expected pointer events to be disabled on placeholder') + .toBe('none'); dispatchMouseEvent(document, 'mouseup'); fixture.detectChanges(); @@ -4062,6 +4111,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); expect(dragItems.map(drag => drag.element.nativeElement.textContent!.trim())).toEqual([ @@ -4546,6 +4596,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -4698,17 +4749,6 @@ describe('CdkDrag', () => { })); it('should be able to start dragging again if the dragged item is destroyed', fakeAsync(() => { - // We have some behavior where we move the dragged element out to the bottom of the `body`, - // in order to work around a browser issue. We restore the element when dragging stops, but - // the problem is that if it's destroyed before we've had a chance to return it, ViewEngine - // will throw an error since the element isn't in its original parent. Skip this test if the - // component hasn't been compiled with Ivy since the assertions depend on the element being - // removed while dragging. - // TODO(crisbeto): remove this check once ViewEngine has been dropped. - if (!DraggableInDropZone.hasOwnProperty('ɵcmp')) { - return; - } - const fixture = createComponent(DraggableInDropZone); fixture.detectChanges(); @@ -4803,6 +4843,7 @@ describe('CdkDrag', () => { isPointerOverContainer: jasmine.any(Boolean), distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -4879,6 +4920,25 @@ describe('CdkDrag', () => { .withContext('Expected placeholder to preserve transform when dragging stops.') .toBe(true); })); + + it('should sort correctly if the node has been offset', fakeAsync(() => { + const documentElement = document.documentElement!; + const fixture = createComponent(DraggableInDropZone); + fixture.detectChanges(); + + documentElement.style.position = 'absolute'; + documentElement.style.top = '-100px'; + + assertDownwardSorting( + fixture, + fixture.componentInstance.dragItems.map(item => { + return item.element.nativeElement; + }), + ); + + documentElement.style.position = ''; + documentElement.style.top = ''; + })); }); describe('in a connected drop container', () => { @@ -4912,6 +4972,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5027,6 +5088,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5058,6 +5120,7 @@ describe('CdkDrag', () => { isPointerOverContainer: false, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5089,6 +5152,7 @@ describe('CdkDrag', () => { isPointerOverContainer: false, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5234,6 +5298,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5377,6 +5442,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5405,6 +5471,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5438,6 +5505,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5484,6 +5552,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); expect(dropContainers[0].contains(item.element.nativeElement)) @@ -5590,6 +5659,7 @@ describe('CdkDrag', () => { isPointerOverContainer: false, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -5779,6 +5849,7 @@ describe('CdkDrag', () => { isPointerOverContainer: false, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }), ); }), @@ -5963,6 +6034,63 @@ describe('CdkDrag', () => { }), ); + it('should return the last item to initial position when dragging back into a container with disabled sorting', fakeAsync(() => { + const fixture = createComponent(ConnectedDropZones); + fixture.detectChanges(); + + const groups = fixture.componentInstance.groupedDragItems; + const dropZones = fixture.componentInstance.dropInstances.map(d => d.element.nativeElement); + const lastIndex = groups[0].length - 1; + const lastItem = groups[0][lastIndex]; + const targetRect = groups[1][2].element.nativeElement.getBoundingClientRect(); + + fixture.componentInstance.dropInstances.first.sortingDisabled = true; + startDraggingViaMouse(fixture, lastItem.element.nativeElement); + + const placeholder = dropZones[0].querySelector('.cdk-drag-placeholder')!; + + expect(placeholder).toBeTruthy(); + expect(dropZones[0].contains(placeholder)) + .withContext('Expected placeholder to be inside the first container.') + .toBe(true); + expect(getElementIndexByPosition(placeholder, 'top')) + .withContext('Expected placeholder to be at item index.') + .toBe(lastIndex); + + dispatchMouseEvent(document, 'mousemove', targetRect.left + 1, targetRect.top + 1); + fixture.detectChanges(); + + expect(dropZones[1].contains(placeholder)) + .withContext('Expected placeholder to be inside second container.') + .toBe(true); + expect(getElementIndexByPosition(placeholder, 'top')) + .withContext('Expected placeholder to be at the target index.') + .toBe(3); + + const firstInitialSiblingRect = groups[0][0].element.nativeElement.getBoundingClientRect(); + + // Return the item to an index that is different from the initial one. + dispatchMouseEvent( + document, + 'mousemove', + firstInitialSiblingRect.left, + firstInitialSiblingRect.top, + ); + fixture.detectChanges(); + + expect(dropZones[0].contains(placeholder)) + .withContext('Expected placeholder to be back inside first container.') + .toBe(true); + expect(getElementIndexByPosition(placeholder, 'top')) + .withContext('Expected placeholder to be back at the initial index.') + .toBe(lastIndex); + + dispatchMouseEvent(document, 'mouseup'); + fixture.detectChanges(); + + expect(fixture.componentInstance.droppedSpy).not.toHaveBeenCalled(); + })); + it( 'should toggle a class when dragging an item inside a wrapper component component ' + 'with OnPush change detection', @@ -6098,6 +6226,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); cleanup(); @@ -6144,6 +6273,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -6182,6 +6312,7 @@ describe('CdkDrag', () => { isPointerOverContainer: true, distance: {x: jasmine.any(Number), y: jasmine.any(Number)}, dropPoint: {x: jasmine.any(Number), y: jasmine.any(Number)}, + event: jasmine.anything(), }); })); @@ -6472,6 +6603,29 @@ class StandaloneDraggableWithIndirectHandle { @ViewChild('handleElement') handleElement: ElementRef; } +@Component({ + selector: 'shadow-wrapper', + template: '', + encapsulation: ViewEncapsulation.ShadowDom, +}) +class ShadowWrapper {} + +@Component({ + template: ` +
+
+ +
+
+
+
+ `, +}) +class StandaloneDraggableWithShadowInsideHandle { + @ViewChild('dragElement') dragElement: ElementRef; + @ViewChild('handleChild') handleChild: ElementRef; +} + @Component({ encapsulation: ViewEncapsulation.None, styles: [ diff --git a/src/cdk/drag-drop/directives/drag.ts b/src/cdk/drag-drop/directives/drag.ts index 65539796ed5e..02d771a9e05c 100644 --- a/src/cdk/drag-drop/directives/drag.ts +++ b/src/cdk/drag-drop/directives/drag.ts @@ -123,7 +123,7 @@ export class CdkDrag implements AfterViewInit, OnChanges, OnDestroy { get disabled(): boolean { return this._disabled || (this.dropContainer && this.dropContainer.disabled); } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); this._dragRef.disabled = this._disabled; } @@ -370,16 +370,7 @@ export class CdkDrag implements AfterViewInit, OnChanges, OnDestroy { return this.element.nativeElement.closest(boundary); } - const element = coerceElement(boundary); - - if ( - (typeof ngDevMode === 'undefined' || ngDevMode) && - !element.contains(this.element.nativeElement) - ) { - throw Error('Draggable element is not inside of the node passed into cdkDragBoundary.'); - } - - return element; + return coerceElement(boundary); } /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */ @@ -451,23 +442,24 @@ export class CdkDrag implements AfterViewInit, OnChanges, OnDestroy { /** Handles the events from the underlying `DragRef`. */ private _handleEvents(ref: DragRef>) { - ref.started.subscribe(() => { - this.started.emit({source: this}); + ref.started.subscribe(startEvent => { + this.started.emit({source: this, event: startEvent.event}); // Since all of these events run outside of change detection, // we need to ensure that everything is marked correctly. this._changeDetectorRef.markForCheck(); }); - ref.released.subscribe(() => { - this.released.emit({source: this}); + ref.released.subscribe(releaseEvent => { + this.released.emit({source: this, event: releaseEvent.event}); }); - ref.ended.subscribe(event => { + ref.ended.subscribe(endEvent => { this.ended.emit({ source: this, - distance: event.distance, - dropPoint: event.dropPoint, + distance: endEvent.distance, + dropPoint: endEvent.dropPoint, + event: endEvent.event, }); // Since all of these events run outside of change detection, @@ -475,31 +467,32 @@ export class CdkDrag implements AfterViewInit, OnChanges, OnDestroy { this._changeDetectorRef.markForCheck(); }); - ref.entered.subscribe(event => { + ref.entered.subscribe(enterEvent => { this.entered.emit({ - container: event.container.data, + container: enterEvent.container.data, item: this, - currentIndex: event.currentIndex, + currentIndex: enterEvent.currentIndex, }); }); - ref.exited.subscribe(event => { + ref.exited.subscribe(exitEvent => { this.exited.emit({ - container: event.container.data, + container: exitEvent.container.data, item: this, }); }); - ref.dropped.subscribe(event => { + ref.dropped.subscribe(dropEvent => { this.dropped.emit({ - previousIndex: event.previousIndex, - currentIndex: event.currentIndex, - previousContainer: event.previousContainer.data, - container: event.container.data, - isPointerOverContainer: event.isPointerOverContainer, + previousIndex: dropEvent.previousIndex, + currentIndex: dropEvent.currentIndex, + previousContainer: dropEvent.previousContainer.data, + container: dropEvent.container.data, + isPointerOverContainer: dropEvent.isPointerOverContainer, item: this, - distance: event.distance, - dropPoint: event.dropPoint, + distance: dropEvent.distance, + dropPoint: dropEvent.dropPoint, + event: dropEvent.event, }); }); } @@ -583,6 +576,4 @@ export class CdkDrag implements AfterViewInit, OnChanges, OnDestroy { handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle); }); } - - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/cdk/drag-drop/directives/drop-list-group.ts b/src/cdk/drag-drop/directives/drop-list-group.ts index 14662ea48b77..fe4bece12a19 100644 --- a/src/cdk/drag-drop/directives/drop-list-group.ts +++ b/src/cdk/drag-drop/directives/drop-list-group.ts @@ -38,7 +38,7 @@ export class CdkDropListGroup implements OnDestroy { get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } private _disabled = false; @@ -46,6 +46,4 @@ export class CdkDropListGroup implements OnDestroy { ngOnDestroy() { this._items.clear(); } - - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/cdk/drag-drop/directives/drop-list.ts b/src/cdk/drag-drop/directives/drop-list.ts index 5171880840af..7d678cbde23d 100644 --- a/src/cdk/drag-drop/directives/drop-list.ts +++ b/src/cdk/drag-drop/directives/drop-list.ts @@ -114,7 +114,7 @@ export class CdkDropList implements OnDestroy { get disabled(): boolean { return this._disabled || (!!this._group && this._group.disabled); } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { // Usually we sync the directive and ref state right before dragging starts, in order to have // a single point of failure and to avoid having to use setters for everything. `disabled` is // a special case, because it can prevent the `beforeStarted` event from firing, which can lock @@ -125,7 +125,7 @@ export class CdkDropList implements OnDestroy { /** Whether sorting within this drop list is disabled. */ @Input('cdkDropListSortingDisabled') - sortingDisabled: boolean; + sortingDisabled: BooleanInput; /** * Function that is used to determine whether an item @@ -140,11 +140,11 @@ export class CdkDropList implements OnDestroy { /** Whether to auto-scroll the view when the user moves their pointer close to the edges. */ @Input('cdkDropListAutoScrollDisabled') - autoScrollDisabled: boolean; + autoScrollDisabled: BooleanInput; /** Number of pixels to scroll for each frame when auto-scrolling an element. */ @Input('cdkDropListAutoScrollStep') - autoScrollStep: number; + autoScrollStep: NumberInput; /** Emits when the user drops an item inside the container. */ @Output('cdkDropListDropped') @@ -357,16 +357,17 @@ export class CdkDropList implements OnDestroy { }); }); - ref.dropped.subscribe(event => { + ref.dropped.subscribe(dropEvent => { this.dropped.emit({ - previousIndex: event.previousIndex, - currentIndex: event.currentIndex, - previousContainer: event.previousContainer.data, - container: event.container.data, - item: event.item.data, - isPointerOverContainer: event.isPointerOverContainer, - distance: event.distance, - dropPoint: event.dropPoint, + previousIndex: dropEvent.previousIndex, + currentIndex: dropEvent.currentIndex, + previousContainer: dropEvent.previousContainer.data, + container: dropEvent.container.data, + item: dropEvent.item.data, + isPointerOverContainer: dropEvent.isPointerOverContainer, + distance: dropEvent.distance, + dropPoint: dropEvent.dropPoint, + event: dropEvent.event, }); // Mark for check since all of these events run outside of change @@ -394,9 +395,4 @@ export class CdkDropList implements OnDestroy { private _syncItemsWithRef() { this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef)); } - - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_sortingDisabled: BooleanInput; - static ngAcceptInputType_autoScrollDisabled: BooleanInput; - static ngAcceptInputType_autoScrollStep: NumberInput; } diff --git a/src/cdk/drag-drop/drag-events.ts b/src/cdk/drag-drop/drag-events.ts index aee79e2f0ae0..583bf7abf6b1 100644 --- a/src/cdk/drag-drop/drag-events.ts +++ b/src/cdk/drag-drop/drag-events.ts @@ -13,12 +13,16 @@ import {CdkDropList} from './directives/drop-list'; export interface CdkDragStart { /** Draggable that emitted the event. */ source: CdkDrag; + /** Native event that started the drag sequence. */ + event: MouseEvent | TouchEvent; } /** Event emitted when the user releases an item, before any animations have started. */ export interface CdkDragRelease { /** Draggable that emitted the event. */ source: CdkDrag; + /** Native event that caused the release event. */ + event: MouseEvent | TouchEvent; } /** Event emitted when the user stops dragging a draggable. */ @@ -29,6 +33,8 @@ export interface CdkDragEnd { distance: {x: number; y: number}; /** Position where the pointer was when the item was dropped */ dropPoint: {x: number; y: number}; + /** Native event that caused the dragging to stop. */ + event: MouseEvent | TouchEvent; } /** Event emitted when the user moves an item into a new drop container. */ @@ -70,6 +76,8 @@ export interface CdkDragDrop { distance: {x: number; y: number}; /** Position where the pointer was when the item was dropped */ dropPoint: {x: number; y: number}; + /** Native event that caused the drop event. */ + event: MouseEvent | TouchEvent; } /** Event emitted as the user is dragging a draggable item. */ diff --git a/src/cdk/drag-drop/drag-ref.ts b/src/cdk/drag-drop/drag-ref.ts index c1dedf537add..2101a3c21c22 100644 --- a/src/cdk/drag-drop/drag-ref.ts +++ b/src/cdk/drag-drop/drag-ref.ts @@ -305,13 +305,18 @@ export class DragRef { readonly beforeStarted = new Subject(); /** Emits when the user starts dragging the item. */ - readonly started = new Subject<{source: DragRef}>(); + readonly started = new Subject<{source: DragRef; event: MouseEvent | TouchEvent}>(); /** Emits when the user has released a drag item, before any animations have started. */ - readonly released = new Subject<{source: DragRef}>(); + readonly released = new Subject<{source: DragRef; event: MouseEvent | TouchEvent}>(); /** Emits when the user stops dragging an item in the container. */ - readonly ended = new Subject<{source: DragRef; distance: Point; dropPoint: Point}>(); + readonly ended = new Subject<{ + source: DragRef; + distance: Point; + dropPoint: Point; + event: MouseEvent | TouchEvent; + }>(); /** Emits when the user has moved the item into a new container. */ readonly entered = new Subject<{container: DropListRef; item: DragRef; currentIndex: number}>(); @@ -329,6 +334,7 @@ export class DragRef { distance: Point; dropPoint: Point; isPointerOverContainer: boolean; + event: MouseEvent | TouchEvent; }>(); /** @@ -363,7 +369,7 @@ export class DragRef { private _dragDropRegistry: DragDropRegistry, ) { this.withRootElement(element).withParent(_config.parentDragRef || null); - this._parentPositions = new ParentPositionTracker(_document, _viewportRuler); + this._parentPositions = new ParentPositionTracker(_document); _dragDropRegistry.registerDragItem(this); } @@ -442,6 +448,9 @@ export class DragRef { this._ngZone.runOutsideAngular(() => { element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions); element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions); + // Usually this isn't necessary since the we prevent the default action in `pointerDown`, + // but some cases like dragging of links can slip through (see #24403). + element.addEventListener('dragstart', preventDefault, activeEventListenerOptions); }); this._initialTransform = undefined; this._rootElement = element; @@ -629,8 +638,7 @@ export class DragRef { // Delegate the event based on whether it started from a handle or the element itself. if (this._handles.length) { const targetHandle = this._handles.find(handle => { - const target = _getEventTarget(event); - return !!target && (target === handle || handle.contains(target as HTMLElement)); + return event.target && (event.target === handle || handle.contains(event.target as Node)); }); if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) { @@ -756,7 +764,7 @@ export class DragRef { return; } - this.released.next({source: this}); + this.released.next({source: this, event}); if (this._dropContainer) { // Stop scrolling immediately, instead of waiting for the animation to finish. @@ -778,6 +786,7 @@ export class DragRef { source: this, distance: this._getDragDistance(pointerPosition), dropPoint: pointerPosition, + event, }); }); this._cleanupCachedDimensions(); @@ -821,12 +830,12 @@ export class DragRef { toggleVisibility(element, false, dragImportantProperties); this._document.body.appendChild(parent.replaceChild(placeholder, element)); this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview); - this.started.next({source: this}); // Emit before notifying the container. + this.started.next({source: this, event}); // Emit before notifying the container. dropContainer.start(); this._initialContainer = dropContainer; this._initialIndex = dropContainer.getItemIndex(this); } else { - this.started.next({source: this}); + this.started.next({source: this, event}); this._initialContainer = this._initialIndex = undefined!; } @@ -942,7 +951,7 @@ export class DragRef { pointerPosition.y, ); - this.ended.next({source: this, distance, dropPoint: pointerPosition}); + this.ended.next({source: this, distance, dropPoint: pointerPosition, event}); this.dropped.next({ item: this, currentIndex, @@ -952,6 +961,7 @@ export class DragRef { isPointerOverContainer, distance, dropPoint: pointerPosition, + event, }); container.drop( this, @@ -1160,6 +1170,9 @@ export class DragRef { placeholder = deepCloneNode(this._rootElement); } + // Stop pointer events on the preview so the user can't + // interact with it while the preview is animating. + placeholder.style.pointerEvents = 'none'; placeholder.classList.add('cdk-drag-placeholder'); return placeholder; } @@ -1291,6 +1304,7 @@ export class DragRef { private _removeRootElementListeners(element: HTMLElement) { element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions); element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions); + element.removeEventListener('dragstart', preventDefault, activeEventListenerOptions); } /** @@ -1455,10 +1469,10 @@ export class DragRef { /** Gets the scroll position of the viewport. */ private _getViewportScrollPosition() { - const cachedPosition = this._parentPositions.positions.get(this._document); - return cachedPosition - ? cachedPosition.scrollPosition - : this._viewportRuler.getViewportScrollPosition(); + return ( + this._parentPositions.positions.get(this._document)?.scrollPosition || + this._parentPositions.getViewportScrollPosition() + ); } /** @@ -1556,3 +1570,8 @@ function matchElementSize(target: HTMLElement, sourceRect: ClientRect): void { target.style.height = `${sourceRect.height}px`; target.style.transform = getTransform(sourceRect.left, sourceRect.top); } + +/** Utility to prevent the default action of an event. */ +function preventDefault(event: Event): void { + event.preventDefault(); +} diff --git a/src/cdk/drag-drop/drop-list-ref.ts b/src/cdk/drag-drop/drop-list-ref.ts index 8b532b6f5c0a..f2f7bab437c0 100644 --- a/src/cdk/drag-drop/drop-list-ref.ts +++ b/src/cdk/drag-drop/drop-list-ref.ts @@ -138,6 +138,7 @@ export class DropListRef { isPointerOverContainer: boolean; distance: Point; dropPoint: Point; + event: MouseEvent | TouchEvent; }>(); /** Emits as the user is swapping items while actively dragging. */ @@ -230,7 +231,7 @@ export class DropListRef { this._document = _document; this.withScrollableParents([this.element]); _dragDropRegistry.registerDropContainer(this); - this._parentPositions = new ParentPositionTracker(_document, _viewportRuler); + this._parentPositions = new ParentPositionTracker(_document); } /** Removes the drop list functionality from the DOM element. */ @@ -299,6 +300,16 @@ export class DropListRef { newPositionReference = activeDraggables[newIndex + 1]; } + // If we didn't find a new position reference, it means that either the item didn't start off + // in this container, or that the item requested to be inserted at the end of the list. + if ( + !newPositionReference && + (newIndex == null || newIndex === -1 || newIndex < activeDraggables.length - 1) && + this._shouldEnterAsFirstChild(pointerX, pointerY) + ) { + newPositionReference = activeDraggables[0]; + } + // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it // into another container and back again), we have to ensure that it isn't duplicated. if (currentIndex > -1) { @@ -311,10 +322,6 @@ export class DropListRef { const element = newPositionReference.getRootElement(); element.parentElement!.insertBefore(placeholder, element); activeDraggables.splice(newIndex, 0, item); - } else if (this._shouldEnterAsFirstChild(pointerX, pointerY)) { - const reference = activeDraggables[0].getRootElement(); - reference.parentNode!.insertBefore(placeholder, reference); - activeDraggables.unshift(item); } else { coerceElement(this.element).appendChild(placeholder); activeDraggables.push(item); @@ -351,6 +358,9 @@ export class DropListRef { * @param isPointerOverContainer Whether the user's pointer was over the * container when the item was dropped. * @param distance Distance the user has dragged since the start of the dragging sequence. + * @param event Event that triggered the dropping sequence. + * + * @breaking-change 15.0.0 `previousIndex` and `event` parameters to become required. */ drop( item: DragRef, @@ -360,6 +370,7 @@ export class DropListRef { isPointerOverContainer: boolean, distance: Point, dropPoint: Point, + event: MouseEvent | TouchEvent = {} as any, ): void { this._reset(); this.dropped.next({ @@ -371,6 +382,7 @@ export class DropListRef { isPointerOverContainer, distance, dropPoint, + event, }); } diff --git a/src/cdk/drag-drop/parent-position-tracker.ts b/src/cdk/drag-drop/parent-position-tracker.ts index 3fea5b2a78c0..0ab73d8f37cc 100644 --- a/src/cdk/drag-drop/parent-position-tracker.ts +++ b/src/cdk/drag-drop/parent-position-tracker.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {ViewportRuler} from '@angular/cdk/scrolling'; import {_getEventTarget} from '@angular/cdk/platform'; import {getMutableClientRect, adjustClientRect} from './client-rect'; @@ -27,7 +26,7 @@ export class ParentPositionTracker { } >(); - constructor(private _document: Document, private _viewportRuler: ViewportRuler) {} + constructor(private _document: Document) {} /** Clears the cached positions. */ clear() { @@ -38,7 +37,7 @@ export class ParentPositionTracker { cache(elements: readonly HTMLElement[]) { this.clear(); this.positions.set(this._document, { - scrollPosition: this._viewportRuler.getViewportScrollPosition(), + scrollPosition: this.getViewportScrollPosition(), }); elements.forEach(element => { @@ -63,7 +62,7 @@ export class ParentPositionTracker { let newLeft: number; if (target === this._document) { - const viewportScrollPosition = this._viewportRuler!.getViewportScrollPosition(); + const viewportScrollPosition = this.getViewportScrollPosition(); newTop = viewportScrollPosition.top; newLeft = viewportScrollPosition.left; } else { @@ -87,4 +86,14 @@ export class ParentPositionTracker { return {top: topDifference, left: leftDifference}; } + + /** + * Gets the scroll position of the viewport. Note that we use the scrollX and scrollY directly, + * instead of going through the `ViewportRuler`, because the first value the ruler looks at is + * the top/left offset of the `document.documentElement` which works for most cases, but breaks + * if the element is offset by something like the `BlockScrollStrategy`. + */ + getViewportScrollPosition() { + return {top: window.scrollY, left: window.scrollX}; + } } diff --git a/src/cdk/layout/breakpoints-observer.ts b/src/cdk/layout/breakpoints-observer.ts index 51537dce0257..003e3c078b72 100644 --- a/src/cdk/layout/breakpoints-observer.ts +++ b/src/cdk/layout/breakpoints-observer.ts @@ -105,13 +105,13 @@ export class BreakpointObserver implements OnDestroy { const mql = this._mediaMatcher.matchMedia(query); // Create callback for match changes and add it is as a listener. - const queryObservable = new Observable((observer: Observer) => { + const queryObservable = new Observable((observer: Observer) => { // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed // back into the zone because matchMedia is only included in Zone.js by loading the // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js // patches it. - const handler = (e: any) => this._zone.run(() => observer.next(e)); + const handler = (e: MediaQueryListEvent): void => this._zone.run(() => observer.next(e)); mql.addListener(handler); return () => { diff --git a/src/cdk/observers/observe-content.ts b/src/cdk/observers/observe-content.ts index 2abd6e9d8f42..e390c89b7884 100644 --- a/src/cdk/observers/observe-content.ts +++ b/src/cdk/observers/observe-content.ts @@ -149,10 +149,10 @@ export class CdkObserveContent implements AfterContentInit, OnDestroy { * to disconnect the underlying MutationObserver until it is needed. */ @Input('cdkObserveContentDisabled') - get disabled() { + get disabled(): boolean { return this._disabled; } - set disabled(value: any) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); this._disabled ? this._unsubscribe() : this._subscribe(); } @@ -163,7 +163,7 @@ export class CdkObserveContent implements AfterContentInit, OnDestroy { get debounce(): number { return this._debounce; } - set debounce(value: number) { + set debounce(value: NumberInput) { this._debounce = coerceNumberProperty(value); this._subscribe(); } @@ -205,9 +205,6 @@ export class CdkObserveContent implements AfterContentInit, OnDestroy { private _unsubscribe() { this._currentSubscription?.unsubscribe(); } - - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_debounce: NumberInput; } @NgModule({ diff --git a/src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.spec.ts b/src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.spec.ts index 56a3f9560c81..b5423cdf7af0 100644 --- a/src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.spec.ts +++ b/src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.spec.ts @@ -1,24 +1,30 @@ import {TestBed, inject} from '@angular/core/testing'; import {dispatchKeyboardEvent} from '../../testing/private'; import {ESCAPE} from '@angular/cdk/keycodes'; -import {Component, NgModule} from '@angular/core'; +import {ApplicationRef, Component} from '@angular/core'; import {OverlayModule, Overlay} from '../index'; import {OverlayKeyboardDispatcher} from './overlay-keyboard-dispatcher'; import {ComponentPortal} from '@angular/cdk/portal'; describe('OverlayKeyboardDispatcher', () => { + let appRef: ApplicationRef; let keyboardDispatcher: OverlayKeyboardDispatcher; let overlay: Overlay; beforeEach(() => { TestBed.configureTestingModule({ - imports: [OverlayModule, TestComponentModule], + imports: [OverlayModule], + declarations: [TestComponent], }); - inject([OverlayKeyboardDispatcher, Overlay], (kbd: OverlayKeyboardDispatcher, o: Overlay) => { - keyboardDispatcher = kbd; - overlay = o; - })(); + inject( + [ApplicationRef, OverlayKeyboardDispatcher, Overlay], + (ar: ApplicationRef, kbd: OverlayKeyboardDispatcher, o: Overlay) => { + appRef = ar; + keyboardDispatcher = kbd; + overlay = o; + }, + )(); }); it('should track overlays in order as they are attached and detached', () => { @@ -178,18 +184,24 @@ describe('OverlayKeyboardDispatcher', () => { expect(overlayTwoSpy).not.toHaveBeenCalled(); expect(overlayOneSpy).toHaveBeenCalled(); }); + + it('should not run change detection if there are no `keydownEvents` observers', () => { + spyOn(appRef, 'tick'); + const overlayRef = overlay.create(); + keyboardDispatcher.add(overlayRef); + + expect(appRef.tick).toHaveBeenCalledTimes(0); + dispatchKeyboardEvent(document.body, 'keydown', ESCAPE); + expect(appRef.tick).toHaveBeenCalledTimes(0); + + overlayRef.keydownEvents().subscribe(); + dispatchKeyboardEvent(document.body, 'keydown', ESCAPE); + + expect(appRef.tick).toHaveBeenCalledTimes(1); + }); }); @Component({ template: 'Hello', }) class TestComponent {} - -// Create a real (non-test) NgModule as a workaround for -// https://github.com/angular/angular/issues/10760 -@NgModule({ - exports: [TestComponent], - declarations: [TestComponent], - entryComponents: [TestComponent], -}) -class TestComponentModule {} diff --git a/src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.ts b/src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.ts index 884eac733f81..bc3a528f82cf 100644 --- a/src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.ts +++ b/src/cdk/overlay/dispatchers/overlay-keyboard-dispatcher.ts @@ -7,7 +7,7 @@ */ import {DOCUMENT} from '@angular/common'; -import {Inject, Injectable} from '@angular/core'; +import {Inject, Injectable, NgZone, Optional} from '@angular/core'; import {OverlayReference} from '../overlay-reference'; import {BaseOverlayDispatcher} from './base-overlay-dispatcher'; @@ -18,7 +18,11 @@ import {BaseOverlayDispatcher} from './base-overlay-dispatcher'; */ @Injectable({providedIn: 'root'}) export class OverlayKeyboardDispatcher extends BaseOverlayDispatcher { - constructor(@Inject(DOCUMENT) document: any) { + constructor( + @Inject(DOCUMENT) document: any, + /** @breaking-change 14.0.0 _ngZone will be required. */ + @Optional() private _ngZone?: NgZone, + ) { super(document); } @@ -28,7 +32,14 @@ export class OverlayKeyboardDispatcher extends BaseOverlayDispatcher { // Lazily start dispatcher once first overlay is added if (!this._isAttached) { - this._document.body.addEventListener('keydown', this._keydownListener); + /** @breaking-change 14.0.0 _ngZone will be required. */ + if (this._ngZone) { + this._ngZone.runOutsideAngular(() => + this._document.body.addEventListener('keydown', this._keydownListener), + ); + } else { + this._document.body.addEventListener('keydown', this._keydownListener); + } this._isAttached = true; } } @@ -53,7 +64,13 @@ export class OverlayKeyboardDispatcher extends BaseOverlayDispatcher { // because we don't want overlays that don't handle keyboard events to block the ones below // them that do. if (overlays[i]._keydownEvents.observers.length > 0) { - overlays[i]._keydownEvents.next(event); + const keydownEvents = overlays[i]._keydownEvents; + /** @breaking-change 14.0.0 _ngZone will be required. */ + if (this._ngZone) { + this._ngZone.run(() => keydownEvents.next(event)); + } else { + keydownEvents.next(event); + } break; } } diff --git a/src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.spec.ts b/src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.spec.ts index ba0f27645114..55a70e4588bc 100644 --- a/src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.spec.ts +++ b/src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.spec.ts @@ -1,22 +1,25 @@ import {TestBed, inject, fakeAsync} from '@angular/core/testing'; -import {Component, NgModule} from '@angular/core'; +import {ApplicationRef, Component} from '@angular/core'; import {dispatchFakeEvent, dispatchMouseEvent} from '../../testing/private'; import {OverlayModule, Overlay} from '../index'; import {OverlayOutsideClickDispatcher} from './overlay-outside-click-dispatcher'; import {ComponentPortal} from '@angular/cdk/portal'; describe('OverlayOutsideClickDispatcher', () => { + let appRef: ApplicationRef; let outsideClickDispatcher: OverlayOutsideClickDispatcher; let overlay: Overlay; beforeEach(() => { TestBed.configureTestingModule({ - imports: [OverlayModule, TestComponentModule], + imports: [OverlayModule], + declarations: [TestComponent], }); inject( - [OverlayOutsideClickDispatcher, Overlay], - (ocd: OverlayOutsideClickDispatcher, o: Overlay) => { + [ApplicationRef, OverlayOutsideClickDispatcher, Overlay], + (ar: ApplicationRef, ocd: OverlayOutsideClickDispatcher, o: Overlay) => { + appRef = ar; outsideClickDispatcher = ocd; overlay = o; }, @@ -186,78 +189,90 @@ describe('OverlayOutsideClickDispatcher', () => { overlayRef.dispose(); }); - it('should dispatch an event when a click is started outside the overlay and ' + - 'released outside of it', () => { - const portal = new ComponentPortal(TestComponent); - const overlayRef = overlay.create(); - overlayRef.attach(portal); - const context = document.createElement('div'); - document.body.appendChild(context); - - const spy = jasmine.createSpy('overlay mouse click event spy'); - overlayRef.outsidePointerEvents().subscribe(spy); - - dispatchMouseEvent(context, 'pointerdown'); - context.click(); - expect(spy).toHaveBeenCalled(); - - context.remove(); - overlayRef.dispose(); - }); - - it('should not dispatch an event when a click is started inside the overlay and ' + - 'released inside of it', () => { - const portal = new ComponentPortal(TestComponent); - const overlayRef = overlay.create(); - overlayRef.attach(portal); - - const spy = jasmine.createSpy('overlay mouse click event spy'); - overlayRef.outsidePointerEvents().subscribe(spy); - - dispatchMouseEvent(overlayRef.overlayElement, 'pointerdown'); - overlayRef.overlayElement.click(); - expect(spy).not.toHaveBeenCalled(); - - overlayRef.dispose(); - }); - - it('should not dispatch an event when a click is started inside the overlay and ' + - 'released outside of it', () => { - const portal = new ComponentPortal(TestComponent); - const overlayRef = overlay.create(); - overlayRef.attach(portal); - const context = document.createElement('div'); - document.body.appendChild(context); - - const spy = jasmine.createSpy('overlay mouse click event spy'); - overlayRef.outsidePointerEvents().subscribe(spy); - - dispatchMouseEvent(overlayRef.overlayElement, 'pointerdown'); - context.click(); - expect(spy).not.toHaveBeenCalled(); - - context.remove(); - overlayRef.dispose(); - }); + it( + 'should dispatch an event when a click is started outside the overlay and ' + + 'released outside of it', + () => { + const portal = new ComponentPortal(TestComponent); + const overlayRef = overlay.create(); + overlayRef.attach(portal); + const context = document.createElement('div'); + document.body.appendChild(context); + + const spy = jasmine.createSpy('overlay mouse click event spy'); + overlayRef.outsidePointerEvents().subscribe(spy); + + dispatchMouseEvent(context, 'pointerdown'); + context.click(); + expect(spy).toHaveBeenCalled(); - it('should not dispatch an event when a click is started outside the overlay and ' + - 'released inside of it', () => { - const portal = new ComponentPortal(TestComponent); - const overlayRef = overlay.create(); - overlayRef.attach(portal); - const context = document.createElement('div'); - document.body.appendChild(context); + context.remove(); + overlayRef.dispose(); + }, + ); - const spy = jasmine.createSpy('overlay mouse click event spy'); - overlayRef.outsidePointerEvents().subscribe(spy); + it( + 'should not dispatch an event when a click is started inside the overlay and ' + + 'released inside of it', + () => { + const portal = new ComponentPortal(TestComponent); + const overlayRef = overlay.create(); + overlayRef.attach(portal); + + const spy = jasmine.createSpy('overlay mouse click event spy'); + overlayRef.outsidePointerEvents().subscribe(spy); + + dispatchMouseEvent(overlayRef.overlayElement, 'pointerdown'); + overlayRef.overlayElement.click(); + expect(spy).not.toHaveBeenCalled(); + + overlayRef.dispose(); + }, + ); - dispatchMouseEvent(context, 'pointerdown'); - overlayRef.overlayElement.click(); - expect(spy).not.toHaveBeenCalled(); + it( + 'should not dispatch an event when a click is started inside the overlay and ' + + 'released outside of it', + () => { + const portal = new ComponentPortal(TestComponent); + const overlayRef = overlay.create(); + overlayRef.attach(portal); + const context = document.createElement('div'); + document.body.appendChild(context); + + const spy = jasmine.createSpy('overlay mouse click event spy'); + overlayRef.outsidePointerEvents().subscribe(spy); + + dispatchMouseEvent(overlayRef.overlayElement, 'pointerdown'); + context.click(); + expect(spy).not.toHaveBeenCalled(); + + context.remove(); + overlayRef.dispose(); + }, + ); - context.remove(); - overlayRef.dispose(); - }); + it( + 'should not dispatch an event when a click is started outside the overlay and ' + + 'released inside of it', + () => { + const portal = new ComponentPortal(TestComponent); + const overlayRef = overlay.create(); + overlayRef.attach(portal); + const context = document.createElement('div'); + document.body.appendChild(context); + + const spy = jasmine.createSpy('overlay mouse click event spy'); + overlayRef.outsidePointerEvents().subscribe(spy); + + dispatchMouseEvent(context, 'pointerdown'); + overlayRef.overlayElement.click(); + expect(spy).not.toHaveBeenCalled(); + + context.remove(); + overlayRef.dispose(); + }, + ); it('should dispatch an event when a context menu is triggered outside the overlay', () => { const portal = new ComponentPortal(TestComponent); @@ -291,7 +306,7 @@ describe('OverlayOutsideClickDispatcher', () => { }); it( - 'should not throw an error when when closing out related components via the ' + + 'should not throw an error when closing out related components via the ' + 'outsidePointerEvents emitter on background click', fakeAsync(() => { const firstOverlayRef = overlay.create(); @@ -323,18 +338,73 @@ describe('OverlayOutsideClickDispatcher', () => { thirdOverlayRef.dispose(); }), ); + + describe('change detection behavior', () => { + it('should not run change detection if there is no portal attached to the overlay', () => { + spyOn(appRef, 'tick'); + const overlayRef = overlay.create(); + outsideClickDispatcher.add(overlayRef); + + const context = document.createElement('div'); + document.body.appendChild(context); + + overlayRef.outsidePointerEvents().subscribe(); + dispatchMouseEvent(context, 'click'); + + expect(appRef.tick).toHaveBeenCalledTimes(0); + }); + + it('should not run change detection if the click was made outside the overlay but there are no `outsidePointerEvents` observers', () => { + spyOn(appRef, 'tick'); + const portal = new ComponentPortal(TestComponent); + const overlayRef = overlay.create(); + overlayRef.attach(portal); + outsideClickDispatcher.add(overlayRef); + + const context = document.createElement('div'); + document.body.appendChild(context); + + dispatchMouseEvent(context, 'click'); + + expect(appRef.tick).toHaveBeenCalledTimes(0); + }); + + it('should not run change detection if the click was made inside the overlay and there are `outsidePointerEvents` observers', () => { + spyOn(appRef, 'tick'); + const portal = new ComponentPortal(TestComponent); + const overlayRef = overlay.create(); + overlayRef.attach(portal); + outsideClickDispatcher.add(overlayRef); + + overlayRef.outsidePointerEvents().subscribe(); + dispatchMouseEvent(overlayRef.overlayElement, 'click'); + + expect(appRef.tick).toHaveBeenCalledTimes(0); + }); + + it('should run change detection if the click was made outside the overlay and there are `outsidePointerEvents` observers', () => { + spyOn(appRef, 'tick'); + const portal = new ComponentPortal(TestComponent); + const overlayRef = overlay.create(); + overlayRef.attach(portal); + outsideClickDispatcher.add(overlayRef); + + const context = document.createElement('div'); + document.body.appendChild(context); + + expect(appRef.tick).toHaveBeenCalledTimes(0); + dispatchMouseEvent(context, 'click'); + expect(appRef.tick).toHaveBeenCalledTimes(0); + + overlayRef.outsidePointerEvents().subscribe(); + + dispatchMouseEvent(context, 'click'); + expect(appRef.tick).toHaveBeenCalledTimes(1); + }); + }); }); @Component({ template: 'Hello', }) class TestComponent {} - -// Create a real (non-test) NgModule as a workaround for -// https://github.com/angular/angular/issues/10760 -@NgModule({ - exports: [TestComponent], - declarations: [TestComponent], - entryComponents: [TestComponent], -}) -class TestComponentModule {} diff --git a/src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.ts b/src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.ts index e962c6c651e3..a70512502457 100644 --- a/src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.ts +++ b/src/cdk/overlay/dispatchers/overlay-outside-click-dispatcher.ts @@ -7,7 +7,7 @@ */ import {DOCUMENT} from '@angular/common'; -import {Inject, Injectable} from '@angular/core'; +import {Inject, Injectable, NgZone, Optional} from '@angular/core'; import {OverlayReference} from '../overlay-reference'; import {Platform, _getEventTarget} from '@angular/cdk/platform'; import {BaseOverlayDispatcher} from './base-overlay-dispatcher'; @@ -23,7 +23,12 @@ export class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher { private _cursorStyleIsSet = false; private _pointerDownEventTarget: EventTarget | null; - constructor(@Inject(DOCUMENT) document: any, private _platform: Platform) { + constructor( + @Inject(DOCUMENT) document: any, + private _platform: Platform, + /** @breaking-change 14.0.0 _ngZone will be required. */ + @Optional() private _ngZone?: NgZone, + ) { super(document); } @@ -39,10 +44,13 @@ export class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher { // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html if (!this._isAttached) { const body = this._document.body; - body.addEventListener('pointerdown', this._pointerDownListener, true); - body.addEventListener('click', this._clickListener, true); - body.addEventListener('auxclick', this._clickListener, true); - body.addEventListener('contextmenu', this._clickListener, true); + + /** @breaking-change 14.0.0 _ngZone will be required. */ + if (this._ngZone) { + this._ngZone.runOutsideAngular(() => this._addEventListeners(body)); + } else { + this._addEventListeners(body); + } // click event is not fired on iOS. To make element "clickable" we are // setting the cursor to pointer @@ -72,10 +80,17 @@ export class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher { } } + private _addEventListeners(body: HTMLElement): void { + body.addEventListener('pointerdown', this._pointerDownListener, true); + body.addEventListener('click', this._clickListener, true); + body.addEventListener('auxclick', this._clickListener, true); + body.addEventListener('contextmenu', this._clickListener, true); + } + /** Store pointerdown event target to track origin of click. */ private _pointerDownListener = (event: PointerEvent) => { this._pointerDownEventTarget = _getEventTarget(event); - } + }; /** Click event listener that will be attached to the body propagate phase. */ private _clickListener = (event: MouseEvent) => { @@ -86,8 +101,10 @@ export class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher { // This is done by using the event target of the preceding pointerdown event. // Every click event caused by a pointer device has a preceding pointerdown // event, unless the click was programmatically triggered (e.g. in a unit test). - const origin = event.type === 'click' && this._pointerDownEventTarget - ? this._pointerDownEventTarget : target; + const origin = + event.type === 'click' && this._pointerDownEventTarget + ? this._pointerDownEventTarget + : target; // Reset the stored pointerdown event target, to avoid having it interfere // in subsequent events. this._pointerDownEventTarget = null; @@ -110,12 +127,20 @@ export class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher { // If it's a click inside the overlay, just break - we should do nothing // If it's an outside click (both origin and target of the click) dispatch the mouse event, // and proceed with the next overlay - if (overlayRef.overlayElement.contains(target as Node) || - overlayRef.overlayElement.contains(origin as Node)) { + if ( + overlayRef.overlayElement.contains(target as Node) || + overlayRef.overlayElement.contains(origin as Node) + ) { break; } - overlayRef._outsidePointerEvents.next(event); + const outsidePointerEvents = overlayRef._outsidePointerEvents; + /** @breaking-change 14.0.0 _ngZone will be required. */ + if (this._ngZone) { + this._ngZone.run(() => outsidePointerEvents.next(event)); + } else { + outsidePointerEvents.next(event); + } } }; } diff --git a/src/cdk/overlay/overlay-directives.ts b/src/cdk/overlay/overlay-directives.ts index d9e1ba4156ee..cfbb6909d888 100644 --- a/src/cdk/overlay/overlay-directives.ts +++ b/src/cdk/overlay/overlay-directives.ts @@ -185,46 +185,46 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges { /** Whether or not the overlay should attach a backdrop. */ @Input('cdkConnectedOverlayHasBackdrop') - get hasBackdrop() { + get hasBackdrop(): boolean { return this._hasBackdrop; } - set hasBackdrop(value: any) { + set hasBackdrop(value: BooleanInput) { this._hasBackdrop = coerceBooleanProperty(value); } /** Whether or not the overlay should be locked when scrolling. */ @Input('cdkConnectedOverlayLockPosition') - get lockPosition() { + get lockPosition(): boolean { return this._lockPosition; } - set lockPosition(value: any) { + set lockPosition(value: BooleanInput) { this._lockPosition = coerceBooleanProperty(value); } /** Whether the overlay's width and height can be constrained to fit within the viewport. */ @Input('cdkConnectedOverlayFlexibleDimensions') - get flexibleDimensions() { + get flexibleDimensions(): boolean { return this._flexibleDimensions; } - set flexibleDimensions(value: boolean) { + set flexibleDimensions(value: BooleanInput) { this._flexibleDimensions = coerceBooleanProperty(value); } /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */ @Input('cdkConnectedOverlayGrowAfterOpen') - get growAfterOpen() { + get growAfterOpen(): boolean { return this._growAfterOpen; } - set growAfterOpen(value: boolean) { + set growAfterOpen(value: BooleanInput) { this._growAfterOpen = coerceBooleanProperty(value); } /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */ @Input('cdkConnectedOverlayPush') - get push() { + get push(): boolean { return this._push; } - set push(value: boolean) { + set push(value: BooleanInput) { this._push = coerceBooleanProperty(value); } @@ -449,12 +449,6 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges { this._backdropSubscription.unsubscribe(); this._positionSubscription.unsubscribe(); } - - static ngAcceptInputType_hasBackdrop: BooleanInput; - static ngAcceptInputType_lockPosition: BooleanInput; - static ngAcceptInputType_flexibleDimensions: BooleanInput; - static ngAcceptInputType_growAfterOpen: BooleanInput; - static ngAcceptInputType_push: BooleanInput; } /** @docs-private */ diff --git a/src/cdk/overlay/overlay-ref.ts b/src/cdk/overlay/overlay-ref.ts index 457d02b67951..0dc05592cd0c 100644 --- a/src/cdk/overlay/overlay-ref.ts +++ b/src/cdk/overlay/overlay-ref.ts @@ -418,7 +418,7 @@ export class OverlayRef implements PortalOutlet, OverlayReference { return; } - let timeoutId: any; + let timeoutId: number; const finishDetach = () => { // It may not be attached to anything in certain cases (e.g. unit tests). if (backdropToDetach) { diff --git a/src/cdk/overlay/overlay.spec.ts b/src/cdk/overlay/overlay.spec.ts index 865caa7600b9..180c6cb0ebce 100644 --- a/src/cdk/overlay/overlay.spec.ts +++ b/src/cdk/overlay/overlay.spec.ts @@ -8,7 +8,6 @@ import { } from '@angular/core/testing'; import { Component, - NgModule, ViewChild, ViewContainerRef, ErrorHandler, @@ -47,7 +46,8 @@ describe('Overlay', () => { waitForAsync(() => { dir = 'ltr'; TestBed.configureTestingModule({ - imports: [OverlayModule, PortalModule, OverlayTestModule], + imports: [OverlayModule, PortalModule], + declarations: [PizzaMsg, TestComponentWithTemplatePortals], providers: [ { provide: Directionality, @@ -1080,17 +1080,6 @@ class TestComponentWithTemplatePortals { constructor(public viewContainerRef: ViewContainerRef) {} } -// Create a real (non-test) NgModule as a workaround for -// https://github.com/angular/angular/issues/10760 -const TEST_COMPONENTS = [PizzaMsg, TestComponentWithTemplatePortals]; -@NgModule({ - imports: [OverlayModule, PortalModule], - exports: TEST_COMPONENTS, - declarations: TEST_COMPONENTS, - entryComponents: TEST_COMPONENTS, -}) -class OverlayTestModule {} - class FakePositionStrategy implements PositionStrategy { element: HTMLElement; diff --git a/src/cdk/overlay/position/connected-position.ts b/src/cdk/overlay/position/connected-position.ts index e9a42b432e21..42954a37a636 100644 --- a/src/cdk/overlay/position/connected-position.ts +++ b/src/cdk/overlay/position/connected-position.ts @@ -7,7 +7,6 @@ */ /** Horizontal dimension of a connection point on the perimeter of the origin or overlay element. */ -import {Optional} from '@angular/core'; export type HorizontalConnectionPos = 'start' | 'center' | 'end'; /** Vertical dimension of a connection point on the perimeter of the origin or overlay element. */ @@ -91,7 +90,7 @@ export class ConnectedOverlayPositionChange { /** The position used as a result of this change. */ public connectionPair: ConnectionPositionPair, /** @docs-private */ - @Optional() public scrollableViewProperties: ScrollingVisibility, + public scrollableViewProperties: ScrollingVisibility, ) {} } diff --git a/src/cdk/overlay/position/flexible-connected-position-strategy.spec.ts b/src/cdk/overlay/position/flexible-connected-position-strategy.spec.ts index 56698d47a0b0..d9014316a338 100644 --- a/src/cdk/overlay/position/flexible-connected-position-strategy.spec.ts +++ b/src/cdk/overlay/position/flexible-connected-position-strategy.spec.ts @@ -1,7 +1,7 @@ import {ComponentPortal, PortalModule} from '@angular/cdk/portal'; import {CdkScrollable, ScrollingModule, ViewportRuler} from '@angular/cdk/scrolling'; import {dispatchFakeEvent, MockNgZone} from '../../testing/private'; -import {Component, ElementRef, NgModule, NgZone} from '@angular/core'; +import {Component, ElementRef, NgZone} from '@angular/core'; import {fakeAsync, inject, TestBed, tick} from '@angular/core/testing'; import {Subscription} from 'rxjs'; import {map} from 'rxjs/operators'; @@ -28,7 +28,8 @@ describe('FlexibleConnectedPositionStrategy', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ScrollingModule, OverlayModule, OverlayTestModule], + imports: [ScrollingModule, OverlayModule, PortalModule], + declarations: [TestOverlay], providers: [{provide: NgZone, useFactory: () => (zone = new MockNgZone())}], }); @@ -163,6 +164,46 @@ describe('FlexibleConnectedPositionStrategy', () => { originElement.remove(); }); + it('should calculate position with simulated zoom in Safari', () => { + let containerElement = overlayContainer.getContainerElement(); + spyOn(containerElement, 'getBoundingClientRect').and.returnValue({ + top: -200, + bottom: 900, + left: -200, + right: 100, + width: 100, + height: 100, + } as DOMRect); + + const originElement = createPositionedBlockElement(); + document.body.appendChild(originElement); + + // Position the element so it would have enough space to fit. + originElement.style.top = '200px'; + originElement.style.left = '70px'; + + attachOverlay({ + positionStrategy: overlay + .position() + .flexibleConnectedTo(originElement) + .withFlexibleDimensions(false) + .withPush(false) + .withPositions([ + { + originX: 'start', + originY: 'top', + overlayX: 'start', + overlayY: 'top', + }, + ]), + }); + + expect(getComputedStyle(overlayRef.overlayElement).left).toBe('270px'); + expect(getComputedStyle(overlayRef.overlayElement).top).toBe('400px'); + + originElement.remove(); + }); + it('should clean up after itself when disposed', () => { const origin = document.createElement('div'); const positionStrategy = overlay @@ -2889,11 +2930,3 @@ function createOverflowContainerElement() { `, }) class TestOverlay {} - -@NgModule({ - imports: [OverlayModule, PortalModule], - exports: [TestOverlay], - declarations: [TestOverlay], - entryComponents: [TestOverlay], -}) -class OverlayTestModule {} diff --git a/src/cdk/overlay/position/flexible-connected-position-strategy.ts b/src/cdk/overlay/position/flexible-connected-position-strategy.ts index 636efcc08756..33bd7193fb74 100644 --- a/src/cdk/overlay/position/flexible-connected-position-strategy.ts +++ b/src/cdk/overlay/position/flexible-connected-position-strategy.ts @@ -85,6 +85,9 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { /** Cached viewport dimensions */ private _viewportRect: Dimensions; + /** Cached container dimensions */ + private _containerRect: Dimensions; + /** Amount of space that must be maintained between the overlay and the edge of the viewport. */ private _viewportMargin = 0; @@ -213,16 +216,18 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { this._resetOverlayElementStyles(); this._resetBoundingBoxStyles(); - // We need the bounding rects for the origin and the overlay to determine how to position + // We need the bounding rects for the origin, the overlay and the container to determine how to position // the overlay relative to the origin. // We use the viewport rect to determine whether a position would go off-screen. this._viewportRect = this._getNarrowedViewportRect(); this._originRect = this._getOriginRect(); this._overlayRect = this._pane.getBoundingClientRect(); + this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect(); const originRect = this._originRect; const overlayRect = this._overlayRect; const viewportRect = this._viewportRect; + const containerRect = this._containerRect; // Positions where the overlay will fit with flexible dimensions. const flexibleFits: FlexibleFit[] = []; @@ -234,7 +239,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { // If a good fit is found, it will be applied immediately. for (let pos of this._preferredPositions) { // Get the exact (x, y) coordinate for the point-of-origin on the origin element. - let originPoint = this._getOriginPoint(originRect, pos); + let originPoint = this._getOriginPoint(originRect, containerRect, pos); // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the // overlay in this position. We use the top-left corner for calculations and later translate @@ -355,15 +360,22 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { * allows one to re-align the panel without changing the orientation of the panel. */ reapplyLastPosition(): void { - if (!this._isDisposed && (!this._platform || this._platform.isBrowser)) { + if (this._isDisposed || !this._platform.isBrowser) { + return; + } + + const lastPosition = this._lastPosition; + + if (lastPosition) { this._originRect = this._getOriginRect(); this._overlayRect = this._pane.getBoundingClientRect(); this._viewportRect = this._getNarrowedViewportRect(); + this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect(); - const lastPosition = this._lastPosition || this._preferredPositions[0]; - const originPoint = this._getOriginPoint(this._originRect, lastPosition); - + const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition); this._applyPosition(lastPosition, originPoint); + } else { + this.apply(); } } @@ -479,7 +491,11 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { /** * Gets the (x, y) coordinate of a connection point on the origin based on a relative position. */ - private _getOriginPoint(originRect: Dimensions, pos: ConnectedPosition): Point { + private _getOriginPoint( + originRect: Dimensions, + containerRect: Dimensions, + pos: ConnectedPosition, + ): Point { let x: number; if (pos.originX == 'center') { // Note: when centering we should always use the `left` @@ -491,6 +507,12 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { x = pos.originX == 'start' ? startX : endX; } + // When zooming in Safari the container rectangle contains negative values for the position + // and we need to re-add them to the calculated coordinates. + if (containerRect.left < 0) { + x -= containerRect.left; + } + let y: number; if (pos.originY == 'center') { y = originRect.top + originRect.height / 2; @@ -498,6 +520,15 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { y = pos.originY == 'top' ? originRect.top : originRect.bottom; } + // Normally the containerRect's top value would be zero, however when the overlay is attached to an input + // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle + // of the screen and to make space for the virtual keyboard. We need to account for this offset, + // otherwise our positioning will be thrown off. + // Additionally, when zooming in Safari this fixes the vertical position. + if (containerRect.top < 0) { + y -= containerRect.top; + } + return {x, y}; } @@ -580,7 +611,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { /** * Whether the overlay can fit within the viewport when it may resize either its width or height. * @param fit How well the overlay fits in the viewport at some position. - * @param point The (x, y) coordinates of the overlat at some position. + * @param point The (x, y) coordinates of the overlay at some position. * @param viewport The geometry of the viewport. */ private _canFitWithFlexibleDimensions(fit: OverlayFit, point: Point, viewport: Dimensions) { @@ -606,7 +637,7 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { * right and bottom). * * @param start Starting point from which the overlay is pushed. - * @param overlay Dimensions of the overlay. + * @param rawOverlayRect Dimensions of the overlay. * @param scrollPosition Current viewport scroll position. * @returns The point at which to position the overlay after pushing. This is effectively a new * originPoint. @@ -958,16 +989,6 @@ export class FlexibleConnectedPositionStrategy implements PositionStrategy { overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition); } - let virtualKeyboardOffset = this._overlayContainer - .getContainerElement() - .getBoundingClientRect().top; - - // Normally this would be zero, however when the overlay is attached to an input (e.g. in an - // autocomplete), mobile browsers will shift everything in order to put the input in the middle - // of the screen and to make space for the virtual keyboard. We need to account for this offset, - // otherwise our positioning will be thrown off. - overlayPoint.y -= virtualKeyboardOffset; - // We want to set either `top` or `bottom` based on whether the overlay wants to appear // above or below the origin and the direction in which the element will expand. if (position.overlayY === 'bottom') { @@ -1183,7 +1204,7 @@ interface OverlayFit { visibleArea: number; } -/** Record of the measurments determining whether an overlay will fit in a specific position. */ +/** Record of the measurements determining whether an overlay will fit in a specific position. */ interface FallbackPosition { position: ConnectedPosition; originPoint: Point; diff --git a/src/cdk/overlay/position/global-position-strategy.spec.ts b/src/cdk/overlay/position/global-position-strategy.spec.ts index db102307dd46..c4addba74e61 100644 --- a/src/cdk/overlay/position/global-position-strategy.spec.ts +++ b/src/cdk/overlay/position/global-position-strategy.spec.ts @@ -1,4 +1,4 @@ -import {NgModule, NgZone, Component} from '@angular/core'; +import {NgZone, Component} from '@angular/core'; import {TestBed} from '@angular/core/testing'; import {MockNgZone} from '../../testing/private'; import {PortalModule, ComponentPortal} from '@angular/cdk/portal'; @@ -11,7 +11,8 @@ describe('GlobalPositonStrategy', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [GlobalOverlayTestModule], + imports: [OverlayModule, PortalModule], + declarations: [BlankPortal], providers: [{provide: NgZone, useFactory: () => (zone = new MockNgZone())}], }); @@ -97,6 +98,17 @@ describe('GlobalPositonStrategy', () => { expect(parentStyle.alignItems).toBe('flex-end'); }); + it('should not set any alignment by default', () => { + attachOverlay({ + positionStrategy: overlay.position().global(), + }); + + const parentStyle = (overlayRef.overlayElement.parentNode as HTMLElement).style; + + expect(parentStyle.justifyContent).toBe(''); + expect(parentStyle.alignItems).toBe(''); + }); + it('should center the element', () => { attachOverlay({ positionStrategy: overlay.position().global().centerHorizontally().centerVertically(), @@ -120,6 +132,8 @@ describe('GlobalPositonStrategy', () => { const elementStyle = overlayRef.overlayElement.style; const parentStyle = (overlayRef.overlayElement.parentNode as HTMLElement).style; + expect(elementStyle.marginRight).toBe(''); + expect(elementStyle.marginBottom).toBe(''); expect(elementStyle.marginLeft).toBe('10px'); expect(elementStyle.marginTop).toBe('15px'); @@ -127,6 +141,27 @@ describe('GlobalPositonStrategy', () => { expect(parentStyle.alignItems).toBe('center'); }); + it('should center the element with an offset in rtl', () => { + attachOverlay({ + direction: 'rtl', + positionStrategy: overlay + .position() + .global() + .centerHorizontally('10px') + .centerVertically('15px'), + }); + + const elementStyle = overlayRef.overlayElement.style; + const parentStyle = (overlayRef.overlayElement.parentNode as HTMLElement).style; + + expect(elementStyle.marginLeft).toBe(''); + expect(elementStyle.marginRight).toBe('10px'); + expect(elementStyle.marginTop).toBe('15px'); + + expect(parentStyle.justifyContent).toBe('center'); + expect(parentStyle.alignItems).toBe('center'); + }); + it('should make the element position: static', () => { attachOverlay({ positionStrategy: overlay.position().global(), @@ -366,15 +401,63 @@ describe('GlobalPositonStrategy', () => { expect(parentStyle.justifyContent).toBeFalsy(); expect(parentStyle.alignItems).toBeFalsy(); }); + + it('should position the overlay to the start in ltr', () => { + attachOverlay({ + direction: 'ltr', + positionStrategy: overlay.position().global().start('40px'), + }); + + const elementStyle = overlayRef.overlayElement.style; + const parentStyle = (overlayRef.overlayElement.parentNode as HTMLElement).style; + + expect(elementStyle.marginLeft).toBe('40px'); + expect(elementStyle.marginRight).toBe(''); + expect(parentStyle.justifyContent).toBe('flex-start'); + }); + + it('should position the overlay to the start in rtl', () => { + attachOverlay({ + direction: 'rtl', + positionStrategy: overlay.position().global().start('50px'), + }); + + const elementStyle = overlayRef.overlayElement.style; + const parentStyle = (overlayRef.overlayElement.parentNode as HTMLElement).style; + + expect(elementStyle.marginLeft).toBe(''); + expect(elementStyle.marginRight).toBe('50px'); + expect(parentStyle.justifyContent).toBe('flex-start'); + }); + + it('should position the overlay to the end in ltr', () => { + attachOverlay({ + direction: 'ltr', + positionStrategy: overlay.position().global().end('60px'), + }); + + const elementStyle = overlayRef.overlayElement.style; + const parentStyle = (overlayRef.overlayElement.parentNode as HTMLElement).style; + + expect(elementStyle.marginRight).toBe('60px'); + expect(elementStyle.marginLeft).toBe(''); + expect(parentStyle.justifyContent).toBe('flex-end'); + }); + + it('should position the overlay to the end in rtl', () => { + attachOverlay({ + direction: 'rtl', + positionStrategy: overlay.position().global().end('70px'), + }); + + const elementStyle = overlayRef.overlayElement.style; + const parentStyle = (overlayRef.overlayElement.parentNode as HTMLElement).style; + + expect(elementStyle.marginLeft).toBe('70px'); + expect(elementStyle.marginRight).toBe(''); + expect(parentStyle.justifyContent).toBe('flex-end'); + }); }); @Component({template: ''}) class BlankPortal {} - -@NgModule({ - imports: [OverlayModule, PortalModule], - exports: [BlankPortal], - declarations: [BlankPortal], - entryComponents: [BlankPortal], -}) -class GlobalOverlayTestModule {} diff --git a/src/cdk/overlay/position/global-position-strategy.ts b/src/cdk/overlay/position/global-position-strategy.ts index c5fb4f82d958..3eebf2498304 100644 --- a/src/cdk/overlay/position/global-position-strategy.ts +++ b/src/cdk/overlay/position/global-position-strategy.ts @@ -21,16 +21,15 @@ const wrapperClass = 'cdk-global-overlay-wrapper'; export class GlobalPositionStrategy implements PositionStrategy { /** The overlay to which this strategy is attached. */ private _overlayRef: OverlayReference; - private _cssPosition: string = 'static'; - private _topOffset: string = ''; - private _bottomOffset: string = ''; - private _leftOffset: string = ''; - private _rightOffset: string = ''; - private _alignItems: string = ''; - private _justifyContent: string = ''; - private _width: string = ''; - private _height: string = ''; - private _isDisposed: boolean; + private _cssPosition = 'static'; + private _topOffset = ''; + private _bottomOffset = ''; + private _alignItems = ''; + private _xPosition = ''; + private _xOffset = ''; + private _width = ''; + private _height = ''; + private _isDisposed = false; attach(overlayRef: OverlayReference): void { const config = overlayRef.getConfig(); @@ -65,9 +64,8 @@ export class GlobalPositionStrategy implements PositionStrategy { * @param value New left offset. */ left(value: string = ''): this { - this._rightOffset = ''; - this._leftOffset = value; - this._justifyContent = 'flex-start'; + this._xOffset = value; + this._xPosition = 'left'; return this; } @@ -87,9 +85,30 @@ export class GlobalPositionStrategy implements PositionStrategy { * @param value New right offset. */ right(value: string = ''): this { - this._leftOffset = ''; - this._rightOffset = value; - this._justifyContent = 'flex-end'; + this._xOffset = value; + this._xPosition = 'right'; + return this; + } + + /** + * Sets the overlay to the start of the viewport, depending on the overlay direction. + * This will be to the left in LTR layouts and to the right in RTL. + * @param offset Offset from the edge of the screen. + */ + start(value: string = ''): this { + this._xOffset = value; + this._xPosition = 'start'; + return this; + } + + /** + * Sets the overlay to the end of the viewport, depending on the overlay direction. + * This will be to the right in LTR layouts and to the left in RTL. + * @param offset Offset from the edge of the screen. + */ + end(value: string = ''): this { + this._xOffset = value; + this._xPosition = 'end'; return this; } @@ -133,7 +152,7 @@ export class GlobalPositionStrategy implements PositionStrategy { */ centerHorizontally(offset: string = ''): this { this.left(offset); - this._justifyContent = 'center'; + this._xPosition = 'center'; return this; } @@ -171,31 +190,45 @@ export class GlobalPositionStrategy implements PositionStrategy { const shouldBeFlushVertically = (height === '100%' || height === '100vh') && (!maxHeight || maxHeight === '100%' || maxHeight === '100vh'); - - styles.position = this._cssPosition; - styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset; - styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset; - styles.marginBottom = this._bottomOffset; - styles.marginRight = this._rightOffset; + const xPosition = this._xPosition; + const xOffset = this._xOffset; + const isRtl = this._overlayRef.getConfig().direction === 'rtl'; + let marginLeft = ''; + let marginRight = ''; + let justifyContent = ''; if (shouldBeFlushHorizontally) { - parentStyles.justifyContent = 'flex-start'; - } else if (this._justifyContent === 'center') { - parentStyles.justifyContent = 'center'; - } else if (this._overlayRef.getConfig().direction === 'rtl') { - // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we - // don't want that because our positioning is explicitly `left` and `right`, hence - // why we do another inversion to ensure that the overlay stays in the same position. - // TODO: reconsider this if we add `start` and `end` methods. - if (this._justifyContent === 'flex-start') { - parentStyles.justifyContent = 'flex-end'; - } else if (this._justifyContent === 'flex-end') { - parentStyles.justifyContent = 'flex-start'; + justifyContent = 'flex-start'; + } else if (xPosition === 'center') { + justifyContent = 'center'; + + if (isRtl) { + marginRight = xOffset; + } else { + marginLeft = xOffset; } - } else { - parentStyles.justifyContent = this._justifyContent; + } else if (isRtl) { + if (xPosition === 'left' || xPosition === 'end') { + justifyContent = 'flex-end'; + marginLeft = xOffset; + } else if (xPosition === 'right' || xPosition === 'start') { + justifyContent = 'flex-start'; + marginRight = xOffset; + } + } else if (xPosition === 'left' || xPosition === 'start') { + justifyContent = 'flex-start'; + marginLeft = xOffset; + } else if (xPosition === 'right' || xPosition === 'end') { + justifyContent = 'flex-end'; + marginRight = xOffset; } + styles.position = this._cssPosition; + styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft; + styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset; + styles.marginBottom = this._bottomOffset; + styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight; + parentStyles.justifyContent = justifyContent; parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems; } diff --git a/src/cdk/overlay/scroll/block-scroll-strategy.spec.ts b/src/cdk/overlay/scroll/block-scroll-strategy.spec.ts index 44d20ef4ca7d..3039a3623bcd 100644 --- a/src/cdk/overlay/scroll/block-scroll-strategy.spec.ts +++ b/src/cdk/overlay/scroll/block-scroll-strategy.spec.ts @@ -1,4 +1,4 @@ -import {Component, NgModule} from '@angular/core'; +import {Component} from '@angular/core'; import {waitForAsync, inject, TestBed} from '@angular/core/testing'; import {ComponentPortal, PortalModule} from '@angular/cdk/portal'; import {Platform} from '@angular/cdk/platform'; @@ -21,7 +21,8 @@ describe('BlockScrollStrategy', () => { documentElement.classList.remove('cdk-global-scrollblock'); TestBed.configureTestingModule({ - imports: [OverlayModule, PortalModule, OverlayTestModule], + imports: [OverlayModule, PortalModule], + declarations: [FocacciaMsg], }).compileComponents(); }), ); @@ -217,11 +218,3 @@ describe('BlockScrollStrategy', () => { /** Simple component that we can attach to the overlay. */ @Component({template: '

Focaccia

'}) class FocacciaMsg {} - -/** Test module to hold the component. */ -@NgModule({ - imports: [OverlayModule, PortalModule], - declarations: [FocacciaMsg], - entryComponents: [FocacciaMsg], -}) -class OverlayTestModule {} diff --git a/src/cdk/overlay/scroll/close-scroll-strategy.spec.ts b/src/cdk/overlay/scroll/close-scroll-strategy.spec.ts index 3bd92440ba9b..0f8e0af6e6b2 100644 --- a/src/cdk/overlay/scroll/close-scroll-strategy.spec.ts +++ b/src/cdk/overlay/scroll/close-scroll-strategy.spec.ts @@ -1,5 +1,5 @@ import {inject, TestBed, fakeAsync} from '@angular/core/testing'; -import {NgModule, Component, NgZone} from '@angular/core'; +import {Component, NgZone} from '@angular/core'; import {Subject} from 'rxjs'; import {ComponentPortal, PortalModule} from '@angular/cdk/portal'; import {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling'; @@ -15,7 +15,8 @@ describe('CloseScrollStrategy', () => { scrollPosition = 0; TestBed.configureTestingModule({ - imports: [OverlayModule, PortalModule, OverlayTestModule], + imports: [OverlayModule, PortalModule], + declarations: [MozarellaMsg], providers: [ { provide: ScrollDispatcher, @@ -138,11 +139,3 @@ describe('CloseScrollStrategy', () => { /** Simple component that we can attach to the overlay. */ @Component({template: '

Mozarella

'}) class MozarellaMsg {} - -/** Test module to hold the component. */ -@NgModule({ - imports: [OverlayModule, PortalModule], - declarations: [MozarellaMsg], - entryComponents: [MozarellaMsg], -}) -class OverlayTestModule {} diff --git a/src/cdk/overlay/scroll/reposition-scroll-strategy.spec.ts b/src/cdk/overlay/scroll/reposition-scroll-strategy.spec.ts index 9aa1344cf50e..becfeab5bdcd 100644 --- a/src/cdk/overlay/scroll/reposition-scroll-strategy.spec.ts +++ b/src/cdk/overlay/scroll/reposition-scroll-strategy.spec.ts @@ -1,5 +1,5 @@ import {waitForAsync, inject, TestBed} from '@angular/core/testing'; -import {Component, NgModule} from '@angular/core'; +import {Component} from '@angular/core'; import {Subject} from 'rxjs'; import {ComponentPortal, PortalModule} from '@angular/cdk/portal'; import { @@ -20,7 +20,8 @@ describe('RepositionScrollStrategy', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - imports: [OverlayModule, PortalModule, OverlayTestModule], + imports: [OverlayModule, PortalModule], + declarations: [PastaMsg], providers: [ { provide: ScrollDispatcher, @@ -119,11 +120,3 @@ describe('RepositionScrollStrategy', () => { /** Simple component that we can attach to the overlay. */ @Component({template: '

Pasta

'}) class PastaMsg {} - -/** Test module to hold the component. */ -@NgModule({ - imports: [OverlayModule, PortalModule], - declarations: [PastaMsg], - entryComponents: [PastaMsg], -}) -class OverlayTestModule {} diff --git a/src/cdk/package.json b/src/cdk/package.json index bd9bb214f247..071964171d35 100644 --- a/src/cdk/package.json +++ b/src/cdk/package.json @@ -22,12 +22,24 @@ ".": { "sass": "./_index.scss" }, - "./a11y-prebuilt.css": {"style": "./a11y-prebuilt.css"}, - "./a11y-prebuilt": {"style": "./a11y-prebuilt.css"}, - "./overlay-prebuilt.css": {"style": "./overlay-prebuilt.css"}, - "./overlay-prebuilt": {"style": "./overlay-prebuilt.css"}, - "./text-field-prebuilt.css": {"style": "./text-field-prebuilt.css"}, - "./text-field-prebuilt": {"style": "./text-field-prebuilt.css"}, + "./a11y-prebuilt.css": { + "style": "./a11y-prebuilt.css" + }, + "./a11y-prebuilt": { + "style": "./a11y-prebuilt.css" + }, + "./overlay-prebuilt.css": { + "style": "./overlay-prebuilt.css" + }, + "./overlay-prebuilt": { + "style": "./overlay-prebuilt.css" + }, + "./text-field-prebuilt.css": { + "style": "./text-field-prebuilt.css" + }, + "./text-field-prebuilt": { + "style": "./text-field-prebuilt.css" + }, "./schematics": { "default": "./schematics/index.js" } diff --git a/src/cdk/platform/BUILD.bazel b/src/cdk/platform/BUILD.bazel index 274d24e8896b..c6dfc3ea5206 100644 --- a/src/cdk/platform/BUILD.bazel +++ b/src/cdk/platform/BUILD.bazel @@ -11,7 +11,6 @@ ng_module( deps = [ "@npm//@angular/common", "@npm//@angular/core", - "@npm//@types/node", ], ) diff --git a/src/cdk/platform/features/test-environment.ts b/src/cdk/platform/features/test-environment.ts index 8bca4244d3fe..fabcdfb72b3b 100644 --- a/src/cdk/platform/features/test-environment.ts +++ b/src/cdk/platform/features/test-environment.ts @@ -6,35 +6,20 @@ * found in the LICENSE file at https://angular.io/license */ -// Avoid using `declare const` because it caused conflicts inside Google -// with the real typings for these symbols. We use `declare interface` instead -// of just `interface` for interop with Closure Compiler (prevents property renaming): -// https://github.com/angular/tsickle/blob/master/README.md#differences-from-typescript -declare interface TestGlobals { - jasmine: unknown; - __karma__: unknown; - jest: unknown; - Mocha: unknown; -} - -let testGlobals: TestGlobals; - -// We check the Node-specific `global` first, because tools tend to add a fake -// `window` in Node environments which won't actually receive global variables. -if (typeof global !== 'undefined') { - testGlobals = global as {} as TestGlobals; -} else if (typeof window !== 'undefined') { - testGlobals = window as {} as TestGlobals; -} else { - testGlobals = {} as TestGlobals; -} - /** Gets whether the code is currently running in a test environment. */ export function _isTestEnvironment(): boolean { + // We can't use `declare const` because it causes conflicts inside Google with the real typings + // for these symbols and we can't read them off the global object, because they don't appear to + // be attached there for some runners like Jest. + // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643) return ( - (typeof testGlobals.__karma__ !== 'undefined' && !!testGlobals.__karma__) || - (typeof testGlobals.jasmine !== 'undefined' && !!testGlobals.jasmine) || - (typeof testGlobals.jest !== 'undefined' && !!testGlobals.jest) || - (typeof testGlobals.Mocha !== 'undefined' && !!testGlobals.Mocha) + // @ts-ignore + (typeof __karma__ !== 'undefined' && !!__karma__) || + // @ts-ignore + (typeof jasmine !== 'undefined' && !!jasmine) || + // @ts-ignore + (typeof jest !== 'undefined' && !!jest) || + // @ts-ignore + (typeof Mocha !== 'undefined' && !!Mocha) ); } diff --git a/src/cdk/portal/portal-directives.ts b/src/cdk/portal/portal-directives.ts index 4e957d7b294d..57cceb02a838 100644 --- a/src/cdk/portal/portal-directives.ts +++ b/src/cdk/portal/portal-directives.ts @@ -98,7 +98,7 @@ export class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestr return this._attachedPortal; } - set portal(portal: Portal | null) { + set portal(portal: Portal | null | undefined | '') { // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have // run. This handles the cases where the user might do something like `
` // and attach a portal programmatically in the parent component. When Angular does the first CD @@ -115,7 +115,7 @@ export class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestr super.attach(portal); } - this._attachedPortal = portal; + this._attachedPortal = portal || null; } /** Emits when a portal is attached to the outlet. */ @@ -237,8 +237,6 @@ export class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestr : nativeElement.parentNode! ) as HTMLElement; } - - static ngAcceptInputType_portal: Portal | null | undefined | ''; } /** diff --git a/src/cdk/portal/portal.md b/src/cdk/portal/portal.md index 4e375b4640ca..6c75a6bb6105 100644 --- a/src/cdk/portal/portal.md +++ b/src/cdk/portal/portal.md @@ -50,9 +50,7 @@ A component can use `@ViewChild` or `@ViewChildren` to get a reference to a `CdkPortal`. ##### `ComponentPortal` -Used to create a portal from a component type. When a component is dynamically created using -portals, it must be included in the `entryComponents` of its `NgModule`if your project uses ViewEngine. Projects -using Angular Ivy don't need `entryComponents`. +Used to create a portal from a component type. Usage: ```ts @@ -70,7 +68,7 @@ Usage: ``` ```ts -@ViewChild('templatePortalContent') templatePortalContent: TemplateRef; +@ViewChild('templatePortalContent') templatePortalContent: TemplateRef; ngAfterViewInit() { this.templatePortal = new TemplatePortal( diff --git a/src/cdk/portal/portal.spec.ts b/src/cdk/portal/portal.spec.ts index a175d4a76bd9..b71ea5576028 100644 --- a/src/cdk/portal/portal.spec.ts +++ b/src/cdk/portal/portal.spec.ts @@ -6,7 +6,6 @@ import { ComponentRef, ElementRef, Injector, - NgModule, Optional, QueryList, TemplateRef, @@ -24,7 +23,16 @@ import {CdkPortal, CdkPortalOutlet, PortalModule} from './portal-directives'; describe('Portals', () => { beforeEach(() => { - TestBed.configureTestingModule({imports: [PortalModule, PortalTestModule]}).compileComponents(); + TestBed.configureTestingModule({ + imports: [PortalModule, CommonModule], + declarations: [ + PortalTestApp, + UnboundPortalTestApp, + ArbitraryViewContainerRefComponent, + PizzaMsg, + SaveParentNodeOnInit, + ], + }).compileComponents(); }); describe('CdkPortalOutlet', () => { @@ -802,20 +810,3 @@ class PortalTestApp { class UnboundPortalTestApp { @ViewChild(CdkPortalOutlet) portalOutlet: CdkPortalOutlet; } - -// Create a real (non-test) NgModule as a workaround for -// https://github.com/angular/angular/issues/10760 -const TEST_COMPONENTS = [ - PortalTestApp, - UnboundPortalTestApp, - ArbitraryViewContainerRefComponent, - PizzaMsg, -]; - -@NgModule({ - imports: [CommonModule, PortalModule], - exports: TEST_COMPONENTS, - declarations: [...TEST_COMPONENTS, SaveParentNodeOnInit], - entryComponents: TEST_COMPONENTS, -}) -class PortalTestModule {} diff --git a/src/cdk/schematics/migration.json b/src/cdk/schematics/migration.json index 1e832cbcbd06..5c8b2e886852 100644 --- a/src/cdk/schematics/migration.json +++ b/src/cdk/schematics/migration.json @@ -41,6 +41,11 @@ "description": "Updates the Angular CDK to v13", "factory": "./ng-update/index#updateToV13" }, + "migration-v14": { + "version": "14.0.0-0", + "description": "Updates the Angular CDK to v14", + "factory": "./ng-update/index#updateToV14" + }, "ng-post-update": { "description": "Prints out results after ng-update.", "factory": "./ng-update/index#postUpdate", diff --git a/src/cdk/schematics/ng-generate/drag-drop/schema.json b/src/cdk/schematics/ng-generate/drag-drop/schema.json index 4b8c37175888..cc7f69170d95 100644 --- a/src/cdk/schematics/ng-generate/drag-drop/schema.json +++ b/src/cdk/schematics/ng-generate/drag-drop/schema.json @@ -78,7 +78,7 @@ "format": "html-selector", "description": "The selector to use for the component." }, - "module": { + "module": { "type": "string", "description": "Allows specification of the declaring module.", "alias": "m" diff --git a/src/cdk/schematics/ng-update/data/constructor-checks.ts b/src/cdk/schematics/ng-update/data/constructor-checks.ts index 2b63816788bc..b0fe6eee6eb8 100644 --- a/src/cdk/schematics/ng-update/data/constructor-checks.ts +++ b/src/cdk/schematics/ng-update/data/constructor-checks.ts @@ -17,6 +17,12 @@ export type ConstructorChecksUpgradeData = string; * automatically through type checking. */ export const constructorChecks: VersionChanges = { + [TargetVersion.V13]: [ + { + pr: 'https://github.com/angular/components/pull/23328', + changes: ['CdkStepper'] + } + ], [TargetVersion.V12]: [ { pr: 'https://github.com/angular/components/pull/21876', diff --git a/src/cdk/schematics/ng-update/devkit-migration.ts b/src/cdk/schematics/ng-update/devkit-migration.ts index 2d4fa8f0723a..138af851233d 100644 --- a/src/cdk/schematics/ng-update/devkit-migration.ts +++ b/src/cdk/schematics/ng-update/devkit-migration.ts @@ -42,5 +42,6 @@ export abstract class DevkitMigration extends Migration = Constructor> & - {[m in keyof typeof DevkitMigration]: typeof DevkitMigration[m]}; +export type DevkitMigrationCtor = Constructor> & { + [m in keyof typeof DevkitMigration]: typeof DevkitMigration[m]; +}; diff --git a/src/cdk/schematics/ng-update/index.ts b/src/cdk/schematics/ng-update/index.ts index f837b195cfff..9ee50116fe1f 100644 --- a/src/cdk/schematics/ng-update/index.ts +++ b/src/cdk/schematics/ng-update/index.ts @@ -94,6 +94,16 @@ export function updateToV13(): Rule { ); } +/** Entry point for the migration schematics with target of Angular CDK 14.0.0 */ +export function updateToV14(): Rule { + return createMigrationSchematicRule( + TargetVersion.V14, + cdkMigrations, + cdkUpgradeData, + onMigrationComplete, + ); +} + /** Function that will be called when the migration completed. */ function onMigrationComplete( context: SchematicContext, diff --git a/src/cdk/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.ts b/src/cdk/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.ts index 671a1a8d08bd..3a6fe74917d4 100644 --- a/src/cdk/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.ts +++ b/src/cdk/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.ts @@ -21,10 +21,11 @@ export class TildeImportMigration extends DevkitMigration { if (extension === '.scss' || extension === '.css') { const content = stylesheet.content; const migratedContent = content.replace( - /@(?:import|use) +['"]~@angular\/.*['"].*;?/g, - match => { - const index = match.indexOf('~@angular'); - return match.slice(0, index) + match.slice(index + 1); + /@(?:import|use) +['"](~@angular\/.*)['"].*;?/g, + (match, importPath) => { + const index = match.indexOf(importPath); + const newImportPath = importPath.replace(/^~|\.scss$/g, ''); + return match.slice(0, index) + newImportPath + match.slice(index + importPath.length); }, ); diff --git a/src/cdk/schematics/ng-update/test-cases/v13/misc/tilde-import-v13.spec.ts b/src/cdk/schematics/ng-update/test-cases/v13/misc/tilde-import-v13.spec.ts index d831eaf148ff..360dd588a877 100644 --- a/src/cdk/schematics/ng-update/test-cases/v13/misc/tilde-import-v13.spec.ts +++ b/src/cdk/schematics/ng-update/test-cases/v13/misc/tilde-import-v13.spec.ts @@ -124,4 +124,26 @@ describe('v13 tilde import migration', () => { `@include mat-core();`, ]); }); + + it('should remove remove .scss file extension', async () => { + writeLines(TEST_PATH, [ + `@use '~@angular/material.scss' as mat;`, + `@import '~@angular/material/theming.scss';`, + `@import '~@angular/cdk/overlay-prebuilt.css';`, + + `@include mat.button-theme();`, + `@include mat-core();`, + ]); + + await runMigration(); + + expect(splitFile(TEST_PATH)).toEqual([ + `@use '@angular/material' as mat;`, + `@import '@angular/material/theming';`, + `@import '@angular/cdk/overlay-prebuilt.css';`, + + `@include mat.button-theme();`, + `@include mat-core();`, + ]); + }); }); diff --git a/src/cdk/schematics/tsconfig.json b/src/cdk/schematics/tsconfig.json index e7c3f4393b4b..0f9346a17cfe 100644 --- a/src/cdk/schematics/tsconfig.json +++ b/src/cdk/schematics/tsconfig.json @@ -7,6 +7,7 @@ "outDir": "../../../dist/packages/cdk/schematics", "noEmitOnError": false, "strictNullChecks": true, + "useUnknownInCatchVariables": true, "noImplicitOverride": true, "noImplicitReturns": true, "noImplicitAny": true, @@ -18,17 +19,9 @@ "strictFunctionTypes": true, "sourceMap": true, "target": "es2015", - "types": [ - "jasmine", - "node" - ] + "types": ["jasmine", "node"] }, - "exclude": [ - "**/files/**/*", - "**/*.spec.ts", - "ng-update/test-cases/**/*", - "testing/**/*.ts" - ], + "exclude": ["**/files/**/*", "**/*.spec.ts", "ng-update/test-cases/**/*", "testing/**/*.ts"], "bazelOptions": { "suppressTsconfigOverrideWarnings": true } diff --git a/src/cdk/schematics/update-tool/target-version.ts b/src/cdk/schematics/update-tool/target-version.ts index 6f60fa6e1999..fbecdff853cd 100644 --- a/src/cdk/schematics/update-tool/target-version.ts +++ b/src/cdk/schematics/update-tool/target-version.ts @@ -18,6 +18,7 @@ export enum TargetVersion { V11 = 'version 11', V12 = 'version 12', V13 = 'version 13', + V14 = 'version 14', } /** diff --git a/src/cdk/schematics/utils/build-component.ts b/src/cdk/schematics/utils/build-component.ts index db07e506c817..f4261f58c774 100644 --- a/src/cdk/schematics/utils/build-component.ts +++ b/src/cdk/schematics/utils/build-component.ts @@ -27,7 +27,7 @@ import {InsertChange} from '@schematics/angular/utility/change'; import {getWorkspace} from '@schematics/angular/utility/workspace'; import {buildRelativePath, findModuleFromOptions} from '@schematics/angular/utility/find-module'; import {parseName} from '@schematics/angular/utility/parse-name'; -import {validateHtmlSelector, validateName} from '@schematics/angular/utility/validation'; +import {validateHtmlSelector} from '@schematics/angular/utility/validation'; import {ProjectType} from '@schematics/angular/utility/workspace-models'; import {readFileSync, statSync} from 'fs'; import {dirname, join, resolve} from 'path'; @@ -200,7 +200,6 @@ export function buildComponent( options.path = parsedPath.path; options.selector = options.selector || buildSelector(options, project.prefix); - validateName(options.name); validateHtmlSelector(options.selector!); // In case the specified style extension is not part of the supported CSS supersets, diff --git a/src/cdk/schematics/utils/html-manipulation.ts b/src/cdk/schematics/utils/html-manipulation.ts index 9aa5af51139a..10af7abdf28e 100644 --- a/src/cdk/schematics/utils/html-manipulation.ts +++ b/src/cdk/schematics/utils/html-manipulation.ts @@ -70,7 +70,9 @@ export function addBodyClass(host: Tree, htmlFilePath: string, className: string .includes(className); if (!hasClass) { - const classAttributeLocation = body.sourceCodeLocation!.attrs.class; + // We have source code location info enabled, and we pre-checked that the element + // has attributes, specifically the `class` attribute. + const classAttributeLocation = body.sourceCodeLocation!.attrs!.class; const recordedChange = host .beginUpdate(htmlFilePath) .insertRight(classAttributeLocation.endOffset - 1, ` ${className}`); diff --git a/src/cdk/schematics/utils/project-tsconfig-paths.ts b/src/cdk/schematics/utils/project-tsconfig-paths.ts index 36bd1bb53ba7..cbcb5daad7f6 100644 --- a/src/cdk/schematics/utils/project-tsconfig-paths.ts +++ b/src/cdk/schematics/utils/project-tsconfig-paths.ts @@ -43,7 +43,7 @@ export async function getWorkspaceConfigGracefully( return await readJsonWorkspace(path, { readFile: async filePath => tree.read(filePath)!.toString(), } as WorkspaceHost); - } catch (e) { + } catch { return null; } } diff --git a/src/cdk/scrolling/fixed-size-virtual-scroll.ts b/src/cdk/scrolling/fixed-size-virtual-scroll.ts index 542457bec5ba..5c255f7b1795 100644 --- a/src/cdk/scrolling/fixed-size-virtual-scroll.ts +++ b/src/cdk/scrolling/fixed-size-virtual-scroll.ts @@ -206,7 +206,7 @@ export class CdkFixedSizeVirtualScroll implements OnChanges { get itemSize(): number { return this._itemSize; } - set itemSize(value: number) { + set itemSize(value: NumberInput) { this._itemSize = coerceNumberProperty(value); } _itemSize = 20; @@ -219,7 +219,7 @@ export class CdkFixedSizeVirtualScroll implements OnChanges { get minBufferPx(): number { return this._minBufferPx; } - set minBufferPx(value: number) { + set minBufferPx(value: NumberInput) { this._minBufferPx = coerceNumberProperty(value); } _minBufferPx = 100; @@ -231,7 +231,7 @@ export class CdkFixedSizeVirtualScroll implements OnChanges { get maxBufferPx(): number { return this._maxBufferPx; } - set maxBufferPx(value: number) { + set maxBufferPx(value: NumberInput) { this._maxBufferPx = coerceNumberProperty(value); } _maxBufferPx = 200; @@ -246,8 +246,4 @@ export class CdkFixedSizeVirtualScroll implements OnChanges { ngOnChanges() { this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx); } - - static ngAcceptInputType_itemSize: NumberInput; - static ngAcceptInputType_minBufferPx: NumberInput; - static ngAcceptInputType_maxBufferPx: NumberInput; } diff --git a/src/cdk/scrolling/scroll-dispatcher.spec.ts b/src/cdk/scrolling/scroll-dispatcher.spec.ts index 09ea7e47abac..f978279f2427 100644 --- a/src/cdk/scrolling/scroll-dispatcher.spec.ts +++ b/src/cdk/scrolling/scroll-dispatcher.spec.ts @@ -6,7 +6,7 @@ import { ComponentFixture, tick, } from '@angular/core/testing'; -import {NgModule, Component, ViewChild, ElementRef} from '@angular/core'; +import {Component, ViewChild, ElementRef} from '@angular/core'; import {CdkScrollable, ScrollDispatcher, ScrollingModule} from './public-api'; import {dispatchFakeEvent} from '../testing/private'; @@ -14,7 +14,8 @@ describe('ScrollDispatcher', () => { beforeEach( waitForAsync(() => { TestBed.configureTestingModule({ - imports: [ScrollTestModule], + imports: [ScrollingModule], + declarations: [ScrollingComponent, NestedScrollingComponent], }); TestBed.compileComponents(); @@ -308,13 +309,3 @@ class ScrollingComponent { class NestedScrollingComponent { @ViewChild('interestingElement') interestingElement: ElementRef; } - -const TEST_COMPONENTS = [ScrollingComponent, NestedScrollingComponent]; -@NgModule({ - imports: [ScrollingModule], - providers: [ScrollDispatcher], - exports: TEST_COMPONENTS, - declarations: TEST_COMPONENTS, - entryComponents: TEST_COMPONENTS, -}) -class ScrollTestModule {} diff --git a/src/cdk/scrolling/scrolling-module.ts b/src/cdk/scrolling/scrolling-module.ts index a05ca7f521cf..0f3dcecdc8f0 100644 --- a/src/cdk/scrolling/scrolling-module.ts +++ b/src/cdk/scrolling/scrolling-module.ts @@ -7,7 +7,6 @@ */ import {BidiModule} from '@angular/cdk/bidi'; -import {PlatformModule} from '@angular/cdk/platform'; import {NgModule} from '@angular/core'; import {CdkFixedSizeVirtualScroll} from './fixed-size-virtual-scroll'; import {CdkScrollable} from './scrollable'; @@ -24,7 +23,7 @@ export class CdkScrollableModule {} * @docs-primary-export */ @NgModule({ - imports: [BidiModule, PlatformModule, CdkScrollableModule], + imports: [BidiModule, CdkScrollableModule], exports: [ BidiModule, CdkScrollableModule, diff --git a/src/cdk/scrolling/virtual-for-of.ts b/src/cdk/scrolling/virtual-for-of.ts index be8a57a4d77a..0a2def6a6557 100644 --- a/src/cdk/scrolling/virtual-for-of.ts +++ b/src/cdk/scrolling/virtual-for-of.ts @@ -141,10 +141,10 @@ export class CdkVirtualForOf * Setting the cache size to `0` will disable caching. Defaults to 20 templates. */ @Input() - get cdkVirtualForTemplateCacheSize() { + get cdkVirtualForTemplateCacheSize(): number { return this._viewRepeater.viewCacheSize; } - set cdkVirtualForTemplateCacheSize(size: number) { + set cdkVirtualForTemplateCacheSize(size: NumberInput) { this._viewRepeater.viewCacheSize = coerceNumberProperty(size); } @@ -392,6 +392,4 @@ export class CdkVirtualForOf index, }; } - - static ngAcceptInputType_cdkVirtualForTemplateCacheSize: NumberInput; } diff --git a/src/cdk/scrolling/virtual-scroll-viewport.spec.ts b/src/cdk/scrolling/virtual-scroll-viewport.spec.ts index 0ad60eea3034..71202b01eb6f 100644 --- a/src/cdk/scrolling/virtual-scroll-viewport.spec.ts +++ b/src/cdk/scrolling/virtual-scroll-viewport.spec.ts @@ -1006,6 +1006,39 @@ describe('CdkVirtualScrollViewport', () => { expect(viewport.getRenderedRange()).toEqual({start: 0, end: 200}); })); + + it('rendered offset should always start at 0', fakeAsync(() => { + finishInit(fixture); + triggerScroll(viewport, testComponent.itemSize + 5); + fixture.detectChanges(); + flush(); + + expect(viewport.getOffsetToRenderedContentStart()) + .withContext('should have 0px offset as we are using appendOnly') + .toBe(0); + })); + + it('should set content offset to bottom of content', fakeAsync(() => { + finishInit(fixture); + const contentSize = viewport.measureRenderedContentSize(); + + expect(contentSize).toBeGreaterThan(0); + + viewport.setRenderedContentOffset(contentSize + 10, 'to-end'); + fixture.detectChanges(); + flush(); + + expect(viewport.getOffsetToRenderedContentStart()).toBe(0); + })); + + it('should set content offset to top of content', fakeAsync(() => { + finishInit(fixture); + viewport.setRenderedContentOffset(10, 'to-start'); + fixture.detectChanges(); + flush(); + + expect(viewport.getOffsetToRenderedContentStart()).toBe(0); + })); }); }); diff --git a/src/cdk/scrolling/virtual-scroll-viewport.ts b/src/cdk/scrolling/virtual-scroll-viewport.ts index ae49acbbcaba..d9181fbf8569 100644 --- a/src/cdk/scrolling/virtual-scroll-viewport.ts +++ b/src/cdk/scrolling/virtual-scroll-viewport.ts @@ -99,7 +99,7 @@ export class CdkVirtualScrollViewport extends CdkScrollable implements OnInit, O get appendOnly(): boolean { return this._appendOnly; } - set appendOnly(value: boolean) { + set appendOnly(value: BooleanInput) { this._appendOnly = coerceBooleanProperty(value); } private _appendOnly = false; @@ -321,6 +321,8 @@ export class CdkVirtualScrollViewport extends CdkScrollable implements OnInit, O const axis = isHorizontal ? 'X' : 'Y'; const axisDirection = isHorizontal && isRtl ? -1 : 1; let transform = `translate${axis}(${Number(axisDirection * offset)}px)`; + // in appendOnly, we always start from the top + offset = this.appendOnly && to === 'to-start' ? 0 : offset; this._renderedContentOffset = offset; if (to === 'to-end') { transform += ` translate${axis}(-100%)`; @@ -461,6 +463,4 @@ export class CdkVirtualScrollViewport extends CdkScrollable implements OnInit, O this._totalContentWidth = this.orientation === 'horizontal' ? `${this._totalContentSize}px` : ''; } - - static ngAcceptInputType_appendOnly: BooleanInput; } diff --git a/src/cdk/stepper/stepper-button.ts b/src/cdk/stepper/stepper-button.ts index f58699be07ba..92f73c4e001c 100644 --- a/src/cdk/stepper/stepper-button.ts +++ b/src/cdk/stepper/stepper-button.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {Directive, HostListener, Input} from '@angular/core'; +import {Directive, Input} from '@angular/core'; import {CdkStepper} from './stepper'; @@ -15,6 +15,7 @@ import {CdkStepper} from './stepper'; selector: 'button[cdkStepperNext]', host: { '[type]': 'type', + '(click)': '_stepper.next()', }, }) export class CdkStepperNext { @@ -22,16 +23,6 @@ export class CdkStepperNext { @Input() type: string = 'submit'; constructor(public _stepper: CdkStepper) {} - - // We have to use a `HostListener` here in order to support both Ivy and ViewEngine. - // In Ivy the `host` bindings will be merged when this class is extended, whereas in - // ViewEngine they're overwritten. - // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('click') - _handleClick() { - this._stepper.next(); - } } /** Button that moves to the previous step in a stepper workflow. */ @@ -39,6 +30,7 @@ export class CdkStepperNext { selector: 'button[cdkStepperPrevious]', host: { '[type]': 'type', + '(click)': '_stepper.previous()', }, }) export class CdkStepperPrevious { @@ -46,14 +38,4 @@ export class CdkStepperPrevious { @Input() type: string = 'button'; constructor(public _stepper: CdkStepper) {} - - // We have to use a `HostListener` here in order to support both Ivy and ViewEngine. - // In Ivy the `host` bindings will be merged when this class is extended, whereas in - // ViewEngine they're overwritten. - // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('click') - _handleClick() { - this._stepper.previous(); - } } diff --git a/src/cdk/stepper/stepper.ts b/src/cdk/stepper/stepper.ts index a605392c61ac..eb7c444f1f10 100644 --- a/src/cdk/stepper/stepper.ts +++ b/src/cdk/stepper/stepper.ts @@ -15,7 +15,6 @@ import { NumberInput, } from '@angular/cdk/coercion'; import {ENTER, hasModifierKey, SPACE} from '@angular/cdk/keycodes'; -import {DOCUMENT} from '@angular/common'; import { AfterViewInit, ChangeDetectionStrategy, @@ -154,7 +153,7 @@ export class CdkStep implements OnChanges { get editable(): boolean { return this._editable; } - set editable(value: boolean) { + set editable(value: BooleanInput) { this._editable = coerceBooleanProperty(value); } private _editable = true; @@ -164,7 +163,7 @@ export class CdkStep implements OnChanges { get optional(): boolean { return this._optional; } - set optional(value: boolean) { + set optional(value: BooleanInput) { this._optional = coerceBooleanProperty(value); } private _optional = false; @@ -174,7 +173,7 @@ export class CdkStep implements OnChanges { get completed(): boolean { return this._completedOverride == null ? this._getDefaultCompleted() : this._completedOverride; } - set completed(value: boolean) { + set completed(value: BooleanInput) { this._completedOverride = coerceBooleanProperty(value); } _completedOverride: boolean | null = null; @@ -188,7 +187,7 @@ export class CdkStep implements OnChanges { get hasError(): boolean { return this._customError == null ? this._getDefaultError() : this._customError; } - set hasError(value: boolean) { + set hasError(value: BooleanInput) { this._customError = coerceBooleanProperty(value); } private _customError: boolean | null = null; @@ -246,11 +245,6 @@ export class CdkStep implements OnChanges { // global options, or if they've explicitly set it through the `hasError` input. return this._stepperOptions.showError ?? this._customError != null; } - - static ngAcceptInputType_editable: BooleanInput; - static ngAcceptInputType_hasError: BooleanInput; - static ngAcceptInputType_optional: BooleanInput; - static ngAcceptInputType_completed: BooleanInput; } @Directive({ @@ -281,22 +275,22 @@ export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy { get linear(): boolean { return this._linear; } - set linear(value: boolean) { + set linear(value: BooleanInput) { this._linear = coerceBooleanProperty(value); } private _linear = false; /** The index of the selected step. */ @Input() - get selectedIndex() { + get selectedIndex(): number { return this._selectedIndex; } - set selectedIndex(index: number) { + set selectedIndex(index: NumberInput) { const newIndex = coerceNumberProperty(index); if (this.steps && this._steps) { // Ensure that the index can't be out of bounds. - if (!this._isValidIndex(index) && (typeof ngDevMode === 'undefined' || ngDevMode)) { + if (!this._isValidIndex(newIndex) && (typeof ngDevMode === 'undefined' || ngDevMode)) { throw Error('cdkStepper: Cannot assign out-of-bounds value to `selectedIndex`.'); } @@ -307,7 +301,7 @@ export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy { !this._anyControlsInvalidOrPending(newIndex) && (newIndex >= this._selectedIndex || this.steps.toArray()[newIndex].editable) ) { - this._updateSelectedItemIndex(index); + this._updateSelectedItemIndex(newIndex); } } else { this._selectedIndex = newIndex; @@ -343,22 +337,12 @@ export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy { this._keyManager.withVerticalOrientation(value === 'vertical'); } } - - /** - * @deprecated To be turned into a private property. Use `orientation` instead. - * @breaking-change 13.0.0 - */ - protected _orientation: StepperOrientation = 'horizontal'; + private _orientation: StepperOrientation = 'horizontal'; constructor( @Optional() private _dir: Directionality, private _changeDetectorRef: ChangeDetectorRef, private _elementRef: ElementRef, - /** - * @deprecated No longer in use, to be removed. - * @breaking-change 13.0.0 - */ - @Inject(DOCUMENT) _document: any, ) { this._groupId = nextId++; } @@ -593,13 +577,6 @@ export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy { private _isValidIndex(index: number): boolean { return index > -1 && (!this.steps || index < this.steps.length); } - - static ngAcceptInputType_editable: BooleanInput; - static ngAcceptInputType_optional: BooleanInput; - static ngAcceptInputType_completed: BooleanInput; - static ngAcceptInputType_hasError: BooleanInput; - static ngAcceptInputType_linear: BooleanInput; - static ngAcceptInputType_selectedIndex: NumberInput; } /** diff --git a/src/cdk/table/can-stick.ts b/src/cdk/table/can-stick.ts index e5a0d0da94fa..1d59286ba959 100644 --- a/src/cdk/table/can-stick.ts +++ b/src/cdk/table/can-stick.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {coerceBooleanProperty} from '@angular/cdk/coercion'; +import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; /** @docs-private */ export type Constructor = new (...args: any[]) => T; @@ -46,7 +46,7 @@ export function mixinHasStickyInput>(base: T): CanStic get sticky(): boolean { return this._sticky; } - set sticky(v: boolean) { + set sticky(v: BooleanInput) { const prevValue = this._sticky; this._sticky = coerceBooleanProperty(v); this._hasStickyChanged = prevValue !== this._sticky; diff --git a/src/cdk/table/cell.ts b/src/cdk/table/cell.ts index 22bf3c9c93d9..4aabe6e48985 100644 --- a/src/cdk/table/cell.ts +++ b/src/cdk/table/cell.ts @@ -86,7 +86,7 @@ export class CdkColumnDef extends _CdkColumnDefBase implements CanStick { get stickyEnd(): boolean { return this._stickyEnd; } - set stickyEnd(v: boolean) { + set stickyEnd(v: BooleanInput) { const prevValue = this._stickyEnd; this._stickyEnd = coerceBooleanProperty(v); this._hasStickyChanged = prevValue !== this._stickyEnd; @@ -145,20 +145,12 @@ export class CdkColumnDef extends _CdkColumnDefBase implements CanStick { this._updateColumnCssClassName(); } } - - static ngAcceptInputType_sticky: BooleanInput; - static ngAcceptInputType_stickyEnd: BooleanInput; } /** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */ export class BaseCdkCell { constructor(columnDef: CdkColumnDef, elementRef: ElementRef) { - // If IE 11 is dropped before we switch to setting a single class name, change to multi param - // with destructuring. - const classList = elementRef.nativeElement.classList; - for (const className of columnDef._columnCssClassName) { - classList.add(className); - } + elementRef.nativeElement.classList.add(...columnDef._columnCssClassName); } } diff --git a/src/cdk/table/row.ts b/src/cdk/table/row.ts index 8e4e7b2f109a..18ed5fbb5532 100644 --- a/src/cdk/table/row.ts +++ b/src/cdk/table/row.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {BooleanInput} from '@angular/cdk/coercion'; import { ChangeDetectionStrategy, Component, @@ -109,8 +108,6 @@ export class CdkHeaderRowDef extends _CdkHeaderRowDefBase implements CanStick, O override ngOnChanges(changes: SimpleChanges): void { super.ngOnChanges(changes); } - - static ngAcceptInputType_sticky: BooleanInput; } // Boilerplate for applying mixins to CdkFooterRowDef. @@ -141,8 +138,6 @@ export class CdkFooterRowDef extends _CdkFooterRowDefBase implements CanStick, O override ngOnChanges(changes: SimpleChanges): void { super.ngOnChanges(changes); } - - static ngAcceptInputType_sticky: BooleanInput; } /** @@ -313,5 +308,6 @@ export class CdkRow {} selector: 'ng-template[cdkNoDataRow]', }) export class CdkNoDataRow { + _contentClassName = 'cdk-no-data-row'; constructor(public templateRef: TemplateRef) {} } diff --git a/src/cdk/table/table.spec.ts b/src/cdk/table/table.spec.ts index 61d558017a7f..a4cf43643438 100644 --- a/src/cdk/table/table.spec.ts +++ b/src/cdk/table/table.spec.ts @@ -298,13 +298,15 @@ describe('CdkTable', () => { }); it('should be able to show a message when no data is being displayed', () => { - expect(tableElement.textContent!.trim()).not.toContain('No data'); + expect(tableElement.querySelector('.cdk-no-data-row')).toBeFalsy(); const originalData = dataSource.data; dataSource.data = []; fixture.detectChanges(); - expect(tableElement.textContent!.trim()).toContain('No data'); + const noDataRow = tableElement.querySelector('.cdk-no-data-row')!; + expect(noDataRow).toBeTruthy(); + expect(noDataRow.getAttribute('role')).toBe('row'); dataSource.data = originalData; fixture.detectChanges(); @@ -312,7 +314,7 @@ describe('CdkTable', () => { // Expect it to have emitted once on init, once when empty, and again with original data. expect(component.contentChangedCount).toBe(3); - expect(tableElement.textContent!.trim()).not.toContain('No data'); + expect(tableElement.querySelector('.cdk-no-data-row')).toBeFalsy(); }); it('should show the no data row if there is no data on init', () => { @@ -321,7 +323,7 @@ describe('CdkTable', () => { fixture.componentInstance.dataSource.data = []; fixture.detectChanges(); tableElement = fixture.nativeElement.querySelector('.cdk-table'); - expect(tableElement.textContent!.trim()).toContain('No data'); + expect(tableElement.querySelector('.cdk-no-data-row')).toBeTruthy(); expect(component.contentChangedCount).toBe(1); }); }); @@ -558,17 +560,19 @@ describe('CdkTable', () => { const dataSource = thisFixture.componentInstance.dataSource!; const originalData = dataSource.data; - expect(tbody.textContent!.trim()).not.toContain('No data'); + expect(tbody.querySelector('.cdk-no-data-row')).toBeFalsy(); dataSource.data = []; thisFixture.detectChanges(); - expect(tbody.textContent!.trim()).toContain('No data'); + const noDataRow: HTMLElement = tbody.querySelector('.cdk-no-data-row'); + expect(noDataRow).toBeTruthy(); + expect(noDataRow.getAttribute('role')).toBe('row'); dataSource.data = originalData; thisFixture.detectChanges(); - expect(tbody.textContent!.trim()).not.toContain('No data'); + expect(tbody.querySelector('.cdk-no-data-row')).toBeFalsy(); }); it('should apply correct roles for native table elements', () => { @@ -743,7 +747,7 @@ describe('CdkTable', () => { fixture.componentInstance.dataSource.data = []; fixture.detectChanges(); - expect(tableElement.textContent).toContain('No data'); + expect(tableElement.querySelector('.cdk-no-data-row')).toBeTruthy(); }); describe('using when predicate', () => { @@ -2431,6 +2435,9 @@ class StickyPositioningListenerTest implements StickyPositioningListener { display: block; width: 20px; } + .cdk-header-row, .cdk-row, .cdk-footer-row { + display: flex; + } `, ], providers: [{provide: STICKY_POSITIONING_LISTENER, useExisting: StickyFlexLayoutCdkTableApp}], @@ -2766,7 +2773,7 @@ class RowContextCdkTableApp { - No data +
No data
`, }) diff --git a/src/cdk/table/table.ts b/src/cdk/table/table.ts index c0d98f566fbf..2c0d55061715 100644 --- a/src/cdk/table/table.ts +++ b/src/cdk/table/table.ts @@ -40,6 +40,7 @@ import { IterableChangeRecord, IterableDiffer, IterableDiffers, + NgZone, OnDestroy, OnInit, Optional, @@ -60,7 +61,7 @@ import { Subject, Subscription, } from 'rxjs'; -import {takeUntil} from 'rxjs/operators'; +import {take, takeUntil} from 'rxjs/operators'; import {CdkColumnDef} from './cell'; import {_CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER} from './coalesced-style-scheduler'; import { @@ -425,7 +426,7 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes get multiTemplateDataRows(): boolean { return this._multiTemplateDataRows; } - set multiTemplateDataRows(v: boolean) { + set multiTemplateDataRows(v: BooleanInput) { this._multiTemplateDataRows = coerceBooleanProperty(v); // In Ivy if this value is set via a static attribute (e.g. ), @@ -445,7 +446,7 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes get fixedLayout(): boolean { return this._fixedLayout; } - set fixedLayout(v: boolean) { + set fixedLayout(v: BooleanInput) { this._fixedLayout = coerceBooleanProperty(v); // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated. @@ -525,6 +526,12 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes @SkipSelf() @Inject(STICKY_POSITIONING_LISTENER) protected readonly _stickyPositioningListener: StickyPositioningListener, + /** + * @deprecated `_ngZone` parameter to become required. + * @breaking-change 14.0.0 + */ + @Optional() + protected readonly _ngZone?: NgZone, ) { if (!role) { this._elementRef.nativeElement.setAttribute('role', 'table'); @@ -604,13 +611,23 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes } ngOnDestroy() { - this._rowOutlet.viewContainer.clear(); - this._noDataRowOutlet.viewContainer.clear(); - this._headerRowOutlet.viewContainer.clear(); - this._footerRowOutlet.viewContainer.clear(); - - this._cachedRenderRowsMap.clear(); + [ + this._rowOutlet.viewContainer, + this._headerRowOutlet.viewContainer, + this._footerRowOutlet.viewContainer, + this._cachedRenderRowsMap, + this._customColumnDefs, + this._customRowDefs, + this._customHeaderRowDefs, + this._customFooterRowDefs, + this._columnDefsByName, + ].forEach(def => { + def.clear(); + }); + this._headerRowDefs = []; + this._footerRowDefs = []; + this._defaultRowDef = null; this._onDestroy.next(); this._onDestroy.complete(); @@ -666,7 +683,16 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes }); this._updateNoDataRow(); - this.updateStickyColumnStyles(); + + // Allow the new row data to render before measuring it. + // @breaking-change 14.0.0 Remove undefined check once _ngZone is required. + if (this._ngZone && NgZone.isInAngularZone()) { + this._ngZone.onStable.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => { + this.updateStickyColumnStyles(); + }); + } else { + this.updateStickyColumnStyles(); + } this.contentChanged.next(); } @@ -1286,19 +1312,34 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes private _updateNoDataRow() { const noDataRow = this._customNoDataRow || this._noDataRow; - if (noDataRow) { - const shouldShow = this._rowOutlet.viewContainer.length === 0; + if (!noDataRow) { + return; + } - if (shouldShow !== this._isShowingNoDataRow) { - const container = this._noDataRowOutlet.viewContainer; - shouldShow ? container.createEmbeddedView(noDataRow.templateRef) : container.clear(); - this._isShowingNoDataRow = shouldShow; + const shouldShow = this._rowOutlet.viewContainer.length === 0; + + if (shouldShow === this._isShowingNoDataRow) { + return; + } + + const container = this._noDataRowOutlet.viewContainer; + + if (shouldShow) { + const view = container.createEmbeddedView(noDataRow.templateRef); + const rootNode: HTMLElement | undefined = view.rootNodes[0]; + + // Only add the attributes if we have a single root node since it's hard + // to figure out which one to add it to when there are multiple. + if (view.rootNodes.length === 1 && rootNode?.nodeType === this._document.ELEMENT_NODE) { + rootNode.setAttribute('role', 'row'); + rootNode.classList.add(noDataRow._contentClassName); } + } else { + container.clear(); } - } - static ngAcceptInputType_multiTemplateDataRows: BooleanInput; - static ngAcceptInputType_fixedLayout: BooleanInput; + this._isShowingNoDataRow = shouldShow; + } } /** Utility function that gets a merged list of the entries in an array and values of a Set. */ diff --git a/src/cdk/testing/component-harness.ts b/src/cdk/testing/component-harness.ts index 81aa3476b521..79bec66ad5ad 100644 --- a/src/cdk/testing/component-harness.ts +++ b/src/cdk/testing/component-harness.ts @@ -96,6 +96,16 @@ export interface HarnessLoader { */ getHarness(query: HarnessQuery): Promise; + /** + * Searches for an instance of the component corresponding to the given harness type under the + * `HarnessLoader`'s root element, and returns a `ComponentHarness` for that instance. If multiple + * matching components are found, a harness for the first one is returned. If no matching + * component is found, null is returned. + * @param query A query for a harness to create + * @return An instance of the given harness type (or null if not found). + */ + getHarnessOrNull(query: HarnessQuery): Promise; + /** * Searches for all instances of the component corresponding to the given harness type under the * `HarnessLoader`'s root element, and returns a list `ComponentHarness` for each instance. @@ -103,6 +113,14 @@ export interface HarnessLoader { * @return A list instances of the given harness type. */ getAllHarnesses(query: HarnessQuery): Promise; + + /** + * Searches for an instance of the component corresponding to the given harness type under the + * `HarnessLoader`'s root element, and returns a boolean indicating if any were found. + * @param query A query for a harness to create + * @return A boolean indicating if an instance was found. + */ + hasHarness(query: HarnessQuery): Promise; } /** @@ -403,10 +421,18 @@ export abstract class ContentContainerComponentHarness(query: HarnessQuery): Promise { + return (await this.getRootHarnessLoader()).getHarnessOrNull(query); + } + async getAllHarnesses(query: HarnessQuery): Promise { return (await this.getRootHarnessLoader()).getAllHarnesses(query); } + async hasHarness(query: HarnessQuery): Promise { + return (await this.getRootHarnessLoader()).hasHarness(query); + } + /** * Gets the root harness loader from which to start * searching for content contained by this harness. diff --git a/src/cdk/testing/harness-environment.ts b/src/cdk/testing/harness-environment.ts index e744da638ae7..277a842e7f19 100644 --- a/src/cdk/testing/harness-environment.ts +++ b/src/cdk/testing/harness-environment.ts @@ -45,11 +45,16 @@ type ParsedQueries = { */ export abstract class HarnessEnvironment implements HarnessLoader, LocatorFactory { // Implemented as part of the `LocatorFactory` interface. - rootElement: TestElement; - - protected constructor(protected rawRootElement: E) { - this.rootElement = this.createTestElement(rawRootElement); + get rootElement(): TestElement { + this._rootElement = this._rootElement || this.createTestElement(this.rawRootElement); + return this._rootElement; + } + set rootElement(element: TestElement) { + this._rootElement = element; } + private _rootElement: TestElement | undefined; + + protected constructor(protected rawRootElement: E) {} // Implemented as part of the `LocatorFactory` interface. documentRootLocatorFactory(): LocatorFactory { @@ -112,11 +117,21 @@ export abstract class HarnessEnvironment implements HarnessLoader, LocatorFac return this.locatorFor(query)(); } + // Implemented as part of the `HarnessLoader` interface. + getHarnessOrNull(query: HarnessQuery): Promise { + return this.locatorForOptional(query)(); + } + // Implemented as part of the `HarnessLoader` interface. getAllHarnesses(query: HarnessQuery): Promise { return this.locatorForAll(query)(); } + // Implemented as part of the `HarnessLoader` interface. + async hasHarness(query: HarnessQuery): Promise { + return (await this.locatorForOptional(query)()) !== null; + } + // Implemented as part of the `HarnessLoader` interface. async getChildLoader(selector: string): Promise { return this.createEnvironment( diff --git a/src/cdk/testing/protractor/README.md b/src/cdk/testing/protractor/README.md new file mode 100644 index 000000000000..2df7d650ee89 --- /dev/null +++ b/src/cdk/testing/protractor/README.md @@ -0,0 +1,4 @@ +### No longer publicly available + +The protractor harness environment is no longer part of the public API. It was +deprecated in v12 and removed from the API in v14. diff --git a/src/cdk/testing/protractor/protractor-harness-environment.ts b/src/cdk/testing/protractor/protractor-harness-environment.ts index befe96aeb698..916550103c1f 100644 --- a/src/cdk/testing/protractor/protractor-harness-environment.ts +++ b/src/cdk/testing/protractor/protractor-harness-environment.ts @@ -27,7 +27,8 @@ const defaultEnvironmentOptions: ProtractorHarnessEnvironmentOptions = { /** * A `HarnessEnvironment` implementation for Protractor. - * @deprecated + * @deprecated As of v13.0.0, this environment no longer works, as it is not + * compatible with the new [Angular Package Format](https://angular.io/guide/angular-package-format). * @breaking-change 13.0.0 */ export class ProtractorHarnessEnvironment extends HarnessEnvironment { diff --git a/src/cdk/testing/selenium-webdriver/selenium-web-driver-harness-environment.ts b/src/cdk/testing/selenium-webdriver/selenium-web-driver-harness-environment.ts index 4c50f14ab00d..28f62408fbec 100644 --- a/src/cdk/testing/selenium-webdriver/selenium-web-driver-harness-environment.ts +++ b/src/cdk/testing/selenium-webdriver/selenium-web-driver-harness-environment.ts @@ -74,12 +74,16 @@ export class SeleniumWebDriverHarnessEnvironment extends HarnessEnvironment< /** The options for this environment. */ private _options: WebDriverHarnessEnvironmentOptions; + /** Environment stabilization callback passed to the created test elements. */ + private _stabilizeCallback: () => Promise; + protected constructor( rawRootElement: () => webdriver.WebElement, options?: WebDriverHarnessEnvironmentOptions, ) { super(rawRootElement); this._options = {...defaultEnvironmentOptions, ...options}; + this._stabilizeCallback = () => this.forceStabilize(); } /** Gets the ElementFinder corresponding to the given TestElement. */ @@ -123,7 +127,7 @@ export class SeleniumWebDriverHarnessEnvironment extends HarnessEnvironment< /** Creates a `TestElement` from a raw element. */ protected createTestElement(element: () => webdriver.WebElement): TestElement { - return new SeleniumWebDriverElement(element, () => this.forceStabilize()); + return new SeleniumWebDriverElement(element, this._stabilizeCallback); } /** Creates a `HarnessLoader` rooted at the given raw element. */ diff --git a/src/cdk/testing/test-element.ts b/src/cdk/testing/test-element.ts index 98f090f93720..844a94925756 100644 --- a/src/cdk/testing/test-element.ts +++ b/src/cdk/testing/test-element.ts @@ -117,7 +117,8 @@ export interface TestElement { /** * Sends the given string to the input as a series of key presses. Also fires input events - * and attempts to add the string to the Element's value. + * and attempts to add the string to the Element's value. Note that some environments cannot + * reproduce native browser behavior for keyboard shortcuts such as Tab, Ctrl + A, etc. */ sendKeys(...keys: (string | TestKey)[]): Promise; diff --git a/src/cdk/testing/test-harnesses.md b/src/cdk/testing/test-harnesses.md index 049d71862fc8..90e1ce011944 100644 --- a/src/cdk/testing/test-harnesses.md +++ b/src/cdk/testing/test-harnesses.md @@ -44,12 +44,12 @@ matches the harness class to instances of the component in the DOM. Beyond that, given harness is specific to its corresponding component; refer to the component's documentation to learn how to use a specific harness. -#### Using `TestbedHarnessEnvironment` and `ProtractorHarnessEnvironment` +#### Using `TestbedHarnessEnvironment` and `SeleniumWebDriverHarnessEnvironment` These classes correspond to different implementations of the component harness system with bindings for specific test environments. Any given test must only import _one_ of these classes. Karma-based -unit tests should use the `TestbedHarnessEnvironment`, while Protractor-based end-to-end tests -should use the `ProtractorHarnessEnvironment`. Additional environments require custom bindings; see +unit tests should use the `TestbedHarnessEnvironment`, while Selenium WebDriver-based end-to-end tests +should use the `SeleniumWebDriverHarnessEnvironment`. Additional environments require custom bindings; see [API for harness environment authors](#api-for-harness-environment-authors) for more information on alternate test environments. @@ -107,13 +107,13 @@ it('loads harnesses', async () => { }); ``` -`ProtractorHarnessEnvironment` has an API that offers a single static method: +`SeleniumWebDriverHarnessEnvironment` has an API that offers a single static method: | Method | Description | | ------ | ----------- | | `loader(): HarnessLoader` | Gets a `HarnessLoader` instance for the current HTML document, rooted at the document's root element. | -Since Protractor does not deal with fixtures, the API in this environment is simpler. The +Since Selenium WebDriver does not deal with fixtures, the API in this environment is simpler. The `HarnessLoader` returned by the `loader()` method should be sufficient for loading all necessary `ComponentHarness` instances. @@ -304,7 +304,7 @@ The functions created with the locator methods described above all return `TestE | `dispatchEvent(name: string, data?: Record): Promise;` | Dispatches an event with a particular name. | `TestElement` is an abstraction designed to work across different test environments (Karma, -Protractor, etc). When using harnesses, you should perform all DOM interaction via this interface. +Selenium WebDriver, etc). When using harnesses, you should perform all DOM interaction via this interface. Other means of accessing DOM elements (e.g. `document.querySelector`) will not work in all test environments. @@ -574,7 +574,7 @@ may need to explicitly wait for tasks outside `NgZone`, as this does not happen Harness environment authors are developers who want to add support for using component harnesses in additional testing environments. Out-of-the-box, Angular CDK's component harnesses can be used in -Protractor E2E tests and Karma unit tests. Developers can support additional environments by +Selenium WebDriver E2E tests and Karma unit tests. Developers can support additional environments by creating custom implementations of `TestElement` and `HarnessEnvironment`. #### Creating a `TestElement` implementation for the environment @@ -583,7 +583,7 @@ The first step in adding support for a new testing environment is to create a `T implementation. The `TestElement` interface serves as an environment-agnostic representation of a DOM element; it lets harnesses interact with DOM elements regardless of the underlying environment. Because some environments don't support interacting with DOM elements synchronously -(e.g. webdriver), all of the `TestElement` methods are asynchronous, returning a `Promise` with the +(e.g. WebDriver), all of the `TestElement` methods are asynchronous, returning a `Promise` with the result of the operation. | Method | Description | @@ -616,7 +616,7 @@ maintain a mapping from `TestKey` codes to the codes used in the particular test The [`UnitTestElement`](https://github.com/angular/components/blob/master/src/cdk/testing/testbed/unit-test-element.ts#L57) and -[`ProtractorElement`](https://github.com/angular/components/blob/master/src/cdk/testing/protractor/protractor-element.ts#L67) +[`SeleniumWebDriverElement`](https://github.com/angular/components/blob/master/src/cdk/testing/selenium-webdriver/selenium-web-driver-element.ts#L22) implementations in Angular CDK serve as good examples of implementations of this interface. #### Creating a `HarnessEnvironemnt` implementation for the environment @@ -654,7 +654,7 @@ require arguments to be passed. (e.g. the `loader` method on `TestbedHarnessEnvi The [`TestbedHarnessEnvironment`](https://github.com/angular/components/blob/master/src/cdk/testing/testbed/testbed-harness-environment.ts#L20) and -[`ProtractorHarnessEnvironment`](https://github.com/angular/components/blob/master/src/cdk/testing/protractor/protractor-harness-environment.ts#L16) +[`SeleniumWebDriverHarnessEnvironment`](https://github.com/angular/components/blob/master/src/cdk/testing/selenium-webdriver/selenium-web-driver-harness-environment.ts#L71) implementations in Angular CDK serve as good examples of implementations of this interface. #### Handling auto change detection status diff --git a/src/cdk/testing/testbed/fake-events/event-objects.spec.ts b/src/cdk/testing/testbed/fake-events/event-objects.spec.ts index 643341c823b8..0fe80cca0f8e 100644 --- a/src/cdk/testing/testbed/fake-events/event-objects.spec.ts +++ b/src/cdk/testing/testbed/fake-events/event-objects.spec.ts @@ -1,3 +1,9 @@ +import { + dispatchMouseEvent, + dispatchKeyboardEvent, + dispatchPointerEvent, + dispatchFakeEvent, +} from './dispatch-events'; import {createKeyboardEvent, createMouseEvent} from './event-objects'; describe('event objects', () => { @@ -40,4 +46,70 @@ describe('event objects', () => { expect(preventDefaultSpy).toHaveBeenCalledTimes(2); }); }); + + describe('shadow DOM', () => { + it('should allow dispatched mouse events to propagate through the shadow root', () => { + if (!testElement.attachShadow) { + return; + } + + const spy = jasmine.createSpy('listener'); + const shadowRoot = testElement.attachShadow({mode: 'open'}); + const child = document.createElement('div'); + shadowRoot.appendChild(child); + + testElement.addEventListener('mousedown', spy); + dispatchMouseEvent(child, 'mousedown'); + + expect(spy).toHaveBeenCalled(); + }); + + it('should allow dispatched keyboard events to propagate through the shadow root', () => { + if (!testElement.attachShadow) { + return; + } + + const spy = jasmine.createSpy('listener'); + const shadowRoot = testElement.attachShadow({mode: 'open'}); + const child = document.createElement('div'); + shadowRoot.appendChild(child); + + testElement.addEventListener('keydown', spy); + dispatchKeyboardEvent(child, 'keydown'); + + expect(spy).toHaveBeenCalled(); + }); + + it('should allow dispatched pointer events to propagate through the shadow root', () => { + if (!testElement.attachShadow) { + return; + } + + const spy = jasmine.createSpy('listener'); + const shadowRoot = testElement.attachShadow({mode: 'open'}); + const child = document.createElement('div'); + shadowRoot.appendChild(child); + + testElement.addEventListener('pointerdown', spy); + dispatchPointerEvent(child, 'pointerdown'); + + expect(spy).toHaveBeenCalled(); + }); + + it('should allow dispatched fake events to propagate through the shadow root', () => { + if (!testElement.attachShadow) { + return; + } + + const spy = jasmine.createSpy('listener'); + const shadowRoot = testElement.attachShadow({mode: 'open'}); + const child = document.createElement('div'); + shadowRoot.appendChild(child); + + testElement.addEventListener('fake', spy); + dispatchFakeEvent(child, 'fake'); + + expect(spy).toHaveBeenCalled(); + }); + }); }); diff --git a/src/cdk/testing/testbed/fake-events/event-objects.ts b/src/cdk/testing/testbed/fake-events/event-objects.ts index 547252ba7dd9..d68892693ce5 100644 --- a/src/cdk/testing/testbed/fake-events/event-objects.ts +++ b/src/cdk/testing/testbed/fake-events/event-objects.ts @@ -32,6 +32,7 @@ export function createMouseEvent( const event = new MouseEvent(type, { bubbles: true, cancelable: true, + composed: true, // Required for shadow DOM events. view: window, detail: 0, relatedTarget: null, @@ -74,6 +75,7 @@ export function createPointerEvent( return new PointerEvent(type, { bubbles: true, cancelable: true, + composed: true, // Required for shadow DOM events. view: window, clientX, clientY, @@ -116,6 +118,7 @@ export function createKeyboardEvent( return new KeyboardEvent(type, { bubbles: true, cancelable: true, + composed: true, // Required for shadow DOM events. view: window, keyCode: keyCode, key: key, @@ -130,8 +133,8 @@ export function createKeyboardEvent( * Creates a fake event object with any desired event type. * @docs-private */ -export function createFakeEvent(type: string, bubbles = false, cancelable = true) { - return new Event(type, {bubbles, cancelable}); +export function createFakeEvent(type: string, bubbles = false, cancelable = true, composed = true) { + return new Event(type, {bubbles, cancelable, composed}); } /** diff --git a/src/cdk/testing/testbed/testbed-harness-environment.ts b/src/cdk/testing/testbed/testbed-harness-environment.ts index 5378a2949a71..60f061853dc4 100644 --- a/src/cdk/testing/testbed/testbed-harness-environment.ts +++ b/src/cdk/testing/testbed/testbed-harness-environment.ts @@ -96,6 +96,9 @@ export class TestbedHarnessEnvironment extends HarnessEnvironment { /** The options for this environment. */ private _options: TestbedHarnessEnvironmentOptions; + /** Environment stabilization callback passed to the created test elements. */ + private _stabilizeCallback: () => Promise; + protected constructor( rawRootElement: Element, private _fixture: ComponentFixture, @@ -104,6 +107,7 @@ export class TestbedHarnessEnvironment extends HarnessEnvironment { super(rawRootElement); this._options = {...defaultEnvironmentOptions, ...options}; this._taskState = TaskStateZoneInterceptor.setup(); + this._stabilizeCallback = () => this.forceStabilize(); installAutoChangeDetectionStatusHandler(_fixture); _fixture.componentRef.onDestroy(() => { uninstallAutoChangeDetectionStatusHandler(_fixture); @@ -198,7 +202,7 @@ export class TestbedHarnessEnvironment extends HarnessEnvironment { /** Creates a `TestElement` from a raw element. */ protected createTestElement(element: Element): TestElement { - return new UnitTestElement(element, () => this.forceStabilize()); + return new UnitTestElement(element, this._stabilizeCallback); } /** Creates a `HarnessLoader` rooted at the given raw element. */ diff --git a/src/cdk/testing/testbed/unit-test-element.ts b/src/cdk/testing/testbed/unit-test-element.ts index 40167f5dbfa5..2b47bc3f70af 100644 --- a/src/cdk/testing/testbed/unit-test-element.ts +++ b/src/cdk/testing/testbed/unit-test-element.ts @@ -100,7 +100,15 @@ export class UnitTestElement implements TestElement { async click( ...args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?] ): Promise { - await this._dispatchMouseEventSequence('click', args, 0); + const isDisabled = (this.element as Partial<{disabled?: boolean}>).disabled === true; + + // If the element is `disabled` and has a `disabled` property, we emit the mouse event + // sequence but not dispatch the `click` event. This is necessary to keep the behavior + // consistent with an actual user interaction. The click event is not necessarily + // automatically prevented by the browser. There is mismatch between Firefox and Chromium: + // https://bugzilla.mozilla.org/show_bug.cgi?id=329509. + // https://bugs.chromium.org/p/chromium/issues/detail?id=1115661. + await this._dispatchMouseEventSequence(isDisabled ? null : 'click', args, 0); await this._stabilize(); } @@ -148,7 +156,8 @@ export class UnitTestElement implements TestElement { /** * Sends the given string to the input as a series of key presses. Also fires input events - * and attempts to add the string to the Element's value. + * and attempts to add the string to the Element's value. Note that this cannot + * reproduce native browser behavior for keyboard shortcuts such as Tab, Ctrl + A, etc. */ async sendKeys(...keys: (string | TestKey)[]): Promise; /** @@ -283,9 +292,12 @@ export class UnitTestElement implements TestElement { } } - /** Dispatches all the events that are part of a mouse event sequence. */ + /** + * Dispatches all the events that are part of a mouse event sequence + * and then emits a given primary event at the end, if speciifed. + */ private async _dispatchMouseEventSequence( - name: string, + primaryEventName: string | null, args: [ModifierKeys?] | ['center', ModifierKeys?] | [number, number, ModifierKeys?], button?: number, ) { @@ -312,11 +324,16 @@ export class UnitTestElement implements TestElement { dispatchMouseEvent(this.element, 'mousedown', clientX, clientY, button, modifiers); this._dispatchPointerEventIfSupported('pointerup', clientX, clientY, button); dispatchMouseEvent(this.element, 'mouseup', clientX, clientY, button, modifiers); - dispatchMouseEvent(this.element, name, clientX, clientY, button, modifiers); + + // If a primary event name is specified, emit it after the mouse event sequence. + if (primaryEventName !== null) { + dispatchMouseEvent(this.element, primaryEventName, clientX, clientY, button, modifiers); + } // This call to _stabilize should not be needed since the callers will already do that them- // selves. Nevertheless it breaks some tests in g3 without it. It needs to be investigated // why removing breaks those tests. + // See: https://github.com/angular/components/pull/20758/files#r520886256. await this._stabilize(); } } diff --git a/src/cdk/testing/tests/cross-environment.spec.ts b/src/cdk/testing/tests/cross-environment.spec.ts index fb2983db0d03..553b3b916da7 100644 --- a/src/cdk/testing/tests/cross-environment.spec.ts +++ b/src/cdk/testing/tests/cross-environment.spec.ts @@ -58,7 +58,7 @@ export function crossEnvironmentSpecs( await loader.getChildLoader('error'); fail('Expected to throw'); } catch (e) { - expect(e.message).toBe( + expect((e as Error).message).toBe( 'Failed to find element matching one of the following queries:' + '\n(HarnessLoader for element matching selector: "error")', ); @@ -82,17 +82,35 @@ export function crossEnvironmentSpecs( await countersLoader.getHarness(SubComponentHarness); fail('Expected to throw'); } catch (e) { - expect(e.message).toBe( + expect((e as Error).message).toBe( 'Failed to find element matching one of the following queries:' + '\n(SubComponentHarness with host element matching selector: "test-sub")', ); } }); + it('should get first matching component for optional harness', async () => { + const harness = await loader.getHarnessOrNull(SubComponentHarness); + expect(harness).not.toBeNull(); + expect(await (await harness!.title()).text()).toBe('List of test tools'); + }); + + it('should get null if no matching component found for optional harness', async () => { + const countersLoader = await loader.getChildLoader('.counters'); + const harness = await countersLoader.getHarnessOrNull(SubComponentHarness); + expect(harness).toBeNull(); + }); + it('should get all matching components for all harnesses', async () => { const harnesses = await loader.getAllHarnesses(SubComponentHarness); expect(harnesses.length).toBe(4); }); + + it('should check if harness is found', async () => { + const countersLoader = await loader.getChildLoader('.counters'); + expect(await loader.hasHarness(SubComponentHarness)).toBe(true); + expect(await countersLoader.hasHarness(SubComponentHarness)).toBe(false); + }); }); describe('ComponentHarness', () => { @@ -112,7 +130,7 @@ export function crossEnvironmentSpecs( await harness.errorItem(); fail('Expected to throw'); } catch (e) { - expect(e.message).toBe( + expect((e as Error).message).toBe( 'Failed to find element matching one of the following queries:' + '\n(TestElement for element matching selector: "wrong locator")', ); @@ -147,7 +165,7 @@ export function crossEnvironmentSpecs( await harness.errorSubComponent(); fail('Expected to throw'); } catch (e) { - expect(e.message).toBe( + expect((e as Error).message).toBe( 'Failed to find element matching one of the following queries:' + '\n(WrongComponentHarness with host element matching selector: "wrong-selector")', ); @@ -211,7 +229,7 @@ export function crossEnvironmentSpecs( await harness.requiredAncestorRestrictedMissingSubcomponent(); fail('Expected to throw'); } catch (e) { - expect(e.message).toBe( + expect((e as Error).message).toBe( 'Failed to find element matching one of the following queries:' + '\n(SubComponentHarness with host element matching selector: "test-sub"' + ' satisfying the constraints: has ancestor matching selector ".not-found")', @@ -311,7 +329,7 @@ export function crossEnvironmentSpecs( await harness.requiredFourIteamToolsLists(); fail('Expected to throw'); } catch (e) { - expect(e.message).toBe( + expect((e as Error).message).toBe( 'Failed to find element matching one of the following queries:' + '\n(SubComponentHarness with host element matching selector: "test-sub" satisfying' + ' the constraints: title = "List of test tools", item count = 4)', @@ -640,7 +658,7 @@ export function crossEnvironmentSpecs( await harness.missingElementsAndHarnesses(); fail('Expected to throw.'); } catch (e) { - expect(e.message).toBe( + expect((e as Error).message).toBe( 'Failed to find element matching one of the following queries:' + '\n(TestElement for element matching selector: ".not-found"),' + '\n(SubComponentHarness with host element matching selector: "test-sub" satisfying' + diff --git a/src/cdk/testing/tests/webdriver-test.bzl b/src/cdk/testing/tests/webdriver-test.bzl index ca6db44d11dc..4535d1846017 100644 --- a/src/cdk/testing/tests/webdriver-test.bzl +++ b/src/cdk/testing/tests/webdriver-test.bzl @@ -1,7 +1,6 @@ -load("//tools:defaults.bzl", "jasmine_node_test") +load("//tools:defaults.bzl", "jasmine_node_test", "spec_bundle") load("@io_bazel_rules_webtesting//web:web.bzl", "web_test") load("//tools/server-test:index.bzl", "server_test") -load("//tools/spec-bundling:index.bzl", "spec_bundle") def webdriver_test(name, deps, tags = [], **kwargs): spec_bundle( @@ -27,7 +26,7 @@ def webdriver_test(name, deps, tags = [], **kwargs): server_test( name = "%s_chromium" % name, - server = "//src/e2e-app:devserver", + server = "//src/e2e-app:server", test = ":%s_chromium_web_test" % name, tags = tags + ["e2e"], ) diff --git a/src/cdk/text-field/autosize.spec.ts b/src/cdk/text-field/autosize.spec.ts index 66877cf9be9a..eabb88228f97 100644 --- a/src/cdk/text-field/autosize.spec.ts +++ b/src/cdk/text-field/autosize.spec.ts @@ -373,6 +373,13 @@ describe('CdkTextareaAutosize', () => { .withContext('Expected textarea to have a scrollbar.') .toBeLessThan(textarea.scrollHeight); })); + + it('should handle an undefined placeholder', () => { + fixture.componentInstance.placeholder = undefined!; + fixture.detectChanges(); + + expect(textarea.hasAttribute('placeholder')).toBe(false); + }); }); // Styles to reset padding and border to make measurement comparisons easier. diff --git a/src/cdk/text-field/autosize.ts b/src/cdk/text-field/autosize.ts index 7a0b6895a724..f07bf93bbddd 100644 --- a/src/cdk/text-field/autosize.ts +++ b/src/cdk/text-field/autosize.ts @@ -20,7 +20,6 @@ import { DoCheck, OnDestroy, NgZone, - HostListener, Optional, Inject, } from '@angular/core'; @@ -38,6 +37,7 @@ import {DOCUMENT} from '@angular/common'; // Textarea elements that have the directive applied should have a single row by default. // Browsers normally show two rows by default and therefore this limits the minRows binding. 'rows': '1', + '(input)': '_noopInputHandler()', }, }) export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { @@ -64,7 +64,7 @@ export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { get minRows(): number { return this._minRows; } - set minRows(value: number) { + set minRows(value: NumberInput) { this._minRows = coerceNumberProperty(value); this._setMinHeight(); } @@ -74,7 +74,7 @@ export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { get maxRows(): number { return this._maxRows; } - set maxRows(value: number) { + set maxRows(value: NumberInput) { this._maxRows = coerceNumberProperty(value); this._setMaxHeight(); } @@ -84,7 +84,7 @@ export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { get enabled(): boolean { return this._enabled; } - set enabled(value: boolean) { + set enabled(value: BooleanInput) { value = coerceBooleanProperty(value); // Only act if the actual value changed. This specifically helps to not run @@ -100,7 +100,13 @@ export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { } set placeholder(value: string) { this._cachedPlaceholderHeight = undefined; - this._textareaElement.placeholder = value; + + if (value) { + this._textareaElement.setAttribute('placeholder', value); + } else { + this._textareaElement.removeAttribute('placeholder'); + } + this._cacheTextareaPlaceholderHeight(); } @@ -335,11 +341,6 @@ export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { } } - // In Ivy the `host` metadata will be merged, whereas in ViewEngine it is overridden. In order - // to avoid double event listeners, we need to use `HostListener`. Once Ivy is the default, we - // can move this back into `host`. - // tslint:disable:no-host-decorator-in-concrete - @HostListener('input') _noopInputHandler() { // no-op handler that ensures we're running change detection on input events. } @@ -373,8 +374,4 @@ export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { textarea.setSelectionRange(selectionStart, selectionEnd); } } - - static ngAcceptInputType_minRows: NumberInput; - static ngAcceptInputType_maxRows: NumberInput; - static ngAcceptInputType_enabled: BooleanInput; } diff --git a/src/cdk/text-field/text-field-module.ts b/src/cdk/text-field/text-field-module.ts index 2f87b4496476..09b6b9481a2a 100644 --- a/src/cdk/text-field/text-field-module.ts +++ b/src/cdk/text-field/text-field-module.ts @@ -6,14 +6,12 @@ * found in the LICENSE file at https://angular.io/license */ -import {PlatformModule} from '@angular/cdk/platform'; import {NgModule} from '@angular/core'; import {CdkAutofill} from './autofill'; import {CdkTextareaAutosize} from './autosize'; @NgModule({ declarations: [CdkAutofill, CdkTextareaAutosize], - imports: [PlatformModule], exports: [CdkAutofill, CdkTextareaAutosize], }) export class TextFieldModule {} diff --git a/src/cdk/tree/nested-node.ts b/src/cdk/tree/nested-node.ts index 3f9c2ce42992..44d62083a620 100644 --- a/src/cdk/tree/nested-node.ts +++ b/src/cdk/tree/nested-node.ts @@ -9,7 +9,6 @@ import { AfterContentInit, ContentChildren, Directive, - DoCheck, ElementRef, IterableDiffer, IterableDiffers, @@ -38,10 +37,13 @@ import {getTreeControlFunctionsMissingError} from './tree-errors'; {provide: CdkTreeNode, useExisting: CdkNestedTreeNode}, {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: CdkNestedTreeNode}, ], + host: { + 'class': 'cdk-nested-tree-node', + }, }) export class CdkNestedTreeNode extends CdkTreeNode - implements AfterContentInit, DoCheck, OnDestroy, OnInit + implements AfterContentInit, OnDestroy, OnInit { /** Differ used to find the changes in the data provided by the data source. */ private _dataDiffer: IterableDiffer; @@ -63,11 +65,6 @@ export class CdkNestedTreeNode protected _differs: IterableDiffers, ) { super(elementRef, tree); - // The classes are directly added here instead of in the host property because classes on - // the host property are not inherited with View Engine. It is not set as a @HostBinding because - // it is not set by the time it's children nodes try to read the class from it. - // TODO: move to host after View Engine deprecation - elementRef.nativeElement.classList.add('cdk-nested-tree-node'); } ngAfterContentInit() { @@ -94,10 +91,6 @@ export class CdkNestedTreeNode super.ngOnInit(); } - override ngDoCheck() { - super.ngDoCheck(); - } - override ngOnDestroy() { this._clear(); super.ngOnDestroy(); diff --git a/src/cdk/tree/padding.ts b/src/cdk/tree/padding.ts index 117e0957a524..bf41d0ba9c5f 100644 --- a/src/cdk/tree/padding.ts +++ b/src/cdk/tree/padding.ts @@ -38,7 +38,7 @@ export class CdkTreeNodePadding implements OnDestroy { get level(): number { return this._level; } - set level(value: number) { + set level(value: NumberInput) { this._setLevelInput(value); } _level: number; @@ -107,7 +107,7 @@ export class CdkTreeNodePadding implements OnDestroy { * TS 4.0 doesn't allow properties to override accessors or vice-versa. * @docs-private */ - protected _setLevelInput(value: number) { + protected _setLevelInput(value: NumberInput) { // Set to null as the fallback value so that _setPadding can fall back to the node level if the // consumer set the directive as `cdkTreeNodePadding=""`. We still want to take this value if // they set 0 explicitly. @@ -135,6 +135,4 @@ export class CdkTreeNodePadding implements OnDestroy { this._indent = coerceNumberProperty(value); this._setPadding(); } - - static ngAcceptInputType_level: NumberInput; } diff --git a/src/cdk/tree/toggle.ts b/src/cdk/tree/toggle.ts index 41bf9bd27e8d..0fd9326b20ff 100644 --- a/src/cdk/tree/toggle.ts +++ b/src/cdk/tree/toggle.ts @@ -7,33 +7,32 @@ */ import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; -import {Directive, HostListener, Input} from '@angular/core'; +import {Directive, Input} from '@angular/core'; import {CdkTree, CdkTreeNode} from './tree'; /** * Node toggle to expand/collapse the node. */ -@Directive({selector: '[cdkTreeNodeToggle]'}) +@Directive({ + selector: '[cdkTreeNodeToggle]', + host: { + '(click)': '_toggle($event)', + }, +}) export class CdkTreeNodeToggle { /** Whether expand/collapse the node recursively. */ @Input('cdkTreeNodeToggleRecursive') get recursive(): boolean { return this._recursive; } - set recursive(value: boolean) { + set recursive(value: BooleanInput) { this._recursive = coerceBooleanProperty(value); } protected _recursive = false; constructor(protected _tree: CdkTree, protected _treeNode: CdkTreeNode) {} - // We have to use a `HostListener` here in order to support both Ivy and ViewEngine. - // In Ivy the `host` bindings will be merged when this class is extended, whereas in - // ViewEngine they're overwritten. - // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('click', ['$event']) _toggle(event: Event): void { this.recursive ? this._tree.treeControl.toggleDescendants(this._treeNode.data) @@ -41,6 +40,4 @@ export class CdkTreeNodeToggle { event.stopPropagation(); } - - static ngAcceptInputType_recursive: BooleanInput; } diff --git a/src/cdk/tree/tree.ts b/src/cdk/tree/tree.ts index 3b443ceb0f14..96ad12200f4e 100644 --- a/src/cdk/tree/tree.ts +++ b/src/cdk/tree/tree.ts @@ -14,7 +14,6 @@ import { Component, ContentChildren, Directive, - DoCheck, ElementRef, Input, IterableChangeRecord, @@ -263,7 +262,7 @@ export class CdkTree implements AfterContentChecked, CollectionViewer, */ _getNodeDef(data: T, i: number): CdkTreeNodeDef { if (this._nodeDefs.length === 1) { - return this._nodeDefs.first; + return this._nodeDefs.first!; } const nodeDef = @@ -316,8 +315,12 @@ export class CdkTree implements AfterContentChecked, CollectionViewer, @Directive({ selector: 'cdk-tree-node', exportAs: 'cdkTreeNode', + host: { + 'class': 'cdk-tree-node', + '[attr.aria-expanded]': 'isExpanded', + }, }) -export class CdkTreeNode implements DoCheck, FocusableOption, OnDestroy, OnInit { +export class CdkTreeNode implements FocusableOption, OnDestroy, OnInit { /** * The role of the tree node. * @deprecated The correct role is 'treeitem', 'group' should not be used. This input will be @@ -364,13 +367,6 @@ export class CdkTreeNode implements DoCheck, FocusableOption, OnDestro return this._tree.treeControl.isExpanded(this._data); } - private _setExpanded(_expanded: boolean) { - this._isAriaExpanded = _expanded; - this._elementRef.nativeElement.setAttribute('aria-expanded', `${_expanded}`); - } - - protected _isAriaExpanded: boolean; - get level(): number { // If the treeControl has a getLevel method, use it to get the level. Otherwise read the // aria-level off the parent node and use it as the level for this node (note aria-level is @@ -382,11 +378,6 @@ export class CdkTreeNode implements DoCheck, FocusableOption, OnDestro constructor(protected _elementRef: ElementRef, protected _tree: CdkTree) { CdkTreeNode.mostRecentTreeNode = this as CdkTreeNode; - // The classes are directly added here instead of in the host property because classes on - // the host property are not inherited with View Engine. It is not set as a @HostBinding because - // it is not set by the time it's children nodes try to read the class from it. - // TODO: move to host after View Engine deprecation - this._elementRef.nativeElement.classList.add('cdk-tree-node'); this.role = 'treeitem'; } @@ -395,16 +386,6 @@ export class CdkTreeNode implements DoCheck, FocusableOption, OnDestro this._elementRef.nativeElement.setAttribute('aria-level', `${this.level + 1}`); } - ngDoCheck() { - // aria-expanded is be set here because the expanded state is stored in the tree control and - // the node isn't aware when the state is changed. - // It is not set using a @HostBinding because they sometimes get lost with Mixin based classes. - // TODO: move to host after View Engine deprecation - if (this.isExpanded != this._isAriaExpanded) { - this._setExpanded(this.isExpanded); - } - } - ngOnDestroy() { // If this is the last tree node being destroyed, // clear out the reference to avoid leaking memory. diff --git a/src/components-examples/cdk-experimental/popover-edit/index.ts b/src/components-examples/cdk-experimental/popover-edit/index.ts index b02f41c9f2dd..0ec4c8d0b027 100644 --- a/src/components-examples/cdk-experimental/popover-edit/index.ts +++ b/src/components-examples/cdk-experimental/popover-edit/index.ts @@ -32,6 +32,5 @@ const EXAMPLES = [ imports: [CdkPopoverEditModule, CdkTableModule, FormsModule, CommonModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkPopoverEditExamplesModule {} diff --git a/src/components-examples/cdk/a11y/index.ts b/src/components-examples/cdk/a11y/index.ts index 9c114ba88c2a..451808951766 100644 --- a/src/components-examples/cdk/a11y/index.ts +++ b/src/components-examples/cdk/a11y/index.ts @@ -17,6 +17,5 @@ const EXAMPLES = [ imports: [A11yModule, MatSelectModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkA11yExamplesModule {} diff --git a/src/components-examples/cdk/accordion/index.ts b/src/components-examples/cdk/accordion/index.ts index dabe85f86120..794f4501d89a 100644 --- a/src/components-examples/cdk/accordion/index.ts +++ b/src/components-examples/cdk/accordion/index.ts @@ -11,6 +11,5 @@ const EXAMPLES = [CdkAccordionOverviewExample]; imports: [CommonModule, CdkAccordionModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkAccordionExamplesModule {} diff --git a/src/components-examples/cdk/clipboard/index.ts b/src/components-examples/cdk/clipboard/index.ts index b7e7d9ecf97f..5fe3396632f8 100644 --- a/src/components-examples/cdk/clipboard/index.ts +++ b/src/components-examples/cdk/clipboard/index.ts @@ -11,6 +11,5 @@ const EXAMPLES = [CdkClipboardOverviewExample]; imports: [ClipboardModule, FormsModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkClipboardExamplesModule {} diff --git a/src/components-examples/cdk/drag-drop/index.ts b/src/components-examples/cdk/drag-drop/index.ts index 08d4165bdaf3..b940fdce5acb 100644 --- a/src/components-examples/cdk/drag-drop/index.ts +++ b/src/components-examples/cdk/drag-drop/index.ts @@ -64,6 +64,5 @@ const EXAMPLES = [ imports: [DragDropModule, OverlayModule, CommonModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkDragDropExamplesModule {} diff --git a/src/components-examples/cdk/layout/index.ts b/src/components-examples/cdk/layout/index.ts index ae8fb6d015ed..19fe760e54f0 100644 --- a/src/components-examples/cdk/layout/index.ts +++ b/src/components-examples/cdk/layout/index.ts @@ -10,6 +10,5 @@ const EXAMPLES = [BreakpointObserverOverviewExample]; imports: [LayoutModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkLayoutExamplesModule {} diff --git a/src/components-examples/cdk/overlay/index.ts b/src/components-examples/cdk/overlay/index.ts index 733535710b2f..6bd9d80a9c22 100644 --- a/src/components-examples/cdk/overlay/index.ts +++ b/src/components-examples/cdk/overlay/index.ts @@ -11,6 +11,5 @@ const EXAMPLES = [CdkOverlayBasicExample]; imports: [OverlayModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkOverlayExamplesModule {} diff --git a/src/components-examples/cdk/platform/index.ts b/src/components-examples/cdk/platform/index.ts index 9a62b8e10555..a9356a25b0b0 100644 --- a/src/components-examples/cdk/platform/index.ts +++ b/src/components-examples/cdk/platform/index.ts @@ -1,4 +1,3 @@ -import {PlatformModule} from '@angular/cdk/platform'; import {NgModule} from '@angular/core'; import {CdkPlatformOverviewExample} from './cdk-platform-overview/cdk-platform-overview-example'; @@ -7,9 +6,7 @@ export {CdkPlatformOverviewExample}; const EXAMPLES = [CdkPlatformOverviewExample]; @NgModule({ - imports: [PlatformModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkPlatformExamplesModule {} diff --git a/src/components-examples/cdk/portal/index.ts b/src/components-examples/cdk/portal/index.ts index 6cc72b395042..e34e46343c1d 100644 --- a/src/components-examples/cdk/portal/index.ts +++ b/src/components-examples/cdk/portal/index.ts @@ -13,6 +13,5 @@ const EXAMPLES = [CdkPortalOverviewExample, ComponentPortalExample]; imports: [PortalModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkPortalExamplesModule {} diff --git a/src/components-examples/cdk/scrolling/index.ts b/src/components-examples/cdk/scrolling/index.ts index 59aa8d0ab714..b15821361387 100644 --- a/src/components-examples/cdk/scrolling/index.ts +++ b/src/components-examples/cdk/scrolling/index.ts @@ -38,6 +38,5 @@ const EXAMPLES = [ imports: [ScrollingModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkScrollingExamplesModule {} diff --git a/src/components-examples/cdk/stepper/index.ts b/src/components-examples/cdk/stepper/index.ts index d003e7ca55e9..0d014b231753 100644 --- a/src/components-examples/cdk/stepper/index.ts +++ b/src/components-examples/cdk/stepper/index.ts @@ -29,6 +29,5 @@ const EXAMPLES = [ imports: [CdkStepperModule, CommonModule, ReactiveFormsModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkStepperExamplesModule {} diff --git a/src/components-examples/cdk/table/index.ts b/src/components-examples/cdk/table/index.ts index e7957136b11d..fd28e010165f 100644 --- a/src/components-examples/cdk/table/index.ts +++ b/src/components-examples/cdk/table/index.ts @@ -22,6 +22,5 @@ const EXAMPLES = [ imports: [CdkTableModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkTableExamplesModule {} diff --git a/src/components-examples/cdk/text-field/index.ts b/src/components-examples/cdk/text-field/index.ts index 9adb2ce8b24a..d75b366255c3 100644 --- a/src/components-examples/cdk/text-field/index.ts +++ b/src/components-examples/cdk/text-field/index.ts @@ -24,6 +24,5 @@ const EXAMPLES = [ imports: [CommonModule, TextFieldModule, MatButtonModule, MatInputModule, MatSelectModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkTextFieldExamplesModule {} diff --git a/src/components-examples/cdk/tree/index.ts b/src/components-examples/cdk/tree/index.ts index b2ab9552b957..a7f2305695de 100644 --- a/src/components-examples/cdk/tree/index.ts +++ b/src/components-examples/cdk/tree/index.ts @@ -13,6 +13,5 @@ const EXAMPLES = [CdkTreeFlatExample, CdkTreeNestedExample]; imports: [CdkTreeModule, MatButtonModule, MatIconModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CdkTreeExamplesModule {} diff --git a/src/components-examples/material-experimental/mdc-card/index.ts b/src/components-examples/material-experimental/mdc-card/index.ts index 6297b3b34e06..60fac1bc22b2 100644 --- a/src/components-examples/material-experimental/mdc-card/index.ts +++ b/src/components-examples/material-experimental/mdc-card/index.ts @@ -11,6 +11,5 @@ const EXAMPLES = [MdcCardFancyExample]; imports: [MatButtonModule, MatCardModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class MdcCardExamplesModule {} diff --git a/src/components-examples/material-experimental/mdc-form-field/index.ts b/src/components-examples/material-experimental/mdc-form-field/index.ts index deb23681e123..8d9283dc91ea 100644 --- a/src/components-examples/material-experimental/mdc-form-field/index.ts +++ b/src/components-examples/material-experimental/mdc-form-field/index.ts @@ -16,6 +16,5 @@ const EXAMPLES = [MdcFormFieldCustomControlExample]; imports: [CommonModule, MatFormFieldModule, MatIconModule, ReactiveFormsModule], declarations: [...EXAMPLES, MyTelInput], exports: [...EXAMPLES, MyTelInput], - entryComponents: EXAMPLES, }) export class MdcFormFieldExamplesModule {} diff --git a/src/components-examples/material-experimental/mdc-form-field/mdc-form-field-custom-control/form-field-custom-control-example.ts b/src/components-examples/material-experimental/mdc-form-field/mdc-form-field-custom-control/form-field-custom-control-example.ts index 8896858b2436..e1e312a901c3 100644 --- a/src/components-examples/material-experimental/mdc-form-field/mdc-form-field-custom-control/form-field-custom-control-example.ts +++ b/src/components-examples/material-experimental/mdc-form-field/mdc-form-field-custom-control/form-field-custom-control-example.ts @@ -69,7 +69,7 @@ export class MyTelInput implements ControlValueAccessor, MatFormFieldControl { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatTableModule], diff --git a/src/components-examples/material-experimental/popover-edit/index.ts b/src/components-examples/material-experimental/popover-edit/index.ts index 820e964a233d..8f1f6af3590c 100644 --- a/src/components-examples/material-experimental/popover-edit/index.ts +++ b/src/components-examples/material-experimental/popover-edit/index.ts @@ -43,6 +43,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class PopoverEditExamplesModule {} diff --git a/src/components-examples/material/autocomplete/BUILD.bazel b/src/components-examples/material/autocomplete/BUILD.bazel index 68c88dade12c..a6d934871958 100644 --- a/src/components-examples/material/autocomplete/BUILD.bazel +++ b/src/components-examples/material/autocomplete/BUILD.bazel @@ -52,6 +52,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/autocomplete/autocomplete-harness/autocomplete-harness-example.spec.ts b/src/components-examples/material/autocomplete/autocomplete-harness/autocomplete-harness-example.spec.ts index 6a1fdcc90f0d..69cdfb434b53 100644 --- a/src/components-examples/material/autocomplete/autocomplete-harness/autocomplete-harness-example.spec.ts +++ b/src/components-examples/material/autocomplete/autocomplete-harness/autocomplete-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatAutocompleteHarness} from '@angular/material/autocomplete/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatAutocompleteModule} from '@angular/material/autocomplete'; import {AutocompleteHarnessExample} from './autocomplete-harness-example'; @@ -13,12 +9,6 @@ describe('AutocompleteHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatAutocompleteModule], diff --git a/src/components-examples/material/autocomplete/index.ts b/src/components-examples/material/autocomplete/index.ts index 79801653795f..20aa12146afb 100644 --- a/src/components-examples/material/autocomplete/index.ts +++ b/src/components-examples/material/autocomplete/index.ts @@ -48,6 +48,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class AutocompleteExamplesModule {} diff --git a/src/components-examples/material/badge/BUILD.bazel b/src/components-examples/material/badge/BUILD.bazel index cc3188921bb0..e7aa5a21781a 100644 --- a/src/components-examples/material/badge/BUILD.bazel +++ b/src/components-examples/material/badge/BUILD.bazel @@ -49,6 +49,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/badge/badge-harness/badge-harness-example.spec.ts b/src/components-examples/material/badge/badge-harness/badge-harness-example.spec.ts index 54cd2622a169..bb34e6d6208d 100644 --- a/src/components-examples/material/badge/badge-harness/badge-harness-example.spec.ts +++ b/src/components-examples/material/badge/badge-harness/badge-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatBadgeHarness} from '@angular/material/badge/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatBadgeModule} from '@angular/material/badge'; import {BadgeHarnessExample} from './badge-harness-example'; @@ -13,12 +9,6 @@ describe('BadgeHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatBadgeModule], diff --git a/src/components-examples/material/badge/index.ts b/src/components-examples/material/badge/index.ts index b73fa7c8b81e..19d59070a97b 100644 --- a/src/components-examples/material/badge/index.ts +++ b/src/components-examples/material/badge/index.ts @@ -13,6 +13,5 @@ const EXAMPLES = [BadgeOverviewExample, BadgeHarnessExample]; imports: [MatBadgeModule, MatButtonModule, MatIconModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class BadgeExamplesModule {} diff --git a/src/components-examples/material/bottom-sheet/BUILD.bazel b/src/components-examples/material/bottom-sheet/BUILD.bazel index 066502c32350..d2eaac889ff2 100644 --- a/src/components-examples/material/bottom-sheet/BUILD.bazel +++ b/src/components-examples/material/bottom-sheet/BUILD.bazel @@ -51,6 +51,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/bottom-sheet/bottom-sheet-harness/bottom-sheet-harness-example.spec.ts b/src/components-examples/material/bottom-sheet/bottom-sheet-harness/bottom-sheet-harness-example.spec.ts index 6274c4ca7ff7..e6db2c1e2277 100644 --- a/src/components-examples/material/bottom-sheet/bottom-sheet-harness/bottom-sheet-harness-example.spec.ts +++ b/src/components-examples/material/bottom-sheet/bottom-sheet-harness/bottom-sheet-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatBottomSheetHarness} from '@angular/material/bottom-sheet/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatBottomSheetModule} from '@angular/material/bottom-sheet'; import {BottomSheetHarnessExample} from './bottom-sheet-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -14,12 +10,6 @@ describe('BottomSheetHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatBottomSheetModule, NoopAnimationsModule], diff --git a/src/components-examples/material/bottom-sheet/index.ts b/src/components-examples/material/bottom-sheet/index.ts index 11aa6ed8f7d6..35b5fcc016f8 100644 --- a/src/components-examples/material/bottom-sheet/index.ts +++ b/src/components-examples/material/bottom-sheet/index.ts @@ -20,6 +20,5 @@ const EXAMPLES = [ imports: [MatBottomSheetModule, MatButtonModule, MatListModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class BottomSheetExamplesModule {} diff --git a/src/components-examples/material/button-toggle/BUILD.bazel b/src/components-examples/material/button-toggle/BUILD.bazel index e1930d6c7dce..0fc38b599c0f 100644 --- a/src/components-examples/material/button-toggle/BUILD.bazel +++ b/src/components-examples/material/button-toggle/BUILD.bazel @@ -48,6 +48,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/button-toggle/button-toggle-harness/button-toggle-harness-example.spec.ts b/src/components-examples/material/button-toggle/button-toggle-harness/button-toggle-harness-example.spec.ts index 47852076ce1d..5f4e9ed5e618 100644 --- a/src/components-examples/material/button-toggle/button-toggle-harness/button-toggle-harness-example.spec.ts +++ b/src/components-examples/material/button-toggle/button-toggle-harness/button-toggle-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatButtonToggleGroupHarness} from '@angular/material/button-toggle/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatButtonToggleModule} from '@angular/material/button-toggle'; import {ButtonToggleHarnessExample} from './button-toggle-harness-example'; @@ -13,12 +9,6 @@ describe('ButtonToggleHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatButtonToggleModule], diff --git a/src/components-examples/material/button-toggle/index.ts b/src/components-examples/material/button-toggle/index.ts index 0d91a84fca0e..a4f5afa5bf81 100644 --- a/src/components-examples/material/button-toggle/index.ts +++ b/src/components-examples/material/button-toggle/index.ts @@ -31,6 +31,5 @@ const EXAMPLES = [ imports: [FormsModule, MatButtonToggleModule, MatIconModule, ReactiveFormsModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class ButtonToggleExamplesModule {} diff --git a/src/components-examples/material/button/BUILD.bazel b/src/components-examples/material/button/BUILD.bazel index 09a746a31e1f..c535f58d8b7c 100644 --- a/src/components-examples/material/button/BUILD.bazel +++ b/src/components-examples/material/button/BUILD.bazel @@ -49,6 +49,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/button/button-harness/button-harness-example.spec.ts b/src/components-examples/material/button/button-harness/button-harness-example.spec.ts index a4601ff6932d..8ad4300ea4b2 100644 --- a/src/components-examples/material/button/button-harness/button-harness-example.spec.ts +++ b/src/components-examples/material/button/button-harness/button-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatButtonHarness} from '@angular/material/button/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatButtonModule} from '@angular/material/button'; import {ButtonHarnessExample} from './button-harness-example'; @@ -14,12 +10,6 @@ describe('ButtonHarnessExample', () => { let loader: HarnessLoader; let buttonHarness = MatButtonHarness; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatButtonModule], diff --git a/src/components-examples/material/button/index.ts b/src/components-examples/material/button/index.ts index 46cfb9ad6bf9..bb13ae3729f2 100644 --- a/src/components-examples/material/button/index.ts +++ b/src/components-examples/material/button/index.ts @@ -14,6 +14,5 @@ const EXAMPLES = [ButtonOverviewExample, ButtonTypesExample, ButtonHarnessExampl imports: [MatButtonModule, MatDividerModule, MatIconModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class ButtonExamplesModule {} diff --git a/src/components-examples/material/card/BUILD.bazel b/src/components-examples/material/card/BUILD.bazel index d5a81324ed05..1925520019ca 100644 --- a/src/components-examples/material/card/BUILD.bazel +++ b/src/components-examples/material/card/BUILD.bazel @@ -52,6 +52,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/card/card-harness/card-harness-example.spec.ts b/src/components-examples/material/card/card-harness/card-harness-example.spec.ts index d1529b3de705..8c589e07fa99 100644 --- a/src/components-examples/material/card/card-harness/card-harness-example.spec.ts +++ b/src/components-examples/material/card/card-harness/card-harness-example.spec.ts @@ -1,23 +1,15 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatButtonHarness} from '@angular/material/button/testing'; import {MatCardHarness} from '@angular/material/card/testing'; import {HarnessLoader, parallel} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatCardModule} from '@angular/material/card'; import {CardHarnessExample} from './card-harness-example'; describe('CardHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); + beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatCardModule], diff --git a/src/components-examples/material/card/index.ts b/src/components-examples/material/card/index.ts index baaf92c139b9..30bf8884fd8b 100644 --- a/src/components-examples/material/card/index.ts +++ b/src/components-examples/material/card/index.ts @@ -35,6 +35,5 @@ const EXAMPLES = [ imports: [MatButtonModule, MatCardModule, MatDividerModule, MatProgressBarModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CardExamplesModule {} diff --git a/src/components-examples/material/checkbox/BUILD.bazel b/src/components-examples/material/checkbox/BUILD.bazel index fd9d48000608..90654ce87ee9 100644 --- a/src/components-examples/material/checkbox/BUILD.bazel +++ b/src/components-examples/material/checkbox/BUILD.bazel @@ -51,6 +51,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/checkbox/checkbox-harness/checkbox-harness-example.spec.ts b/src/components-examples/material/checkbox/checkbox-harness/checkbox-harness-example.spec.ts index db628d054354..8741332bdc38 100644 --- a/src/components-examples/material/checkbox/checkbox-harness/checkbox-harness-example.spec.ts +++ b/src/components-examples/material/checkbox/checkbox-harness/checkbox-harness-example.spec.ts @@ -1,12 +1,8 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatCheckboxHarness} from '@angular/material/checkbox/testing'; import {HarnessLoader} from '@angular/cdk/testing'; import {ReactiveFormsModule} from '@angular/forms'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatCheckboxModule} from '@angular/material/checkbox'; import {CheckboxHarnessExample} from './checkbox-harness-example'; @@ -14,12 +10,6 @@ describe('CheckboxHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatCheckboxModule, ReactiveFormsModule], diff --git a/src/components-examples/material/checkbox/index.ts b/src/components-examples/material/checkbox/index.ts index 809c10c1da2c..a58046784231 100644 --- a/src/components-examples/material/checkbox/index.ts +++ b/src/components-examples/material/checkbox/index.ts @@ -34,6 +34,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CheckboxExamplesModule {} diff --git a/src/components-examples/material/chips/BUILD.bazel b/src/components-examples/material/chips/BUILD.bazel index 3bc90dc9be3a..94b28e48fc51 100644 --- a/src/components-examples/material/chips/BUILD.bazel +++ b/src/components-examples/material/chips/BUILD.bazel @@ -54,6 +54,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/chips/chips-autocomplete/chips-autocomplete-example.html b/src/components-examples/material/chips/chips-autocomplete/chips-autocomplete-example.html index bd2e6718abe5..e0c8560dfe37 100644 --- a/src/components-examples/material/chips/chips-autocomplete/chips-autocomplete-example.html +++ b/src/components-examples/material/chips/chips-autocomplete/chips-autocomplete-example.html @@ -3,11 +3,9 @@ {{fruit}} - diff --git a/src/components-examples/material/chips/chips-autocomplete/chips-autocomplete-example.ts b/src/components-examples/material/chips/chips-autocomplete/chips-autocomplete-example.ts index 919faec494b1..e9637b94ac3b 100644 --- a/src/components-examples/material/chips/chips-autocomplete/chips-autocomplete-example.ts +++ b/src/components-examples/material/chips/chips-autocomplete/chips-autocomplete-example.ts @@ -15,8 +15,6 @@ import {map, startWith} from 'rxjs/operators'; styleUrls: ['chips-autocomplete-example.css'], }) export class ChipsAutocompleteExample { - selectable = true; - removable = true; separatorKeysCodes: number[] = [ENTER, COMMA]; fruitCtrl = new FormControl(); filteredFruits: Observable; diff --git a/src/components-examples/material/chips/chips-avatar/chips-avatar-example.css b/src/components-examples/material/chips/chips-avatar/chips-avatar-example.css new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/src/components-examples/material/chips/chips-avatar/chips-avatar-example.html b/src/components-examples/material/chips/chips-avatar/chips-avatar-example.html new file mode 100644 index 000000000000..1e02de2be4fc --- /dev/null +++ b/src/components-examples/material/chips/chips-avatar/chips-avatar-example.html @@ -0,0 +1,20 @@ + + + + Photo of a Shiba Inu + + Dog one + + + + Photo of a Shiba Inu + + Dog two + + + + Photo of a Shiba Inu + + Dog three + + diff --git a/src/components-examples/material/chips/chips-avatar/chips-avatar-example.ts b/src/components-examples/material/chips/chips-avatar/chips-avatar-example.ts new file mode 100644 index 000000000000..5344189a2e0b --- /dev/null +++ b/src/components-examples/material/chips/chips-avatar/chips-avatar-example.ts @@ -0,0 +1,12 @@ +import {Component} from '@angular/core'; + +/** + * @title Chips avatar + * @description An avatar inside a chip + */ +@Component({ + selector: 'chips-avatar-example', + templateUrl: 'chips-avatar-example.html', + styleUrls: ['chips-avatar-example.css'], +}) +export class ChipsAvatarExample {} diff --git a/src/components-examples/material/chips/chips-harness/chips-harness-example.spec.ts b/src/components-examples/material/chips/chips-harness/chips-harness-example.spec.ts index 58a71562027a..b114d002c0fa 100644 --- a/src/components-examples/material/chips/chips-harness/chips-harness-example.spec.ts +++ b/src/components-examples/material/chips/chips-harness/chips-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatChipHarness, MatChipListboxHarness} from '@angular/material/chips/testing'; import {HarnessLoader, parallel} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {ChipsHarnessExample} from './chips-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {MatChipsModule} from '@angular/material/chips'; @@ -14,12 +10,6 @@ describe('ChipsHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatChipsModule, NoopAnimationsModule], diff --git a/src/components-examples/material/chips/chips-input/chips-input-example.html b/src/components-examples/material/chips/chips-input/chips-input-example.html index ef88a0f9b8b1..0e53035b97b6 100644 --- a/src/components-examples/material/chips/chips-input/chips-input-example.html +++ b/src/components-examples/material/chips/chips-input/chips-input-example.html @@ -1,10 +1,9 @@ Favorite Fruits - + {{fruit.name}} - diff --git a/src/components-examples/material/chips/chips-input/chips-input-example.ts b/src/components-examples/material/chips/chips-input/chips-input-example.ts index 0acd60bffefe..e098f55a8b97 100644 --- a/src/components-examples/material/chips/chips-input/chips-input-example.ts +++ b/src/components-examples/material/chips/chips-input/chips-input-example.ts @@ -15,8 +15,6 @@ export interface Fruit { styleUrls: ['chips-input-example.css'], }) export class ChipsInputExample { - selectable = true; - removable = true; addOnBlur = true; readonly separatorKeysCodes = [ENTER, COMMA] as const; fruits: Fruit[] = [{name: 'Lemon'}, {name: 'Lime'}, {name: 'Apple'}]; diff --git a/src/components-examples/material/chips/index.ts b/src/components-examples/material/chips/index.ts index 5b4a62a7614b..cd33ffebd3ab 100644 --- a/src/components-examples/material/chips/index.ts +++ b/src/components-examples/material/chips/index.ts @@ -13,6 +13,7 @@ import {ChipsOverviewExample} from './chips-overview/chips-overview-example'; import {ChipsStackedExample} from './chips-stacked/chips-stacked-example'; import {ChipsHarnessExample} from './chips-harness/chips-harness-example'; import {ChipsFormControlExample} from './chips-form-control/chips-form-control-example'; +import {ChipsAvatarExample} from './chips-avatar/chips-avatar-example'; import {MatButtonModule} from '@angular/material/button'; export { @@ -23,6 +24,7 @@ export { ChipsStackedExample, ChipsHarnessExample, ChipsFormControlExample, + ChipsAvatarExample, }; const EXAMPLES = [ @@ -33,6 +35,7 @@ const EXAMPLES = [ ChipsStackedExample, ChipsHarnessExample, ChipsFormControlExample, + ChipsAvatarExample, ]; @NgModule({ @@ -48,6 +51,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class ChipsExamplesModule {} diff --git a/src/components-examples/material/core/index.ts b/src/components-examples/material/core/index.ts index cfe8c75d850f..bd23b4852b3e 100644 --- a/src/components-examples/material/core/index.ts +++ b/src/components-examples/material/core/index.ts @@ -15,6 +15,5 @@ const EXAMPLES = [ElevationOverviewExample, RippleOverviewExample]; imports: [MatButtonModule, MatCheckboxModule, MatInputModule, MatRippleModule, FormsModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class CoreExamplesModule {} diff --git a/src/components-examples/material/datepicker/BUILD.bazel b/src/components-examples/material/datepicker/BUILD.bazel index 024498433387..e6b0ec539f9a 100644 --- a/src/components-examples/material/datepicker/BUILD.bazel +++ b/src/components-examples/material/datepicker/BUILD.bazel @@ -58,6 +58,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/datepicker/datepicker-date-class/datepicker-date-class-example.css b/src/components-examples/material/datepicker/datepicker-date-class/datepicker-date-class-example.css index 3a0cabf713d3..d4452c62c453 100644 --- a/src/components-examples/material/datepicker/datepicker-date-class/datepicker-date-class-example.css +++ b/src/components-examples/material/datepicker/datepicker-date-class/datepicker-date-class-example.css @@ -1,4 +1,4 @@ -.example-custom-date-class { +button.example-custom-date-class { background: orange; border-radius: 100%; } diff --git a/src/components-examples/material/datepicker/datepicker-harness/datepicker-harness-example.spec.ts b/src/components-examples/material/datepicker/datepicker-harness/datepicker-harness-example.spec.ts index d33b17ebfb3e..132f5447ad1b 100644 --- a/src/components-examples/material/datepicker/datepicker-harness/datepicker-harness-example.spec.ts +++ b/src/components-examples/material/datepicker/datepicker-harness/datepicker-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatDatepickerInputHarness} from '@angular/material/datepicker/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatDatepickerModule} from '@angular/material/datepicker'; import {DatepickerHarnessExample} from './datepicker-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -16,12 +12,6 @@ describe('DatepickerHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatDatepickerModule, NoopAnimationsModule, MatNativeDateModule, FormsModule], diff --git a/src/components-examples/material/datepicker/datepicker-inline-calendar/datepicker-inline-calendar-example.html b/src/components-examples/material/datepicker/datepicker-inline-calendar/datepicker-inline-calendar-example.html index 995d1a1647f3..8ffcf05863ac 100644 --- a/src/components-examples/material/datepicker/datepicker-inline-calendar/datepicker-inline-calendar-example.html +++ b/src/components-examples/material/datepicker/datepicker-inline-calendar/datepicker-inline-calendar-example.html @@ -1,4 +1,4 @@ - +

Selected date: {{selected}}

diff --git a/src/components-examples/material/datepicker/index.ts b/src/components-examples/material/datepicker/index.ts index 5b1260c34b7f..705cbbf5b0dc 100644 --- a/src/components-examples/material/datepicker/index.ts +++ b/src/components-examples/material/datepicker/index.ts @@ -106,6 +106,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class DatepickerExamplesModule {} diff --git a/src/components-examples/material/dialog/BUILD.bazel b/src/components-examples/material/dialog/BUILD.bazel index 5d1c87bacd5c..2a82c7c9becb 100644 --- a/src/components-examples/material/dialog/BUILD.bazel +++ b/src/components-examples/material/dialog/BUILD.bazel @@ -52,6 +52,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/dialog/dialog-harness/dialog-harness-example.spec.ts b/src/components-examples/material/dialog/dialog-harness/dialog-harness-example.spec.ts index f4bd872e68a8..e64bf9f4f1d0 100644 --- a/src/components-examples/material/dialog/dialog-harness/dialog-harness-example.spec.ts +++ b/src/components-examples/material/dialog/dialog-harness/dialog-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture, waitForAsync} from '@angular/core/testing'; +import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatDialogHarness} from '@angular/material/dialog/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatDialogModule} from '@angular/material/dialog'; import {DialogHarnessExample} from './dialog-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -14,12 +10,6 @@ describe('DialogHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach( waitForAsync(async () => { await TestBed.configureTestingModule({ diff --git a/src/components-examples/material/dialog/index.ts b/src/components-examples/material/dialog/index.ts index 6769f5f65f8c..187a4df2419d 100644 --- a/src/components-examples/material/dialog/index.ts +++ b/src/components-examples/material/dialog/index.ts @@ -63,6 +63,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class DialogExamplesModule {} diff --git a/src/components-examples/material/divider/BUILD.bazel b/src/components-examples/material/divider/BUILD.bazel index 8c8722cd2671..0203ff33234a 100644 --- a/src/components-examples/material/divider/BUILD.bazel +++ b/src/components-examples/material/divider/BUILD.bazel @@ -48,6 +48,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/divider/divider-harness/divider-harness-example.spec.ts b/src/components-examples/material/divider/divider-harness/divider-harness-example.spec.ts index 1e8b23d260f1..24c8911fddeb 100644 --- a/src/components-examples/material/divider/divider-harness/divider-harness-example.spec.ts +++ b/src/components-examples/material/divider/divider-harness/divider-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatDividerHarness} from '@angular/material/divider/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatDividerModule} from '@angular/material/divider'; import {DividerHarnessExample} from './divider-harness-example'; @@ -13,12 +9,6 @@ describe('DividerHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatDividerModule], diff --git a/src/components-examples/material/divider/index.ts b/src/components-examples/material/divider/index.ts index a1b96f2ef8df..d6fc46ef4909 100644 --- a/src/components-examples/material/divider/index.ts +++ b/src/components-examples/material/divider/index.ts @@ -12,6 +12,5 @@ const EXAMPLES = [DividerHarnessExample, DividerOverviewExample]; imports: [MatDividerModule, MatListModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class DividerExamplesModule {} diff --git a/src/components-examples/material/expansion/BUILD.bazel b/src/components-examples/material/expansion/BUILD.bazel index 631e5a98c240..23c22d84c9fd 100644 --- a/src/components-examples/material/expansion/BUILD.bazel +++ b/src/components-examples/material/expansion/BUILD.bazel @@ -52,6 +52,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/expansion/expansion-harness/expansion-harness-example.spec.ts b/src/components-examples/material/expansion/expansion-harness/expansion-harness-example.spec.ts index bc208e4e659f..aa82d2a7fb66 100644 --- a/src/components-examples/material/expansion/expansion-harness/expansion-harness-example.spec.ts +++ b/src/components-examples/material/expansion/expansion-harness/expansion-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; -import {MatExpansionPanelHarness, MatAccordionHarness} from '@angular/material/expansion/testing'; +import {MatAccordionHarness, MatExpansionPanelHarness} from '@angular/material/expansion/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatExpansionModule} from '@angular/material/expansion'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {ExpansionHarnessExample} from './expansion-harness-example'; @@ -14,12 +10,6 @@ describe('ExpansionHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatExpansionModule, NoopAnimationsModule], diff --git a/src/components-examples/material/expansion/index.ts b/src/components-examples/material/expansion/index.ts index 58f345e77fb8..c60287cd72e9 100644 --- a/src/components-examples/material/expansion/index.ts +++ b/src/components-examples/material/expansion/index.ts @@ -35,6 +35,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class ExpansionExamplesModule {} diff --git a/src/components-examples/material/form-field/BUILD.bazel b/src/components-examples/material/form-field/BUILD.bazel index acd30ab6506f..82d4e5b025b3 100644 --- a/src/components-examples/material/form-field/BUILD.bazel +++ b/src/components-examples/material/form-field/BUILD.bazel @@ -59,6 +59,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/form-field/form-field-custom-control/form-field-custom-control-example.ts b/src/components-examples/material/form-field/form-field-custom-control/form-field-custom-control-example.ts index 63d580b575cf..85ff98cda03f 100644 --- a/src/components-examples/material/form-field/form-field-custom-control/form-field-custom-control-example.ts +++ b/src/components-examples/material/form-field/form-field-custom-control/form-field-custom-control-example.ts @@ -92,7 +92,7 @@ export class MyTelInput implements ControlValueAccessor, MatFormFieldControl { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatFormFieldModule, MatInputModule, ReactiveFormsModule, NoopAnimationsModule], diff --git a/src/components-examples/material/form-field/index.ts b/src/components-examples/material/form-field/index.ts index ea4aff1a3d7a..3c54b6e6ac03 100644 --- a/src/components-examples/material/form-field/index.ts +++ b/src/components-examples/material/form-field/index.ts @@ -60,6 +60,5 @@ const EXAMPLES = [ ], declarations: [...EXAMPLES, MyTelInput], exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class FormFieldExamplesModule {} diff --git a/src/components-examples/material/grid-list/BUILD.bazel b/src/components-examples/material/grid-list/BUILD.bazel index c60e61c14c8f..29722177bd67 100644 --- a/src/components-examples/material/grid-list/BUILD.bazel +++ b/src/components-examples/material/grid-list/BUILD.bazel @@ -47,6 +47,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/grid-list/grid-list-harness/grid-list-harness-example.spec.ts b/src/components-examples/material/grid-list/grid-list-harness/grid-list-harness-example.spec.ts index edcdbf2c031b..ec4ca1033d1f 100644 --- a/src/components-examples/material/grid-list/grid-list-harness/grid-list-harness-example.spec.ts +++ b/src/components-examples/material/grid-list/grid-list-harness/grid-list-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatGridListHarness, MatGridTileHarness} from '@angular/material/grid-list/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatGridListModule} from '@angular/material/grid-list'; import {GridListHarnessExample} from './grid-list-harness-example'; @@ -13,12 +9,6 @@ describe('GridListHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatGridListModule], diff --git a/src/components-examples/material/grid-list/index.ts b/src/components-examples/material/grid-list/index.ts index 852ff8787fc5..cc385b0f923d 100644 --- a/src/components-examples/material/grid-list/index.ts +++ b/src/components-examples/material/grid-list/index.ts @@ -13,6 +13,5 @@ const EXAMPLES = [GridListDynamicExample, GridListHarnessExample, GridListOvervi imports: [CommonModule, MatGridListModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class GridListExamplesModule {} diff --git a/src/components-examples/material/icon/BUILD.bazel b/src/components-examples/material/icon/BUILD.bazel index a1fb78c2d500..daa4a02f1c7c 100644 --- a/src/components-examples/material/icon/BUILD.bazel +++ b/src/components-examples/material/icon/BUILD.bazel @@ -48,6 +48,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/icon/icon-harness/icon-harness-example.spec.ts b/src/components-examples/material/icon/icon-harness/icon-harness-example.spec.ts index 3fbf8161394b..4b6f1c9d3dd1 100644 --- a/src/components-examples/material/icon/icon-harness/icon-harness-example.spec.ts +++ b/src/components-examples/material/icon/icon-harness/icon-harness-example.spec.ts @@ -1,10 +1,6 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {HarnessLoader, parallel} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {IconHarnessExample} from './icon-harness-example'; import {MatIconModule, MatIconRegistry} from '@angular/material/icon'; import {MatIconHarness} from '@angular/material/icon/testing'; @@ -14,12 +10,6 @@ describe('IconHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatIconModule], diff --git a/src/components-examples/material/icon/index.ts b/src/components-examples/material/icon/index.ts index 6a0fcfe4bcd7..fa33d6174a7d 100644 --- a/src/components-examples/material/icon/index.ts +++ b/src/components-examples/material/icon/index.ts @@ -12,6 +12,5 @@ const EXAMPLES = [IconHarnessExample, IconOverviewExample, IconSvgExample]; imports: [MatIconModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class IconExamplesModule {} diff --git a/src/components-examples/material/input/BUILD.bazel b/src/components-examples/material/input/BUILD.bazel index 9dca2cc5f16d..effa093d61bd 100644 --- a/src/components-examples/material/input/BUILD.bazel +++ b/src/components-examples/material/input/BUILD.bazel @@ -52,6 +52,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/input/index.ts b/src/components-examples/material/input/index.ts index a5db6647b46f..6f4269ec0d48 100644 --- a/src/components-examples/material/input/index.ts +++ b/src/components-examples/material/input/index.ts @@ -46,6 +46,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class InputExamplesModule {} diff --git a/src/components-examples/material/input/input-harness/input-harness-example.spec.ts b/src/components-examples/material/input/input-harness/input-harness-example.spec.ts index 9efde3078056..a2483c7c7dc0 100644 --- a/src/components-examples/material/input/input-harness/input-harness-example.spec.ts +++ b/src/components-examples/material/input/input-harness/input-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatInputHarness} from '@angular/material/input/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatInputModule} from '@angular/material/input'; import {InputHarnessExample} from './input-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -15,12 +11,6 @@ describe('InputHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatInputModule, NoopAnimationsModule, ReactiveFormsModule], diff --git a/src/components-examples/material/list/BUILD.bazel b/src/components-examples/material/list/BUILD.bazel index a569f71ebf91..fc7e0e692d46 100644 --- a/src/components-examples/material/list/BUILD.bazel +++ b/src/components-examples/material/list/BUILD.bazel @@ -48,6 +48,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/list/index.ts b/src/components-examples/material/list/index.ts index 085b106d825b..394651accd7b 100644 --- a/src/components-examples/material/list/index.ts +++ b/src/components-examples/material/list/index.ts @@ -28,6 +28,5 @@ const EXAMPLES = [ imports: [CommonModule, MatIconModule, MatListModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class ListExamplesModule {} diff --git a/src/components-examples/material/list/list-harness/list-harness-example.spec.ts b/src/components-examples/material/list/list-harness/list-harness-example.spec.ts index aa69ea9341ec..463bb0cf31cd 100644 --- a/src/components-examples/material/list/list-harness/list-harness-example.spec.ts +++ b/src/components-examples/material/list/list-harness/list-harness-example.spec.ts @@ -1,11 +1,7 @@ import {HarnessLoader, parallel} from '@angular/cdk/testing'; -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatListHarness} from '@angular/material/list/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatListModule} from '@angular/material/list'; import {ListHarnessExample} from './list-harness-example'; @@ -13,12 +9,6 @@ describe('ListHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatListModule], diff --git a/src/components-examples/material/menu/BUILD.bazel b/src/components-examples/material/menu/BUILD.bazel index 5d77ea390f12..8b8880375d8d 100644 --- a/src/components-examples/material/menu/BUILD.bazel +++ b/src/components-examples/material/menu/BUILD.bazel @@ -51,6 +51,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/menu/index.ts b/src/components-examples/material/menu/index.ts index db19ccc7f395..87d669a8c8ea 100644 --- a/src/components-examples/material/menu/index.ts +++ b/src/components-examples/material/menu/index.ts @@ -28,6 +28,5 @@ const EXAMPLES = [ imports: [MatButtonModule, MatIconModule, MatMenuModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class MenuExamplesModule {} diff --git a/src/components-examples/material/menu/menu-harness/menu-harness-example.spec.ts b/src/components-examples/material/menu/menu-harness/menu-harness-example.spec.ts index 41afcbf20013..3338af752ca7 100644 --- a/src/components-examples/material/menu/menu-harness/menu-harness-example.spec.ts +++ b/src/components-examples/material/menu/menu-harness/menu-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatMenuHarness} from '@angular/material/menu/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatMenuModule} from '@angular/material/menu'; import {MenuHarnessExample} from './menu-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -14,12 +10,6 @@ describe('MenuHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatMenuModule, NoopAnimationsModule], diff --git a/src/components-examples/material/paginator/BUILD.bazel b/src/components-examples/material/paginator/BUILD.bazel index a0f904cc472a..9ef16ce35c9c 100644 --- a/src/components-examples/material/paginator/BUILD.bazel +++ b/src/components-examples/material/paginator/BUILD.bazel @@ -51,6 +51,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/paginator/index.ts b/src/components-examples/material/paginator/index.ts index 38cf574e01ad..11ee76af260a 100644 --- a/src/components-examples/material/paginator/index.ts +++ b/src/components-examples/material/paginator/index.ts @@ -35,6 +35,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class PaginatorExamplesModule {} diff --git a/src/components-examples/material/paginator/paginator-harness/paginator-harness-example.spec.ts b/src/components-examples/material/paginator/paginator-harness/paginator-harness-example.spec.ts index 794e33d6caaf..cd4da36067f3 100644 --- a/src/components-examples/material/paginator/paginator-harness/paginator-harness-example.spec.ts +++ b/src/components-examples/material/paginator/paginator-harness/paginator-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatPaginatorHarness} from '@angular/material/paginator/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatPaginatorModule} from '@angular/material/paginator'; import {PaginatorHarnessExample} from './paginator-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -15,12 +11,6 @@ describe('PaginatorHarnessExample', () => { let loader: HarnessLoader; let instance: PaginatorHarnessExample; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatPaginatorModule, NoopAnimationsModule], diff --git a/src/components-examples/material/progress-bar/BUILD.bazel b/src/components-examples/material/progress-bar/BUILD.bazel index e3e5620f6c76..be34e4cbb586 100644 --- a/src/components-examples/material/progress-bar/BUILD.bazel +++ b/src/components-examples/material/progress-bar/BUILD.bazel @@ -51,6 +51,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/progress-bar/index.ts b/src/components-examples/material/progress-bar/index.ts index 9f7e3e89d41e..20b3b85feb10 100644 --- a/src/components-examples/material/progress-bar/index.ts +++ b/src/components-examples/material/progress-bar/index.ts @@ -41,6 +41,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class ProgressBarExamplesModule {} diff --git a/src/components-examples/material/progress-bar/progress-bar-harness/progress-bar-harness-example.spec.ts b/src/components-examples/material/progress-bar/progress-bar-harness/progress-bar-harness-example.spec.ts index 9eb01f000b61..a932f940cb80 100644 --- a/src/components-examples/material/progress-bar/progress-bar-harness/progress-bar-harness-example.spec.ts +++ b/src/components-examples/material/progress-bar/progress-bar-harness/progress-bar-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatProgressBarHarness} from '@angular/material/progress-bar/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatProgressBarModule} from '@angular/material/progress-bar'; import {ProgressBarHarnessExample} from './progress-bar-harness-example'; @@ -13,12 +9,6 @@ describe('ProgressBarHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatProgressBarModule], diff --git a/src/components-examples/material/progress-spinner/BUILD.bazel b/src/components-examples/material/progress-spinner/BUILD.bazel index 775e0b81a1e5..9a419122be24 100644 --- a/src/components-examples/material/progress-spinner/BUILD.bazel +++ b/src/components-examples/material/progress-spinner/BUILD.bazel @@ -51,6 +51,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/progress-spinner/index.ts b/src/components-examples/material/progress-spinner/index.ts index 542cf32de8bf..33f890396cf6 100644 --- a/src/components-examples/material/progress-spinner/index.ts +++ b/src/components-examples/material/progress-spinner/index.ts @@ -32,6 +32,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class ProgressSpinnerExamplesModule {} diff --git a/src/components-examples/material/progress-spinner/progress-spinner-harness/progress-spinner-harness-example.spec.ts b/src/components-examples/material/progress-spinner/progress-spinner-harness/progress-spinner-harness-example.spec.ts index 39635395502d..3a58eabb03a7 100644 --- a/src/components-examples/material/progress-spinner/progress-spinner-harness/progress-spinner-harness-example.spec.ts +++ b/src/components-examples/material/progress-spinner/progress-spinner-harness/progress-spinner-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatProgressSpinnerHarness} from '@angular/material/progress-spinner/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; import {ProgressSpinnerHarnessExample} from './progress-spinner-harness-example'; @@ -13,12 +9,6 @@ describe('ProgressSpinnerHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatProgressSpinnerModule], diff --git a/src/components-examples/material/radio/BUILD.bazel b/src/components-examples/material/radio/BUILD.bazel index 517a4b5b2b00..63b6858eb0a5 100644 --- a/src/components-examples/material/radio/BUILD.bazel +++ b/src/components-examples/material/radio/BUILD.bazel @@ -49,6 +49,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/radio/index.ts b/src/components-examples/material/radio/index.ts index b215e6a6fb21..d9d31221373e 100644 --- a/src/components-examples/material/radio/index.ts +++ b/src/components-examples/material/radio/index.ts @@ -14,6 +14,5 @@ const EXAMPLES = [RadioHarnessExample, RadioNgModelExample, RadioOverviewExample imports: [ReactiveFormsModule, CommonModule, MatRadioModule, FormsModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class RadioExamplesModule {} diff --git a/src/components-examples/material/radio/radio-harness/radio-harness-example.spec.ts b/src/components-examples/material/radio/radio-harness/radio-harness-example.spec.ts index 1b1039e670b5..7e80fea61cde 100644 --- a/src/components-examples/material/radio/radio-harness/radio-harness-example.spec.ts +++ b/src/components-examples/material/radio/radio-harness/radio-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatRadioButtonHarness, MatRadioGroupHarness} from '@angular/material/radio/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatRadioModule} from '@angular/material/radio'; import {RadioHarnessExample} from './radio-harness-example'; import {ReactiveFormsModule} from '@angular/forms'; @@ -14,12 +10,6 @@ describe('RadioHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatRadioModule, ReactiveFormsModule], diff --git a/src/components-examples/material/radio/radio-ng-model/radio-ng-model-example.css b/src/components-examples/material/radio/radio-ng-model/radio-ng-model-example.css index 166387412734..092324c6ecb0 100644 --- a/src/components-examples/material/radio/radio-ng-model/radio-ng-model-example.css +++ b/src/components-examples/material/radio/radio-ng-model/radio-ng-model-example.css @@ -2,6 +2,7 @@ display: flex; flex-direction: column; margin: 15px 0; + align-items: flex-start; } .example-radio-button { diff --git a/src/components-examples/material/select/BUILD.bazel b/src/components-examples/material/select/BUILD.bazel index 5fc777377cdb..ebab21f47731 100644 --- a/src/components-examples/material/select/BUILD.bazel +++ b/src/components-examples/material/select/BUILD.bazel @@ -52,6 +52,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/select/index.ts b/src/components-examples/material/select/index.ts index 5506bc1639e4..17d0fb0effe0 100644 --- a/src/components-examples/material/select/index.ts +++ b/src/components-examples/material/select/index.ts @@ -69,6 +69,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class SelectExamplesModule {} diff --git a/src/components-examples/material/select/select-harness/select-harness-example.spec.ts b/src/components-examples/material/select/select-harness/select-harness-example.spec.ts index 66b743356da3..17a3198fb891 100644 --- a/src/components-examples/material/select/select-harness/select-harness-example.spec.ts +++ b/src/components-examples/material/select/select-harness/select-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatSelectHarness} from '@angular/material/select/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatSelectModule} from '@angular/material/select'; import {SelectHarnessExample} from './select-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -14,12 +10,6 @@ describe('SelectHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatSelectModule, NoopAnimationsModule], diff --git a/src/components-examples/material/sidenav/BUILD.bazel b/src/components-examples/material/sidenav/BUILD.bazel index 6fb6317eb4ad..a8fdecada5ad 100644 --- a/src/components-examples/material/sidenav/BUILD.bazel +++ b/src/components-examples/material/sidenav/BUILD.bazel @@ -56,6 +56,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/sidenav/index.ts b/src/components-examples/material/sidenav/index.ts index 93c6fe46792c..6b27b61b2d59 100644 --- a/src/components-examples/material/sidenav/index.ts +++ b/src/components-examples/material/sidenav/index.ts @@ -65,6 +65,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class SidenavExamplesModule {} diff --git a/src/components-examples/material/sidenav/sidenav-disable-close/sidenav-disable-close-example.ts b/src/components-examples/material/sidenav/sidenav-disable-close/sidenav-disable-close-example.ts index db846639fc6e..9143b27591db 100644 --- a/src/components-examples/material/sidenav/sidenav-disable-close/sidenav-disable-close-example.ts +++ b/src/components-examples/material/sidenav/sidenav-disable-close/sidenav-disable-close-example.ts @@ -17,5 +17,5 @@ export class SidenavDisableCloseExample { this.sidenav.close(); } - shouldRun = [/(^|\.)plnkr\.co$/, /(^|\.)stackblitz\.io$/].some(h => h.test(window.location.host)); + shouldRun = /(^|.)(stackblitz|webcontainer).(io|com)$/.test(window.location.host); } diff --git a/src/components-examples/material/sidenav/sidenav-fixed/sidenav-fixed-example.ts b/src/components-examples/material/sidenav/sidenav-fixed/sidenav-fixed-example.ts index 093a1bd3fe27..320224bc0594 100644 --- a/src/components-examples/material/sidenav/sidenav-fixed/sidenav-fixed-example.ts +++ b/src/components-examples/material/sidenav/sidenav-fixed/sidenav-fixed-example.ts @@ -18,5 +18,5 @@ export class SidenavFixedExample { }); } - shouldRun = [/(^|\.)plnkr\.co$/, /(^|\.)stackblitz\.io$/].some(h => h.test(window.location.host)); + shouldRun = /(^|.)(stackblitz|webcontainer).(io|com)$/.test(window.location.host); } diff --git a/src/components-examples/material/sidenav/sidenav-harness/sidenav-harness-example.spec.ts b/src/components-examples/material/sidenav/sidenav-harness/sidenav-harness-example.spec.ts index 59249224b3f3..0c4f7693f5b0 100644 --- a/src/components-examples/material/sidenav/sidenav-harness/sidenav-harness-example.spec.ts +++ b/src/components-examples/material/sidenav/sidenav-harness/sidenav-harness-example.spec.ts @@ -1,15 +1,11 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import { - MatDrawerHarness, MatDrawerContainerHarness, MatDrawerContentHarness, + MatDrawerHarness, } from '@angular/material/sidenav/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatSidenavModule} from '@angular/material/sidenav'; import {SidenavHarnessExample} from './sidenav-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -18,12 +14,6 @@ describe('SidenavHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatSidenavModule, NoopAnimationsModule], diff --git a/src/components-examples/material/sidenav/sidenav-mode/sidenav-mode-example.ts b/src/components-examples/material/sidenav/sidenav-mode/sidenav-mode-example.ts index b1b01f1c44d9..4c3aee20aa87 100644 --- a/src/components-examples/material/sidenav/sidenav-mode/sidenav-mode-example.ts +++ b/src/components-examples/material/sidenav/sidenav-mode/sidenav-mode-example.ts @@ -9,5 +9,5 @@ import {FormControl} from '@angular/forms'; }) export class SidenavModeExample { mode = new FormControl('over'); - shouldRun = [/(^|\.)plnkr\.co$/, /(^|\.)stackblitz\.io$/].some(h => h.test(window.location.host)); + shouldRun = /(^|.)(stackblitz|webcontainer).(io|com)$/.test(window.location.host); } diff --git a/src/components-examples/material/sidenav/sidenav-open-close/sidenav-open-close-example.ts b/src/components-examples/material/sidenav/sidenav-open-close/sidenav-open-close-example.ts index 23577563157a..e404f9b072a3 100644 --- a/src/components-examples/material/sidenav/sidenav-open-close/sidenav-open-close-example.ts +++ b/src/components-examples/material/sidenav/sidenav-open-close/sidenav-open-close-example.ts @@ -10,5 +10,5 @@ export class SidenavOpenCloseExample { events: string[] = []; opened: boolean; - shouldRun = [/(^|\.)plnkr\.co$/, /(^|\.)stackblitz\.io$/].some(h => h.test(window.location.host)); + shouldRun = /(^|.)(stackblitz|webcontainer).(io|com)$/.test(window.location.host); } diff --git a/src/components-examples/material/sidenav/sidenav-overview/sidenav-overview-example.ts b/src/components-examples/material/sidenav/sidenav-overview/sidenav-overview-example.ts index 8222f8b9e56c..8feb401d502c 100644 --- a/src/components-examples/material/sidenav/sidenav-overview/sidenav-overview-example.ts +++ b/src/components-examples/material/sidenav/sidenav-overview/sidenav-overview-example.ts @@ -7,5 +7,5 @@ import {Component} from '@angular/core'; styleUrls: ['sidenav-overview-example.css'], }) export class SidenavOverviewExample { - shouldRun = [/(^|\.)plnkr\.co$/, /(^|\.)stackblitz\.io$/].some(h => h.test(window.location.host)); + shouldRun = /(^|.)(stackblitz|webcontainer).(io|com)$/.test(window.location.host); } diff --git a/src/components-examples/material/sidenav/sidenav-position/sidenav-position-example.ts b/src/components-examples/material/sidenav/sidenav-position/sidenav-position-example.ts index 56d0373bb4db..65281fa24408 100644 --- a/src/components-examples/material/sidenav/sidenav-position/sidenav-position-example.ts +++ b/src/components-examples/material/sidenav/sidenav-position/sidenav-position-example.ts @@ -7,5 +7,5 @@ import {Component} from '@angular/core'; styleUrls: ['sidenav-position-example.css'], }) export class SidenavPositionExample { - shouldRun = [/(^|\.)plnkr\.co$/, /(^|\.)stackblitz\.io$/].some(h => h.test(window.location.host)); + shouldRun = /(^|.)(stackblitz|webcontainer).(io|com)$/.test(window.location.host); } diff --git a/src/components-examples/material/sidenav/sidenav-responsive/sidenav-responsive-example.ts b/src/components-examples/material/sidenav/sidenav-responsive/sidenav-responsive-example.ts index 7c03d83604e2..5ddea4ff3023 100644 --- a/src/components-examples/material/sidenav/sidenav-responsive/sidenav-responsive-example.ts +++ b/src/components-examples/material/sidenav/sidenav-responsive/sidenav-responsive-example.ts @@ -34,5 +34,5 @@ export class SidenavResponsiveExample implements OnDestroy { this.mobileQuery.removeListener(this._mobileQueryListener); } - shouldRun = [/(^|\.)plnkr\.co$/, /(^|\.)stackblitz\.io$/].some(h => h.test(window.location.host)); + shouldRun = /(^|.)(stackblitz|webcontainer).(io|com)$/.test(window.location.host); } diff --git a/src/components-examples/material/slide-toggle/BUILD.bazel b/src/components-examples/material/slide-toggle/BUILD.bazel index cb72e3750145..f38c4d02929c 100644 --- a/src/components-examples/material/slide-toggle/BUILD.bazel +++ b/src/components-examples/material/slide-toggle/BUILD.bazel @@ -53,6 +53,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/slide-toggle/index.ts b/src/components-examples/material/slide-toggle/index.ts index ec292b1eaf0b..c7fba6da533c 100644 --- a/src/components-examples/material/slide-toggle/index.ts +++ b/src/components-examples/material/slide-toggle/index.ts @@ -36,6 +36,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class SlideToggleExamplesModule {} diff --git a/src/components-examples/material/slide-toggle/slide-toggle-harness/slide-toggle-harness-example.spec.ts b/src/components-examples/material/slide-toggle/slide-toggle-harness/slide-toggle-harness-example.spec.ts index 80dec5d07a94..ca7d37bfd678 100644 --- a/src/components-examples/material/slide-toggle/slide-toggle-harness/slide-toggle-harness-example.spec.ts +++ b/src/components-examples/material/slide-toggle/slide-toggle-harness/slide-toggle-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatSlideToggleHarness} from '@angular/material/slide-toggle/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatSlideToggleModule} from '@angular/material/slide-toggle'; import {SlideToggleHarnessExample} from './slide-toggle-harness-example'; import {ReactiveFormsModule} from '@angular/forms'; @@ -14,12 +10,6 @@ describe('SlideToggleHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatSlideToggleModule, ReactiveFormsModule], diff --git a/src/components-examples/material/slider/BUILD.bazel b/src/components-examples/material/slider/BUILD.bazel index c37115bc7448..8b2c483176ee 100644 --- a/src/components-examples/material/slider/BUILD.bazel +++ b/src/components-examples/material/slider/BUILD.bazel @@ -51,6 +51,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/slider/index.ts b/src/components-examples/material/slider/index.ts index 400dcb87ca01..19d0e8446aeb 100644 --- a/src/components-examples/material/slider/index.ts +++ b/src/components-examples/material/slider/index.ts @@ -35,6 +35,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class SliderExamplesModule {} diff --git a/src/components-examples/material/slider/slider-configurable/slider-configurable-example.css b/src/components-examples/material/slider/slider-configurable/slider-configurable-example.css index ba363902eaae..d99a67b786cb 100644 --- a/src/components-examples/material/slider/slider-configurable/slider-configurable-example.css +++ b/src/components-examples/material/slider/slider-configurable/slider-configurable-example.css @@ -4,17 +4,22 @@ .example-section { display: flex; + flex-wrap: wrap; align-content: center; align-items: center; - height: 60px; } .example-margin { margin: 8px; } +.example-width { + max-width: 180px; + width: 100%; +} .mat-slider-horizontal { - width: 300px; + max-width: 300px; + width: 100%; } .mat-slider-vertical { diff --git a/src/components-examples/material/slider/slider-configurable/slider-configurable-example.html b/src/components-examples/material/slider/slider-configurable/slider-configurable-example.html index 4e55e6c868cd..9b5ca493b6d9 100644 --- a/src/components-examples/material/slider/slider-configurable/slider-configurable-example.html +++ b/src/components-examples/material/slider/slider-configurable/slider-configurable-example.html @@ -3,19 +3,19 @@

Slider configuration

- + Value - + Min value - + Max value - + Step size @@ -26,7 +26,7 @@

Slider configuration

Auto ticks - + Tick interval diff --git a/src/components-examples/material/slider/slider-harness/slider-harness-example.spec.ts b/src/components-examples/material/slider/slider-harness/slider-harness-example.spec.ts index 03e8aec7b26e..73ce8581256e 100644 --- a/src/components-examples/material/slider/slider-harness/slider-harness-example.spec.ts +++ b/src/components-examples/material/slider/slider-harness/slider-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatSliderHarness} from '@angular/material/slider/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatSliderModule} from '@angular/material/slider'; import {SliderHarnessExample} from './slider-harness-example'; @@ -13,12 +9,6 @@ describe('SliderHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatSliderModule], diff --git a/src/components-examples/material/snack-bar/BUILD.bazel b/src/components-examples/material/snack-bar/BUILD.bazel index f4924c420e02..114c13561e06 100644 --- a/src/components-examples/material/snack-bar/BUILD.bazel +++ b/src/components-examples/material/snack-bar/BUILD.bazel @@ -52,6 +52,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/snack-bar/index.ts b/src/components-examples/material/snack-bar/index.ts index aee7c6eace30..f4346a0ac618 100644 --- a/src/components-examples/material/snack-bar/index.ts +++ b/src/components-examples/material/snack-bar/index.ts @@ -31,6 +31,5 @@ const EXAMPLES = [ imports: [FormsModule, MatButtonModule, MatInputModule, MatSelectModule, MatSnackBarModule], declarations: [...EXAMPLES, PizzaPartyComponent], exports: EXAMPLES, - entryComponents: [...EXAMPLES, PizzaPartyComponent], }) export class SnackBarExamplesModule {} diff --git a/src/components-examples/material/snack-bar/snack-bar-harness/snack-bar-harness-example.spec.ts b/src/components-examples/material/snack-bar/snack-bar-harness/snack-bar-harness-example.spec.ts index 9e4dcd372031..04cf9e811242 100644 --- a/src/components-examples/material/snack-bar/snack-bar-harness/snack-bar-harness-example.spec.ts +++ b/src/components-examples/material/snack-bar/snack-bar-harness/snack-bar-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatSnackBarHarness} from '@angular/material/snack-bar/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatSnackBarModule} from '@angular/material/snack-bar'; import {SnackBarHarnessExample} from './snack-bar-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -14,12 +10,6 @@ describe('SnackBarHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatSnackBarModule, NoopAnimationsModule], diff --git a/src/components-examples/material/sort/BUILD.bazel b/src/components-examples/material/sort/BUILD.bazel index 7f9eb9b672cc..952f2f3ac806 100644 --- a/src/components-examples/material/sort/BUILD.bazel +++ b/src/components-examples/material/sort/BUILD.bazel @@ -48,6 +48,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/sort/index.ts b/src/components-examples/material/sort/index.ts index 2ab8abdeb78d..7e45edf6fd3a 100644 --- a/src/components-examples/material/sort/index.ts +++ b/src/components-examples/material/sort/index.ts @@ -12,6 +12,5 @@ const EXAMPLES = [SortHarnessExample, SortOverviewExample]; imports: [CommonModule, MatSortModule], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class SortExamplesModule {} diff --git a/src/components-examples/material/sort/sort-harness/sort-harness-example.spec.ts b/src/components-examples/material/sort/sort-harness/sort-harness-example.spec.ts index 557cce17db9e..b2dd25f707ff 100644 --- a/src/components-examples/material/sort/sort-harness/sort-harness-example.spec.ts +++ b/src/components-examples/material/sort/sort-harness/sort-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatSortHarness} from '@angular/material/sort/testing'; import {HarnessLoader, parallel} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatSortModule} from '@angular/material/sort'; import {SortHarnessExample} from './sort-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -14,12 +10,6 @@ describe('SortHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatSortModule, NoopAnimationsModule], diff --git a/src/components-examples/material/stepper/BUILD.bazel b/src/components-examples/material/stepper/BUILD.bazel index f61a9f286abf..e1627932e1aa 100644 --- a/src/components-examples/material/stepper/BUILD.bazel +++ b/src/components-examples/material/stepper/BUILD.bazel @@ -57,6 +57,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/stepper/index.ts b/src/components-examples/material/stepper/index.ts index 1a96a95bffb4..4cf6781d0871 100644 --- a/src/components-examples/material/stepper/index.ts +++ b/src/components-examples/material/stepper/index.ts @@ -59,6 +59,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class StepperExamplesModule {} diff --git a/src/components-examples/material/stepper/stepper-harness/stepper-harness-example.spec.ts b/src/components-examples/material/stepper/stepper-harness/stepper-harness-example.spec.ts index 541f32c61399..a0d31944ebc0 100644 --- a/src/components-examples/material/stepper/stepper-harness/stepper-harness-example.spec.ts +++ b/src/components-examples/material/stepper/stepper-harness/stepper-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatStepperHarness, MatStepperNextHarness} from '@angular/material/stepper/testing'; import {HarnessLoader, parallel} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatStepperModule} from '@angular/material/stepper'; import {StepperHarnessExample} from './stepper-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -15,12 +11,6 @@ describe('StepperHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatStepperModule, NoopAnimationsModule, ReactiveFormsModule], diff --git a/src/components-examples/material/table/BUILD.bazel b/src/components-examples/material/table/BUILD.bazel index e3a95c9097a3..36598e0bd5ab 100644 --- a/src/components-examples/material/table/BUILD.bazel +++ b/src/components-examples/material/table/BUILD.bazel @@ -58,6 +58,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/table/index.ts b/src/components-examples/material/table/index.ts index 384af15c14c3..e20359d82b26 100644 --- a/src/components-examples/material/table/index.ts +++ b/src/components-examples/material/table/index.ts @@ -130,6 +130,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class TableExamplesModule {} diff --git a/src/components-examples/material/table/table-harness/table-harness-example.spec.ts b/src/components-examples/material/table/table-harness/table-harness-example.spec.ts index 20a5016c5067..89d9ded55bf5 100644 --- a/src/components-examples/material/table/table-harness/table-harness-example.spec.ts +++ b/src/components-examples/material/table/table-harness/table-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatTableHarness} from '@angular/material/table/testing'; import {HarnessLoader, parallel} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatTableModule} from '@angular/material/table'; import {TableHarnessExample} from './table-harness-example'; @@ -13,12 +9,6 @@ describe('TableHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatTableModule], diff --git a/src/components-examples/material/tabs/BUILD.bazel b/src/components-examples/material/tabs/BUILD.bazel index fee95ae80343..9520fc4ac30e 100644 --- a/src/components-examples/material/tabs/BUILD.bazel +++ b/src/components-examples/material/tabs/BUILD.bazel @@ -54,6 +54,5 @@ ng_test_library( ng_web_test_suite( name = "unit_tests", - exclude_init_script = True, deps = [":unit_tests_lib"], ) diff --git a/src/components-examples/material/tabs/index.ts b/src/components-examples/material/tabs/index.ts index a8f63255ec56..31a8d026686e 100644 --- a/src/components-examples/material/tabs/index.ts +++ b/src/components-examples/material/tabs/index.ts @@ -17,6 +17,7 @@ import {TabGroupHarnessExample} from './tab-group-harness/tab-group-harness-exam import {TabGroupDynamicExample} from './tab-group-dynamic/tab-group-dynamic-example'; import {TabGroupHeaderBelowExample} from './tab-group-header-below/tab-group-header-below-example'; import {TabGroupLazyLoadedExample} from './tab-group-lazy-loaded/tab-group-lazy-loaded-example'; +import {TabGroupPreserveContentExample} from './tab-group-preserve-content/tab-group-preserve-content-example'; import {TabGroupStretchedExample} from './tab-group-stretched/tab-group-stretched-example'; import {TabGroupThemeExample} from './tab-group-theme/tab-group-theme-example'; import {TabNavBarBasicExample} from './tab-nav-bar-basic/tab-nav-bar-basic-example'; @@ -35,6 +36,7 @@ export { TabGroupStretchedExample, TabGroupThemeExample, TabNavBarBasicExample, + TabGroupPreserveContentExample, }; const EXAMPLES = [ @@ -51,6 +53,7 @@ const EXAMPLES = [ TabGroupStretchedExample, TabGroupThemeExample, TabNavBarBasicExample, + TabGroupPreserveContentExample, ]; @NgModule({ @@ -66,6 +69,5 @@ const EXAMPLES = [ ], declarations: EXAMPLES, exports: EXAMPLES, - entryComponents: EXAMPLES, }) export class TabGroupExamplesModule {} diff --git a/src/components-examples/material/tabs/tab-group-harness/tab-group-harness-example.spec.ts b/src/components-examples/material/tabs/tab-group-harness/tab-group-harness-example.spec.ts index 7d53e89067db..e72a17b306df 100644 --- a/src/components-examples/material/tabs/tab-group-harness/tab-group-harness-example.spec.ts +++ b/src/components-examples/material/tabs/tab-group-harness/tab-group-harness-example.spec.ts @@ -1,11 +1,7 @@ -import {TestBed, ComponentFixture} from '@angular/core/testing'; +import {ComponentFixture, TestBed} from '@angular/core/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {MatTabGroupHarness} from '@angular/material/tabs/testing'; import {HarnessLoader} from '@angular/cdk/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; import {MatTabsModule} from '@angular/material/tabs'; import {TabGroupHarnessExample} from './tab-group-harness-example'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -14,12 +10,6 @@ describe('TabGroupHarnessExample', () => { let fixture: ComponentFixture; let loader: HarnessLoader; - beforeAll(() => { - TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: {destroyAfterEach: true}, - }); - }); - beforeEach(async () => { await TestBed.configureTestingModule({ imports: [MatTabsModule, NoopAnimationsModule], diff --git a/src/components-examples/material/tabs/tab-group-preserve-content/tab-group-preserve-content-example.html b/src/components-examples/material/tabs/tab-group-preserve-content/tab-group-preserve-content-example.html new file mode 100644 index 000000000000..0bcb11a3f9d3 --- /dev/null +++ b/src/components-examples/material/tabs/tab-group-preserve-content/tab-group-preserve-content-example.html @@ -0,0 +1,14 @@ +

Start the video in the first tab and navigate to the second one to see how it keeps playing.

+ + + + + + Note how the video from the previous tab is still playing. + diff --git a/src/components-examples/material/tabs/tab-group-preserve-content/tab-group-preserve-content-example.ts b/src/components-examples/material/tabs/tab-group-preserve-content/tab-group-preserve-content-example.ts new file mode 100644 index 000000000000..8509b2d1fd04 --- /dev/null +++ b/src/components-examples/material/tabs/tab-group-preserve-content/tab-group-preserve-content-example.ts @@ -0,0 +1,10 @@ +import {Component} from '@angular/core'; + +/** + * @title Tab group that keeps its content inside the DOM when it's off-screen. + */ +@Component({ + selector: 'tab-group-preserve-content-example', + templateUrl: 'tab-group-preserve-content-example.html', +}) +export class TabGroupPreserveContentExample {} diff --git a/src/components-examples/material/tabs/tab-nav-bar-basic/tab-nav-bar-basic-example.html b/src/components-examples/material/tabs/tab-nav-bar-basic/tab-nav-bar-basic-example.html index e2c4ae4dea71..ff20e1723701 100644 --- a/src/components-examples/material/tabs/tab-nav-bar-basic/tab-nav-bar-basic-example.html +++ b/src/components-examples/material/tabs/tab-nav-bar-basic/tab-nav-bar-basic-example.html @@ -1,10 +1,11 @@ - + +

Tab nav bar with panel

+ + diff --git a/src/dev-app/platform/platform-demo-module.ts b/src/dev-app/platform/platform-demo-module.ts index 0fe3b841c462..413c7ab44a06 100644 --- a/src/dev-app/platform/platform-demo-module.ts +++ b/src/dev-app/platform/platform-demo-module.ts @@ -6,18 +6,13 @@ * found in the LICENSE file at https://angular.io/license */ -import {PlatformModule} from '@angular/cdk/platform'; import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; import {RouterModule} from '@angular/router'; import {PlatformDemo} from './platform-demo'; @NgModule({ - imports: [ - CommonModule, - PlatformModule, - RouterModule.forChild([{path: '', component: PlatformDemo}]), - ], + imports: [CommonModule, RouterModule.forChild([{path: '', component: PlatformDemo}])], declarations: [PlatformDemo], }) export class PlatformDemoModule {} diff --git a/src/dev-app/routes.ts b/src/dev-app/routes.ts index 8071764bac18..a1c2fe27d92e 100644 --- a/src/dev-app/routes.ts +++ b/src/dev-app/routes.ts @@ -224,11 +224,6 @@ export const DEV_APP_ROUTES: Routes = [ loadChildren: () => import('./mdc-select/mdc-select-demo-module').then(m => m.MdcSelectDemoModule), }, - { - path: 'mdc-sidenav', - loadChildren: () => - import('./mdc-sidenav/mdc-sidenav-demo-module').then(m => m.MdcSidenavDemoModule), - }, { path: 'mdc-snack-bar', loadChildren: () => diff --git a/src/dev-app/tabs/tabs-demo.html b/src/dev-app/tabs/tabs-demo.html index 52d62976e2a8..7fd61001693f 100644 --- a/src/dev-app/tabs/tabs-demo.html +++ b/src/dev-app/tabs/tabs-demo.html @@ -18,5 +18,5 @@

Tab group stretched

Tab group theming

-

Tab Navigation Bar basic

+

Tab navigation bar basic

diff --git a/src/e2e-app/BUILD.bazel b/src/e2e-app/BUILD.bazel index 8a3b9b8ce19e..a83c64265888 100644 --- a/src/e2e-app/BUILD.bazel +++ b/src/e2e-app/BUILD.bazel @@ -1,6 +1,4 @@ -load("//tools/dev-server:index.bzl", "dev_server") -load("//tools:defaults.bzl", "ng_module", "sass_binary") -load("//tools/esbuild:index.bzl", "esbuild", "esbuild_config") +load("//tools:defaults.bzl", "devmode_esbuild", "esbuild_config", "http_server", "ng_module", "sass_binary") load("//src/components-examples:config.bzl", "ALL_EXAMPLES") load("//tools/angular:index.bzl", "LINKER_PROCESSED_FW_PACKAGES") @@ -9,7 +7,6 @@ package(default_visibility = ["//visibility:public"]) # List of dependencies that are referenced in the `index.html` file. devserverIndexHtmlDependencies = [ "@npm//zone.js", - "@npm//core-js-bundle", "@npm//kagekiri", "@npm//material-components-web", "//src/material/prebuilt-themes:indigo-pink", @@ -73,6 +70,7 @@ ng_module( "//src/material/progress-bar", "//src/material/progress-spinner", "//src/material/radio", + "//src/material/select", "//src/material/sidenav", "//src/material/slide-toggle", "//src/material/tabs", @@ -103,7 +101,7 @@ esbuild_config( config_file = "esbuild.config.mjs", ) -esbuild( +devmode_esbuild( name = "bundles", testonly = True, config = ":esbuild_config", @@ -120,8 +118,8 @@ esbuild( ], ) -dev_server( - name = "devserver", +http_server( + name = "server", testonly = True, srcs = devserverIndexHtmlDependencies, additional_root_paths = [ diff --git a/src/e2e-app/e2e-app/e2e-app-layout.ts b/src/e2e-app/e2e-app/e2e-app-layout.ts index 8fc83ee7824f..37e072d32883 100644 --- a/src/e2e-app/e2e-app/e2e-app-layout.ts +++ b/src/e2e-app/e2e-app/e2e-app-layout.ts @@ -27,6 +27,7 @@ export class E2eAppLayout { {path: 'progress-bar', title: 'Progress bar'}, {path: 'progress-spinner', title: 'Progress Spinner'}, {path: 'radio', title: 'Radios'}, + {path: 'select', title: 'Select'}, {path: 'sidenav', title: 'Sidenav'}, {path: 'slide-toggle', title: 'Slide Toggle'}, {path: 'stepper', title: 'Stepper'}, diff --git a/src/e2e-app/index.html b/src/e2e-app/index.html index 81722b6f5e02..80258fa1f0a4 100644 --- a/src/e2e-app/index.html +++ b/src/e2e-app/index.html @@ -19,7 +19,6 @@ Loading... I am a sibling! - diff --git a/src/e2e-app/main-module.ts b/src/e2e-app/main-module.ts index 3aca19b85dd5..c7d44b05b0e9 100644 --- a/src/e2e-app/main-module.ts +++ b/src/e2e-app/main-module.ts @@ -1,6 +1,6 @@ import {NgModule} from '@angular/core'; import {BrowserModule} from '@angular/platform-browser'; -import {NoopAnimationsModule} from '@angular/platform-browser/animations'; +import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; import {RouterModule} from '@angular/router'; import {BlockScrollStrategyE2eModule} from './block-scroll-strategy/block-scroll-strategy-e2e-module'; import {ButtonToggleE2eModule} from './button-toggle/button-toggle-e2e-module'; @@ -41,11 +41,14 @@ import {VirtualScrollE2eModule} from './virtual-scroll/virtual-scroll-e2e-module import {MdcProgressBarE2eModule} from './mdc-progress-bar/mdc-progress-bar-e2e-module'; import {MdcProgressSpinnerE2eModule} from './mdc-progress-spinner/mdc-progress-spinner-module'; +/** We allow for animations to be explicitly enabled in certain e2e tests. */ +const enableAnimations = window.location.search.includes('animations=true'); + @NgModule({ imports: [ BrowserModule, E2eAppModule, - NoopAnimationsModule, + BrowserAnimationsModule.withConfig({disableAnimations: !enableAnimations}), RouterModule.forRoot(E2E_APP_ROUTES), // E2E demos diff --git a/src/e2e-app/routes.ts b/src/e2e-app/routes.ts index 17198e3ddd1d..6b4a0bbbc6f4 100644 --- a/src/e2e-app/routes.ts +++ b/src/e2e-app/routes.ts @@ -36,6 +36,7 @@ import {BasicTabs} from './tabs/tabs-e2e'; import {ToolbarE2e} from './toolbar/toolbar-e2e'; import {VirtualScrollE2E} from './virtual-scroll/virtual-scroll-e2e'; import {Home} from './e2e-app/e2e-app-layout'; +import {SelectE2e} from './select/select-e2e'; export const E2E_APP_ROUTES: Routes = [ {path: '', component: Home}, @@ -70,6 +71,7 @@ export const E2E_APP_ROUTES: Routes = [ {path: 'progress-spinner', component: ProgressSpinnerE2E}, {path: 'radio', component: SimpleRadioButtons}, {path: 'sidenav', component: SidenavE2E}, + {path: 'select', component: SelectE2e}, {path: 'slide-toggle', component: SlideToggleE2E}, {path: 'stepper', component: StepperE2e}, {path: 'tabs', component: BasicTabs}, diff --git a/src/e2e-app/select/select-e2e-module.ts b/src/e2e-app/select/select-e2e-module.ts new file mode 100644 index 000000000000..312de216486d --- /dev/null +++ b/src/e2e-app/select/select-e2e-module.ts @@ -0,0 +1,17 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {NgModule} from '@angular/core'; +import {ExampleViewerModule} from '../example-viewer/example-viewer-module'; +import {SelectE2e} from './select-e2e'; + +@NgModule({ + imports: [ExampleViewerModule], + declarations: [SelectE2e], +}) +export class SelectE2eModule {} diff --git a/src/dev-app/mdc-sidenav/mdc-sidenav-demo.ts b/src/e2e-app/select/select-e2e.ts similarity index 61% rename from src/dev-app/mdc-sidenav/mdc-sidenav-demo.ts rename to src/e2e-app/select/select-e2e.ts index 4e281eef08d7..3ce153a17bc3 100644 --- a/src/dev-app/mdc-sidenav/mdc-sidenav-demo.ts +++ b/src/e2e-app/select/select-e2e.ts @@ -9,8 +9,9 @@ import {Component} from '@angular/core'; @Component({ - selector: 'mdc-sidenav-demo', - templateUrl: 'mdc-sidenav-demo.html', - styleUrls: ['mdc-sidenav-demo.css'], + selector: 'select-demo', + template: ``, }) -export class MdcSidenavDemo {} +export class SelectE2e { + examples = ['select-overview']; +} diff --git a/src/e2e-app/test_suite.bzl b/src/e2e-app/test_suite.bzl index e854ca93c718..759a1cf2baf2 100644 --- a/src/e2e-app/test_suite.bzl +++ b/src/e2e-app/test_suite.bzl @@ -9,7 +9,7 @@ def e2e_test_suite(name, data = [], tags = ["e2e"], deps = []): "@npm//@axe-core/webdriverjs", ] + data, on_prepare = "//src/e2e-app:start-devserver.js", - server = "//src/e2e-app:devserver", + server = "//src/e2e-app:server", tags = tags, deps = deps, ) diff --git a/src/google-maps/google-map/google-map.spec.ts b/src/google-maps/google-map/google-map.spec.ts index 0472272c217a..5eea53ede1c3 100644 --- a/src/google-maps/google-map/google-map.spec.ts +++ b/src/google-maps/google-map/google-map.spec.ts @@ -363,6 +363,18 @@ describe('GoogleMap', () => { expect(mapConstructorSpy.calls.mostRecent()?.args[1].mapTypeId).toBe('satellite'); }); + it('should emit mapInitialized event when the map is initialized', () => { + mapSpy = createMapSpy(DEFAULT_OPTIONS); + mapConstructorSpy = createMapConstructorSpy(mapSpy); + + const fixture = TestBed.createComponent(TestApp); + fixture.detectChanges(); + + expect(fixture.componentInstance.mapInitializedSpy).toHaveBeenCalledOnceWith( + fixture.componentInstance.map.googleMap, + ); + }); + it('should emit authFailure event when window.gm_authFailure is called', () => { mapSpy = createMapSpy(DEFAULT_OPTIONS); mapConstructorSpy = createMapConstructorSpy(mapSpy); @@ -397,7 +409,8 @@ describe('GoogleMap', () => { [mapTypeId]="mapTypeId" (mapClick)="handleClick($event)" (centerChanged)="handleCenterChanged()" - (mapRightclick)="handleRightclick($event)"> + (mapRightclick)="handleRightclick($event)" + (mapInitialized)="mapInitializedSpy($event)"> `, }) class TestApp { @@ -412,4 +425,5 @@ class TestApp { handleClick(event: google.maps.MapMouseEvent) {} handleCenterChanged() {} handleRightclick(event: google.maps.MapMouseEvent) {} + mapInitializedSpy = jasmine.createSpy('mapInitialized'); } diff --git a/src/google-maps/google-map/google-map.ts b/src/google-maps/google-map/google-map.ts index 5bfbf7f55020..1014fe7be4df 100644 --- a/src/google-maps/google-map/google-map.ts +++ b/src/google-maps/google-map/google-map.ts @@ -104,6 +104,10 @@ export class GoogleMap implements OnChanges, OnInit, OnDestroy { } private _options = DEFAULT_OPTIONS; + /** Event emitted when the map is initialized. */ + @Output() readonly mapInitialized: EventEmitter = + new EventEmitter(); + /** * See * https://developers.google.com/maps/documentation/javascript/events#auth-errors @@ -305,6 +309,7 @@ export class GoogleMap implements OnChanges, OnInit, OnDestroy { this.googleMap = new google.maps.Map(this._mapEl, this._combineOptions()); }); this._eventManager.setTarget(this.googleMap); + this.mapInitialized.emit(this.googleMap); } } diff --git a/src/google-maps/map-info-window/map-info-window.spec.ts b/src/google-maps/map-info-window/map-info-window.spec.ts index c13c1741c8ca..3b14834cf611 100644 --- a/src/google-maps/map-info-window/map-info-window.spec.ts +++ b/src/google-maps/map-info-window/map-info-window.spec.ts @@ -129,7 +129,13 @@ describe('MapInfoWindow', () => { expect(infoWindowSpy.close).toHaveBeenCalled(); infoWindowComponent.open(fakeMarkerComponent); - expect(infoWindowSpy.open).toHaveBeenCalledWith(mapSpy, fakeMarker); + expect(infoWindowSpy.open).toHaveBeenCalledWith( + jasmine.objectContaining({ + map: mapSpy, + anchor: fakeMarker, + shouldFocus: undefined, + }), + ); }); it('should not try to reopen info window multiple times for the same marker', () => { @@ -224,6 +230,29 @@ describe('MapInfoWindow', () => { infoWindowComponent.open(); expect(infoWindowSpy.open).toHaveBeenCalledTimes(1); }); + + it('should allow for the focus behavior to be changed when opening the info window', () => { + const fakeMarker = {} as unknown as google.maps.Marker; + const fakeMarkerComponent = { + marker: fakeMarker, + getAnchor: () => fakeMarker, + } as unknown as MapMarker; + const infoWindowSpy = createInfoWindowSpy({}); + createInfoWindowConstructorSpy(infoWindowSpy).and.callThrough(); + + const fixture = TestBed.createComponent(TestApp); + const infoWindowComponent = fixture.debugElement + .query(By.directive(MapInfoWindow))! + .injector.get(MapInfoWindow); + fixture.detectChanges(); + + infoWindowComponent.open(fakeMarkerComponent, false); + expect(infoWindowSpy.open).toHaveBeenCalledWith( + jasmine.objectContaining({ + shouldFocus: false, + }), + ); + }); }); @Component({ diff --git a/src/google-maps/map-info-window/map-info-window.ts b/src/google-maps/map-info-window/map-info-window.ts index 85d014bb9c70..faf84b6e51c1 100644 --- a/src/google-maps/map-info-window/map-info-window.ts +++ b/src/google-maps/map-info-window/map-info-window.ts @@ -168,7 +168,7 @@ export class MapInfoWindow implements OnInit, OnDestroy { * Opens the MapInfoWindow using the provided anchor. If the anchor is not set, * then the position property of the options input is used instead. */ - open(anchor?: MapAnchorPoint) { + open(anchor?: MapAnchorPoint, shouldFocus?: boolean) { this._assertInitialized(); const anchorObject = anchor ? anchor.getAnchor() : undefined; @@ -178,7 +178,13 @@ export class MapInfoWindow implements OnInit, OnDestroy { // case where the window doesn't have an anchor, but is placed at a particular position. if (this.infoWindow.get('anchor') !== anchorObject || !anchorObject) { this._elementRef.nativeElement.style.display = ''; - this.infoWindow.open(this._googleMap.googleMap, anchorObject); + + // The config is cast to `any`, because the internal typings are out of date. + this.infoWindow.open({ + map: this._googleMap.googleMap, + anchor: anchorObject, + shouldFocus, + } as any); } } diff --git a/src/google-maps/testing/fake-google-map-utils.ts b/src/google-maps/testing/fake-google-map-utils.ts index 57c8d79b507f..a1bf7bc58c45 100644 --- a/src/google-maps/testing/fake-google-map-utils.ts +++ b/src/google-maps/testing/fake-google-map-utils.ts @@ -148,7 +148,7 @@ export function createInfoWindowSpy( 'get', ]); infoWindowSpy.addListener.and.returnValue({remove: () => {}}); - infoWindowSpy.open.and.callFake((_map: any, target: any) => (anchor = target)); + infoWindowSpy.open.and.callFake((config: any) => (anchor = config.anchor)); infoWindowSpy.close.and.callFake(() => (anchor = null)); infoWindowSpy.get.and.callFake((key: string) => (key === 'anchor' ? anchor : null)); return infoWindowSpy; diff --git a/src/google-maps/tsconfig.json b/src/google-maps/tsconfig.json index d57281895299..10f13e87d57c 100644 --- a/src/google-maps/tsconfig.json +++ b/src/google-maps/tsconfig.json @@ -5,12 +5,7 @@ "rootDir": "..", "baseUrl": ".", "paths": {}, - "types": [ - "jasmine" - ] + "types": ["jasmine"] }, - "include": [ - "./**/*.ts", - "../dev-mode-types.d.ts" - ] + "include": ["./**/*.ts", "../dev-mode-types.d.ts"] } diff --git a/src/material-experimental/_index.scss b/src/material-experimental/_index.scss index 3fe2fc770fed..c7571ca82471 100644 --- a/src/material-experimental/_index.scss +++ b/src/material-experimental/_index.scss @@ -16,7 +16,8 @@ popover-edit-typography, popover-edit-density, popover-edit-theme; // MDC-related themes -@forward './mdc-core/core-theme' as mdc-core-* show mdc-core-theme; +@forward './mdc-core/core-theme' as mdc-core-* show mdc-core-theme, mdc-core-color, + mdc-core-density, mdc-core-typography; @forward './mdc-helpers/focus-indicators-theme' as mdc-strong-focus-indicators-* show mdc-strong-focus-indicators-color, mdc-strong-focus-indicators-theme; @forward './mdc-core/option/option-theme' as mdc-option-* show mdc-option-color, diff --git a/src/material-experimental/column-resize/_column-resize-theme.scss b/src/material-experimental/column-resize/_column-resize-theme.scss index c88c47b1859e..10a798c2660e 100644 --- a/src/material-experimental/column-resize/_column-resize-theme.scss +++ b/src/material-experimental/column-resize/_column-resize-theme.scss @@ -9,8 +9,8 @@ $foreground: map.get($config, foreground); $non-resizable-hover-divider: theming.get-color-from-palette($foreground, divider); - $resizable-hover-divider: theming.get-color-from-palette($primary, 200); - $resizable-active-divider: theming.get-color-from-palette($primary, 500); + $resizable-hover-divider: theming.get-color-from-palette($primary, 600); + $resizable-active-divider: theming.get-color-from-palette($primary, 600); // TODO: these styles don't really belong in the `color` part of the theme. // We should figure out a better place for them. @@ -21,13 +21,16 @@ .mat-column-resize-flex { .mat-header-cell, - .mat-cell { + .mat-mdc-header-cell, + .mat-cell, + .mat-mdc-cell { box-sizing: border-box; min-width: 32px; } } - .mat-header-cell { + .mat-header-cell, + .mat-mdc-header-cell { position: relative; } @@ -36,6 +39,7 @@ } .mat-header-cell:not(.mat-resizable)::after, + .mat-mdc-header-cell:not(.mat-resizable)::after, .mat-resizable-handle { background: transparent; bottom: 0; @@ -46,23 +50,26 @@ width: 1px; } - .mat-header-cell:not(.mat-resizable)::after { + .mat-header-cell:not(.mat-resizable)::after, + .mat-mdc-header-cell:not(.mat-resizable)::after { content: ''; } .mat-header-cell:not(.mat-resizable)::after, + .mat-mdc-header-cell:not(.mat-resizable)::after, .mat-resizable-handle { right: 0; } - [dir='rtl'] .mat-header-cell:not(.mat-resizable)::after, - [dir='rtl'] .mat-resizable-handle { - left: 0; - right: auto; - } + .mat-header-row.cdk-column-resize-hover-or-active, + .mat-mdc-header-row.cdk-column-resize-hover-or-active { + .mat-header-cell, + .mat-mdc-header-cell { + border-right: none; + } - .mat-header-row.cdk-column-resize-hover-or-active { - .mat-header-cell:not(.mat-resizable)::after { + .mat-header-cell:not(.mat-resizable)::after, + .mat-mdc-header-cell:not(.mat-resizable)::after { background: $non-resizable-hover-divider; } @@ -71,13 +78,31 @@ } } + [dir='rtl'] { + .mat-header-cell:not(.mat-resizable)::after, + .mat-mdc-header-cell:not(.mat-resizable)::after, + .mat-resizable-handle { + left: 0; + right: auto; + } + + .mat-header-row.cdk-column-resize-hover-or-active, + .mat-mdc-header-row.cdk-column-resize-hover-or-active { + .mat-header-cell, + .mat-mdc-header-cell { + border-left: none; + } + } + } + .mat-resizable.cdk-resizable-overlay-thumb-active > .mat-resizable-handle { opacity: 0; transition: none; } .mat-resizable-handle:focus, - .mat-header-row.cdk-column-resize-hover-or-active .mat-resizable-handle:focus { + .mat-header-row.cdk-column-resize-hover-or-active .mat-resizable-handle:focus, + .mat-mdc-header-row.cdk-column-resize-hover-or-active .mat-resizable-handle:focus { background: $resizable-active-divider; outline: none; } @@ -94,11 +119,22 @@ &:active { background: linear-gradient(90deg, transparent, transparent 7px, - $resizable-active-divider, $resizable-active-divider 1px, - transparent 8px, transparent); + $resizable-active-divider 7px, $resizable-active-divider 9px, + transparent 9px, transparent); will-change: transform; + + .mat-column-resize-overlay-thumb-top { + background: linear-gradient(90deg, + transparent, transparent 4px, + $resizable-active-divider 4px, $resizable-active-divider 12px, + transparent 12px, transparent); + } } } + + .mat-column-resize-overlay-thumb-top { + width: 100%; + } } @mixin typography($config-or-theme) {} diff --git a/src/material-experimental/column-resize/column-resize-module.ts b/src/material-experimental/column-resize/column-resize-module.ts index 5b7a78717115..55add11dcc99 100644 --- a/src/material-experimental/column-resize/column-resize-module.ts +++ b/src/material-experimental/column-resize/column-resize-module.ts @@ -23,7 +23,6 @@ const ENTRY_COMMON_COMPONENTS = [MatColumnResizeOverlayHandle]; @NgModule({ declarations: ENTRY_COMMON_COMPONENTS, exports: ENTRY_COMMON_COMPONENTS, - entryComponents: ENTRY_COMMON_COMPONENTS, }) export class MatColumnResizeCommonModule {} diff --git a/src/material-experimental/column-resize/column-resize.spec.ts b/src/material-experimental/column-resize/column-resize.spec.ts index 7640bbf6b3b6..62fc437b5fd9 100644 --- a/src/material-experimental/column-resize/column-resize.spec.ts +++ b/src/material-experimental/column-resize/column-resize.spec.ts @@ -159,10 +159,18 @@ abstract class BaseTestComponent { dataSource = new ElementDataSource(); direction = 'ltr'; + getTableHeight(): number { + return this.table.nativeElement.querySelector('.mat-table').offsetHeight; + } + getTableWidth(): number { return this.table.nativeElement.querySelector('.mat-table').offsetWidth; } + getHeaderRowHeight(): number { + return this.table.nativeElement.querySelector('.mat-header-row .mat-header-cell').offsetHeight; + } + getColumnElement(index: number): HTMLElement { return this.table.nativeElement!.querySelectorAll('.mat-header-cell')[index] as HTMLElement; } @@ -189,6 +197,10 @@ abstract class BaseTestComponent { return document.querySelectorAll('.mat-column-resize-overlay-thumb')[index] as HTMLElement; } + getOverlayThumbTopElement(index: number): HTMLElement { + return document.querySelectorAll('.mat-column-resize-overlay-thumb-top')[index] as HTMLElement; + } + getOverlayThumbPosition(index: number): number { const thumbPositionElement = this.getOverlayThumbElement(index)!.parentNode as HTMLElement; const left = parseInt(thumbPositionElement.style.left!, 10); @@ -372,6 +384,9 @@ describe('Material Popover Edit', () => { it('shows resize handle overlays on header row hover and while a resize handle is in use', fakeAsync(() => { expect(component.getOverlayThumbElement(0)).toBeUndefined(); + const headerRowHeight = component.getHeaderRowHeight(); + const tableHeight = component.getTableHeight(); + component.triggerHoverState(); fixture.detectChanges(); @@ -382,6 +397,13 @@ describe('Material Popover Edit', () => { component.getOverlayThumbElement(2).classList.contains('mat-column-resize-overlay-thumb'), ).toBe(true); + (expect(component.getOverlayThumbElement(0).offsetHeight) as any).isApproximately( + headerRowHeight, + ); + (expect(component.getOverlayThumbElement(2).offsetHeight) as any).isApproximately( + headerRowHeight, + ); + component.beginColumnResizeWithMouse(0); expect( @@ -391,6 +413,16 @@ describe('Material Popover Edit', () => { component.getOverlayThumbElement(2).classList.contains('mat-column-resize-overlay-thumb'), ).toBe(true); + (expect(component.getOverlayThumbElement(0).offsetHeight) as any).isApproximately( + tableHeight, + ); + (expect(component.getOverlayThumbTopElement(0).offsetHeight) as any).isApproximately( + headerRowHeight, + ); + (expect(component.getOverlayThumbElement(2).offsetHeight) as any).isApproximately( + headerRowHeight, + ); + component.completeResizeWithMouseInProgress(0); component.endHoverState(); fixture.detectChanges(); diff --git a/src/material-experimental/column-resize/overlay-handle.ts b/src/material-experimental/column-resize/overlay-handle.ts index 5e8996004d16..0a3fac2b55ea 100644 --- a/src/material-experimental/column-resize/overlay-handle.ts +++ b/src/material-experimental/column-resize/overlay-handle.ts @@ -12,6 +12,7 @@ import { ElementRef, Inject, NgZone, + ViewChild, ViewEncapsulation, } from '@angular/core'; import {DOCUMENT} from '@angular/common'; @@ -39,11 +40,13 @@ import {AbstractMatColumnResize} from './column-resize-directives/common'; changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {'class': 'mat-column-resize-overlay-thumb'}, - template: '', + template: '
', }) export class MatColumnResizeOverlayHandle extends ResizeOverlayHandle { protected readonly document: Document; + @ViewChild('top', {static: true}) topElement: ElementRef; + constructor( protected readonly columnDef: CdkColumnDef, protected readonly columnResize: ColumnResize, @@ -64,10 +67,12 @@ export class MatColumnResizeOverlayHandle extends ResizeOverlayHandle { protected override updateResizeActive(active: boolean): void { super.updateResizeActive(active); + const originHeight = this.resizeRef.origin.nativeElement.offsetHeight; + this.topElement.nativeElement.style.height = `${originHeight}px`; this.resizeRef.overlayRef.updateSize({ height: active ? (this.columnResize as AbstractMatColumnResize).getTableHeight() - : this.resizeRef.origin.nativeElement!.offsetHeight, + : originHeight, }); } } diff --git a/src/material-experimental/config.bzl b/src/material-experimental/config.bzl index b0750f2d83a2..2bcfe3d246c8 100644 --- a/src/material-experimental/config.bzl +++ b/src/material-experimental/config.bzl @@ -32,7 +32,6 @@ entryPoints = [ "mdc-radio/testing", "mdc-select", "mdc-select/testing", - "mdc-sidenav", "mdc-slide-toggle", "mdc-slide-toggle/testing", "mdc-slider", diff --git a/src/material-experimental/mdc-autocomplete/autocomplete-trigger.ts b/src/material-experimental/mdc-autocomplete/autocomplete-trigger.ts index 5a1e3c5f7c4c..4c2196b28c5b 100644 --- a/src/material-experimental/mdc-autocomplete/autocomplete-trigger.ts +++ b/src/material-experimental/mdc-autocomplete/autocomplete-trigger.ts @@ -34,13 +34,14 @@ export const MAT_AUTOCOMPLETE_VALUE_ACCESSOR: any = { '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null', '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()', '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id', - '[attr.aria-haspopup]': '!autocompleteDisabled', + '[attr.aria-haspopup]': 'autocompleteDisabled ? null : "listbox"', // Note: we use `focusin`, as opposed to `focus`, in order to open the panel // a little earlier. This avoids issues where IE delays the focusing of the input. '(focusin)': '_handleFocus()', '(blur)': '_onTouched()', '(input)': '_handleInput($event)', '(keydown)': '_handleKeydown($event)', + '(click)': '_handleClick()', }, exportAs: 'matAutocompleteTrigger', providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], diff --git a/src/material-experimental/mdc-autocomplete/autocomplete.spec.ts b/src/material-experimental/mdc-autocomplete/autocomplete.spec.ts index 3f8771b1b52a..621e2d69855e 100644 --- a/src/material-experimental/mdc-autocomplete/autocomplete.spec.ts +++ b/src/material-experimental/mdc-autocomplete/autocomplete.spec.ts @@ -9,6 +9,7 @@ import { dispatchEvent, dispatchFakeEvent, dispatchKeyboardEvent, + dispatchMouseEvent, MockNgZone, typeInElement, } from '../../cdk/testing/private'; @@ -561,13 +562,38 @@ describe('MDC-based MatAutocomplete', () => { }); it('should set aria-haspopup depending on whether the autocomplete is disabled', () => { - expect(input.getAttribute('aria-haspopup')).toBe('true'); + expect(input.getAttribute('aria-haspopup')).toBe('listbox'); fixture.componentInstance.autocompleteDisabled = true; fixture.detectChanges(); - expect(input.getAttribute('aria-haspopup')).toBe('false'); + expect(input.hasAttribute('aria-haspopup')).toBe(false); }); + + it('should close the panel when pressing escape', fakeAsync(() => { + const trigger = fixture.componentInstance.trigger; + + input.focus(); + flush(); + fixture.detectChanges(); + + expect(document.activeElement).withContext('Expected input to be focused.').toBe(input); + expect(trigger.panelOpen).withContext('Expected panel to be open.').toBe(true); + + trigger.closePanel(); + fixture.detectChanges(); + + expect(document.activeElement) + .withContext('Expected input to continue to be focused.') + .toBe(input); + expect(trigger.panelOpen).withContext('Expected panel to be closed.').toBe(false); + + input.click(); + flush(); + fixture.detectChanges(); + + expect(trigger.panelOpen).withContext('Expected panel to reopen on click.').toBe(true); + })); }); it('should not close the panel when clicking on the input', fakeAsync(() => { @@ -1085,6 +1111,27 @@ describe('MDC-based MatAutocomplete', () => { .toBe(false); }); + it('should not interfere with the ENTER key when pressing a modifier', fakeAsync(() => { + const trigger = fixture.componentInstance.trigger; + + expect(input.value).withContext('Expected input to start off blank.').toBeFalsy(); + expect(trigger.panelOpen).withContext('Expected panel to start off open.').toBe(true); + + fixture.componentInstance.trigger._handleKeydown(DOWN_ARROW_EVENT); + flush(); + fixture.detectChanges(); + + Object.defineProperty(ENTER_EVENT, 'altKey', {get: () => true}); + fixture.componentInstance.trigger._handleKeydown(ENTER_EVENT); + fixture.detectChanges(); + + expect(trigger.panelOpen).withContext('Expected panel to remain open.').toBe(true); + expect(input.value).withContext('Expected input to remain blank.').toBeFalsy(); + expect(ENTER_EVENT.defaultPrevented) + .withContext('Expected the default ENTER action not to have been prevented.') + .toBe(false); + })); + it('should fill the text field, not select an option, when SPACE is entered', () => { typeInElement(input, 'New'); fixture.detectChanges(); @@ -1374,6 +1421,23 @@ describe('MDC-based MatAutocomplete', () => { .toBeFalsy(); })); + it('should not close when a click event occurs on the outside while the panel has focus', fakeAsync(() => { + const trigger = fixture.componentInstance.trigger; + + input.focus(); + flush(); + fixture.detectChanges(); + + expect(document.activeElement).toBe(input, 'Expected input to be focused.'); + expect(trigger.panelOpen).toBe(true, 'Expected panel to be open.'); + + dispatchMouseEvent(document.body, 'click'); + fixture.detectChanges(); + + expect(document.activeElement).toBe(input, 'Expected input to continue to be focused.'); + expect(trigger.panelOpen).toBe(true, 'Expected panel to stay open.'); + })); + it('should reset the active option when closing with the escape key', fakeAsync(() => { const trigger = fixture.componentInstance.trigger; @@ -1431,6 +1495,20 @@ describe('MDC-based MatAutocomplete', () => { expect(!!trigger.activeOption).withContext('Expected no active options.').toBe(false); })); + + it('should not prevent the default action when a modifier key is pressed', () => { + ['metaKey', 'ctrlKey', 'altKey', 'shiftKey'].forEach(name => { + const event = createKeyboardEvent('keydown', DOWN_ARROW); + Object.defineProperty(event, name, {get: () => true}); + + fixture.componentInstance.trigger._handleKeydown(event); + fixture.detectChanges(); + + expect(event.defaultPrevented) + .withContext(`Expected autocompete not to block ${name} key`) + .toBe(false); + }); + }); }); describe('option groups', () => { @@ -2234,6 +2312,22 @@ describe('MDC-based MatAutocomplete', () => { .toBe(false); })); + it('should be able to preselect the first option when the floating label is disabled', fakeAsync(() => { + fixture.componentInstance.floatLabel = 'never'; + fixture.componentInstance.trigger.autocomplete.autoActiveFirstOption = true; + fixture.detectChanges(); + + fixture.componentInstance.trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + // Note: should not have a detectChanges call here + // in order for the test to fail when it's supposed to. + + expect(overlayContainerElement.querySelectorAll('mat-option')[0].classList) + .withContext('Expected first option to be highlighted.') + .toContain('mat-mdc-option-active'); + })); + it('should be able to configure preselecting the first option globally', fakeAsync(() => { fixture.destroy(); TestBed.resetTestingModule(); @@ -2279,6 +2373,34 @@ describe('MDC-based MatAutocomplete', () => { subscription!.unsubscribe(); })); + it('should emit to `optionSelections` if the list of options changes', fakeAsync(() => { + const spy = jasmine.createSpy('option selection spy'); + const subscription = fixture.componentInstance.trigger.optionSelections.subscribe(spy); + const openAndSelectFirstOption = () => { + fixture.detectChanges(); + fixture.componentInstance.trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + (overlayContainerElement.querySelector('mat-option') as HTMLElement).click(); + fixture.detectChanges(); + zone.simulateZoneExit(); + }; + + fixture.componentInstance.states = [{code: 'OR', name: 'Oregon'}]; + fixture.detectChanges(); + + openAndSelectFirstOption(); + expect(spy).toHaveBeenCalledTimes(1); + + fixture.componentInstance.states = [{code: 'WV', name: 'West Virginia'}]; + fixture.detectChanges(); + + openAndSelectFirstOption(); + expect(spy).toHaveBeenCalledTimes(2); + + subscription!.unsubscribe(); + })); + it('should reposition the panel when the amount of options changes', fakeAsync(() => { let formField = fixture.debugElement.query(By.css('.mat-mdc-form-field'))!.nativeElement; let inputReference = formField.querySelector('.mdc-text-field'); @@ -2625,6 +2747,217 @@ describe('MDC-based MatAutocomplete', () => { })); }); + describe('automatically selecting the active option', () => { + let fixture: ComponentFixture; + + beforeEach(() => { + fixture = createComponent(SimpleAutocomplete); + fixture.detectChanges(); + fixture.componentInstance.trigger.autocomplete.autoSelectActiveOption = true; + }); + + it( + 'should update the input value as the user is navigating, without changing the model ' + + 'value or closing the panel', + fakeAsync(() => { + const {trigger, stateCtrl, closedSpy} = fixture.componentInstance; + const input: HTMLInputElement = fixture.nativeElement.querySelector('input'); + + trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBeFalsy(); + expect(trigger.panelOpen).toBe(true); + expect(closedSpy).not.toHaveBeenCalled(); + + dispatchKeyboardEvent(input, 'keydown', DOWN_ARROW); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBe('Alabama'); + expect(trigger.panelOpen).toBe(true); + expect(closedSpy).not.toHaveBeenCalled(); + + dispatchKeyboardEvent(input, 'keydown', DOWN_ARROW); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBe('California'); + expect(trigger.panelOpen).toBe(true); + expect(closedSpy).not.toHaveBeenCalled(); + }), + ); + + it('should revert back to the last typed value if the user presses escape', fakeAsync(() => { + const {trigger, stateCtrl, closedSpy} = fixture.componentInstance; + const input: HTMLInputElement = fixture.nativeElement.querySelector('input'); + + trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + fixture.detectChanges(); + typeInElement(input, 'al'); + fixture.detectChanges(); + tick(); + + expect(stateCtrl.value).toBe('al'); + expect(input.value).toBe('al'); + expect(trigger.panelOpen).toBe(true); + expect(closedSpy).not.toHaveBeenCalled(); + + dispatchKeyboardEvent(input, 'keydown', DOWN_ARROW); + fixture.detectChanges(); + + expect(stateCtrl.value).toBe('al'); + expect(input.value).toBe('Alabama'); + expect(trigger.panelOpen).toBe(true); + expect(closedSpy).not.toHaveBeenCalled(); + + dispatchKeyboardEvent(document.body, 'keydown', ESCAPE); + fixture.detectChanges(); + + expect(stateCtrl.value).toBe('al'); + expect(input.value).toBe('al'); + expect(trigger.panelOpen).toBe(false); + expect(closedSpy).toHaveBeenCalledTimes(1); + })); + + it( + 'should clear the input if the user presses escape while there was a pending ' + + 'auto selection and there is no previous value', + fakeAsync(() => { + const {trigger, stateCtrl} = fixture.componentInstance; + const input: HTMLInputElement = fixture.nativeElement.querySelector('input'); + + trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBeFalsy(); + + dispatchKeyboardEvent(input, 'keydown', DOWN_ARROW); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBe('Alabama'); + + dispatchKeyboardEvent(document.body, 'keydown', ESCAPE); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBeFalsy(); + }), + ); + + it('should propagate the auto-selected value if the user clicks away', fakeAsync(() => { + const {trigger, stateCtrl} = fixture.componentInstance; + const input: HTMLInputElement = fixture.nativeElement.querySelector('input'); + + trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBeFalsy(); + + dispatchKeyboardEvent(input, 'keydown', DOWN_ARROW); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBe('Alabama'); + + dispatchFakeEvent(document, 'click'); + fixture.detectChanges(); + + expect(stateCtrl.value).toEqual({code: 'AL', name: 'Alabama'}); + expect(input.value).toBe('Alabama'); + })); + + it('should propagate the auto-selected value if the user tabs away', fakeAsync(() => { + const {trigger, stateCtrl} = fixture.componentInstance; + const input: HTMLInputElement = fixture.nativeElement.querySelector('input'); + + trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBeFalsy(); + + dispatchKeyboardEvent(input, 'keydown', DOWN_ARROW); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBe('Alabama'); + + dispatchKeyboardEvent(input, 'keydown', TAB); + fixture.detectChanges(); + + expect(stateCtrl.value).toEqual({code: 'AL', name: 'Alabama'}); + expect(input.value).toBe('Alabama'); + })); + + it('should propagate the auto-selected value if the user presses enter on it', fakeAsync(() => { + const {trigger, stateCtrl} = fixture.componentInstance; + const input: HTMLInputElement = fixture.nativeElement.querySelector('input'); + + trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBeFalsy(); + + dispatchKeyboardEvent(input, 'keydown', DOWN_ARROW); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBe('Alabama'); + + dispatchKeyboardEvent(input, 'keydown', ENTER); + fixture.detectChanges(); + + expect(stateCtrl.value).toEqual({code: 'AL', name: 'Alabama'}); + expect(input.value).toBe('Alabama'); + })); + + it('should allow the user to click on an option different from the auto-selected one', fakeAsync(() => { + const {trigger, stateCtrl} = fixture.componentInstance; + const input: HTMLInputElement = fixture.nativeElement.querySelector('input'); + + trigger.openPanel(); + fixture.detectChanges(); + zone.simulateZoneExit(); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBeFalsy(); + + dispatchKeyboardEvent(input, 'keydown', DOWN_ARROW); + fixture.detectChanges(); + + expect(stateCtrl.value).toBeFalsy(); + expect(input.value).toBe('Alabama'); + + const options = overlayContainerElement.querySelectorAll( + 'mat-option', + ) as NodeListOf; + options[2].click(); + fixture.detectChanges(); + + expect(stateCtrl.value).toEqual({code: 'FL', name: 'Florida'}); + expect(input.value).toBe('Florida'); + })); + }); + it('should have correct width when opened', () => { const widthFixture = createComponent(SimpleAutocomplete); widthFixture.componentInstance.width = 300; @@ -2820,6 +3153,29 @@ describe('MDC-based MatAutocomplete', () => { expect(event.option.value).toBe('Washington'); })); + it('should refocus the input after the selection event is emitted', fakeAsync(() => { + const events: string[] = []; + const fixture = createComponent(AutocompleteWithSelectEvent); + fixture.detectChanges(); + const input = fixture.nativeElement.querySelector('input'); + + fixture.componentInstance.trigger.openPanel(); + zone.simulateZoneExit(); + fixture.detectChanges(); + + const options = overlayContainerElement.querySelectorAll( + 'mat-option', + ) as NodeListOf; + spyOn(input, 'focus').and.callFake(() => events.push('focus')); + fixture.componentInstance.optionSelected.and.callFake(() => events.push('select')); + + options[1].click(); + tick(); + fixture.detectChanges(); + + expect(events).toEqual(['select', 'focus']); + })); + it('should emit an event when a newly-added option is selected', fakeAsync(() => { let fixture = createComponent(AutocompleteWithSelectEvent); diff --git a/src/material-experimental/mdc-button/BUILD.bazel b/src/material-experimental/mdc-button/BUILD.bazel index aca24ef76421..48fef69e3ab3 100644 --- a/src/material-experimental/mdc-button/BUILD.bazel +++ b/src/material-experimental/mdc-button/BUILD.bazel @@ -102,6 +102,7 @@ ng_test_library( deps = [ ":mdc-button", "//src/cdk/platform", + "//src/cdk/testing/private", "//src/material-experimental/mdc-core", "//src/material/button", "@npm//@angular/platform-browser", diff --git a/src/material-experimental/mdc-button/_button-base.scss b/src/material-experimental/mdc-button/_button-base.scss index 7c5cbfa28515..f0b0f8ee88ef 100644 --- a/src/material-experimental/mdc-button/_button-base.scss +++ b/src/material-experimental/mdc-button/_button-base.scss @@ -1,3 +1,4 @@ +@use 'sass:map'; @use '@material/touch-target' as mdc-touch-target; @use '../mdc-helpers/mdc-helpers'; @use '../../material/core/style/layout-common'; @@ -8,22 +9,10 @@ // ripple and state container so that they fill the button, match the border radius, and avoid // pointer events. @mixin mat-private-button-interactive() { - .mdc-button__ripple::before, .mdc-button__ripple::after, - .mdc-fab__ripple::before, .mdc-fab__ripple::after { - content: ''; - pointer-events: none; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - opacity: 0; - border-radius: inherit; - @content; - } - // The ripple container should match the bounds of the entire button. - .mat-mdc-button-ripple, .mdc-button__ripple, .mdc-fab__ripple { + .mat-mdc-button-ripple, + .mat-mdc-button-persistent-ripple, + .mat-mdc-button-persistent-ripple::before { @include layout-common.fill; // Disable pointer events for the ripple container and state overlay because the container @@ -38,6 +27,17 @@ border-radius: inherit; } + // We use ::before so that we can reuse some of MDC's theming. + .mat-mdc-button-persistent-ripple::before { + content: ''; + opacity: 0; + background-color: var(--mat-mdc-button-persistent-ripple-color); + } + + .mat-ripple-element { + background-color: var(--mat-mdc-button-ripple-color); + } + // The content should appear over the state and ripple layers, otherwise they may adversely affect // the accessibility of the text content. .mdc-button__label { @@ -59,6 +59,7 @@ &[disabled] { cursor: default; pointer-events: none; + @content; } } @@ -75,3 +76,15 @@ $query: mdc-helpers.$mat-base-styles-query); } } + +// Changes a button theme to exclude the ripple styles. +@function mat-private-button-remove-ripple($theme) { + @return map.merge($theme, ( + focus-state-layer-color: null, + focus-state-layer-opacity: null, + hover-state-layer-color: null, + hover-state-layer-opacity: null, + pressed-state-layer-color: null, + pressed-state-layer-opacity: null, + )); +} diff --git a/src/material-experimental/mdc-button/_button-theme-private.scss b/src/material-experimental/mdc-button/_button-theme-private.scss index 46b97177d996..742438150fd8 100644 --- a/src/material-experimental/mdc-button/_button-theme-private.scss +++ b/src/material-experimental/mdc-button/_button-theme-private.scss @@ -1,28 +1,43 @@ +@use 'sass:map'; +@use '@material/ripple/ripple-theme' as mdc-ripple-theme; @use '@material/theme/theme-color' as mdc-theme-color; -@use '@material/theme/theme' as mdc-theme; @use '../../material/core/ripple/ripple-theme'; -// Selector for the element that has a background color and opacity applied to its ::before and -// ::after for state interactions (hover, active, focus). Their API calls this their -// "ripple target", but we do not use it as our ripple, just state color. -$button-state-target: '.mdc-button__ripple'; -$fab-state-target: '.mdc-fab__ripple'; - -// The MDC button's ripple ink color is based on the theme color, not on the foreground base -// which is what the ripple mixin uses. This creates a new theme that sets the color to the -// foreground base to appropriately color the ink. -@mixin ripple-ink-color($mdc-color) { - @include ripple-theme.color(( - foreground: ( - base: mdc-theme-color.prop-value($mdc-color) - ), - )); +@mixin _ripple-color($color) { + --mat-mdc-button-persistent-ripple-color: #{$color}; + --mat-mdc-button-ripple-color: #{rgba($color, 0.1)}; } -// Applies the disabled theme color to the text color. -@mixin apply-disabled-color() { - @include mdc-theme.prop(color, - mdc-theme-color.ink-color-for-fill_(disabled, mdc-theme-color.$background)); +@mixin ripple-theme-styles($config, $is-filled) { + $opacities: if(map.get($config, is-dark), + mdc-ripple-theme.$light-ink-opacities, mdc-ripple-theme.$dark-ink-opacities); + + // Ideally these styles would be structural, but MDC bases some of the opacities on the theme. + &:hover .mat-mdc-button-persistent-ripple::before { + opacity: map.get($opacities, hover); + } + + &:focus .mat-mdc-button-persistent-ripple::before { + opacity: map.get($opacities, focus); + } + + &:active .mat-mdc-button-persistent-ripple::before { + opacity: map.get($opacities, press); + } + + @include _ripple-color(mdc-theme-color.prop-value(on-surface)); + + &.mat-primary { + @include _ripple-color(mdc-theme-color.prop-value(if($is-filled, on-primary, primary))); + } + + &.mat-accent { + @include _ripple-color(mdc-theme-color.prop-value(if($is-filled, on-secondary, secondary))); + } + + &.mat-warn { + @include _ripple-color(mdc-theme-color.prop-value(if($is-filled, on-error, error))); + } } // Wraps the content style in a selector for the disabled state. @@ -37,14 +52,6 @@ $fab-state-target: '.mdc-fab__ripple'; } } -// Applies the disabled theme background color for raised buttons. Value is taken from -// mixin `mdc-button--filled`. -// TODO(andrewseguin): Discuss with the MDC team about providing a variable for the 0.12 value -// or otherwise have a mixin we can call to apply this style for both button and anchors. -@mixin apply-disabled-background() { - @include mdc-theme.prop(background-color, rgba(mdc-theme-color.prop-value(on-surface), 0.12)); -} - // Hides the touch target on lower densities. @mixin touch-target-density($scale) { @if ($scale == -2 or $scale == 'minimum') { diff --git a/src/material-experimental/mdc-button/_button-theme.scss b/src/material-experimental/mdc-button/_button-theme.scss index 4f0df23e0872..9c6f6f5fb4ad 100644 --- a/src/material-experimental/mdc-button/_button-theme.scss +++ b/src/material-experimental/mdc-button/_button-theme.scss @@ -1,146 +1,184 @@ +@use 'sass:map'; @use '@material/button/button' as mdc-button; @use '@material/button/button-theme' as mdc-button-theme; -@use '@material/ripple/ripple-theme' as mdc-ripple-theme; +@use '@material/button/button-text-theme' as mdc-button-text-theme; +@use '@material/button/button-filled-theme' as mdc-button-filled-theme; +@use '@material/button/button-protected-theme' as mdc-button-protected-theme; +@use '@material/button/button-outlined-theme' as mdc-button-outlined-theme; @use '@material/theme/theme-color' as mdc-theme-color; -@use '@material/theme/theme' as mdc-theme; -@use '@material/elevation/elevation-theme' as mdc-elevation-theme; -@use '../../material/core/ripple/ripple-theme'; @use '../../material/core/typography/typography'; @use '../mdc-helpers/mdc-helpers'; @use '../../material/core/theming/theming'; @use './button-theme-private'; +@mixin _button-variant($color) { + @include mdc-button-text-theme.theme(( + label-text-color: $color, + )); +} + +@mixin _unelevated-button-variant($foreground, $background) { + @include mdc-button-filled-theme.theme(( + container-color: $background, + label-text-color: $foreground, + )); +} + +@mixin _raised-button-variant($foreground, $background) { + @include mdc-button-protected-theme.theme(( + container-color: $background, + label-text-color: $foreground, + )); +} + +@mixin _outlined-button-variant($color) { + @include mdc-button-outlined-theme.theme(( + label-text-color: $color, + )); +} + @mixin color($config-or-theme) { $config: theming.get-color-config($config-or-theme); @include mdc-helpers.mat-using-mdc-theme($config) { - // Add state interactions for hover, focus, press, active. Colors are changed based on - // the mixin mdc-states-base-color - .mat-mdc-button, .mat-mdc-raised-button, .mat-mdc-unelevated-button, .mat-mdc-outlined-button { - @include mdc-ripple-theme.states( - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - } - - .mat-mdc-button, .mat-mdc-outlined-button { + $is-dark: map.get($config, is-dark); + $on-surface: mdc-theme-color.prop-value(on-surface); + $surface: mdc-theme-color.prop-value(surface); + $disabled-ink-color: rgba($on-surface, if($is-dark, 0.5, 0.38)); + $disabled-container-color: rgba($on-surface, 0.12); + $primary: mdc-theme-color.prop-value(primary); + $on-primary: mdc-theme-color.prop-value(on-primary); + $secondary: mdc-theme-color.prop-value(secondary); + $on-secondary: mdc-theme-color.prop-value(on-secondary); + $error: mdc-theme-color.prop-value(error); + $on-error: mdc-theme-color.prop-value(on-error); + + .mat-mdc-button { &.mat-unthemed { - @include mdc-button-theme.ink-color(mdc-theme-color.$on-surface, - $query: mdc-helpers.$mat-theme-styles-query); + @include _button-variant($on-surface); } &.mat-primary { - @include mdc-button-theme.ink-color(primary, $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-ripple-theme.states-base-color(primary, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include button-theme-private.ripple-ink-color(primary); + @include _button-variant($primary); } &.mat-accent { - @include mdc-button-theme.ink-color(secondary, $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-ripple-theme.states-base-color(secondary, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include button-theme-private.ripple-ink-color(secondary); + @include _button-variant($secondary); } &.mat-warn { - @include mdc-button-theme.ink-color(error, $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-ripple-theme.states-base-color(error, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include button-theme-private.ripple-ink-color(error); + @include _button-variant($error); + } + + @include button-theme-private.apply-disabled-style() { + @include mdc-button-text-theme.theme(( + // We need to pass both the disabled and enabled values, because the enabled + // ones apply to anchors while the disabled ones are for buttons. + disabled-label-text-color: $disabled-ink-color, + label-text-color: $disabled-ink-color + )); } } - .mat-mdc-raised-button, .mat-mdc-unelevated-button { &.mat-unthemed { - @include mdc-button-theme.container-fill-color(mdc-theme-color.$surface, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-button-theme.ink-color(mdc-theme-color.$on-surface, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-ripple-theme.states-base-color(mdc-theme-color.$on-surface, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); + @include _unelevated-button-variant($on-surface, $surface); } &.mat-primary { - @include mdc-button-theme.container-fill-color(primary, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-button-theme.ink-color(on-primary, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-ripple-theme.states-base-color(on-primary, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include button-theme-private.ripple-ink-color(on-primary); + @include _unelevated-button-variant($on-primary, $primary); } &.mat-accent { - @include mdc-button-theme.container-fill-color(secondary, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-button-theme.ink-color(on-secondary, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-ripple-theme.states-base-color(on-secondary, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include button-theme-private.ripple-ink-color(on-secondary); + @include _unelevated-button-variant($on-secondary, $secondary); } &.mat-warn { - @include mdc-button-theme.container-fill-color(error, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-button-theme.ink-color(on-error, $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-ripple-theme.states-base-color(on-error, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include button-theme-private.ripple-ink-color(on-error); + @include _unelevated-button-variant($on-error, $error); } @include button-theme-private.apply-disabled-style() { - @include button-theme-private.apply-disabled-background(); + @include mdc-button-filled-theme.theme(( + // We need to pass both the disabled and enabled values, because the enabled + // ones apply to anchors while the disabled ones are for buttons. + disabled-container-color: $disabled-container-color, + disabled-label-text-color: $disabled-ink-color, + container-color: $disabled-container-color, + label-text-color: $disabled-ink-color, + )); } } - .mat-mdc-outlined-button { + .mat-mdc-raised-button { &.mat-unthemed { - @include mdc-button-theme.outline-color(mdc-theme-color.$on-surface, - $query: mdc-helpers.$mat-theme-styles-query); + @include _raised-button-variant($on-surface, $surface); } &.mat-primary { - @include mdc-button-theme.outline-color(primary, - $query: mdc-helpers.$mat-theme-styles-query); + @include _raised-button-variant($on-primary, $primary); } &.mat-accent { - @include mdc-button-theme.outline-color(secondary, - $query: mdc-helpers.$mat-theme-styles-query); + @include _raised-button-variant($on-secondary, $secondary); } &.mat-warn { - @include mdc-button-theme.outline-color(error, - $query: mdc-helpers.$mat-theme-styles-query); + @include _raised-button-variant($on-error, $error); } @include button-theme-private.apply-disabled-style() { - @include mdc-theme.prop(border-color, - mdc-theme-color.ink-color-for-fill_(disabled, mdc-theme-color.$background)); + @include mdc-button-protected-theme.theme(( + // We need to pass both the disabled and enabled values, because the enabled + // ones apply to anchors while the disabled ones are for buttons. + disabled-container-color: $disabled-container-color, + disabled-label-text-color: $disabled-ink-color, + container-color: $disabled-container-color, + label-text-color: $disabled-ink-color, + container-elevation: 0, + )); } } - .mat-mdc-raised-button { - @include button-theme-private.apply-disabled-style() { - @include mdc-elevation-theme.elevation(0, $query: mdc-helpers.$mat-theme-styles-query); + .mat-mdc-outlined-button { + @include mdc-button-outlined-theme.theme(( + outline-color: rgba(mdc-theme-color.prop-value(on-surface), 0.12) + )); + + &.mat-unthemed { + @include _outlined-button-variant($on-surface); + } + + &.mat-primary { + @include _outlined-button-variant($primary); + } + + &.mat-accent { + @include _outlined-button-variant($secondary); + } + + &.mat-warn { + @include _outlined-button-variant($error); } - } - .mat-mdc-button, .mat-mdc-raised-button, .mat-mdc-unelevated-button, .mat-mdc-outlined-button { @include button-theme-private.apply-disabled-style() { - @include button-theme-private.apply-disabled-color(); + @include mdc-button-outlined-theme.theme(( + // We need to pass both the disabled and enabled values, because the enabled + // ones apply to anchors while the disabled ones are for buttons. + label-text-color: $disabled-ink-color, + disabled-label-text-color: $disabled-ink-color, + outline-color: rgba($on-surface, 0.12), + disabled-outline-color: rgba($on-surface, 0.12), + )); } } - @include mdc-button.without-ripple($query: mdc-helpers.$mat-theme-styles-query); + // Ripple colors + .mat-mdc-button, .mat-mdc-outlined-button { + @include button-theme-private.ripple-theme-styles($config, false); + } + + .mat-mdc-raised-button, .mat-mdc-unelevated-button { + @include button-theme-private.ripple-theme-styles($config, true); + } } } diff --git a/src/material-experimental/mdc-button/_fab-theme.scss b/src/material-experimental/mdc-button/_fab-theme.scss index 676fa8340ce3..68075b26bb35 100644 --- a/src/material-experimental/mdc-button/_fab-theme.scss +++ b/src/material-experimental/mdc-button/_fab-theme.scss @@ -1,68 +1,62 @@ +@use 'sass:map'; @use '@material/fab/fab' as mdc-fab; @use '@material/fab/fab-theme' as mdc-fab-theme; -@use '@material/ripple/ripple-theme' as mdc-ripple-theme; -@use '@material/elevation/elevation-theme' as mdc-elevation-theme; @use '@material/theme/theme-color' as mdc-theme-color; @use '../mdc-helpers/mdc-helpers'; @use '../../material/core/theming/theming'; @use '../../material/core/typography/typography'; @use './button-theme-private'; +@mixin _fab-variant($foreground, $background) { + @include mdc-fab-theme.theme(( + container-color: $background, + icon-color: $foreground, + )); + + --mat-mdc-fab-color: #{$foreground}; +} + @mixin color($config-or-theme) { $config: theming.get-color-config($config-or-theme); @include mdc-helpers.mat-using-mdc-theme($config) { + $on-surface: mdc-theme-color.prop-value(on-surface); + $is-dark: map.get($config, is-dark); + .mat-mdc-fab, .mat-mdc-mini-fab { - @include mdc-ripple-theme.states( - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$fab-state-target); + @include button-theme-private.ripple-theme-styles($config, true); &.mat-unthemed { - @include mdc-ripple-theme.states-base-color(mdc-theme-color.$on-surface, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$fab-state-target); - @include mdc-fab-theme.container-color(mdc-theme-color.$on-surface, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-fab-theme.ink-color(mdc-theme-color.$on-surface, - $query: mdc-helpers.$mat-theme-styles-query); + @include _fab-variant($on-surface, mdc-theme-color.prop-value(surface)); } &.mat-primary { - @include mdc-ripple-theme.states-base-color(on-primary, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$fab-state-target); - @include mdc-fab-theme.container-color(primary, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-fab-theme.ink-color(on-primary, $query: mdc-helpers.$mat-theme-styles-query); - @include button-theme-private.ripple-ink-color(on-primary); + @include _fab-variant( + mdc-theme-color.prop-value(on-primary), + mdc-theme-color.prop-value(primary) + ); } &.mat-accent { - @include mdc-ripple-theme.states-base-color(on-secondary, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$fab-state-target); - @include mdc-fab-theme.container-color(secondary, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-fab-theme.ink-color(on-secondary, $query: mdc-helpers.$mat-theme-styles-query); - @include button-theme-private.ripple-ink-color(on-secondary); + @include _fab-variant( + mdc-theme-color.prop-value(on-secondary), + mdc-theme-color.prop-value(secondary) + ); } &.mat-warn { - @include mdc-ripple-theme.states-base-color(on-error, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$fab-state-target); - @include mdc-fab-theme.container-color(error, $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-fab-theme.ink-color(on-error, $query: mdc-helpers.$mat-theme-styles-query); - @include button-theme-private.ripple-ink-color(on-error); + @include _fab-variant( + mdc-theme-color.prop-value(on-error), + mdc-theme-color.prop-value(error) + ); } @include button-theme-private.apply-disabled-style() { - @include button-theme-private.apply-disabled-color(); - @include button-theme-private.apply-disabled-background(); - @include mdc-elevation-theme.elevation(0, $query: mdc-helpers.$mat-theme-styles-query); + @include _fab-variant( + rgba($on-surface, if(map.get($config, is-dark), 0.5, 0.38)), + rgba($on-surface, 0.12) + ); } } - - @include mdc-fab.without-ripple($query: mdc-helpers.$mat-theme-styles-query); } } diff --git a/src/material-experimental/mdc-button/_icon-button-theme.scss b/src/material-experimental/mdc-button/_icon-button-theme.scss index 16196ca888db..e69cb94f0dad 100644 --- a/src/material-experimental/mdc-button/_icon-button-theme.scss +++ b/src/material-experimental/mdc-button/_icon-button-theme.scss @@ -1,5 +1,7 @@ +@use 'sass:map'; @use '@material/icon-button/mixins' as mdc-icon-button; -@use '@material/ripple/ripple-theme' as mdc-ripple-theme; +@use '@material/icon-button/icon-button-theme' as mdc-icon-button-theme; +@use '@material/theme/theme-color' as mdc-theme-color; @use '../mdc-helpers/mdc-helpers'; @use '../../material/core/theming/theming'; @use '../../material/core/typography/typography'; @@ -8,41 +10,32 @@ @mixin color($config-or-theme) { $config: theming.get-color-config($config-or-theme); @include mdc-helpers.mat-using-mdc-theme($config) { + $is-dark: map.get($config, is-dark); + $on-surface: mdc-theme-color.prop-value(on-surface); + $disabled-color: rgba($on-surface, if($is-dark, 0.5, 0.38)); + .mat-mdc-icon-button { - @include mdc-ripple-theme.states( - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); + @include button-theme-private.ripple-theme-styles($config, false); &.mat-primary { - @include mdc-ripple-theme.states-base-color(primary, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include mdc-icon-button.ink-color(primary, $query: mdc-helpers.$mat-theme-styles-query); - @include button-theme-private.ripple-ink-color(primary); + @include mdc-icon-button-theme.theme((icon-color: mdc-theme-color.prop-value(primary))); } &.mat-accent { - @include mdc-ripple-theme.states-base-color(secondary, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include mdc-icon-button.ink-color(secondary, $query: mdc-helpers.$mat-theme-styles-query); - @include button-theme-private.ripple-ink-color(secondary); + @include mdc-icon-button-theme.theme((icon-color: mdc-theme-color.prop-value(secondary))); } &.mat-warn { - @include mdc-ripple-theme.states-base-color(error, - $query: mdc-helpers.$mat-theme-styles-query, - $ripple-target: button-theme-private.$button-state-target); - @include mdc-icon-button.ink-color(error, $query: mdc-helpers.$mat-theme-styles-query); - @include button-theme-private.ripple-ink-color(error); + @include mdc-icon-button-theme.theme((icon-color: (mdc-theme-color.prop-value(error)))); } @include button-theme-private.apply-disabled-style() { - @include button-theme-private.apply-disabled-color(); + @include mdc-icon-button-theme.theme(( + icon-color: $disabled-color, + disabled-icon-color: $disabled-color, + )); } } - - @include mdc-icon-button.without-ripple($query: mdc-helpers.$mat-theme-styles-query); } } diff --git a/src/material-experimental/mdc-button/button-base.ts b/src/material-experimental/mdc-button/button-base.ts index f20cd6bec6dc..9d6806a1de71 100644 --- a/src/material-experimental/mdc-button/button-base.ts +++ b/src/material-experimental/mdc-button/button-base.ts @@ -6,9 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ -import {BooleanInput} from '@angular/cdk/coercion'; import {Platform} from '@angular/cdk/platform'; -import {Directive, ElementRef, HostListener, NgZone, ViewChild} from '@angular/core'; +import {Directive, ElementRef, NgZone, OnDestroy, OnInit, ViewChild} from '@angular/core'; import { CanColor, CanDisable, @@ -86,12 +85,12 @@ export class MatButtonBase extends _MatButtonMixin implements CanDisable, CanColor, CanDisableRipple { - /** Whether the ripple is centered on the button. */ - _isRippleCentered = false; - /** Whether this button is a FAB. Used to apply the correct class on the ripple. */ _isFab = false; + /** Whether this button is an icon button. Used to apply the correct class on the ripple. */ + _isIconButton = false; + /** Reference to the MatRipple instance of the button. */ @ViewChild(MatRipple) ripple: MatRipple; @@ -129,9 +128,6 @@ export class MatButtonBase _isRippleDisabled() { return this.disableRipple || this.disabled; } - - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_disableRipple: BooleanInput; } /** Shared inputs by buttons using the `` tag */ @@ -160,24 +156,28 @@ export const MAT_ANCHOR_HOST = { * Anchor button base. */ @Directive() -export class MatAnchorBase extends MatButtonBase { +export class MatAnchorBase extends MatButtonBase implements OnInit, OnDestroy { tabIndex: number; constructor(elementRef: ElementRef, platform: Platform, ngZone: NgZone, animationMode?: string) { super(elementRef, platform, ngZone, animationMode); } - // We have to use a `HostListener` here in order to support both Ivy and ViewEngine. - // In Ivy the `host` bindings will be merged when this class is extended, whereas in - // ViewEngine they're overwritten. - // TODO(mmalerba): we move this back into `host` once Ivy is turned on by default. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('click', ['$event']) - _haltDisabledEvents(event: Event) { + ngOnInit(): void { + this._ngZone.runOutsideAngular(() => { + this._elementRef.nativeElement.addEventListener('click', this._haltDisabledEvents); + }); + } + + ngOnDestroy(): void { + this._elementRef.nativeElement.removeEventListener('click', this._haltDisabledEvents); + } + + _haltDisabledEvents = (event: Event): void => { // A disabled button shouldn't apply any actions if (this.disabled) { event.preventDefault(); event.stopImmediatePropagation(); } - } + }; } diff --git a/src/material-experimental/mdc-button/button.html b/src/material-experimental/mdc-button/button.html index acca8bffd4c9..d8644898e680 100644 --- a/src/material-experimental/mdc-button/button.html +++ b/src/material-experimental/mdc-button/button.html @@ -1,6 +1,8 @@ + class="mat-mdc-button-persistent-ripple" + [class.mdc-button__ripple]="!_isFab && !_isIconButton" + [class.mdc-fab__ripple]="_isFab" + [class.mdc-icon-button__ripple]="_isIconButton"> @@ -18,7 +20,7 @@ diff --git a/src/material-experimental/mdc-button/button.scss b/src/material-experimental/mdc-button/button.scss index 72c072e85aa0..04972576ee79 100644 --- a/src/material-experimental/mdc-button/button.scss +++ b/src/material-experimental/mdc-button/button.scss @@ -1,10 +1,55 @@ +@use 'sass:map'; @use '@material/button/button' as mdc-button; +@use '@material/button/button-base' as mdc-button-base; @use '@material/button/variables' as mdc-button-variables; +@use '@material/button/button-text-theme' as mdc-button-text-theme; +@use '@material/button/button-filled-theme' as mdc-button-filled-theme; +@use '@material/button/button-protected-theme' as mdc-button-protected-theme; +@use '@material/button/button-outlined-theme' as mdc-button-outlined-theme; @use '../../material/core/style/private'; @use '../mdc-helpers/mdc-helpers'; @use 'button-base'; -@include mdc-button.without-ripple($query: mdc-helpers.$mat-base-styles-query); +@include mdc-helpers.disable-fallback-declarations { + @include mdc-button.static-styles-without-ripple($query: mdc-helpers.$mat-base-styles-query); + + // Keys to exclude from the MDC theme config, allowing us to drop styles we don't need. + $override-keys: button-base.mat-private-button-remove-ripple(( + label-text-font: null, + label-text-size: null, + label-text-tracking: null, + label-text-transform: null, + label-text-weight: null, + with-icon-icon-size: null, + label-text-color: inherit, + )); + + // Note that we don't include a feature query, because this mixins declare + // all the "slots" for CSS variables that will be defined in the theme. + .mat-mdc-button { + @include mdc-button-text-theme.theme-styles( + map.merge(mdc-button-text-theme.$light-theme, $override-keys)); + } + + .mat-mdc-unelevated-button { + @include mdc-button-filled-theme.theme-styles( + map.merge(map.merge(mdc-button-filled-theme.$light-theme, $override-keys), ( + container-color: transparent, + ))); + } + + .mat-mdc-raised-button { + @include mdc-button-protected-theme.theme-styles( + map.merge(map.merge(mdc-button-protected-theme.$light-theme, $override-keys), ( + container-color: transparent, + ))); + } + + .mat-mdc-outlined-button { + @include mdc-button-outlined-theme.theme-styles( + map.merge(mdc-button-outlined-theme.$light-theme, $override-keys)); + } +} .mat-mdc-button, .mat-mdc-unelevated-button, @@ -24,10 +69,10 @@ // mixins will style the icons appropriately. .mat-mdc-button { .mat-icon { - @include mdc-button.icon(); + @include mdc-button-base.icon(); } .mdc-button__label + .mat-icon { - @include mdc-button.icon-trailing(); + @include mdc-button-base.icon-trailing(); } } @@ -36,12 +81,12 @@ .mat-mdc-outlined-button { // Icons inside contained buttons have different styles due to increased button padding .mat-icon { - @include mdc-button.icon(); - @include mdc-button.icon-contained(); + @include mdc-button-base.icon(); + @include mdc-button-base.icon-contained(); } .mdc-button__label + .mat-icon { - @include mdc-button.icon-contained-trailing(); + @include mdc-button-base.icon-contained-trailing(); } } diff --git a/src/material-experimental/mdc-button/button.spec.ts b/src/material-experimental/mdc-button/button.spec.ts index 4eccefdff4d6..b19b59c8b9da 100644 --- a/src/material-experimental/mdc-button/button.spec.ts +++ b/src/material-experimental/mdc-button/button.spec.ts @@ -1,8 +1,9 @@ import {waitForAsync, ComponentFixture, TestBed} from '@angular/core/testing'; -import {Component, DebugElement} from '@angular/core'; +import {ApplicationRef, Component, DebugElement} from '@angular/core'; import {By} from '@angular/platform-browser'; import {MatButtonModule, MatButton, MatFabDefaultOptions, MAT_FAB_DEFAULT_OPTIONS} from './index'; import {MatRipple, ThemePalette} from '@angular/material-experimental/mdc-core'; +import {createMouseEvent, dispatchEvent} from '@angular/cdk/testing/private'; describe('MDC-based MatButton', () => { beforeEach( @@ -229,6 +230,28 @@ describe('MDC-based MatButton', () => { .withContext('Expected custom tabindex to be overwritten when disabled.') .toBe('-1'); }); + + describe('change detection behavior', () => { + it('should not run change detection for disabled anchor but should prevent the default behavior and stop event propagation', () => { + const appRef = TestBed.inject(ApplicationRef); + const fixture = TestBed.createComponent(TestApp); + fixture.componentInstance.isDisabled = true; + fixture.detectChanges(); + const anchorElement = fixture.debugElement.query(By.css('a'))!.nativeElement; + + spyOn(appRef, 'tick'); + + const event = createMouseEvent('click'); + spyOn(event, 'preventDefault').and.callThrough(); + spyOn(event, 'stopImmediatePropagation').and.callThrough(); + + dispatchEvent(anchorElement, event); + + expect(appRef.tick).not.toHaveBeenCalled(); + expect(event.preventDefault).toHaveBeenCalled(); + expect(event.stopImmediatePropagation).toHaveBeenCalled(); + }); + }); }); // Ripple tests. diff --git a/src/material-experimental/mdc-button/fab.scss b/src/material-experimental/mdc-button/fab.scss index b93fe1dbcdf5..cba815029ef9 100644 --- a/src/material-experimental/mdc-button/fab.scss +++ b/src/material-experimental/mdc-button/fab.scss @@ -1,16 +1,49 @@ @use '@material/fab' as mdc-fab; +@use '@material/elevation/elevation-theme' as mdc-elevation-theme; @use '../../material/core/style/private'; @use '../mdc-helpers/mdc-helpers'; -@use 'button-base'; +@use './button-base'; -@include mdc-fab.without-ripple($query: mdc-helpers.$mat-base-styles-query); +@include mdc-helpers.disable-fallback-declarations { + @include mdc-fab.without-ripple($query: mdc-helpers.$mat-base-styles-query); +} .mat-mdc-fab, .mat-mdc-mini-fab { @include button-base.mat-private-button-interactive(); - @include button-base.mat-private-button-disabled(); @include button-base.mat-private-button-touch-target(true); @include private.private-animation-noop(); + @include mdc-helpers.disable-fallback-declarations { + // Theme configuration is copied over from MDC, because it isn't exported + @include mdc-fab.theme-styles(button-base.mat-private-button-remove-ripple(( + container-color: transparent, + container-shape: mdc-fab.$shape-radius, + icon-color: inherit, + ))); + + // TODO(crisbeto): the elevation can be controlled using `container-elevation` in `theme-styles` + // however when it is passed in, MDC throws an error that `container-shadow-color` isn't + // passed in. When `container-shadow-color` is passed in, MDC throws another error, because + // the produced value isn't valid CSS. Eventually we should switch to it once it's fixed. + @include mdc-elevation-theme.elevation(6); + + &:hover, &:focus { + @include mdc-elevation-theme.elevation(8); + } + + &:active, &:focus:active { + @include mdc-elevation-theme.elevation(12); + } + + @include button-base.mat-private-button-disabled { + @include mdc-elevation-theme.elevation(0); + } + } + + // TODO(crisbeto): `theme-styles` doesn't allow for the color to be controlled. Define a custom + // variable for now so we have something to target. + color: var(--mat-mdc-fab-color, inherit); + // Prevent the button from shrinking since it's always supposed to be a circle. flex-shrink: 0; diff --git a/src/material-experimental/mdc-button/fab.ts b/src/material-experimental/mdc-button/fab.ts index bfd96b75232c..70a084dfae0f 100644 --- a/src/material-experimental/mdc-button/fab.ts +++ b/src/material-experimental/mdc-button/fab.ts @@ -66,20 +66,11 @@ const defaults = MAT_FAB_DEFAULT_OPTIONS_FACTORY(); selector: `button[mat-fab]`, templateUrl: 'button.html', styleUrls: ['fab.css'], - // TODO: change to MAT_BUTTON_INPUTS/MAT_BUTTON_HOST with spread after ViewEngine is deprecated - inputs: ['disabled', 'disableRipple', 'color', 'extended'], + inputs: [...MAT_BUTTON_INPUTS, 'extended'], host: { + ...MAT_BUTTON_HOST, '[class.mdc-fab--extended]': 'extended', '[class.mat-mdc-extended-fab]': 'extended', - '[attr.disabled]': 'disabled || null', - '[class._mat-animation-noopable]': '_animationMode === "NoopAnimations"', - // MDC automatically applies the primary theme color to the button, but we want to support - // an unthemed version. If color is undefined, apply a CSS class that makes it easy to - // select and style this "theme". - '[class.mat-unthemed]': '!color', - // Add a class that applies to all buttons. This makes it easier to target if somebody - // wants to target all Material buttons. - '[class.mat-mdc-button-base]': 'true', }, exportAs: 'matButton', encapsulation: ViewEncapsulation.None, @@ -88,13 +79,13 @@ const defaults = MAT_FAB_DEFAULT_OPTIONS_FACTORY(); export class MatFabButton extends MatButtonBase { override _isFab = true; - private _extended: boolean; get extended(): boolean { return this._extended; } - set extended(value: boolean) { + set extended(value: BooleanInput) { this._extended = coerceBooleanProperty(value); } + private _extended: boolean; constructor( elementRef: ElementRef, @@ -107,8 +98,6 @@ export class MatFabButton extends MatButtonBase { this._options = this._options || defaults; this.color = this.defaultColor = this._options!.color || defaults.color; } - - static ngAcceptInputType_extended: BooleanInput; } /** @@ -153,26 +142,11 @@ export class MatMiniFabButton extends MatButtonBase { selector: `a[mat-fab]`, templateUrl: 'button.html', styleUrls: ['fab.css'], - // TODO: change to MAT_ANCHOR_INPUTS/MAT_ANCHOR_HOST with spread after ViewEngine is deprecated - inputs: ['disabled', 'disableRipple', 'color', 'tabIndex', 'extended'], + inputs: [...MAT_ANCHOR_INPUTS, 'extended'], host: { + ...MAT_ANCHOR_HOST, '[class.mdc-fab--extended]': 'extended', '[class.mat-mdc-extended-fab]': 'extended', - '[attr.disabled]': 'disabled || null', - '[class._mat-animation-noopable]': '_animationMode === "NoopAnimations"', - - // Note that we ignore the user-specified tabindex when it's disabled for - // consistency with the `mat-button` applied on native buttons where even - // though they have an index, they're not tabbable. - '[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)', - '[attr.aria-disabled]': 'disabled.toString()', - // MDC automatically applies the primary theme color to the button, but we want to support - // an unthemed version. If color is undefined, apply a CSS class that makes it easy to - // select and style this "theme". - '[class.mat-unthemed]': '!color', - // Add a class that applies to all buttons. This makes it easier to target if somebody - // wants to target all Material buttons. - '[class.mat-mdc-button-base]': 'true', }, exportAs: 'matButton, matAnchor', encapsulation: ViewEncapsulation.None, @@ -181,13 +155,13 @@ export class MatMiniFabButton extends MatButtonBase { export class MatFabAnchor extends MatAnchor { override _isFab = true; - private _extended: boolean; get extended(): boolean { return this._extended; } - set extended(value: boolean) { + set extended(value: BooleanInput) { this._extended = coerceBooleanProperty(value); } + private _extended: boolean; constructor( elementRef: ElementRef, @@ -200,8 +174,6 @@ export class MatFabAnchor extends MatAnchor { this._options = this._options || defaults; this.color = this.defaultColor = this._options!.color || defaults.color; } - - static ngAcceptInputType_extended: BooleanInput; } /** diff --git a/src/material-experimental/mdc-button/icon-button.scss b/src/material-experimental/mdc-button/icon-button.scss index 379c22de9356..e94bffff67c7 100644 --- a/src/material-experimental/mdc-button/icon-button.scss +++ b/src/material-experimental/mdc-button/icon-button.scss @@ -1,15 +1,27 @@ +@use 'sass:map'; @use '@material/icon-button/icon-button' as mdc-icon-button; +@use '@material/icon-button/icon-button-theme' as mdc-icon-button-theme; @use '../../material/core/style/private'; @use '../mdc-helpers/mdc-helpers'; @use 'button-base'; -@include mdc-icon-button.without-ripple( - $query: mdc-helpers.$mat-base-styles-query -); +@include mdc-helpers.disable-fallback-declarations { + @include mdc-icon-button.without-ripple($query: mdc-helpers.$mat-base-styles-query); +} .mat-mdc-icon-button { - @include button-base.mat-private-button-interactive() { - border-radius: 50%; + @include mdc-helpers.disable-fallback-declarations { + $theme-overrides: button-base.mat-private-button-remove-ripple(( + icon-color: inherit, + // We don't change the color on focus/hover so exclude + // these styles both to reduce bundle size and specificity. + focus-icon-color: null, + hover-icon-color: null, + pressed-icon-color: null, + )); + + @include mdc-icon-button-theme.theme-styles( + map.merge(mdc-icon-button-theme.$light-theme, $theme-overrides)); } // Border radius is inherited by ripple to know its shape. Set to 50% so the ripple is round. @@ -18,10 +30,20 @@ // Prevent the button from shrinking since it's always supposed to be a circle. flex-shrink: 0; - @include button-base.mat-private-button-disabled(); + @include button-base.mat-private-button-disabled() { + // The color is already dimmed when the button is disabled. Restore the opacity both to + // help with the color contrast and to align with what we had before switching to the new API. + opacity: 1; + }; + + @include button-base.mat-private-button-interactive(); @include button-base.mat-private-button-touch-target(true); @include private.private-animation-noop(); + .mat-mdc-button-persistent-ripple { + border-radius: 50%; + } + // MDC adds some styles to icon buttons that conflict with some of our focus indicator styles // and don't actually do anything. This undoes those conflicting styles. &.mat-unthemed, diff --git a/src/material-experimental/mdc-button/icon-button.ts b/src/material-experimental/mdc-button/icon-button.ts index d9bf4e8aae6e..548875a196b8 100644 --- a/src/material-experimental/mdc-button/icon-button.ts +++ b/src/material-experimental/mdc-button/icon-button.ts @@ -43,8 +43,7 @@ import { changeDetection: ChangeDetectionStrategy.OnPush, }) export class MatIconButton extends MatButtonBase { - // Set the ripple to be centered for icon buttons - override _isRippleCentered = true; + override _isIconButton = true; constructor( elementRef: ElementRef, @@ -72,8 +71,7 @@ export class MatIconButton extends MatButtonBase { changeDetection: ChangeDetectionStrategy.OnPush, }) export class MatIconAnchor extends MatAnchorBase { - // Set the ripple to be centered for icon buttons - override _isRippleCentered = true; + override _isIconButton = true; constructor( elementRef: ElementRef, diff --git a/src/material-experimental/mdc-card/card.scss b/src/material-experimental/mdc-card/card.scss index d7b438fac737..163ad3fe09e3 100644 --- a/src/material-experimental/mdc-card/card.scss +++ b/src/material-experimental/mdc-card/card.scss @@ -10,8 +10,10 @@ $mat-card-header-size: 40px !default; // Default padding for text content within a card. $mat-card-default-padding: 16px !default; -// Include all MDC card styles except for color and typography. -@include mdc-card.without-ripple($query: mdc-helpers.$mat-base-styles-query); +@include mdc-helpers.disable-fallback-declarations { + // Include all MDC card styles except for color and typography. + @include mdc-card.without-ripple($query: mdc-helpers.$mat-base-styles-query); +} // Title text and subtitles text within a card. MDC doesn't have pre-made title sections for cards. // Maintained here for backwards compatibility with the previous generation MatCard. diff --git a/src/material-experimental/mdc-checkbox/BUILD.bazel b/src/material-experimental/mdc-checkbox/BUILD.bazel index 2a3a07b54bbd..c5fa71155f34 100644 --- a/src/material-experimental/mdc-checkbox/BUILD.bazel +++ b/src/material-experimental/mdc-checkbox/BUILD.bazel @@ -25,7 +25,6 @@ ng_module( "//src/material-experimental/mdc-core", "//src/material/checkbox", "@npm//@angular/animations", - "@npm//@angular/common", "@npm//@angular/core", "@npm//@angular/forms", "@npm//@material/checkbox", @@ -48,6 +47,7 @@ sass_binary( "external/npm/node_modules", ], deps = [ + ":mdc_checkbox_scss_lib", "//src/material-experimental/mdc-helpers:mdc_helpers_scss_lib", "//src/material-experimental/mdc-helpers:mdc_scss_deps_lib", "//src/material/core:core_scss_lib", diff --git a/src/material-experimental/mdc-checkbox/_checkbox-private.scss b/src/material-experimental/mdc-checkbox/_checkbox-private.scss new file mode 100644 index 000000000000..0a46f6a2a62c --- /dev/null +++ b/src/material-experimental/mdc-checkbox/_checkbox-private.scss @@ -0,0 +1,46 @@ +@use 'sass:map'; +@use 'sass:color'; +@use '@material/checkbox/checkbox-theme' as mdc-checkbox-theme; +@use '@material/theme/theme-color' as mdc-theme-color; + +// Configuration used to define the theme-related CSS variables. +$private-checkbox-theme-config: map.merge(mdc-checkbox-theme.$light-theme, ( + // Exclude all of the ripple-related styles. + selected-focus-state-layer-color: null, + selected-focus-state-layer-opacity: null, + selected-hover-state-layer-color: null, + selected-hover-state-layer-opacity: null, + selected-pressed-state-layer-color: null, + selected-pressed-state-layer-opacity: null, + unselected-focus-state-layer-color: null, + unselected-focus-state-layer-opacity: null, + unselected-hover-state-layer-color: null, + unselected-hover-state-layer-opacity: null, + unselected-pressed-state-layer-color: null, + unselected-pressed-state-layer-opacity: null, +)); + +// Mixin that includes the checkbox theme styles with a given palette. +// By default, the MDC checkbox always uses the `secondary` palette. +@mixin private-checkbox-styles-with-color($color, $mdc-color) { + $on-surface: mdc-theme-color.prop-value(on-surface); + $border-color: rgba($on-surface, color.opacity(mdc-checkbox-theme.$border-color)); + $disabled-color: rgba($on-surface, color.opacity(mdc-checkbox-theme.$disabled-color)); + + @include mdc-checkbox-theme.theme(( + selected-checkmark-color: mdc-theme-color.prop-value(on-#{$mdc-color}), + + selected-focus-icon-color: $color, + selected-hover-icon-color: $color, + selected-icon-color: $color, + selected-pressed-icon-color: $color, + unselected-focus-icon-color: $color, + unselected-hover-icon-color: $color, + + disabled-selected-icon-color: $disabled-color, + disabled-unselected-icon-color: $disabled-color, + + unselected-icon-color: $border-color, + unselected-pressed-icon-color: $border-color, + )); +} diff --git a/src/material-experimental/mdc-checkbox/_checkbox-theme.scss b/src/material-experimental/mdc-checkbox/_checkbox-theme.scss index b07b57cd4eb5..d520043ca765 100644 --- a/src/material-experimental/mdc-checkbox/_checkbox-theme.scss +++ b/src/material-experimental/mdc-checkbox/_checkbox-theme.scss @@ -1,44 +1,24 @@ @use '@material/checkbox/checkbox' as mdc-checkbox; @use '@material/checkbox/checkbox-theme' as mdc-checkbox-theme; -@use '@material/ripple/ripple-theme' as mdc-ripple-theme; @use '@material/form-field' as mdc-form-field; @use '@material/theme/theme-color' as mdc-theme-color; @use '@material/theme/theme'; @use 'sass:map'; +@use 'sass:color'; @use '../mdc-helpers/mdc-helpers'; @use '../../material/core/typography/typography'; @use '../../material/core/theming/theming'; @use '../../material/core/ripple/ripple-theme'; - - -// Mixin that includes the checkbox theme styles with a given palette. -// By default, the MDC checkbox always uses the `secondary` palette. -@mixin private-checkbox-styles-with-color($color) { - @include mdc-checkbox-theme.theme-deprecated( - ( - density-scale: null, - checkmark-color: mdc-theme-color.prop-value(on-#{$color}), - container-checked-color: $color, - container-checked-hover-color: null, - container-disabled-color: rgba(mdc-theme-color.prop-value(on-surface), 0.38), - outline-color: rgba(mdc-theme-color.prop-value(on-surface), 0.54), - outline-hover-color: null, - ripple-color: mdc-theme-color.prop-value(on-surface), - ripple-opacity: mdc-ripple-theme.$dark-ink-opacities, - ripple-checked-color: $color, - ripple-checked-opacity: mdc-ripple-theme.$dark-ink-opacities, - ) - ); -} +@use './checkbox-private'; // Apply ripple colors to the MatRipple element and the MDC ripple element when the // checkbox is selected. -@mixin _selected-ripple-colors($theme, $mdcColor) { +@mixin _selected-ripple-colors($theme, $mdc-color) { .mdc-checkbox--selected ~ { .mat-mdc-checkbox-ripple { @include ripple-theme.color(( foreground: ( - base: mdc-theme-color.prop-value($mdcColor) + base: mdc-theme-color.prop-value($mdc-color) ), )); } @@ -55,23 +35,8 @@ $accent: theming.get-color-from-palette(map.get($config, accent)); $warn: theming.get-color-from-palette(map.get($config, warn)); - // Save original values of MDC global variables. We need to save these so we can restore the - // variables to their original values and prevent unintended side effects from using this mixin. - $orig-border-color: mdc-checkbox-theme.$border-color; - $orig-disabled-color: mdc-checkbox-theme.$disabled-color; - @include mdc-helpers.mat-using-mdc-theme($config) { - mdc-checkbox-theme.$border-color: rgba( - mdc-theme-color.prop-value(on-surface), - 0.54 - ); - mdc-checkbox-theme.$disabled-color: rgba( - mdc-theme-color.prop-value(on-surface), - 0.26 - ); - .mat-mdc-checkbox { - @include private-checkbox-styles-with-color(primary); @include mdc-form-field.core-styles($query: mdc-helpers.$mat-theme-styles-query); @include ripple-theme.color(( foreground: ( @@ -87,25 +52,21 @@ // class for accent and warn style, and applying the appropriate overrides below. Since we // don't use MDC's ripple, we also need to set the color for our replacement ripple. &.mat-primary { - @include private-checkbox-styles-with-color(primary); + @include checkbox-private.private-checkbox-styles-with-color($primary, primary); @include _selected-ripple-colors($primary, primary); } &.mat-accent { - @include private-checkbox-styles-with-color(secondary); + @include checkbox-private.private-checkbox-styles-with-color($accent, secondary); @include _selected-ripple-colors($accent, secondary); } &.mat-warn { - @include private-checkbox-styles-with-color(error); + @include checkbox-private.private-checkbox-styles-with-color($warn, error); @include _selected-ripple-colors($warn, error); } } } - - // Restore original values of MDC global variables. - mdc-checkbox-theme.$border-color: $orig-border-color; - mdc-checkbox-theme.$disabled-color: $orig-disabled-color; } @mixin typography($config-or-theme) { @@ -119,16 +80,19 @@ @mixin density($config-or-theme) { $density-scale: theming.get-density-config($config-or-theme); - .mat-mdc-checkbox .mdc-checkbox { - @include mdc-checkbox-theme.density( - $density-scale, - $query: mdc-helpers.$mat-base-styles-query - ); - } - @if ($density-scale == -2 or $density-scale == 'minimum') { - .mat-mdc-checkbox-touch-target { - display: none; + @include mdc-helpers.disable-fallback-declarations { + .mat-mdc-checkbox .mdc-checkbox { + @include mdc-checkbox-theme.density( + $density-scale, + $query: mdc-helpers.$mat-base-styles-query + ); + } + + @if ($density-scale == -2 or $density-scale == 'minimum') { + .mat-mdc-checkbox-touch-target { + display: none; + } } } } diff --git a/src/material-experimental/mdc-checkbox/checkbox.html b/src/material-experimental/mdc-checkbox/checkbox.html index d435598c4b85..7e28c481479f 100644 --- a/src/material-experimental/mdc-checkbox/checkbox.html +++ b/src/material-experimental/mdc-checkbox/checkbox.html @@ -5,7 +5,7 @@
{ })); }); - describe('aria-label', () => { - let checkboxDebugElement: DebugElement; - let checkboxNativeElement: HTMLElement; - let inputElement: HTMLInputElement; - + describe('aria handling', () => { it('should use the provided aria-label', fakeAsync(() => { fixture = createComponent(CheckboxWithAriaLabel); - checkboxDebugElement = fixture.debugElement.query(By.directive(MatCheckbox))!; - checkboxNativeElement = checkboxDebugElement.nativeElement; - inputElement = checkboxNativeElement.querySelector('input'); + const checkboxDebugElement = fixture.debugElement.query(By.directive(MatCheckbox))!; + const checkboxNativeElement = checkboxDebugElement.nativeElement; + const inputElement = checkboxNativeElement.querySelector('input'); fixture.detectChanges(); expect(inputElement.getAttribute('aria-label')).toBe('Super effective'); @@ -662,18 +658,12 @@ describe('MDC-based MatCheckbox', () => { expect(fixture.nativeElement.querySelector('input').hasAttribute('aria-label')).toBe(false); })); - }); - - describe('with provided aria-labelledby ', () => { - let checkboxDebugElement: DebugElement; - let checkboxNativeElement: HTMLElement; - let inputElement: HTMLInputElement; it('should use the provided aria-labelledby', fakeAsync(() => { fixture = createComponent(CheckboxWithAriaLabelledby); - checkboxDebugElement = fixture.debugElement.query(By.directive(MatCheckbox))!; - checkboxNativeElement = checkboxDebugElement.nativeElement; - inputElement = checkboxNativeElement.querySelector('input'); + const checkboxDebugElement = fixture.debugElement.query(By.directive(MatCheckbox))!; + const checkboxNativeElement = checkboxDebugElement.nativeElement; + const inputElement = checkboxNativeElement.querySelector('input'); fixture.detectChanges(); expect(inputElement.getAttribute('aria-labelledby')).toBe('some-id'); @@ -681,13 +671,22 @@ describe('MDC-based MatCheckbox', () => { it('should not assign aria-labelledby if none is provided', fakeAsync(() => { fixture = createComponent(SingleCheckbox); - checkboxDebugElement = fixture.debugElement.query(By.directive(MatCheckbox))!; - checkboxNativeElement = checkboxDebugElement.nativeElement; - inputElement = checkboxNativeElement.querySelector('input'); + const checkboxDebugElement = fixture.debugElement.query(By.directive(MatCheckbox))!; + const checkboxNativeElement = checkboxDebugElement.nativeElement; + const inputElement = checkboxNativeElement.querySelector('input'); fixture.detectChanges(); expect(inputElement.getAttribute('aria-labelledby')).toBe(null); })); + + it('should clear the static aria attributes from the host node', () => { + fixture = createComponent(CheckboxWithStaticAriaAttributes); + const checkbox = fixture.debugElement.query(By.directive(MatCheckbox))!.nativeElement; + fixture.detectChanges(); + + expect(checkbox.hasAttribute('aria')).toBe(false); + expect(checkbox.hasAttribute('aria-labelledby')).toBe(false); + }); }); describe('with provided aria-describedby ', () => { @@ -1147,3 +1146,8 @@ class CheckboxWithoutLabel { /** Test component with the native tabindex attribute. */ @Component({template: ``}) class CheckboxWithTabindexAttr {} + +@Component({ + template: ``, +}) +class CheckboxWithStaticAriaAttributes {} diff --git a/src/material-experimental/mdc-checkbox/checkbox.ts b/src/material-experimental/mdc-checkbox/checkbox.ts index b536779399b7..c7ff04ad77c7 100644 --- a/src/material-experimental/mdc-checkbox/checkbox.ts +++ b/src/material-experimental/mdc-checkbox/checkbox.ts @@ -77,9 +77,14 @@ const _MatCheckboxBase = mixinColor( host: { 'class': 'mat-mdc-checkbox', '[attr.tabindex]': 'null', + '[attr.aria-label]': 'null', + '[attr.aria-labelledby]': 'null', '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`, '[class.mdc-checkbox--disabled]': 'disabled', '[id]': 'id', + // Add classes that users can use to more easily target disabled or checked checkboxes. + '[class.mat-mdc-checkbox-disabled]': 'disabled', + '[class.mat-mdc-checkbox-checked]': 'checked', }, providers: [MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR], exportAs: 'matCheckbox', @@ -124,8 +129,9 @@ export class MatCheckbox get checked(): boolean { return this._checked; } - set checked(checked) { + set checked(checked: BooleanInput) { this._checked = coerceBooleanProperty(checked); + this._changeDetectorRef.markForCheck(); } private _checked = false; @@ -139,7 +145,7 @@ export class MatCheckbox get indeterminate(): boolean { return this._indeterminate; } - set indeterminate(indeterminate) { + set indeterminate(indeterminate: BooleanInput) { this._indeterminate = coerceBooleanProperty(indeterminate); this._syncIndeterminate(this._indeterminate); } @@ -150,7 +156,7 @@ export class MatCheckbox get required(): boolean { return this._required; } - set required(required) { + set required(required: BooleanInput) { this._required = coerceBooleanProperty(required); } private _required = false; @@ -160,7 +166,7 @@ export class MatCheckbox get disableRipple(): boolean { return this._disableRipple; } - set disableRipple(disableRipple: boolean) { + set disableRipple(disableRipple: BooleanInput) { this._disableRipple = coerceBooleanProperty(disableRipple); } private _disableRipple = false; @@ -192,9 +198,6 @@ export class MatCheckbox /** The `MDCCheckboxFoundation` instance for this checkbox. */ _checkboxFoundation: MDCCheckboxFoundation; - /** The set of classes that should be applied to the native input. */ - _classes: {[key: string]: boolean} = {'mdc-checkbox__native-control': true}; - /** ControlValueAccessor onChange */ private _cvaOnChange = (_: boolean) => {}; @@ -211,8 +214,8 @@ export class MatCheckbox /** The `MDCCheckboxAdapter` instance for this checkbox. */ private _checkboxAdapter: MDCCheckboxAdapter = { - addClass: className => this._setClass(className, true), - removeClass: className => this._setClass(className, false), + addClass: className => this._nativeCheckbox.nativeElement.classList.add(className), + removeClass: className => this._nativeCheckbox.nativeElement.classList.remove(className), forceLayout: () => this._checkbox.nativeElement.offsetWidth, hasNativeControl: () => !!this._nativeCheckbox, isAttachedToDOM: () => !!this._checkbox.nativeElement.parentNode, @@ -371,12 +374,6 @@ export class MatCheckbox return this.indeterminate ? 'mixed' : 'false'; } - /** Sets whether the given CSS class should be applied to the native input. */ - private _setClass(cssClass: string, active: boolean) { - this._classes[cssClass] = active; - this._changeDetectorRef.markForCheck(); - } - /** * Syncs the indeterminate value with the checkbox DOM node. * @@ -391,10 +388,4 @@ export class MatCheckbox nativeCheckbox.nativeElement.indeterminate = value; } } - - static ngAcceptInputType_checked: BooleanInput; - static ngAcceptInputType_indeterminate: BooleanInput; - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_required: BooleanInput; - static ngAcceptInputType_disableRipple: BooleanInput; } diff --git a/src/material-experimental/mdc-checkbox/module.ts b/src/material-experimental/mdc-checkbox/module.ts index 19685141b76a..8682b40d169c 100644 --- a/src/material-experimental/mdc-checkbox/module.ts +++ b/src/material-experimental/mdc-checkbox/module.ts @@ -6,14 +6,13 @@ * found in the LICENSE file at https://angular.io/license */ -import {CommonModule} from '@angular/common'; import {NgModule} from '@angular/core'; import {_MatCheckboxRequiredValidatorModule} from '@angular/material/checkbox'; import {MatCommonModule, MatRippleModule} from '@angular/material-experimental/mdc-core'; import {MatCheckbox} from './checkbox'; @NgModule({ - imports: [MatCommonModule, MatRippleModule, CommonModule, _MatCheckboxRequiredValidatorModule], + imports: [MatCommonModule, MatRippleModule, _MatCheckboxRequiredValidatorModule], exports: [MatCheckbox, MatCommonModule, _MatCheckboxRequiredValidatorModule], declarations: [MatCheckbox], }) diff --git a/src/material-experimental/mdc-chips/BUILD.bazel b/src/material-experimental/mdc-chips/BUILD.bazel index 89bf3fd154be..02ae91477dea 100644 --- a/src/material-experimental/mdc-chips/BUILD.bazel +++ b/src/material-experimental/mdc-chips/BUILD.bazel @@ -17,7 +17,10 @@ ng_module( "**/*.spec.ts", ], ), - assets = [":chips_scss"] + glob(["**/*.html"]), + assets = [ + ":chip_scss", + ":chip_set_scss", + ] + glob(["**/*.html"]), deps = [ "//src:dev_mode_types", "//src/material-experimental/mdc-core", @@ -40,8 +43,21 @@ sass_library( ) sass_binary( - name = "chips_scss", - src = "chips.scss", + name = "chip_scss", + src = "chip.scss", + include_paths = [ + "external/npm/node_modules", + ], + deps = [ + "//src/material-experimental/mdc-helpers:mdc_helpers_scss_lib", + "//src/material-experimental/mdc-helpers:mdc_scss_deps_lib", + "//src/material/core:core_scss_lib", + ], +) + +sass_binary( + name = "chip_set_scss", + src = "chip-set.scss", include_paths = [ "external/npm/node_modules", ], diff --git a/src/material-experimental/mdc-chips/_chips-theme.scss b/src/material-experimental/mdc-chips/_chips-theme.scss index 73f54869d0f3..e4b6b9cd73c0 100644 --- a/src/material-experimental/mdc-chips/_chips-theme.scss +++ b/src/material-experimental/mdc-chips/_chips-theme.scss @@ -1,93 +1,93 @@ -@use '@material/chips/deprecated' as mdc-chips; +@use '@material/chips/chip' as mdc-chip; +@use '@material/chips/chip-theme' as mdc-chip-theme; +@use '@material/chips/chip-set' as mdc-chip-set; @use '@material/theme/theme-color' as mdc-theme-color; +@use '@material/theme/color-palette' as mdc-color-palette; @use 'sass:color'; @use 'sass:map'; @use '../mdc-helpers/mdc-helpers'; @use '../../material/core/typography/typography'; @use '../../material/core/theming/theming'; -@mixin _selected-color($color) { - @include mdc-chips.fill-color($color, $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-chips.ink-color(text-primary-on-dark, $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-chips.selected-ink-color-without-ripple_( - text-primary-on-dark, - $query: mdc-helpers.$mat-theme-styles-query - ); - @include mdc-chips.leading-icon-color(text-primary-on-dark, - $query: mdc-helpers.$mat-theme-styles-query); - @include mdc-chips.trailing-icon-color(text-primary-on-dark, - $query: mdc-helpers.$mat-theme-styles-query); +// Customizes the appearance of a chip. Note that ideally we would be doing this using the +// `theme-styles` mixin, however it has the following problems: +// 1. Some of MDC's base styles have **very** high specificity. E.g. setting the background of a +// non-selected, enabled chip uses a selector like `.chip:not(.selected):not(.disabled)` instead of +// just `.chip`. This specificity increase has a ripple effect over all other components that are +// built on top of ours, making overrides extremely difficult and brittle. +// 2. Including the individual mixins allows us to avoid a lot of unnecessary CSS (~35kb in the +// dev app theme). +@mixin _chip-variant($background, $foreground) { + @include mdc-chip-theme.container-color($background); + @include mdc-chip-theme.icon-color($foreground); + @include mdc-chip-theme.trailing-action-color($foreground); + @include mdc-chip-theme.checkmark-color($foreground); + @include mdc-chip-theme.text-label-color($foreground); + + // Technically the avatar is only supposed to have an image, but we also allow for icons. + // Set the color so the icons inherit the correct color. + .mat-mdc-chip-avatar { + color: $foreground; + } +} + +@mixin _colored-chip($palette) { + $background: theming.get-color-from-palette($palette); + $foreground: theming.get-color-from-palette($palette, default-contrast); + + &.mat-mdc-chip-selected, + &.mat-mdc-chip-highlighted { + @include _chip-variant($background, $foreground); + } } @mixin color($config-or-theme) { $config: theming.get-color-config($config-or-theme); - $primary: theming.get-color-from-palette(map.get($config, primary)); - $accent: theming.get-color-from-palette(map.get($config, accent)); - $warn: theming.get-color-from-palette(map.get($config, warn)); - $background: map.get($config, background); - $unselected-background: theming.get-color-from-palette($background, unselected-chip); - - // Save original values of MDC global variables. We need to save these so we can restore the - // variables to their original values and prevent unintended side effects from using this mixin. - $orig-mdc-chips-fill-color-default: mdc-chips.$fill-color-default; - $orig-mdc-chips-ink-color-default: mdc-chips.$ink-color-default; - $orig-mdc-chips-icon-color: mdc-chips.$icon-color; + $primary: map.get($config, primary); + $accent: map.get($config, accent); + $warn: map.get($config, warn); + $foreground: map.get($config, foreground); + $is-dark: map.get($config, is-dark); @include mdc-helpers.mat-using-mdc-theme($config) { - mdc-chips.$fill-color-default: - color.mix(mdc-theme-color.prop-value(on-surface), mdc-theme-color.prop-value(surface), 12%); - mdc-chips.$ink-color-default: rgba(mdc-theme-color.prop-value(on-surface), 0.87); - mdc-chips.$icon-color: mdc-theme-color.prop-value(on-surface); - - @include mdc-chips.set-core-styles($query: mdc-helpers.$mat-theme-styles-query); - @include mdc-chips.without-ripple($query: mdc-helpers.$mat-theme-styles-query); + .mat-mdc-standard-chip { + @include _chip-variant( + color.mix(mdc-theme-color.prop-value(on-surface), mdc-theme-color.prop-value(surface), 12%), + if($is-dark, mdc-color-palette.$grey-50, mdc-color-palette.$grey-900) + ); - .mat-mdc-chip { - @include mdc-chips.fill-color-accessible($unselected-background, - $query: mdc-helpers.$mat-theme-styles-query); - - // mdc-chip-fill-color-accessible includes mdc-chip-selected-ink-color which overrides the - // opacity so selected chips always show a ripple. - // Include the same mixins but use mdc-chip-selected-ink-color-without-ripple &.mat-primary { - &.mdc-chip--selected, &.mat-mdc-chip-highlighted { - @include _selected-color($primary); - } + @include _colored-chip($primary); } &.mat-accent { - &.mdc-chip--selected, &.mat-mdc-chip-highlighted { - @include _selected-color($accent); - } + @include _colored-chip($accent); } &.mat-warn { - &.mdc-chip--selected, &.mat-mdc-chip-highlighted { - @include _selected-color($warn); - } + @include _colored-chip($warn); } } } - // Restore original values of MDC global variables. - mdc-chips.$fill-color-default: $orig-mdc-chips-fill-color-default; - mdc-chips.$ink-color-default: $orig-mdc-chips-ink-color-default; - mdc-chips.$icon-color: $orig-mdc-chips-icon-color; + .mat-mdc-chip-focus-overlay { + background: map.get($foreground, base); + } } @mixin typography($config-or-theme) { $config: typography.private-typography-to-2018-config( theming.get-typography-config($config-or-theme)); - @include mdc-chips.set-core-styles($query: mdc-helpers.$mat-typography-styles-query); + @include mdc-chip-set.core-styles($query: mdc-helpers.$mat-typography-styles-query); @include mdc-helpers.mat-using-mdc-typography($config) { - @include mdc-chips.without-ripple($query: mdc-helpers.$mat-typography-styles-query); + @include mdc-chip.without-ripple-styles($query: mdc-helpers.$mat-typography-styles-query); } } @mixin density($config-or-theme) { $density-scale: theming.get-density-config($config-or-theme); .mat-mdc-chip { - @include mdc-chips.density($density-scale, $query: mdc-helpers.$mat-base-styles-query); + @include mdc-chip-theme.density($density-scale, $query: mdc-helpers.$mat-base-styles-query); } } diff --git a/src/material-experimental/mdc-chips/chip-action.ts b/src/material-experimental/mdc-chips/chip-action.ts new file mode 100644 index 000000000000..d19bb24409b5 --- /dev/null +++ b/src/material-experimental/mdc-chips/chip-action.ts @@ -0,0 +1,151 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import { + AfterViewInit, + ChangeDetectorRef, + Directive, + ElementRef, + Inject, + Input, + OnChanges, + OnDestroy, + SimpleChanges, +} from '@angular/core'; +import {DOCUMENT} from '@angular/common'; +import { + MDCChipActionAdapter, + MDCChipActionFoundation, + MDCChipActionType, + MDCChipPrimaryActionFoundation, +} from '@material/chips'; +import {emitCustomEvent} from './emit-event'; +import { + CanDisable, + HasTabIndex, + mixinDisabled, + mixinTabIndex, +} from '@angular/material-experimental/mdc-core'; + +const _MatChipActionMixinBase = mixinTabIndex(mixinDisabled(class {}), -1); + +/** + * Interactive element within a chip. + * @docs-private + */ +@Directive({ + selector: '[matChipAction]', + inputs: ['disabled', 'tabIndex'], + host: { + 'class': 'mdc-evolution-chip__action mat-mdc-chip-action', + '[class.mdc-evolution-chip__action--primary]': `_getFoundation().actionType() === ${MDCChipActionType.PRIMARY}`, + // Note that while our actions are interactive, we have to add the `--presentational` class, + // in order to avoid some super-specific `:hover` styles from MDC. + '[class.mdc-evolution-chip__action--presentational]': `_getFoundation().actionType() === ${MDCChipActionType.PRIMARY}`, + '[class.mdc-evolution-chip__action--trailing]': `_getFoundation().actionType() === ${MDCChipActionType.TRAILING}`, + '[attr.tabindex]': '(disabled || !isInteractive) ? null : tabIndex', + '[attr.disabled]': "disabled ? '' : null", + '[attr.aria-disabled]': 'disabled', + '(click)': '_handleClick($event)', + '(keydown)': '_handleKeydown($event)', + }, +}) +export class MatChipAction + extends _MatChipActionMixinBase + implements AfterViewInit, OnDestroy, CanDisable, HasTabIndex, OnChanges +{ + private _document: Document; + private _foundation: MDCChipActionFoundation; + private _adapter: MDCChipActionAdapter = { + focus: () => this.focus(), + getAttribute: (name: string) => this._elementRef.nativeElement.getAttribute(name), + setAttribute: (name: string, value: string) => { + // MDC tries to update the tabindex directly in the DOM when navigating using the keyboard + // which overrides our own handling. If we detect such a case, assign it to the same property + // as the Angular binding in order to maintain consistency. + if (name === 'tabindex') { + this._updateTabindex(parseInt(value)); + } else { + this._elementRef.nativeElement.setAttribute(name, value); + } + }, + removeAttribute: (name: string) => { + if (name !== 'tabindex') { + this._elementRef.nativeElement.removeAttribute(name); + } + }, + getElementID: () => this._elementRef.nativeElement.id, + emitEvent: (eventName: string, data: T) => { + emitCustomEvent(this._elementRef.nativeElement, this._document, eventName, data, true); + }, + }; + + /** Whether the action is interactive. */ + @Input() isInteractive = true; + + _handleClick(_event: MouseEvent) { + // Usually these events can't happen while the chip is disabled since the browser won't + // allow them which is what MDC seems to rely on, however the event can be faked in tests. + if (!this.disabled && this.isInteractive) { + this._foundation.handleClick(); + } + } + + _handleKeydown(event: KeyboardEvent) { + // Usually these events can't happen while the chip is disabled since the browser won't + // allow them which is what MDC seems to rely on, however the event can be faked in tests. + if (!this.disabled && this.isInteractive) { + this._foundation.handleKeydown(event); + } + } + + protected _createFoundation(adapter: MDCChipActionAdapter): MDCChipActionFoundation { + return new MDCChipPrimaryActionFoundation(adapter); + } + + constructor( + public _elementRef: ElementRef, + @Inject(DOCUMENT) _document: any, + private _changeDetectorRef: ChangeDetectorRef, + ) { + super(); + this._foundation = this._createFoundation(this._adapter); + + if (_elementRef.nativeElement.nodeName === 'BUTTON') { + _elementRef.nativeElement.setAttribute('type', 'button'); + } + } + + ngAfterViewInit() { + this._foundation.init(); + this._foundation.setDisabled(this.disabled); + } + + ngOnChanges(changes: SimpleChanges) { + if (changes['disabled']) { + this._foundation.setDisabled(this.disabled); + } + } + + ngOnDestroy() { + this._foundation.destroy(); + } + + focus() { + this._elementRef.nativeElement.focus(); + } + + _getFoundation() { + return this._foundation; + } + + _updateTabindex(value: number) { + this.tabIndex = value; + this._changeDetectorRef.markForCheck(); + } +} diff --git a/src/material-experimental/mdc-chips/chip-edit-input.spec.ts b/src/material-experimental/mdc-chips/chip-edit-input.spec.ts index 6670c129de76..4d46370e978c 100644 --- a/src/material-experimental/mdc-chips/chip-edit-input.spec.ts +++ b/src/material-experimental/mdc-chips/chip-edit-input.spec.ts @@ -46,6 +46,6 @@ describe('MDC-based MatChipEditInput', () => { }); @Component({ - template: ``, + template: ``, }) class ChipEditInputContainer {} diff --git a/src/material-experimental/mdc-chips/chip-edit-input.ts b/src/material-experimental/mdc-chips/chip-edit-input.ts index 32410b20f948..9f6ffc6e8437 100644 --- a/src/material-experimental/mdc-chips/chip-edit-input.ts +++ b/src/material-experimental/mdc-chips/chip-edit-input.ts @@ -16,7 +16,7 @@ import {DOCUMENT} from '@angular/common'; @Directive({ selector: 'span[matChipEditInput]', host: { - 'class': 'mdc-chip__primary-action mat-chip-edit-input', + 'class': 'mat-chip-edit-input', 'role': 'textbox', 'tabindex': '-1', 'contenteditable': 'true', diff --git a/src/material-experimental/mdc-chips/chip-grid.spec.ts b/src/material-experimental/mdc-chips/chip-grid.spec.ts index 8e4874891730..96e44bcb7d25 100644 --- a/src/material-experimental/mdc-chips/chip-grid.spec.ts +++ b/src/material-experimental/mdc-chips/chip-grid.spec.ts @@ -13,59 +13,46 @@ import { TAB, } from '@angular/cdk/keycodes'; import { - createKeyboardEvent, - dispatchEvent, dispatchFakeEvent, dispatchKeyboardEvent, - dispatchMouseEvent, MockNgZone, typeInElement, -} from '../../cdk/testing/private'; +} from '@angular/cdk/testing/private'; import { Component, DebugElement, NgZone, - Provider, QueryList, Type, ViewChild, ViewChildren, + EventEmitter, } from '@angular/core'; -import {ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {ComponentFixture, fakeAsync, flush, TestBed, tick} from '@angular/core/testing'; import {FormControl, FormsModule, NgForm, ReactiveFormsModule, Validators} from '@angular/forms'; import {MatFormFieldModule} from '@angular/material-experimental/mdc-form-field'; import {MatInputModule} from '@angular/material-experimental/mdc-input'; import {By} from '@angular/platform-browser'; import {BrowserAnimationsModule, NoopAnimationsModule} from '@angular/platform-browser/animations'; -import {Subject} from 'rxjs'; -import {GridFocusKeyManager} from './grid-focus-key-manager'; -import { - MatChipEvent, - MatChipGrid, - MatChipInputEvent, - MatChipRemove, - MatChipRow, - MatChipsModule, -} from './index'; +import {MDCChipAnimation} from '@material/chips'; +import {MatChipEvent, MatChipGrid, MatChipInputEvent, MatChipRow, MatChipsModule} from './index'; describe('MDC-based MatChipGrid', () => { let chipGridDebugElement: DebugElement; let chipGridNativeElement: HTMLElement; let chipGridInstance: MatChipGrid; let chips: QueryList; - let manager: GridFocusKeyManager; let zone: MockNgZone; let testComponent: StandardChipGrid; - let dirChange: Subject; + let directionality: {value: Direction; change: EventEmitter}; + let primaryActions: NodeListOf; const expectNoCellFocused = () => { - expect(manager.activeRowIndex).toBe(-1); - expect(manager.activeColumnIndex).toBe(-1); + expect(Array.from(primaryActions)).not.toContain(document.activeElement as HTMLElement); }; const expectLastCellFocused = () => { - expect(manager.activeRowIndex).toBe(chips.length - 1); - expect(manager.activeColumnIndex).toBe(0); + expect(document.activeElement).toBe(primaryActions[primaryActions.length - 1]); }; describe('StandardChipGrid', () => { @@ -73,7 +60,7 @@ describe('MDC-based MatChipGrid', () => { let fixture: ComponentFixture; beforeEach(() => { - fixture = setupStandardGrid(); + fixture = createComponent(StandardChipGrid); }); it('should add the `mat-mdc-chip-set` class', () => { @@ -124,24 +111,21 @@ describe('MDC-based MatChipGrid', () => { | ComponentFixture; beforeEach(() => { - fixture = setupStandardGrid(); + fixture = createComponent(StandardChipGrid); }); it('should focus the first chip on focus', () => { chipGridInstance.focus(); fixture.detectChanges(); - expect(manager.activeRowIndex).toBe(0); - expect(manager.activeColumnIndex).toBe(0); + expect(document.activeElement).toBe(primaryActions[0]); }); - it('should watch for chip focus', () => { - const lastIndex = chips.length - 1; - + it('should focus the primary action when calling the `focus` method', () => { chips.last.focus(); fixture.detectChanges(); - expect(manager.activeRowIndex).toBe(lastIndex); + expect(document.activeElement).toBe(primaryActions[primaryActions.length - 1]); }); it('should not be able to become focused when disabled', () => { @@ -180,13 +164,11 @@ describe('MDC-based MatChipGrid', () => { testComponent.chips.splice(2, 1); fixture.detectChanges(); - // It focuses the 4th item (now at index 2) - expect(manager.activeRowIndex).toEqual(2); + // It focuses the 4th item + expect(document.activeElement).toBe(primaryActions[3]); }); it('should focus the previous item', () => { - const lastIndex = chips.length - 1; - // Focus the last item chips.last.focus(); @@ -195,7 +177,7 @@ describe('MDC-based MatChipGrid', () => { fixture.detectChanges(); // It focuses the next-to-last item - expect(manager.activeRowIndex).toEqual(lastIndex - 1); + expect(document.activeElement).toBe(primaryActions[primaryActions.length - 2]); }); it('should not focus if chip grid is not focused', fakeAsync(() => { @@ -212,7 +194,7 @@ describe('MDC-based MatChipGrid', () => { fixture.detectChanges(); // Should not have focus - expect(chipGridInstance._keyManager.activeRowIndex).toEqual(-1); + expect(chipGridNativeElement.contains(document.activeElement)).toBe(false); })); it('should focus the grid if the last focused item is removed', () => { @@ -234,93 +216,81 @@ describe('MDC-based MatChipGrid', () => { fixture.destroy(); TestBed.resetTestingModule(); - fixture = createComponent(StandardChipGridWithAnimations, [], BrowserAnimationsModule); + fixture = createComponent(StandardChipGridWithAnimations, BrowserAnimationsModule); chips.last.focus(); fixture.detectChanges(); - expect(chipGridInstance._keyManager.activeRowIndex).toBe(chips.length - 1); + expect(document.activeElement).toBe(primaryActions[primaryActions.length - 1]); dispatchKeyboardEvent(chips.last._elementRef.nativeElement, 'keydown', BACKSPACE); fixture.detectChanges(); tick(500); - expect(chipGridInstance._keyManager.activeRowIndex).toBe(chips.length - 1); - expect(chipGridInstance._keyManager.activeColumnIndex).toBe(0); + expect(document.activeElement).toBe(primaryActions[primaryActions.length - 2]); }), ); }); it('should have a focus indicator', () => { - const focusableTextNativeElements = Array.from( - chipGridNativeElement.querySelectorAll('.mat-mdc-chip-row-focusable-text-content'), + const focusIndicators = chipGridNativeElement.querySelectorAll( + '.mat-mdc-chip-primary-focus-indicator', ); - - expect( - focusableTextNativeElements.every(element => - element.classList.contains('mat-mdc-focus-indicator'), - ), - ).toBe(true); + expect(focusIndicators.length).toBeGreaterThan(0); + expect(focusIndicators.length).toBe(chips.length); }); }); describe('keyboard behavior', () => { describe('LTR (default)', () => { let fixture: ComponentFixture; + let trailingActions: NodeListOf; - beforeEach(() => { + beforeEach(fakeAsync(() => { fixture = createComponent(ChipGridWithRemove); - }); + flush(); + trailingActions = chipGridNativeElement.querySelectorAll( + '.mdc-evolution-chip__action--trailing', + ); + })); it('should focus previous column when press LEFT ARROW', () => { - let nativeChips = chipGridNativeElement.querySelectorAll('mat-chip-row'); - let lastNativeChip = nativeChips[nativeChips.length - 1] as HTMLElement; - - const lastRowIndex = chips.length - 1; + const lastIndex = primaryActions.length - 1; // Focus the first column of the last chip in the array chips.last.focus(); - expectLastCellFocused(); + expect(document.activeElement).toBe(primaryActions[lastIndex]); // Press the LEFT arrow - dispatchKeyboardEvent(lastNativeChip, 'keydown', LEFT_ARROW); - - chipGridInstance._blur(); // Simulate focus leaving the list and going to the chip. + dispatchKeyboardEvent(primaryActions[lastIndex], 'keydown', LEFT_ARROW); fixture.detectChanges(); // It focuses the last column of the previous chip - expect(manager.activeRowIndex).toEqual(lastRowIndex - 1); - expect(manager.activeColumnIndex).toEqual(1); + expect(document.activeElement).toBe(trailingActions[lastIndex - 1]); }); it('should focus next column when press RIGHT ARROW', () => { - let nativeChips = chipGridNativeElement.querySelectorAll('mat-chip-row'); - let firstNativeChip = nativeChips[0] as HTMLElement; - // Focus the first column of the first chip in the array chips.first.focus(); - expect(manager.activeRowIndex).toEqual(0); - expect(manager.activeColumnIndex).toEqual(0); + expect(document.activeElement).toBe(primaryActions[0]); // Press the RIGHT arrow - dispatchKeyboardEvent(firstNativeChip, 'keydown', RIGHT_ARROW); - chipGridInstance._blur(); // Simulate focus leaving the list and going to the chip. + dispatchKeyboardEvent(primaryActions[0], 'keydown', RIGHT_ARROW); fixture.detectChanges(); // It focuses the next column of the chip - expect(manager.activeRowIndex).toEqual(0); - expect(manager.activeColumnIndex).toEqual(1); + expect(document.activeElement).toBe(trailingActions[0]); }); it('should not handle arrow key events from non-chip elements', () => { - const initialActiveIndex = manager.activeRowIndex; + const previousActiveElement = document.activeElement; dispatchKeyboardEvent(chipGridNativeElement, 'keydown', RIGHT_ARROW); fixture.detectChanges(); - expect(manager.activeRowIndex) + expect(document.activeElement) .withContext('Expected focused item not to have changed.') - .toBe(initialActiveIndex); + .toBe(previousActiveElement); }); }); @@ -328,46 +298,35 @@ describe('MDC-based MatChipGrid', () => { let fixture: ComponentFixture; beforeEach(() => { - fixture = setupStandardGrid('rtl'); + fixture = createComponent(StandardChipGrid, undefined, 'rtl'); }); it('should focus previous column when press RIGHT ARROW', () => { - let nativeChips = chipGridNativeElement.querySelectorAll('mat-chip-row'); - let lastNativeChip = nativeChips[nativeChips.length - 1] as HTMLElement; - - const lastRowIndex = chips.length - 1; + const lastIndex = primaryActions.length - 1; // Focus the first column of the last chip in the array chips.last.focus(); - expectLastCellFocused(); + expect(document.activeElement).toBe(primaryActions[lastIndex]); // Press the RIGHT arrow - dispatchKeyboardEvent(lastNativeChip, 'keydown', RIGHT_ARROW); - chipGridInstance._blur(); // Simulate focus leaving the list and going to the chip. + dispatchKeyboardEvent(primaryActions[lastIndex], 'keydown', RIGHT_ARROW); fixture.detectChanges(); // It focuses the last column of the previous chip - expect(manager.activeRowIndex).toEqual(lastRowIndex - 1); - expect(manager.activeColumnIndex).toEqual(0); + expect(document.activeElement).toBe(primaryActions[lastIndex - 1]); }); it('should focus next column when press LEFT ARROW', () => { - let nativeChips = chipGridNativeElement.querySelectorAll('mat-chip-row'); - let firstNativeChip = nativeChips[0] as HTMLElement; - // Focus the first column of the first chip in the array chips.first.focus(); - expect(manager.activeRowIndex).toEqual(0); - expect(manager.activeColumnIndex).toEqual(0); + expect(document.activeElement).toBe(primaryActions[0]); // Press the LEFT arrow - dispatchKeyboardEvent(firstNativeChip, 'keydown', LEFT_ARROW); - chipGridInstance._blur(); // Simulate focus leaving the list and going to the chip. + dispatchKeyboardEvent(primaryActions[0], 'keydown', LEFT_ARROW); fixture.detectChanges(); // It focuses the next column of the chip - expect(manager.activeRowIndex).toEqual(1); - expect(manager.activeColumnIndex).toEqual(0); + expect(document.activeElement).toBe(primaryActions[1]); }); it('should allow focus to escape when tabbing away', fakeAsync(() => { @@ -380,7 +339,7 @@ describe('MDC-based MatChipGrid', () => { .withContext('Expected tabIndex to be set to -1 temporarily.') .toBe(-1); - tick(); + flush(); expect(chipGridInstance.tabIndex) .withContext('Expected tabIndex to be reset back to 0') @@ -389,7 +348,6 @@ describe('MDC-based MatChipGrid', () => { it(`should use user defined tabIndex`, fakeAsync(() => { chipGridInstance.tabIndex = 4; - fixture.detectChanges(); expect(chipGridInstance.tabIndex) @@ -404,7 +362,7 @@ describe('MDC-based MatChipGrid', () => { .withContext('Expected tabIndex to be set to -1 temporarily.') .toBe(-1); - tick(); + flush(); expect(chipGridInstance.tabIndex) .withContext('Expected tabIndex to be reset back to 4') @@ -416,95 +374,71 @@ describe('MDC-based MatChipGrid', () => { let fixture: ComponentFixture; beforeEach(() => { - fixture = setupStandardGrid(); + fixture = createComponent(StandardChipGrid); }); it('should account for the direction changing', () => { - const firstNativeChip = chipGridNativeElement.querySelectorAll( - 'mat-chip-row', - )[0] as HTMLElement; - - const RIGHT_EVENT = createKeyboardEvent('keydown', RIGHT_ARROW); - chips.first.focus(); - expect(manager.activeRowIndex).toBe(0); - expect(manager.activeColumnIndex).toBe(0); + expect(document.activeElement).toBe(primaryActions[0]); - dispatchEvent(firstNativeChip, RIGHT_EVENT); - chipGridInstance._blur(); + dispatchKeyboardEvent(primaryActions[0], 'keydown', RIGHT_ARROW); fixture.detectChanges(); - expect(manager.activeRowIndex).toBe(1); - expect(manager.activeColumnIndex).toBe(0); + expect(document.activeElement).toBe(primaryActions[1]); - dirChange.next('rtl'); + directionality.value = 'rtl'; fixture.detectChanges(); - chipGridInstance._keydown(RIGHT_EVENT); - chipGridInstance._blur(); + dispatchKeyboardEvent(primaryActions[1], 'keydown', RIGHT_ARROW); fixture.detectChanges(); - expect(manager.activeRowIndex).toBe(0); - expect(manager.activeColumnIndex).toBe(0); + expect(document.activeElement).toBe(primaryActions[0]); }); it('should move focus to the first chip when pressing HOME', () => { - const nativeChips = chipGridNativeElement.querySelectorAll('mat-chip-row'); - const lastNativeChip = nativeChips[nativeChips.length - 1] as HTMLElement; - - const HOME_EVENT = createKeyboardEvent('keydown', HOME); chips.last.focus(); + expect(document.activeElement).toBe(primaryActions[4]); - expect(manager.activeRowIndex).toBe(4); - expect(manager.activeColumnIndex).toBe(0); - - dispatchEvent(lastNativeChip, HOME_EVENT); + const event = dispatchKeyboardEvent(primaryActions[4], 'keydown', HOME); fixture.detectChanges(); - expect(HOME_EVENT.defaultPrevented).toBe(true); - expect(manager.activeRowIndex).toBe(0); - expect(manager.activeColumnIndex).toBe(0); + expect(event.defaultPrevented).toBe(true); + expect(document.activeElement).toBe(primaryActions[0]); }); it('should move focus to the last chip when pressing END', () => { - const nativeChips = chipGridNativeElement.querySelectorAll('mat-chip-row'); - const firstNativeChip = nativeChips[0] as HTMLElement; - - const END_EVENT = createKeyboardEvent('keydown', END); chips.first.focus(); + expect(document.activeElement).toBe(primaryActions[0]); - expect(manager.activeRowIndex).toBe(0); - expect(manager.activeColumnIndex).toBe(0); - - dispatchEvent(firstNativeChip, END_EVENT); + const event = dispatchKeyboardEvent(primaryActions[0], 'keydown', END); fixture.detectChanges(); - expect(END_EVENT.defaultPrevented).toBe(true); - expect(manager.activeRowIndex).toBe(4); - expect(manager.activeColumnIndex).toBe(0); + expect(event.defaultPrevented).toBe(true); + expect(document.activeElement).toBe(primaryActions[4]); }); - it('should ignore all non-tab navigation keyboard events from an editing chip', () => { + it('should ignore all non-tab navigation keyboard events from an editing chip', fakeAsync(() => { testComponent.editable = true; fixture.detectChanges(); chips.first.focus(); + expect(document.activeElement).toBe(primaryActions[0]); - dispatchKeyboardEvent(document.activeElement!, 'keydown', ENTER, 'Enter'); + dispatchKeyboardEvent(document.activeElement!, 'keydown', ENTER); fixture.detectChanges(); + flush(); - const activeRowIndex = manager.activeRowIndex; - const activeColumnIndex = manager.activeColumnIndex; + const previousActiveElement = document.activeElement; + const keysToIgnore = [HOME, END, LEFT_ARROW, RIGHT_ARROW]; - const KEYS_TO_IGNORE = [HOME, END, LEFT_ARROW, RIGHT_ARROW]; - for (const key of KEYS_TO_IGNORE) { + for (const key of keysToIgnore) { dispatchKeyboardEvent(document.activeElement!, 'keydown', key); fixture.detectChanges(); + flush(); - expect(manager.activeRowIndex).toBe(activeRowIndex); - expect(manager.activeColumnIndex).toBe(activeColumnIndex); + expect(document.activeElement).toBe(previousActiveElement); } - }); + })); }); }); }); @@ -513,14 +447,15 @@ describe('MDC-based MatChipGrid', () => { let fixture: ComponentFixture; beforeEach(() => { - fixture = setupInputGrid(); + fixture = createComponent(FormFieldChipGrid); }); describe('keyboard behavior', () => { it('should maintain focus if the active chip is deleted', () => { const secondChip = fixture.nativeElement.querySelectorAll('.mat-mdc-chip')[1]; + const secondChipAction = secondChip.querySelector('.mdc-evolution-chip__action--primary'); - secondChip.focus(); + secondChipAction.focus(); fixture.detectChanges(); expect(chipGridInstance._chips.toArray().findIndex(chip => chip._hasFocus())).toBe(1); @@ -601,27 +536,36 @@ describe('MDC-based MatChipGrid', () => { describe('with chip remove', () => { let fixture: ComponentFixture; - let chipGrid: MatChipGrid; - let chipRemoveDebugElements: DebugElement[]; + let trailingActions: NodeListOf; - beforeEach(() => { + beforeEach(fakeAsync(() => { fixture = createComponent(ChipGridWithRemove); + flush(); + trailingActions = chipGridNativeElement.querySelectorAll( + '.mdc-evolution-chip__action--trailing', + ); + })); - chipGrid = fixture.debugElement.query(By.directive(MatChipGrid))!.componentInstance; - chipRemoveDebugElements = fixture.debugElement.queryAll(By.directive(MatChipRemove)); - }); - - it('should properly focus next item if chip is removed through click', () => { - chips.get(2)!.focus(); + it('should properly focus next item if chip is removed through click', fakeAsync(() => { + const chip = chips.get(2)!; + chip.focus(); + fixture.detectChanges(); // Destroy the third focused chip by dispatching a bubbling click event on the // associated chip remove element. - dispatchMouseEvent(chipRemoveDebugElements[2].nativeElement, 'click'); + trailingActions[2].click(); + fixture.detectChanges(); + (chip as any)._handleAnimationend({ + animationName: MDCChipAnimation.EXIT, + target: chip._elementRef.nativeElement, + }); + flush(); + (chip as any)._handleTransitionend({target: chip._elementRef.nativeElement}); + flush(); fixture.detectChanges(); - expect(chips.get(2)!.value).not.toBe(2, 'Expected the third chip to be removed.'); - expect(chipGrid._keyManager.activeRowIndex).toBe(2); - }); + expect(document.activeElement).toBe(primaryActions[3]); + })); }); describe('chip grid with chip input', () => { @@ -671,10 +615,10 @@ describe('MDC-based MatChipGrid', () => { fixture.detectChanges(); dispatchKeyboardEvent(nativeInput, 'keydown', ENTER); fixture.detectChanges(); - tick(); + flush(); dispatchFakeEvent(nativeInput, 'blur'); - tick(); + flush(); expect(fixture.componentInstance.control.value).toContain('123-8'); })); @@ -727,10 +671,10 @@ describe('MDC-based MatChipGrid', () => { fixture.detectChanges(); dispatchKeyboardEvent(nativeInput, 'keydown', ENTER); fixture.detectChanges(); - tick(); + flush(); dispatchFakeEvent(nativeInput, 'blur'); - tick(); + flush(); expect(fixture.componentInstance.control.dirty) .withContext(`Expected control to be dirty after value was changed by user.`) @@ -750,7 +694,9 @@ describe('MDC-based MatChipGrid', () => { }); it('should set an asterisk after the placeholder if the control is required', () => { - let requiredMarker = fixture.debugElement.query(By.css('.mdc-floating-label--required'))!; + let requiredMarker = fixture.debugElement.query( + By.css('.mat-mdc-form-field-required-marker'), + )!; expect(requiredMarker) .withContext(`Expected placeholder not to have an asterisk, as control was not required.`) .toBeNull(); @@ -758,7 +704,7 @@ describe('MDC-based MatChipGrid', () => { fixture.componentInstance.chipGrid.required = true; fixture.detectChanges(); - requiredMarker = fixture.debugElement.query(By.css('.mdc-floating-label--required'))!; + requiredMarker = fixture.debugElement.query(By.css('.mat-mdc-form-field-required-marker'))!; expect(requiredMarker) .not.withContext(`Expected placeholder to have an asterisk, as control was required.`) .toBeNull(); @@ -770,7 +716,9 @@ describe('MDC-based MatChipGrid', () => { fixture.componentInstance.control = new FormControl(undefined, [Validators.required]); fixture.detectChanges(); - expect(fixture.nativeElement.querySelector('.mdc-floating-label--required')).toBeTruthy(); + expect( + fixture.nativeElement.querySelector('.mat-mdc-form-field-required-marker'), + ).toBeTruthy(); }); it('should blur the form field when the active chip is blurred', fakeAsync(() => { @@ -832,10 +780,10 @@ describe('MDC-based MatChipGrid', () => { fixture.detectChanges(); dispatchKeyboardEvent(input, 'keydown', ENTER); fixture.detectChanges(); - tick(); + flush(); dispatchFakeEvent(input, 'blur'); - tick(); + flush(); fixture.detectChanges(); expect(input.getAttribute('aria-invalid')).toBe('false'); @@ -1036,11 +984,16 @@ describe('MDC-based MatChipGrid', () => { function createComponent( component: Type, - providers: Provider[] = [], animationsModule: | Type | Type = NoopAnimationsModule, + direction: Direction = 'ltr', ): ComponentFixture { + directionality = { + value: direction, + change: new EventEmitter(), + } as Directionality; + TestBed.configureTestingModule({ imports: [ FormsModule, @@ -1052,11 +1005,8 @@ describe('MDC-based MatChipGrid', () => { ], declarations: [component], providers: [ - { - provide: NgZone, - useFactory: () => (zone = new MockNgZone()), - }, - ...providers, + {provide: NgZone, useFactory: () => (zone = new MockNgZone())}, + {provide: Directionality, useValue: directionality}, ], }).compileComponents(); @@ -1068,28 +1018,12 @@ describe('MDC-based MatChipGrid', () => { chipGridInstance = chipGridDebugElement.componentInstance; testComponent = fixture.debugElement.componentInstance; chips = chipGridInstance._chips; - manager = chipGridInstance._keyManager; + primaryActions = chipGridNativeElement.querySelectorAll( + '.mdc-evolution-chip__action--primary', + ); return fixture; } - - function setupStandardGrid(direction: Direction = 'ltr') { - dirChange = new Subject(); - - return createComponent(StandardChipGrid, [ - { - provide: Directionality, - useFactory: () => ({ - value: direction.toLowerCase(), - change: dirChange, - }), - }, - ]); - } - - function setupInputGrid() { - return createComponent(FormFieldChipGrid); - } }); @Component({ diff --git a/src/material-experimental/mdc-chips/chip-grid.ts b/src/material-experimental/mdc-chips/chip-grid.ts index b641f87b8a46..119d184d49b5 100644 --- a/src/material-experimental/mdc-chips/chip-grid.ts +++ b/src/material-experimental/mdc-chips/chip-grid.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {Directionality} from '@angular/cdk/bidi'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {TAB} from '@angular/cdk/keycodes'; import { @@ -19,6 +18,7 @@ import { DoCheck, ElementRef, EventEmitter, + Inject, Input, OnDestroy, Optional, @@ -34,19 +34,20 @@ import { NgForm, Validators, } from '@angular/forms'; +import {DOCUMENT} from '@angular/common'; import { CanUpdateErrorState, ErrorStateMatcher, mixinErrorState, } from '@angular/material-experimental/mdc-core'; import {MatFormFieldControl} from '@angular/material-experimental/mdc-form-field'; +import {LiveAnnouncer} from '@angular/cdk/a11y'; import {MatChipTextControl} from './chip-text-control'; -import {merge, Observable, Subscription} from 'rxjs'; +import {Observable, Subject} from 'rxjs'; import {startWith, takeUntil} from 'rxjs/operators'; import {MatChipEvent} from './chip'; import {MatChipRow} from './chip-row'; import {MatChipSet} from './chip-set'; -import {GridFocusKeyManager} from './grid-focus-key-manager'; /** Change event object that is emitted when the chip grid value has changed. */ export class MatChipGridChange { @@ -63,17 +64,29 @@ export class MatChipGridChange { * @docs-private */ class MatChipGridBase extends MatChipSet { + /** + * Emits whenever the component state changes and should cause the parent + * form-field to update. Implemented as part of `MatFormFieldControl`. + * @docs-private + */ + readonly stateChanges = new Subject(); + constructor( - _elementRef: ElementRef, - _changeDetectorRef: ChangeDetectorRef, - _dir: Directionality, + liveAnnouncer: LiveAnnouncer, + document: any, + elementRef: ElementRef, + changeDetectorRef: ChangeDetectorRef, public _defaultErrorStateMatcher: ErrorStateMatcher, public _parentForm: NgForm, public _parentFormGroup: FormGroupDirective, - /** @docs-private */ + /** + * Form control bound to the component. + * Implemented as part of `MatFormFieldControl`. + * @docs-private + */ public ngControl: NgControl, ) { - super(_elementRef, _changeDetectorRef, _dir); + super(liveAnnouncer, document, elementRef, changeDetectorRef); } } const _MatChipGridMixinBase = mixinErrorState(MatChipGridBase); @@ -84,11 +97,15 @@ const _MatChipGridMixinBase = mixinErrorState(MatChipGridBase); */ @Component({ selector: 'mat-chip-grid', - template: '', - styleUrls: ['chips.css'], + template: ` + + + + `, + styleUrls: ['chip-set.css'], inputs: ['tabIndex'], host: { - 'class': 'mat-mdc-chip-set mat-mdc-chip-grid mdc-chip-set', + 'class': 'mat-mdc-chip-set mat-mdc-chip-grid mdc-evolution-chip-set', '[attr.role]': 'role', '[tabIndex]': '_chips && _chips.length === 0 ? -1 : tabIndex', // TODO: replace this binding with use of AriaDescriber @@ -101,7 +118,6 @@ const _MatChipGridMixinBase = mixinErrorState(MatChipGridBase); '(focus)': 'focus()', '(blur)': '_blur()', '(keydown)': '_keydown($event)', - '[id]': '_uid', }, providers: [{provide: MatFormFieldControl, useExisting: MatChipGrid}], encapsulation: ViewEncapsulation.None, @@ -124,12 +140,6 @@ export class MatChipGrid */ readonly controlType: string = 'mat-chip-grid'; - /** Subscription to focus changes in the chips. */ - private _chipFocusSubscription: Subscription | null; - - /** Subscription to blur changes in the chips. */ - private _chipBlurSubscription: Subscription | null; - /** The chip input to add more chips */ protected _chipInput: MatChipTextControl; @@ -145,9 +155,6 @@ export class MatChipGrid */ _onChange: (value: any) => void = () => {}; - /** The GridFocusKeyManager which handles focus. */ - _keyManager: GridFocusKeyManager; - /** * Implemented as part of MatFormFieldControl. * @docs-private @@ -156,7 +163,7 @@ export class MatChipGrid override get disabled(): boolean { return this.ngControl ? !!this.ngControl.disabled : this._disabled; } - override set disabled(value: boolean) { + override set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); this._syncChipsState(); } @@ -189,7 +196,6 @@ export class MatChipGrid * @docs-private */ @Input() - @Input() get placeholder(): string { return this._chipInput ? this._chipInput.placeholder : this._placeholder; } @@ -212,7 +218,7 @@ export class MatChipGrid get required(): boolean { return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false; } - set required(value: boolean) { + set required(value: BooleanInput) { this._required = coerceBooleanProperty(value); this.stateChanges.next(); } @@ -244,12 +250,12 @@ export class MatChipGrid /** Combined stream of all of the child chips' blur events. */ get chipBlurChanges(): Observable { - return merge(...this._chips.map(chip => chip._onBlur)); + return this._getChipStream(chip => chip._onBlur); } /** Combined stream of all of the child chips' focus events. */ get chipFocusChanges(): Observable { - return merge(...this._chips.map(chip => chip._onFocus)); + return this._getChipStream(chip => chip._onFocus); } /** Emits when the chip grid value has been changed by the user. */ @@ -271,21 +277,23 @@ export class MatChipGrid override _chips: QueryList; constructor( - _elementRef: ElementRef, - _changeDetectorRef: ChangeDetectorRef, - @Optional() _dir: Directionality, - @Optional() _parentForm: NgForm, - @Optional() _parentFormGroup: FormGroupDirective, - _defaultErrorStateMatcher: ErrorStateMatcher, + liveAnnouncer: LiveAnnouncer, + @Inject(DOCUMENT) document: any, + elementRef: ElementRef, + changeDetectorRef: ChangeDetectorRef, + @Optional() parentForm: NgForm, + @Optional() parentFormGroup: FormGroupDirective, + defaultErrorStateMatcher: ErrorStateMatcher, @Optional() @Self() ngControl: NgControl, ) { super( - _elementRef, - _changeDetectorRef, - _dir, - _defaultErrorStateMatcher, - _parentForm, - _parentFormGroup, + liveAnnouncer, + document, + elementRef, + changeDetectorRef, + defaultErrorStateMatcher, + parentForm, + parentFormGroup, ngControl, ); if (this.ngControl) { @@ -295,12 +303,15 @@ export class MatChipGrid override ngAfterContentInit() { super.ngAfterContentInit(); - this._initKeyManager(); this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => { // Check to see if we have a destroyed chip and need to refocus this._updateFocusForDestroyedChips(); + this.stateChanges.next(); + }); + this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => { + this._blur(); this.stateChanges.next(); }); } @@ -329,7 +340,6 @@ export class MatChipGrid /** Associates an HTML input element with this chip grid. */ registerInput(inputElement: MatChipTextControl): void { this._chipInput = inputElement; - this._setMdcClass('mdc-chip-set--input', true); } /** @@ -337,7 +347,7 @@ export class MatChipGrid * @docs-private */ onContainerClick(event: MouseEvent) { - if (!this._originatesFromChip(event) && !this.disabled) { + if (!this.disabled && !this._originatesFromChip(event)) { this.focus(); } } @@ -352,9 +362,15 @@ export class MatChipGrid } if (this._chips.length > 0) { - this._keyManager.setFirstCellActive(); + // MDC sets the tabindex directly on the DOM node when the user is navigating which means + // that we may end up with a `0` value from a previous interaction. We reset it manually + // here to ensure that the state is correct. + this._chips.forEach(chip => chip.primaryAction._updateTabindex(-1)); + this._chips.first.focus(); } else { - this._focusInput(); + // Delay until the next tick, because this can cause a "changed after checked" + // error if the input does something on focus (e.g. opens an autocomplete). + Promise.resolve().then(() => this._chipInput.focus()); } this.stateChanges.next(); @@ -414,7 +430,6 @@ export class MatChipGrid // Timeout is needed to wait for the focus() event trigger on chip input. setTimeout(() => { if (!this.focused) { - this._keyManager.setActiveCell({row: -1, column: -1}); this._propagateChanges(); this._markAsTouched(); } @@ -426,93 +441,27 @@ export class MatChipGrid * user to tab out of it. This prevents the grid from capturing focus and redirecting * it back to the first chip, creating a focus trap, if it user tries to tab away. */ - _allowFocusEscape() { - if (this._chipInput.focused) { - return; - } - - const previousTabIndex = this.tabIndex; - - if (this.tabIndex !== -1) { - this.tabIndex = -1; - - setTimeout(() => { - this.tabIndex = previousTabIndex; - this._changeDetectorRef.markForCheck(); - }); + protected override _allowFocusEscape() { + if (!this._chipInput.focused) { + super._allowFocusEscape(); } } /** Handles custom keyboard events. */ _keydown(event: KeyboardEvent) { - const target = event.target as HTMLElement; - const keyCode = event.keyCode; - const manager = this._keyManager; - - if (keyCode === TAB && target.id !== this._chipInput!.id) { + if (event.keyCode === TAB && (event.target as HTMLElement).id !== this._chipInput.id) { this._allowFocusEscape(); - } else if (this._originatesFromEditingChip(event)) { - // No-op, let the editing chip handle all keyboard events except for Tab. - } else if (this._originatesFromChip(event)) { - manager.onKeydown(event); } this.stateChanges.next(); } - /** Unsubscribes from all chip events. */ - protected override _dropSubscriptions() { - super._dropSubscriptions(); - if (this._chipBlurSubscription) { - this._chipBlurSubscription.unsubscribe(); - this._chipBlurSubscription = null; - } - - if (this._chipFocusSubscription) { - this._chipFocusSubscription.unsubscribe(); - this._chipFocusSubscription = null; - } - } - - /** Subscribes to events on the child chips. */ - protected override _subscribeToChipEvents() { - super._subscribeToChipEvents(); - this._listenToChipsFocus(); - this._listenToChipsBlur(); - } - - /** Initializes the key manager to manage focus. */ - private _initKeyManager() { - this._keyManager = new GridFocusKeyManager(this._chips) - .withHomeAndEnd() - .withDirectionality(this._dir ? this._dir.value : 'ltr'); - - if (this._dir) { - this._dir.change - .pipe(takeUntil(this._destroyed)) - .subscribe(dir => this._keyManager.withDirectionality(dir)); + _focusLastChip() { + if (this._chips.length) { + this._chips.last.primaryAction.focus(); } } - /** Subscribes to chip focus events. */ - private _listenToChipsFocus(): void { - this._chipFocusSubscription = this.chipFocusChanges.subscribe((event: MatChipEvent) => { - let chipIndex: number = this._chips.toArray().indexOf(event.chip as MatChipRow); - - if (this._isValidIndex(chipIndex)) { - this._keyManager.updateActiveCell({row: chipIndex, column: 0}); - } - }); - } - - /** Subscribes to chip blur events. */ - private _listenToChipsBlur(): void { - this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => { - this._blur(); - this.stateChanges.next(); - }); - } - /** Emits change event to set the model value. */ private _propagateChanges(): void { const valueToEmit = this._chips.length ? this._chips.toArray().map(chip => chip.value) : []; @@ -538,10 +487,7 @@ export class MatChipGrid if (this._lastDestroyedChipIndex != null) { if (this._chips.length) { const newChipIndex = Math.min(this._lastDestroyedChipIndex, this._chips.length - 1); - this._keyManager.setActiveCell({ - row: newChipIndex, - column: Math.max(this._keyManager.activeColumnIndex, 0), - }); + this._chips.toArray()[newChipIndex].focus(); } else { this.focus(); } @@ -549,14 +495,4 @@ export class MatChipGrid this._lastDestroyedChipIndex = null; } - - /** Focus input element. */ - private _focusInput() { - this._chipInput.focus(); - } - - // Even though this member is inherited, we explicitly need to set it here as the `disabled` - // input is overwritten in this class too. This is needed for the lint rule. - static override ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_required: BooleanInput; } diff --git a/src/material-experimental/mdc-chips/chip-icons.ts b/src/material-experimental/mdc-chips/chip-icons.ts index 559bd0759fb5..8e7b79c3c9e7 100644 --- a/src/material-experimental/mdc-chips/chip-icons.ts +++ b/src/material-experimental/mdc-chips/chip-icons.ts @@ -6,16 +6,9 @@ * found in the LICENSE file at https://angular.io/license */ -import {BooleanInput, NumberInput} from '@angular/cdk/coercion'; -import {ChangeDetectorRef, Directive, ElementRef, InjectionToken, OnDestroy} from '@angular/core'; -import { - CanDisable, - HasTabIndex, - mixinDisabled, - mixinTabIndex, -} from '@angular/material-experimental/mdc-core'; -import {deprecated} from '@material/chips'; -import {Subject} from 'rxjs'; +import {Directive, InjectionToken} from '@angular/core'; +import {MDCChipActionAdapter, MDCChipTrailingActionFoundation} from '@material/chips'; +import {MatChipAction} from './chip-action'; /** * Injection token that can be used to reference instances of `MatChipAvatar`. It serves as @@ -31,23 +24,12 @@ export const MAT_CHIP_AVATAR = new InjectionToken('MatChipAvatar' @Directive({ selector: 'mat-chip-avatar, [matChipAvatar]', host: { - 'class': 'mat-mdc-chip-avatar mdc-chip__icon mdc-chip__icon--leading', + 'class': 'mat-mdc-chip-avatar mdc-evolution-chip__icon mdc-evolution-chip__icon--primary', 'role': 'img', }, providers: [{provide: MAT_CHIP_AVATAR, useExisting: MatChipAvatar}], }) -export class MatChipAvatar { - constructor( - private _changeDetectorRef: ChangeDetectorRef, - private _elementRef: ElementRef, - ) {} - - /** Sets whether the given CSS class should be applied to the leading icon. */ - setClass(cssClass: string, active: boolean) { - this._elementRef.nativeElement.classList.toggle(cssClass, active); - this._changeDetectorRef.markForCheck(); - } -} +export class MatChipAvatar {} /** * Injection token that can be used to reference instances of `MatChipTrailingIcon`. It serves as @@ -65,60 +47,21 @@ export const MAT_CHIP_TRAILING_ICON = new InjectionToken( @Directive({ selector: 'mat-chip-trailing-icon, [matChipTrailingIcon]', host: { - 'class': 'mat-mdc-chip-trailing-icon mdc-chip__icon mdc-chip__icon--trailing', - 'tabindex': '-1', + 'class': + 'mat-mdc-chip-trailing-icon mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing', 'aria-hidden': 'true', }, providers: [{provide: MAT_CHIP_TRAILING_ICON, useExisting: MatChipTrailingIcon}], }) -export class MatChipTrailingIcon implements OnDestroy { - private _foundation: deprecated.MDCChipTrailingActionFoundation; - private _adapter: deprecated.MDCChipTrailingActionAdapter = { - focus: () => this._elementRef.nativeElement.focus(), - getAttribute: (name: string) => this._elementRef.nativeElement.getAttribute(name), - setAttribute: (name: string, value: string) => { - this._elementRef.nativeElement.setAttribute(name, value); - }, - // TODO(crisbeto): there's also a `trigger` parameter that the chip isn't - // handling yet. Consider passing it along once MDC start using it. - notifyInteraction: () => { - // TODO(crisbeto): uncomment this code once we've inverted the - // dependency on `MatChip`. this._chip._notifyInteraction(); - }, - - // TODO(crisbeto): there's also a `key` parameter that the chip isn't - // handling yet. Consider passing it along once MDC start using it. - notifyNavigation: () => { - // TODO(crisbeto): uncomment this code once we've inverted the - // dependency on `MatChip`. this._chip._notifyNavigation(); - }, - }; - - constructor( - // TODO(crisbeto): currently the chip needs a reference to the trailing - // icon for the deprecated `setTrailingActionAttr` method. Until the - // method is removed, we can't use the chip here, because it causes a - // circular import. private _chip: MatChip - public _elementRef: ElementRef, - ) { - this._foundation = new deprecated.MDCChipTrailingActionFoundation(this._adapter); - } - - ngOnDestroy() { - this._foundation.destroy(); - } - - focus() { - this._elementRef.nativeElement.focus(); - } - - /** Sets an attribute on the icon. */ - setAttribute(name: string, value: string) { - this._elementRef.nativeElement.setAttribute(name, value); - } +export class MatChipTrailingIcon extends MatChipAction { + /** + * MDC considers all trailing actions as a remove icon, + * but we support non-interactive trailing icons. + */ + override isInteractive = false; - isNavigable() { - return this._foundation.isNavigable(); + protected override _createFoundation(adapter: MDCChipActionAdapter) { + return new MDCChipTrailingActionFoundation(adapter); } } @@ -129,18 +72,6 @@ export class MatChipTrailingIcon implements OnDestroy { */ export const MAT_CHIP_REMOVE = new InjectionToken('MatChipRemove'); -/** - * Boilerplate for applying mixins to MatChipRemove. - * @docs-private - */ -class MatChipRemoveBase extends MatChipTrailingIcon { - constructor(elementRef: ElementRef) { - super(elementRef); - } -} - -const _MatChipRemoveMixinBase = mixinTabIndex(mixinDisabled(MatChipRemoveBase), 0); - /** * Directive to remove the parent chip when the trailing icon is clicked or * when the ENTER key is pressed on it. @@ -156,48 +87,32 @@ const _MatChipRemoveMixinBase = mixinTabIndex(mixinDisabled(MatChipRemoveBase), * * ``` */ + @Directive({ selector: '[matChipRemove]', - inputs: ['disabled', 'tabIndex'], host: { - 'class': `mat-mdc-chip-remove mat-mdc-chip-trailing-icon mat-mdc-focus-indicator - mdc-chip__icon mdc-chip__icon--trailing`, - '[tabIndex]': 'tabIndex', + 'class': + 'mat-mdc-chip-remove mat-mdc-chip-trailing-icon mat-mdc-focus-indicator ' + + 'mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing', 'role': 'button', - '(click)': '_handleClick($event)', - '(keydown)': 'interaction.next($event)', - - // We need to remove this explicitly, because it gets inherited from MatChipTrailingIcon. '[attr.aria-hidden]': 'null', }, providers: [{provide: MAT_CHIP_REMOVE, useExisting: MatChipRemove}], }) -export class MatChipRemove extends _MatChipRemoveMixinBase implements CanDisable, HasTabIndex { - /** - * Emits when the user interacts with the icon. - * @docs-private - */ - readonly interaction = new Subject(); - - constructor(elementRef: ElementRef) { - super(elementRef); - - if (elementRef.nativeElement.nodeName === 'BUTTON') { - elementRef.nativeElement.setAttribute('type', 'button'); - } +export class MatChipRemove extends MatChipAction { + protected override _createFoundation(adapter: MDCChipActionAdapter) { + return new MDCChipTrailingActionFoundation(adapter); } - /** Emits a MouseEvent when the user clicks on the remove icon. */ - _handleClick(event: MouseEvent): void { - this.interaction.next(event); - + override _handleClick(event: MouseEvent) { + // Some consumers bind `click` events directly on the chip + // which will also pick up clicks on the remove button. event.stopPropagation(); + super._handleClick(event); } - override focus() { - this._elementRef.nativeElement.focus(); + override _handleKeydown(event: KeyboardEvent) { + event.stopPropagation(); + super._handleKeydown(event); } - - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_tabIndex: NumberInput; } diff --git a/src/material-experimental/mdc-chips/chip-input.spec.ts b/src/material-experimental/mdc-chips/chip-input.spec.ts index 90e14f51677f..e83af9f8d9f6 100644 --- a/src/material-experimental/mdc-chips/chip-input.spec.ts +++ b/src/material-experimental/mdc-chips/chip-input.spec.ts @@ -3,7 +3,7 @@ import {COMMA, ENTER, TAB} from '@angular/cdk/keycodes'; import {PlatformModule} from '@angular/cdk/platform'; import {dispatchKeyboardEvent} from '../../cdk/testing/private'; import {Component, DebugElement, ViewChild} from '@angular/core'; -import {waitForAsync, ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {waitForAsync, ComponentFixture, fakeAsync, TestBed, flush} from '@angular/core/testing'; import {MatFormFieldModule} from '@angular/material-experimental/mdc-form-field'; import {By} from '@angular/platform-browser'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; @@ -114,14 +114,14 @@ describe('MDC-based MatChipInput', () => { expect(gridElement.getAttribute('tabindex')).toBe('0'); - dispatchKeyboardEvent(inputNativeElement, 'keydown', TAB); + dispatchKeyboardEvent(gridElement, 'keydown', TAB); fixture.detectChanges(); expect(gridElement.getAttribute('tabindex')) .withContext('Expected tabIndex to be set to -1 temporarily.') .toBe('-1'); - tick(); + flush(); fixture.detectChanges(); expect(gridElement.getAttribute('tabindex')) @@ -129,26 +129,6 @@ describe('MDC-based MatChipInput', () => { .toBe('0'); })); - it('should not allow focus to escape when tabbing backwards', fakeAsync(() => { - const gridElement: HTMLElement = fixture.nativeElement.querySelector('mat-chip-grid'); - - expect(gridElement.getAttribute('tabindex')).toBe('0'); - - dispatchKeyboardEvent(inputNativeElement, 'keydown', TAB, undefined, {shift: true}); - fixture.detectChanges(); - - expect(gridElement.getAttribute('tabindex')) - .withContext('Expected tabindex to remain 0') - .toBe('0'); - - tick(); - fixture.detectChanges(); - - expect(gridElement.getAttribute('tabindex')) - .withContext('Expected tabindex to remain 0') - .toBe('0'); - })); - it('should set input styling classes', () => { expect(inputNativeElement.classList).toContain('mat-mdc-input-element'); expect(inputNativeElement.classList).toContain('mat-mdc-form-field-input-control'); diff --git a/src/material-experimental/mdc-chips/chip-input.ts b/src/material-experimental/mdc-chips/chip-input.ts index d334bbcf62b5..1362f612cf7d 100644 --- a/src/material-experimental/mdc-chips/chip-input.ts +++ b/src/material-experimental/mdc-chips/chip-input.ts @@ -7,7 +7,7 @@ */ import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; -import {BACKSPACE, hasModifierKey, TAB} from '@angular/cdk/keycodes'; +import {BACKSPACE, hasModifierKey} from '@angular/cdk/keycodes'; import { AfterContentInit, Directive, @@ -37,11 +37,8 @@ export interface MatChipInputEvent { /** The value of the input. */ value: string; - /** - * Reference to the chip input that emitted the event. - * @breaking-change 13.0.0 This property will be made required. - */ - chipInput?: MatChipInput; + /** Reference to the chip input that emitted the event. */ + chipInput: MatChipInput; } // Increasing integer for generating unique ids. @@ -96,7 +93,7 @@ export class MatChipInput implements MatChipTextControl, AfterContentInit, OnCha get addOnBlur(): boolean { return this._addOnBlur; } - set addOnBlur(value: boolean) { + set addOnBlur(value: BooleanInput) { this._addOnBlur = coerceBooleanProperty(value); } _addOnBlur: boolean = false; @@ -125,7 +122,7 @@ export class MatChipInput implements MatChipTextControl, AfterContentInit, OnCha get disabled(): boolean { return this._disabled || (this._chipGrid && this._chipGrid.disabled); } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } private _disabled: boolean = false; @@ -136,7 +133,7 @@ export class MatChipInput implements MatChipTextControl, AfterContentInit, OnCha } /** The native input element to which this directive is attached. */ - readonly inputElement: HTMLInputElement; + readonly inputElement!: HTMLInputElement; constructor( protected _elementRef: ElementRef, @@ -165,19 +162,11 @@ export class MatChipInput implements MatChipTextControl, AfterContentInit, OnCha /** Utility method to make host definition/tests more clear. */ _keydown(event?: KeyboardEvent) { if (event) { - // Allow the user's focus to escape when they're tabbing forward. Note that we don't - // want to do this when going backwards, because focus should go back to the first chip. - if (event.keyCode === TAB && !hasModifierKey(event, 'shiftKey')) { - this._chipGrid._allowFocusEscape(); - } - // To prevent the user from accidentally deleting chips when pressing BACKSPACE continuously, // We focus the last chip on backspace only after the user has released the backspace button, // And the input is empty (see behaviour in _keyup) if (event.keyCode === BACKSPACE && this._focusLastChipOnBackspace) { - if (this._chipGrid._chips.length) { - this._chipGrid._keyManager.setLastCellActive(); - } + this._chipGrid._focusLastChip(); event.preventDefault(); return; } else { @@ -255,7 +244,4 @@ export class MatChipInput implements MatChipTextControl, AfterContentInit, OnCha private _isSeparatorKey(event: KeyboardEvent) { return !hasModifierKey(event) && new Set(this.separatorKeyCodes).has(event.keyCode); } - - static ngAcceptInputType_addOnBlur: BooleanInput; - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/material-experimental/mdc-chips/chip-listbox.spec.ts b/src/material-experimental/mdc-chips/chip-listbox.spec.ts index 914afd3f31b1..105e2e45cbe4 100644 --- a/src/material-experimental/mdc-chips/chip-listbox.spec.ts +++ b/src/material-experimental/mdc-chips/chip-listbox.spec.ts @@ -1,28 +1,20 @@ -import {FocusKeyManager} from '@angular/cdk/a11y'; import {Direction, Directionality} from '@angular/cdk/bidi'; import {END, HOME, LEFT_ARROW, RIGHT_ARROW, SPACE, TAB} from '@angular/cdk/keycodes'; -import { - createKeyboardEvent, - dispatchEvent, - dispatchFakeEvent, - dispatchKeyboardEvent, - MockNgZone, -} from '../../cdk/testing/private'; +import {dispatchFakeEvent, dispatchKeyboardEvent, MockNgZone} from '../../cdk/testing/private'; import { Component, DebugElement, NgZone, - Provider, QueryList, Type, ViewChild, ViewChildren, + EventEmitter, } from '@angular/core'; -import {ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {ComponentFixture, fakeAsync, flush, TestBed, tick} from '@angular/core/testing'; import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; import {By} from '@angular/platform-browser'; -import {Subject} from 'rxjs'; -import {MatChip, MatChipListbox, MatChipOption, MatChipsModule} from './index'; +import {MatChipListbox, MatChipOption, MatChipsModule} from './index'; describe('MDC-based MatChipListbox', () => { let fixture: ComponentFixture; @@ -31,14 +23,14 @@ describe('MDC-based MatChipListbox', () => { let chipListboxInstance: MatChipListbox; let testComponent: StandardChipListbox; let chips: QueryList; - let manager: FocusKeyManager; let zone: MockNgZone; - let dirChange: Subject; + let directionality: {value: Direction; change: EventEmitter}; + let primaryActions: NodeListOf; describe('StandardChipList', () => { describe('basic behaviors', () => { beforeEach(() => { - setupStandardListbox(); + createComponent(StandardChipListbox); }); it('should add the `mat-mdc-chip-set` class', () => { @@ -109,9 +101,6 @@ describe('MDC-based MatChipListbox', () => { describe('with selected chips', () => { beforeEach(() => { fixture = createComponent(SelectedChipListbox); - fixture.detectChanges(); - chipListboxDebugElement = fixture.debugElement.query(By.directive(MatChipListbox))!; - chipListboxNativeElement = chipListboxDebugElement.nativeElement; }); it('should not override chips selected', () => { @@ -144,26 +133,21 @@ describe('MDC-based MatChipListbox', () => { describe('focus behaviors', () => { beforeEach(() => { - setupStandardListbox(); - manager = chipListboxInstance._keyManager; + createComponent(StandardChipListbox); }); it('should focus the first chip on focus', () => { chipListboxInstance.focus(); fixture.detectChanges(); - expect(manager.activeItemIndex).toBe(0); + expect(document.activeElement).toBe(primaryActions[0]); }); - it('should watch for chip focus', () => { - let array = chips.toArray(); - let lastIndex = array.length - 1; - let lastItem = array[lastIndex]; - - lastItem.focus(); + it('should focus the primary action when calling the `focus` method', () => { + chips.last.focus(); fixture.detectChanges(); - expect(manager.activeItemIndex).toBe(lastIndex); + expect(document.activeElement).toBe(primaryActions[primaryActions.length - 1]); }); it('should not be able to become focused when disabled', () => { @@ -193,8 +177,7 @@ describe('MDC-based MatChipListbox', () => { describe('on chip destroy', () => { it('should focus the next item', () => { - let array = chips.toArray(); - let midItem = array[2]; + const midItem = chips.get(2)!; // Focus the middle item midItem.focus(); @@ -203,41 +186,39 @@ describe('MDC-based MatChipListbox', () => { testComponent.chips.splice(2, 1); fixture.detectChanges(); - // It focuses the 4th item (now at index 2) - expect(manager.activeItemIndex).toEqual(2); + // It focuses the 4th item + expect(document.activeElement).toBe(primaryActions[3]); }); it('should focus the previous item', () => { - let array = chips.toArray(); - let lastIndex = array.length - 1; - let lastItem = array[lastIndex]; - // Focus the last item - lastItem.focus(); + chips.last.focus(); // Destroy the last item testComponent.chips.pop(); fixture.detectChanges(); + // It focuses the next-to-last item - expect(manager.activeItemIndex).toEqual(lastIndex - 1); + expect(document.activeElement).toBe(primaryActions[primaryActions.length - 2]); }); - it('should not focus if chip listbox is not focused', () => { - let array = chips.toArray(); - let midItem = array[2]; + it('should not focus if chip listbox is not focused', fakeAsync(() => { + const midItem = chips.get(2)!; // Focus and blur the middle item midItem.focus(); - midItem._blur(); + (document.activeElement as HTMLElement).blur(); + tick(); zone.simulateZoneExit(); // Destroy the middle item testComponent.chips.splice(2, 1); fixture.detectChanges(); + tick(); // Should not have focus - expect(chipListboxInstance._keyManager.activeItemIndex).toEqual(-1); - }); + expect(chipListboxNativeElement.contains(document.activeElement)).toBe(false); + })); it('should focus the listbox if the last focused item is removed', () => { testComponent.chips = [0]; @@ -257,155 +238,120 @@ describe('MDC-based MatChipListbox', () => { describe('keyboard behavior', () => { describe('LTR (default)', () => { beforeEach(() => { - setupStandardListbox(); - manager = chipListboxInstance._keyManager; + createComponent(StandardChipListbox); }); it('should focus previous item when press LEFT ARROW', () => { - let nativeChips = chipListboxNativeElement.querySelectorAll('mat-chip-option'); - let lastNativeChip = nativeChips[nativeChips.length - 1] as HTMLElement; - - let array = chips.toArray(); - let lastIndex = array.length - 1; - let lastItem = array[lastIndex]; + const lastIndex = primaryActions.length - 1; // Focus the last item in the array - lastItem.focus(); - expect(manager.activeItemIndex).toEqual(lastIndex); + chips.last.focus(); + expect(document.activeElement).toBe(primaryActions[lastIndex]); // Press the LEFT arrow - dispatchKeyboardEvent(lastNativeChip, 'keydown', LEFT_ARROW); - chipListboxInstance._blur(); // Simulate focus leaving the listbox and going to the chip. + dispatchKeyboardEvent(primaryActions[lastIndex], 'keydown', LEFT_ARROW); fixture.detectChanges(); // It focuses the next-to-last item - expect(manager.activeItemIndex).toEqual(lastIndex - 1); + expect(document.activeElement).toBe(primaryActions[lastIndex - 1]); }); it('should focus next item when press RIGHT ARROW', () => { - let nativeChips = chipListboxNativeElement.querySelectorAll('mat-chip-option'); - let firstNativeChip = nativeChips[0] as HTMLElement; - - let array = chips.toArray(); - let firstItem = array[0]; - // Focus the last item in the array - firstItem.focus(); - expect(manager.activeItemIndex).toEqual(0); + chips.first.focus(); + expect(document.activeElement).toBe(primaryActions[0]); // Press the RIGHT arrow - dispatchKeyboardEvent(firstNativeChip, 'keydown', RIGHT_ARROW); - chipListboxInstance._blur(); // Simulate focus leaving the listbox and going to the chip. + dispatchKeyboardEvent(primaryActions[0], 'keydown', RIGHT_ARROW); fixture.detectChanges(); // It focuses the next-to-last item - expect(manager.activeItemIndex).toEqual(1); + expect(document.activeElement).toBe(primaryActions[1]); }); it('should not handle arrow key events from non-chip elements', () => { - const initialActiveIndex = manager.activeItemIndex; + const previousActiveElement = document.activeElement; dispatchKeyboardEvent(chipListboxNativeElement, 'keydown', RIGHT_ARROW); fixture.detectChanges(); - expect(manager.activeItemIndex) + expect(document.activeElement) .withContext('Expected focused item not to have changed.') - .toBe(initialActiveIndex); + .toBe(previousActiveElement); }); it('should focus the first item when pressing HOME', () => { - const nativeChips = chipListboxNativeElement.querySelectorAll('mat-chip-option'); - const lastNativeChip = nativeChips[nativeChips.length - 1] as HTMLElement; - const HOME_EVENT = createKeyboardEvent('keydown', HOME); - const array = chips.toArray(); - const lastItem = array[array.length - 1]; - - lastItem.focus(); - expect(manager.activeItemIndex).toBe(array.length - 1); + const lastAction = primaryActions[primaryActions.length - 1]; + chips.last.focus(); + expect(document.activeElement).toBe(lastAction); - dispatchEvent(lastNativeChip, HOME_EVENT); + const event = dispatchKeyboardEvent(lastAction, 'keydown', HOME); fixture.detectChanges(); - expect(manager.activeItemIndex).toBe(0); - expect(HOME_EVENT.defaultPrevented).toBe(true); + expect(document.activeElement).toBe(primaryActions[0]); + expect(event.defaultPrevented).toBe(true); }); it('should focus the last item when pressing END', () => { - const nativeChips = chipListboxNativeElement.querySelectorAll('mat-chip-option'); - const END_EVENT = createKeyboardEvent('keydown', END); - - expect(manager.activeItemIndex).toBe(-1); + chips.first.focus(); + expect(document.activeElement).toBe(primaryActions[0]); - dispatchEvent(nativeChips[0], END_EVENT); + const event = dispatchKeyboardEvent(primaryActions[0], 'keydown', END); fixture.detectChanges(); - expect(manager.activeItemIndex).toBe(chips.length - 1); - expect(END_EVENT.defaultPrevented).toBe(true); + expect(document.activeElement).toBe(primaryActions[primaryActions.length - 1]); + expect(event.defaultPrevented).toBe(true); }); }); describe('RTL', () => { beforeEach(() => { - setupStandardListbox('rtl'); - manager = chipListboxInstance._keyManager; + createComponent(StandardChipListbox, 'rtl'); }); it('should focus previous item when press RIGHT ARROW', () => { - let nativeChips = chipListboxNativeElement.querySelectorAll('mat-chip-option'); - let lastNativeChip = nativeChips[nativeChips.length - 1] as HTMLElement; - - let array = chips.toArray(); - let lastIndex = array.length - 1; - let lastItem = array[lastIndex]; + const lastIndex = primaryActions.length - 1; // Focus the last item in the array - lastItem.focus(); - expect(manager.activeItemIndex).toEqual(lastIndex); + chips.last.focus(); + expect(document.activeElement).toBe(primaryActions[lastIndex]); // Press the RIGHT arrow - dispatchKeyboardEvent(lastNativeChip, 'keydown', RIGHT_ARROW); - chipListboxInstance._blur(); // Simulate focus leaving the listbox and going to the chip. + dispatchKeyboardEvent(primaryActions[lastIndex], 'keydown', RIGHT_ARROW); fixture.detectChanges(); // It focuses the next-to-last item - expect(manager.activeItemIndex).toEqual(lastIndex - 1); + expect(document.activeElement).toBe(primaryActions[lastIndex - 1]); }); it('should focus next item when press LEFT ARROW', () => { - let nativeChips = chipListboxNativeElement.querySelectorAll('mat-chip-option'); - let firstNativeChip = nativeChips[0] as HTMLElement; - - let array = chips.toArray(); - let firstItem = array[0]; - // Focus the last item in the array - firstItem.focus(); - expect(manager.activeItemIndex).toEqual(0); + chips.first.focus(); + expect(document.activeElement).toBe(primaryActions[0]); // Press the LEFT arrow - dispatchKeyboardEvent(firstNativeChip, 'keydown', LEFT_ARROW); - chipListboxInstance._blur(); // Simulate focus leaving the listbox and going to the chip. + dispatchKeyboardEvent(primaryActions[0], 'keydown', LEFT_ARROW); fixture.detectChanges(); // It focuses the next-to-last item - expect(manager.activeItemIndex).toEqual(1); + expect(document.activeElement).toBe(primaryActions[1]); }); it('should allow focus to escape when tabbing away', fakeAsync(() => { - chipListboxInstance._keyManager.onKeydown(createKeyboardEvent('keydown', TAB)); + dispatchKeyboardEvent(chipListboxNativeElement, 'keydown', TAB); expect(chipListboxInstance.tabIndex) .withContext('Expected tabIndex to be set to -1 temporarily.') .toBe(-1); - tick(); + flush(); expect(chipListboxInstance.tabIndex) .withContext('Expected tabIndex to be reset back to 0') .toBe(0); })); - it(`should use user defined tabIndex`, fakeAsync(() => { + it('should use user defined tabIndex', fakeAsync(() => { chipListboxInstance.tabIndex = 4; fixture.detectChanges(); @@ -414,13 +360,13 @@ describe('MDC-based MatChipListbox', () => { .withContext('Expected tabIndex to be set to user defined value 4.') .toBe(4); - chipListboxInstance._keyManager.onKeydown(createKeyboardEvent('keydown', TAB)); + dispatchKeyboardEvent(chipListboxNativeElement, 'keydown', TAB); expect(chipListboxInstance.tabIndex) .withContext('Expected tabIndex to be set to -1 temporarily.') .toBe(-1); - tick(); + flush(); expect(chipListboxInstance.tabIndex) .withContext('Expected tabIndex to be reset back to 4') @@ -429,56 +375,35 @@ describe('MDC-based MatChipListbox', () => { }); it('should account for the direction changing', () => { - setupStandardListbox(); - manager = chipListboxInstance._keyManager; - - let nativeChips = chipListboxNativeElement.querySelectorAll('mat-chip-option'); - let firstNativeChip = nativeChips[0] as HTMLElement; - - let array = chips.toArray(); - let firstItem = array[0]; + createComponent(StandardChipListbox); - firstItem.focus(); - expect(manager.activeItemIndex).toBe(0); + chips.first.focus(); + expect(document.activeElement).toBe(primaryActions[0]); - dispatchKeyboardEvent(firstNativeChip, 'keydown', RIGHT_ARROW); - chipListboxInstance._blur(); + dispatchKeyboardEvent(primaryActions[0], 'keydown', RIGHT_ARROW); fixture.detectChanges(); - expect(manager.activeItemIndex).toBe(1); + expect(document.activeElement).toBe(primaryActions[1]); - dirChange.next('rtl'); + directionality.value = 'rtl'; fixture.detectChanges(); - dispatchKeyboardEvent(firstNativeChip, 'keydown', RIGHT_ARROW); - chipListboxInstance._blur(); + dispatchKeyboardEvent(primaryActions[1], 'keydown', RIGHT_ARROW); fixture.detectChanges(); - expect(manager.activeItemIndex).toBe(0); + expect(document.activeElement).toBe(primaryActions[0]); }); }); describe('selection logic', () => { - let nativeChips: HTMLElement[]; - beforeEach(() => { fixture = createComponent(BasicChipListbox); - fixture.detectChanges(); - - nativeChips = fixture.debugElement - .queryAll(By.css('mat-chip-option')) - .map(chip => chip.nativeElement); - - chipListboxDebugElement = fixture.debugElement.query(By.directive(MatChipListbox))!; - chipListboxInstance = chipListboxDebugElement.componentInstance; - chips = chipListboxInstance._chips; }); it('should remove selection if chip has been removed', fakeAsync(() => { const instanceChips = fixture.componentInstance.chips; const chipListbox = fixture.componentInstance.chipListbox; - const firstChip = nativeChips[0]; - dispatchKeyboardEvent(firstChip, 'keydown', SPACE); + dispatchKeyboardEvent(primaryActions[0], 'keydown', SPACE); fixture.detectChanges(); expect(instanceChips.first.selected) @@ -501,11 +426,11 @@ describe('MDC-based MatChipListbox', () => { fixture.componentInstance.foods.push({viewValue: 'Potatoes', value: 'potatoes-8'}); fixture.detectChanges(); - nativeChips = fixture.debugElement - .queryAll(By.css('mat-chip-option')) - .map(chip => chip.nativeElement); - const lastChip = nativeChips[8]; - dispatchKeyboardEvent(lastChip, 'keydown', SPACE); + primaryActions = chipListboxNativeElement.querySelectorAll( + '.mdc-evolution-chip__action--primary', + ); + + dispatchKeyboardEvent(primaryActions[8], 'keydown', SPACE); fixture.detectChanges(); expect(fixture.componentInstance.chipListbox.value) @@ -518,8 +443,7 @@ describe('MDC-based MatChipListbox', () => { it('should not select disabled chips', () => { const array = chips.toArray(); - const disabledChip = nativeChips[2]; - dispatchKeyboardEvent(disabledChip, 'keydown', SPACE); + dispatchKeyboardEvent(primaryActions[2], 'keydown', SPACE); fixture.detectChanges(); expect(fixture.componentInstance.chipListbox.value) @@ -533,17 +457,9 @@ describe('MDC-based MatChipListbox', () => { }); describe('chip list with chip input', () => { - let nativeChips: HTMLElement[]; - describe('single selection', () => { beforeEach(() => { fixture = createComponent(BasicChipListbox); - fixture.detectChanges(); - - nativeChips = fixture.debugElement - .queryAll(By.css('mat-chip-option')) - .map(chip => chip.nativeElement); - chips = fixture.componentInstance.chips; }); it('should take an initial view value with reactive forms', fakeAsync(() => { @@ -554,8 +470,9 @@ describe('MDC-based MatChipListbox', () => { expect(array[1].selected).withContext('Expect pizza-1 chip to be selected').toBeTruthy(); - dispatchKeyboardEvent(nativeChips[1], 'keydown', SPACE); + dispatchKeyboardEvent(primaryActions[1], 'keydown', SPACE); fixture.detectChanges(); + flush(); expect(array[1].selected) .withContext('Expect chip to be not selected after toggle selected') @@ -581,10 +498,9 @@ describe('MDC-based MatChipListbox', () => { .withContext(`Expected the control's value to be empty initially.`) .toEqual(null); - dispatchKeyboardEvent(nativeChips[0], 'keydown', SPACE); + dispatchKeyboardEvent(primaryActions[0], 'keydown', SPACE); fixture.detectChanges(); - - tick(); + flush(); expect(fixture.componentInstance.control.value) .withContext(`Expected control's value to be set to the new option.`) @@ -662,7 +578,7 @@ describe('MDC-based MatChipListbox', () => { .withContext(`Expected control to start out pristine.`) .toEqual(false); - dispatchKeyboardEvent(nativeChips[1], 'keydown', SPACE); + dispatchKeyboardEvent(primaryActions[1], 'keydown', SPACE); fixture.detectChanges(); expect(fixture.componentInstance.control.dirty) @@ -687,8 +603,6 @@ describe('MDC-based MatChipListbox', () => { TestBed.resetTestingModule(); const falsyFixture = createComponent(FalsyValueChipListbox); - falsyFixture.detectChanges(); - falsyFixture.componentInstance.control.setValue([0]); falsyFixture.detectChanges(); falsyFixture.detectChanges(); @@ -713,11 +627,6 @@ describe('MDC-based MatChipListbox', () => { describe('multiple selection', () => { beforeEach(() => { fixture = createComponent(MultiSelectionChipListbox); - fixture.detectChanges(); - - nativeChips = fixture.debugElement - .queryAll(By.css('mat-chip-option')) - .map(chip => chip.nativeElement); chips = fixture.componentInstance.chips; }); @@ -729,7 +638,7 @@ describe('MDC-based MatChipListbox', () => { expect(array[1].selected).withContext('Expect pizza-1 chip to be selected').toBeTruthy(); - dispatchKeyboardEvent(nativeChips[1], 'keydown', SPACE); + dispatchKeyboardEvent(primaryActions[1], 'keydown', SPACE); fixture.detectChanges(); expect(array[1].selected) @@ -756,7 +665,7 @@ describe('MDC-based MatChipListbox', () => { .withContext(`Expected the control's value to be empty initially.`) .toEqual(null); - dispatchKeyboardEvent(nativeChips[0], 'keydown', SPACE); + dispatchKeyboardEvent(primaryActions[0], 'keydown', SPACE); fixture.detectChanges(); expect(fixture.componentInstance.control.value) @@ -800,27 +709,25 @@ describe('MDC-based MatChipListbox', () => { }); }); - function createComponent(component: Type, providers: Provider[] = []): ComponentFixture { + function createComponent( + component: Type, + direction: Direction = 'ltr', + ): ComponentFixture { + directionality = { + value: direction, + change: new EventEmitter(), + }; + TestBed.configureTestingModule({ imports: [FormsModule, ReactiveFormsModule, MatChipsModule], declarations: [component], - providers: [{provide: NgZone, useFactory: () => (zone = new MockNgZone())}, ...providers], + providers: [ + {provide: NgZone, useFactory: () => (zone = new MockNgZone())}, + {provide: Directionality, useValue: directionality}, + ], }).compileComponents(); - return TestBed.createComponent(component); - } - - function setupStandardListbox(direction: Direction = 'ltr') { - dirChange = new Subject(); - fixture = createComponent(StandardChipListbox, [ - { - provide: Directionality, - useFactory: () => ({ - value: direction.toLowerCase(), - change: dirChange, - }), - }, - ]); + fixture = TestBed.createComponent(component); fixture.detectChanges(); chipListboxDebugElement = fixture.debugElement.query(By.directive(MatChipListbox))!; @@ -828,6 +735,11 @@ describe('MDC-based MatChipListbox', () => { chipListboxInstance = chipListboxDebugElement.componentInstance; testComponent = fixture.debugElement.componentInstance; chips = chipListboxInstance._chips; + primaryActions = chipListboxNativeElement.querySelectorAll( + '.mdc-evolution-chip__action--primary', + ); + + return fixture; } }); diff --git a/src/material-experimental/mdc-chips/chip-listbox.ts b/src/material-experimental/mdc-chips/chip-listbox.ts index 68a57270a225..c3ee1d4ae724 100644 --- a/src/material-experimental/mdc-chips/chip-listbox.ts +++ b/src/material-experimental/mdc-chips/chip-listbox.ts @@ -6,27 +6,24 @@ * found in the LICENSE file at https://angular.io/license */ -import {FocusKeyManager} from '@angular/cdk/a11y'; -import {Directionality} from '@angular/cdk/bidi'; import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; +import {TAB} from '@angular/cdk/keycodes'; import { AfterContentInit, ChangeDetectionStrategy, - ChangeDetectorRef, Component, ContentChildren, - ElementRef, EventEmitter, forwardRef, Input, - Optional, + OnDestroy, Output, QueryList, ViewEncapsulation, } from '@angular/core'; import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; -import {deprecated} from '@material/chips'; -import {merge, Observable, Subscription} from 'rxjs'; +import {MDCChipActionType} from '@material/chips'; +import {Observable} from 'rxjs'; import {startWith, takeUntil} from 'rxjs/operators'; import {MatChip, MatChipEvent} from './chip'; import {MatChipOption, MatChipSelectionChange} from './chip-option'; @@ -59,11 +56,15 @@ export const MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR: any = { */ @Component({ selector: 'mat-chip-listbox', - template: '', - styleUrls: ['chips.css'], + template: ` + + + + `, + styleUrls: ['chip-set.css'], inputs: ['tabIndex'], host: { - 'class': 'mat-mdc-chip-set mat-mdc-chip-listbox mdc-chip-set', + 'class': 'mdc-evolution-chip-set mat-mdc-chip-listbox', '[attr.role]': 'role', '[tabIndex]': 'empty ? -1 : tabIndex', // TODO: replace this binding with use of AriaDescriber @@ -77,25 +78,15 @@ export const MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR: any = { '(focus)': 'focus()', '(blur)': '_blur()', '(keydown)': '_keydown($event)', - '[id]': '_uid', }, providers: [MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) -export class MatChipListbox extends MatChipSet implements AfterContentInit, ControlValueAccessor { - /** Subscription to selection changes in the chips. */ - private _chipSelectionSubscription: Subscription | null; - - /** Subscription to blur changes in the chips. */ - private _chipBlurSubscription: Subscription | null; - - /** Subscription to focus changes in the chips. */ - private _chipFocusSubscription: Subscription | null; - - /** The FocusKeyManager which handles focus. */ - _keyManager: FocusKeyManager; - +export class MatChipListbox + extends MatChipSet + implements AfterContentInit, OnDestroy, ControlValueAccessor +{ /** * Function when touched. Set as part of ControlValueAccessor implementation. * @docs-private @@ -109,6 +100,7 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont _onChange: (value: any) => void = () => {}; /** The ARIA role applied to the chip listbox. */ + // TODO: MDC uses `grid` here override get role(): string | null { return this.empty ? null : 'listbox'; } @@ -118,9 +110,8 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont get multiple(): boolean { return this._multiple; } - set multiple(value: boolean) { + set multiple(value: BooleanInput) { this._multiple = coerceBooleanProperty(value); - this._updateMdcSelectionClasses(); this._syncListboxProperties(); } private _multiple: boolean = false; @@ -144,9 +135,8 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont get selectable(): boolean { return this._selectable; } - set selectable(value: boolean) { + set selectable(value: BooleanInput) { this._selectable = coerceBooleanProperty(value); - this._updateMdcSelectionClasses(); this._syncListboxProperties(); } protected _selectable: boolean = true; @@ -171,24 +161,24 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont get required(): boolean { return this._required; } - set required(value: boolean) { + set required(value: BooleanInput) { this._required = coerceBooleanProperty(value); } protected _required: boolean = false; /** Combined stream of all of the child chips' selection change events. */ get chipSelectionChanges(): Observable { - return merge(...this._chips.map(chip => chip.selectionChange)); + return this._getChipStream(chip => chip.selectionChange); } /** Combined stream of all of the child chips' focus events. */ get chipFocusChanges(): Observable { - return merge(...this._chips.map(chip => chip._onFocus)); + return this._getChipStream(chip => chip._onFocus); } /** Combined stream of all of the child chips' blur events. */ get chipBlurChanges(): Observable { - return merge(...this._chips.map(chip => chip._onBlur)); + return this._getChipStream(chip => chip._onBlur); } /** The value of the listbox, which is the combined value of the selected chips. */ @@ -213,23 +203,8 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont }) override _chips: QueryList; - constructor( - elementRef: ElementRef, - changeDetectorRef: ChangeDetectorRef, - @Optional() _dir: Directionality, - ) { - super(elementRef, changeDetectorRef, _dir); - this._chipSetAdapter.selectChipAtIndex = (index: number, selected: boolean) => { - this._setSelected(index, selected); - }; - // Reinitialize the foundation with our overridden adapter - this._chipSetFoundation = new deprecated.MDCChipSetFoundation(this._chipSetAdapter); - this._updateMdcSelectionClasses(); - } - override ngAfterContentInit() { super.ngAfterContentInit(); - this._initKeyManager(); this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => { // Update listbox selectable/multiple properties on chips @@ -241,6 +216,13 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont // Check to see if we have a destroyed chip and need to refocus this._updateFocusForDestroyedChips(); }); + + this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => this._blur()); + this.chipSelectionChanges.pipe(takeUntil(this._destroyed)).subscribe(event => { + if (event.isUserInput) { + this._propagateChanges(); + } + }); } /** @@ -255,10 +237,13 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont const firstSelectedChip = this._getFirstSelectedChip(); if (firstSelectedChip) { - const firstSelectedChipIndex = this._chips.toArray().indexOf(firstSelectedChip); - this._keyManager.setActiveItem(firstSelectedChipIndex); + firstSelectedChip.focus(); } else if (this._chips.length > 0) { - this._keyManager.setFirstItemActive(); + // MDC sets the tabindex directly on the DOM node when the user is navigating which means + // that we may end up with a `0` value from a previous interaction. We reset it manually + // here to ensure that the state is correct. + this._chips.forEach(chip => chip.primaryAction._updateTabindex(-1)); + this._chips.first.primaryAction.focus(); } } @@ -303,69 +288,26 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont if (Array.isArray(value)) { value.forEach(currentValue => this._selectValue(currentValue, isUserInput)); } else { - const correspondingChip = this._selectValue(value, isUserInput); - - // Shift focus to the active item. Note that we shouldn't do this in multiple - // mode, because we don't know what chip the user interacted with last. - if (correspondingChip) { - if (isUserInput) { - this._keyManager.setActiveItem(correspondingChip); - } - } - } - } - - /** Selects or deselects a chip by id. */ - _setSelected(index: number, selected: boolean) { - const chip = this._chips.toArray()[index]; - if (chip && chip.selected != selected) { - chip.toggleSelected(true); + this._selectValue(value, isUserInput); } } /** When blurred, marks the field as touched when focus moved outside the chip listbox. */ _blur() { - if (this.disabled) { - return; - } - - if (!this.focused) { - this._keyManager.setActiveItem(-1); - } - - // Wait to see if focus moves to an indivdual chip. - setTimeout(() => { - if (!this.focused) { - this._propagateChanges(); - this._markAsTouched(); - } - }); - } - - /** - * Removes the `tabindex` from the chip listbox and resets it back afterwards, allowing the - * user to tab out of it. This prevents the listbox from capturing focus and redirecting - * it back to the first chip, creating a focus trap, if it user tries to tab away. - */ - _allowFocusEscape() { - const previousTabIndex = this.tabIndex; - - if (this.tabIndex !== -1) { - this.tabIndex = -1; - + if (!this.disabled) { + // Wait to see if focus moves to an individual chip. setTimeout(() => { - this.tabIndex = previousTabIndex; - this._changeDetectorRef.markForCheck(); + if (!this.focused) { + this._propagateChanges(); + this._markAsTouched(); + } }); } } - /** - * Handles custom keyboard shortcuts, and passes other keyboard events to the keyboard manager. - */ _keydown(event: KeyboardEvent) { - if (this._originatesFromChip(event)) { - this._keyManager.onKeydown(event); + if (event.keyCode === TAB) { + super._allowFocusEscape(); } } @@ -376,13 +318,13 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont } /** Emits change event to set the model value. */ - private _propagateChanges(fallbackValue?: any): void { + private _propagateChanges(): void { let valueToEmit: any = null; if (Array.isArray(this.selected)) { valueToEmit = this.selected.map(chip => chip.value); } else { - valueToEmit = this.selected ? this.selected.value : fallbackValue; + valueToEmit = this.selected ? this.selected.value : undefined; } this._value = valueToEmit; this.change.emit(new MatChipListboxChange(this, valueToEmit)); @@ -397,9 +339,9 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont setTimeout(() => { // Defer setting the value in order to avoid the "Expression // has changed after it was checked" errors from Angular. - this._chips.forEach(chip => { + this._chips.forEach((chip, index) => { if (chip.selected) { - this._chipSetFoundation.select(chip.id); + this._chipSetFoundation.setChipSelected(index, MDCChipActionType.PRIMARY, true); } }); }); @@ -448,31 +390,6 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont } } - /** Sets the mdc classes for single vs multi selection. */ - private _updateMdcSelectionClasses() { - this._setMdcClass('mdc-chip-set--filter', this.selectable && this.multiple); - this._setMdcClass('mdc-chip-set--choice', this.selectable && !this.multiple); - } - - /** Initializes the key manager to manage focus. */ - private _initKeyManager() { - this._keyManager = new FocusKeyManager(this._chips) - .withWrap() - .withVerticalOrientation() - .withHomeAndEnd() - .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr'); - - if (this._dir) { - this._dir.change - .pipe(takeUntil(this._destroyed)) - .subscribe(dir => this._keyManager.withHorizontalOrientation(dir)); - } - - this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => { - this._allowFocusEscape(); - }); - } - /** Returns the first selected chip in this listbox, or undefined if no chips are selected. */ private _getFirstSelectedChip(): MatChipOption | undefined { if (Array.isArray(this.selected)) { @@ -482,67 +399,6 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont } } - /** Unsubscribes from all chip events. */ - protected override _dropSubscriptions() { - super._dropSubscriptions(); - if (this._chipSelectionSubscription) { - this._chipSelectionSubscription.unsubscribe(); - this._chipSelectionSubscription = null; - } - - if (this._chipBlurSubscription) { - this._chipBlurSubscription.unsubscribe(); - this._chipBlurSubscription = null; - } - - if (this._chipFocusSubscription) { - this._chipFocusSubscription.unsubscribe(); - this._chipFocusSubscription = null; - } - } - - /** Subscribes to events on the child chips. */ - protected override _subscribeToChipEvents() { - super._subscribeToChipEvents(); - this._listenToChipsSelection(); - this._listenToChipsFocus(); - this._listenToChipsBlur(); - } - - /** Subscribes to chip focus events. */ - private _listenToChipsFocus(): void { - this._chipFocusSubscription = this.chipFocusChanges.subscribe((event: MatChipEvent) => { - let chipIndex: number = this._chips.toArray().indexOf(event.chip as MatChipOption); - - if (this._isValidIndex(chipIndex)) { - this._keyManager.updateActiveItem(chipIndex); - } - }); - } - - /** Subscribes to chip blur events. */ - private _listenToChipsBlur(): void { - this._chipBlurSubscription = this.chipBlurChanges.subscribe(() => { - this._blur(); - }); - } - - /** Subscribes to selection changes in the option chips. */ - private _listenToChipsSelection(): void { - this._chipSelectionSubscription = this.chipSelectionChanges.subscribe( - (chipSelectionChange: MatChipSelectionChange) => { - this._chipSetFoundation.handleChipSelection({ - chipId: chipSelectionChange.source.id, - selected: chipSelectionChange.selected, - shouldIgnore: false, - }); - if (chipSelectionChange.isUserInput) { - this._propagateChanges(); - } - }, - ); - } - /** * If the amount of chips changed, we need to update the * key manager state and focus the next closest chip. @@ -552,7 +408,7 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont if (this._lastDestroyedChipIndex != null) { if (this._chips.length) { const newChipIndex = Math.min(this._lastDestroyedChipIndex, this._chips.length - 1); - this._keyManager.setActiveItem(newChipIndex); + this._chips.toArray()[newChipIndex].focus(); } else { this.focus(); } @@ -560,8 +416,4 @@ export class MatChipListbox extends MatChipSet implements AfterContentInit, Cont this._lastDestroyedChipIndex = null; } - - static ngAcceptInputType_multiple: BooleanInput; - static ngAcceptInputType_selectable: BooleanInput; - static ngAcceptInputType_required: BooleanInput; } diff --git a/src/material-experimental/mdc-chips/chip-option.html b/src/material-experimental/mdc-chips/chip-option.html index c990c6e891ca..262203c58f69 100644 --- a/src/material-experimental/mdc-chips/chip-option.html +++ b/src/material-experimental/mdc-chips/chip-option.html @@ -1,16 +1,37 @@ - - + + + + + - -
- - - -
-
- + + + diff --git a/src/material-experimental/mdc-chips/chip-option.spec.ts b/src/material-experimental/mdc-chips/chip-option.spec.ts index 6a66bc9703f2..626f8f58494e 100644 --- a/src/material-experimental/mdc-chips/chip-option.spec.ts +++ b/src/material-experimental/mdc-chips/chip-option.spec.ts @@ -1,6 +1,5 @@ import {Directionality} from '@angular/cdk/bidi'; -import {SPACE} from '@angular/cdk/keycodes'; -import {createKeyboardEvent, dispatchFakeEvent} from '../../cdk/testing/private'; +import {dispatchFakeEvent, dispatchKeyboardEvent} from '@angular/cdk/testing/private'; import {Component, DebugElement, ViewChild} from '@angular/core'; import {waitForAsync, ComponentFixture, fakeAsync, flush, TestBed} from '@angular/core/testing'; import { @@ -8,7 +7,6 @@ import { RippleGlobalOptions, } from '@angular/material-experimental/mdc-core'; import {By} from '@angular/platform-browser'; -import {deprecated} from '@material/chips'; import {Subject} from 'rxjs'; import { MatChipEvent, @@ -17,11 +15,13 @@ import { MatChipSelectionChange, MatChipsModule, } from './index'; +import {SPACE} from '@angular/cdk/keycodes'; describe('MDC-based Option Chips', () => { let fixture: ComponentFixture; let chipDebugElement: DebugElement; let chipNativeElement: HTMLElement; + let primaryAction: HTMLElement; let chipInstance: MatChipOption; let globalRippleOptions: RippleGlobalOptions; let dir = 'ltr'; @@ -58,6 +58,7 @@ describe('MDC-based Option Chips', () => { chipDebugElement = fixture.debugElement.query(By.directive(MatChipOption))!; chipNativeElement = chipDebugElement.nativeElement; chipInstance = chipDebugElement.injector.get(MatChipOption); + primaryAction = chipNativeElement.querySelector('.mdc-evolution-chip__action--primary')!; testComponent = fixture.debugElement.componentInstance; }); @@ -72,8 +73,8 @@ describe('MDC-based Option Chips', () => { counter++; }); - chipNativeElement.focus(); - chipNativeElement.focus(); + primaryAction.focus(); + primaryAction.focus(); fixture.detectChanges(); expect(counter).toBe(1); @@ -121,16 +122,6 @@ describe('MDC-based Option Chips', () => { expect(event.defaultPrevented).toBe(false); }); - it('should prevent the default click action when the chip is disabled', () => { - chipInstance.disabled = true; - fixture.detectChanges(); - - const event = dispatchFakeEvent(chipNativeElement, 'click'); - fixture.detectChanges(); - - expect(event.defaultPrevented).toBe(true); - }); - it('should not dispatch `selectionChange` event when deselecting a non-selected chip', () => { chipInstance.deselect(); @@ -204,7 +195,6 @@ describe('MDC-based Option Chips', () => { }); it('should selects/deselects the currently focused chip on SPACE', () => { - const SPACE_EVENT = createKeyboardEvent('keydown', SPACE); const CHIP_SELECTED_EVENT: MatChipSelectionChange = { source: chipInstance, isUserInput: true, @@ -220,7 +210,7 @@ describe('MDC-based Option Chips', () => { spyOn(testComponent, 'chipSelectionChange'); // Use the spacebar to select the chip - chipInstance._keydown(SPACE_EVENT); + dispatchKeyboardEvent(primaryAction, 'keydown', SPACE); fixture.detectChanges(); expect(chipInstance.selected).toBeTruthy(); @@ -228,7 +218,7 @@ describe('MDC-based Option Chips', () => { expect(testComponent.chipSelectionChange).toHaveBeenCalledWith(CHIP_SELECTED_EVENT); // Use the spacebar to deselect the chip - chipInstance._keydown(SPACE_EVENT); + dispatchKeyboardEvent(primaryAction, 'keydown', SPACE); fixture.detectChanges(); expect(chipInstance.selected).toBeFalsy(); @@ -237,24 +227,24 @@ describe('MDC-based Option Chips', () => { }); it('should have correct aria-selected in single selection mode', () => { - expect(chipNativeElement.hasAttribute('aria-selected')).toBe(false); + expect(primaryAction.hasAttribute('aria-selected')).toBe(false); testComponent.selected = true; fixture.detectChanges(); - expect(chipNativeElement.getAttribute('aria-selected')).toBe('true'); + expect(primaryAction.getAttribute('aria-selected')).toBe('true'); }); it('should have the correct aria-selected in multi-selection mode', fakeAsync(() => { testComponent.chipList.multiple = true; flush(); fixture.detectChanges(); - expect(chipNativeElement.getAttribute('aria-selected')).toBe('false'); + expect(primaryAction.getAttribute('aria-selected')).toBe('false'); testComponent.selected = true; fixture.detectChanges(); - expect(chipNativeElement.getAttribute('aria-selected')).toBe('true'); + expect(primaryAction.getAttribute('aria-selected')).toBe('true'); })); it('should disable focus on the checkmark', fakeAsync(() => { @@ -263,7 +253,7 @@ describe('MDC-based Option Chips', () => { flush(); fixture.detectChanges(); - const checkmark = chipNativeElement.querySelector('.mdc-chip__checkmark-svg')!; + const checkmark = chipNativeElement.querySelector('.mdc-evolution-chip__checkmark-svg')!; expect(checkmark.getAttribute('focusable')).toBe('false'); })); }); @@ -275,51 +265,34 @@ describe('MDC-based Option Chips', () => { }); it('SPACE ignores selection', () => { - const SPACE_EVENT = createKeyboardEvent('keydown', SPACE); - spyOn(testComponent, 'chipSelectionChange'); // Use the spacebar to attempt to select the chip - chipInstance._keydown(SPACE_EVENT); + dispatchKeyboardEvent(primaryAction, 'keydown', SPACE); fixture.detectChanges(); - expect(chipInstance.selected).toBeFalsy(); + expect(chipInstance.selected).toBe(false); expect(testComponent.chipSelectionChange).not.toHaveBeenCalled(); }); it('should not have the aria-selected attribute', () => { - expect(chipNativeElement.hasAttribute('aria-selected')).toBe(false); + expect(primaryAction.hasAttribute('aria-selected')).toBe(false); }); }); - it('should update the aria-label for disabled chips', () => { - expect(chipNativeElement.getAttribute('aria-disabled')).toBe('false'); + it('should update the aria-disabled for disabled chips', () => { + expect(primaryAction.getAttribute('aria-disabled')).toBe('false'); testComponent.disabled = true; fixture.detectChanges(); - expect(chipNativeElement.getAttribute('aria-disabled')).toBe('true'); + expect(primaryAction.getAttribute('aria-disabled')).toBe('true'); }); }); - it('should hide the leading icon when initialized as selected', () => { - // We need to recreate the fixture before change detection has - // run so we can capture the behavior we're testing for. - fixture.destroy(); - fixture = TestBed.createComponent(SingleChip); - testComponent = fixture.debugElement.componentInstance; - testComponent.selected = true; - fixture.detectChanges(); - chipDebugElement = fixture.debugElement.query(By.directive(MatChipOption))!; - chipNativeElement = chipDebugElement.nativeElement; - chipInstance = chipDebugElement.injector.get(MatChipOption); - - const avatar = fixture.nativeElement.querySelector('.avatar'); - expect(avatar.classList).toContain(deprecated.chipCssClasses.HIDDEN_LEADING_ICON); - }); - - it('should have a focus indicator', () => { - expect(chipNativeElement.classList.contains('mat-mdc-focus-indicator')).toBe(true); + it('should contain a focus indicator inside the text label', () => { + const label = chipNativeElement.querySelector('.mdc-evolution-chip__text-label'); + expect(label?.querySelector('.mat-mdc-focus-indicator')).toBeTruthy(); }); }); }); diff --git a/src/material-experimental/mdc-chips/chip-option.ts b/src/material-experimental/mdc-chips/chip-option.ts index 119124a2112a..dfca8a135d6c 100644 --- a/src/material-experimental/mdc-chips/chip-option.ts +++ b/src/material-experimental/mdc-chips/chip-option.ts @@ -7,7 +7,6 @@ */ import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; -import {SPACE} from '@angular/cdk/keycodes'; import { ChangeDetectionStrategy, Component, @@ -15,9 +14,15 @@ import { Input, Output, ViewEncapsulation, - AfterContentInit, + AfterViewInit, + OnInit, } from '@angular/core'; -import {deprecated} from '@material/chips'; +import { + ActionInteractionEvent, + MDCChipActionInteractionTrigger, + MDCChipActionType, + MDCChipCssClasses, +} from '@material/chips'; import {take} from 'rxjs/operators'; import {MatChip} from './chip'; @@ -40,31 +45,41 @@ export class MatChipSelectionChange { @Component({ selector: 'mat-basic-chip-option, mat-chip-option', templateUrl: 'chip-option.html', - styleUrls: ['chips.css'], + styleUrls: ['chip.css'], inputs: ['color', 'disableRipple', 'tabIndex'], host: { - 'role': 'option', - 'class': 'mat-mdc-focus-indicator mat-mdc-chip-option', + 'class': 'mat-mdc-chip mat-mdc-chip-option mdc-evolution-chip mdc-evolution-chip--filter', + '[class.mat-mdc-chip-selected]': 'selected', + '[class.mat-mdc-chip-multiple]': '_chipListMultiple', '[class.mat-mdc-chip-disabled]': 'disabled', - '[class.mat-mdc-chip-highlighted]': 'highlighted', '[class.mat-mdc-chip-with-avatar]': 'leadingIcon', - '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon', - '[class.mat-mdc-chip-selected]': 'selected', + '[class.mdc-evolution-chip--selectable]': 'selectable', + '[class.mdc-evolution-chip--disabled]': 'disabled', + '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()', + '[class.mdc-evolution-chip--with-primary-graphic]': '_hasLeadingGraphic()', + '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon', + '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon', + '[class.mat-mdc-chip-highlighted]': 'highlighted', + '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()', + '[attr.tabindex]': 'null', + '[attr.aria-label]': 'null', + '[attr.role]': 'role', '[id]': 'id', - '[tabIndex]': 'tabIndex', - '[attr.disabled]': 'disabled || null', - '[attr.aria-disabled]': 'disabled.toString()', - '[attr.aria-selected]': 'ariaSelected', - '(click)': '_click($event)', - '(keydown)': '_keydown($event)', - '(focus)': 'focus()', - '(blur)': '_blur()', }, providers: [{provide: MatChip, useExisting: MatChipOption}], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) -export class MatChipOption extends MatChip implements AfterContentInit { +export class MatChipOption extends MatChip implements OnInit, AfterViewInit { + /** Whether the component is done initializing. */ + private _isInitialized: boolean; + + /** + * Selected state that was assigned before the component was initializing + * and which needs to be synced back up with the foundation. + */ + private _pendingSelectedState: boolean | undefined; + /** Whether the chip list is selectable. */ chipListSelectable: boolean = true; @@ -82,7 +97,7 @@ export class MatChipOption extends MatChip implements AfterContentInit { get selectable(): boolean { return this._selectable && this.chipListSelectable; } - set selectable(value: boolean) { + set selectable(value: BooleanInput) { this._selectable = coerceBooleanProperty(value); } protected _selectable: boolean = true; @@ -90,16 +105,19 @@ export class MatChipOption extends MatChip implements AfterContentInit { /** Whether the chip is selected. */ @Input() get selected(): boolean { - return this._chipFoundation.isSelected(); + return ( + this._pendingSelectedState ?? this._chipFoundation.isActionSelected(MDCChipActionType.PRIMARY) + ); } - set selected(value: boolean) { - if (!this.selectable) { - return; - } - const coercedValue = coerceBooleanProperty(value); - if (coercedValue != this._chipFoundation.isSelected()) { - this._chipFoundation.setSelected(coerceBooleanProperty(value)); - this._dispatchSelectionChange(); + set selected(value: BooleanInput) { + if (this.selectable) { + const coercedValue = coerceBooleanProperty(value); + + if (this._isInitialized) { + this._setSelectedState(coercedValue, false); + } else { + this._pendingSelectedState = coercedValue; + } } } @@ -119,77 +137,53 @@ export class MatChipOption extends MatChip implements AfterContentInit { @Output() readonly selectionChange: EventEmitter = new EventEmitter(); - override ngAfterContentInit() { - super.ngAfterContentInit(); + ngOnInit() { + this.role = 'presentation'; + } + + override ngAfterViewInit() { + super.ngAfterViewInit(); + this._isInitialized = true; - if (this.selected && this.leadingIcon) { - this.leadingIcon.setClass(deprecated.chipCssClasses.HIDDEN_LEADING_ICON, true); + if (this._pendingSelectedState != null) { + // Note that we want to clear the pending state before calling `_setSelectedState`, because + // we want it to read the actual selected state instead falling back to the pending one. + const selectedState = this._pendingSelectedState; + this._pendingSelectedState = undefined; + this._setSelectedState(selectedState, false); } } /** Selects the chip. */ select(): void { - if (!this.selectable) { - return; - } else if (!this.selected) { - this._chipFoundation.setSelected(true); - this._dispatchSelectionChange(); + if (this.selectable) { + this._setSelectedState(true, false); } } /** Deselects the chip. */ deselect(): void { - if (!this.selectable) { - return; - } else if (this.selected) { - this._chipFoundation.setSelected(false); - this._dispatchSelectionChange(); + if (this.selectable) { + this._setSelectedState(false, false); } } /** Selects this chip and emits userInputSelection event */ selectViaInteraction(): void { - if (!this.selectable) { - return; - } else if (!this.selected) { - this._chipFoundation.setSelected(true); - this._dispatchSelectionChange(true); + if (this.selectable) { + this._setSelectedState(true, true); } } /** Toggles the current selected state of this chip. */ toggleSelected(isUserInput: boolean = false): boolean { - if (!this.selectable) { - return this.selected; + if (this.selectable) { + this._setSelectedState(!this.selected, isUserInput); } - this._chipFoundation.setSelected(!this.selected); - this._dispatchSelectionChange(isUserInput); return this.selected; } - /** Emits a selection change event. */ - private _dispatchSelectionChange(isUserInput = false) { - this.selectionChange.emit({ - source: this, - isUserInput, - selected: this.selected, - }); - } - - /** Allows for programmatic focusing of the chip. */ - focus(): void { - if (this.disabled) { - return; - } - - if (!this._hasFocus()) { - this._elementRef.nativeElement.focus(); - this._onFocus.next({chip: this}); - } - this._hasFocusInternal = true; - } - /** Resets the state of the chip when it loses focus. */ _blur(): void { // When animations are enabled, Angular may end up removing the chip from the DOM a little @@ -204,34 +198,47 @@ export class MatChipOption extends MatChip implements AfterContentInit { }); } - /** Handles click events on the chip. */ - _click(event: MouseEvent) { - if (this.disabled) { - event.preventDefault(); - } else { - this._handleInteraction(event); - event.stopPropagation(); + protected override _onChipInteraction(event: ActionInteractionEvent) { + const {trigger, source} = event.detail; + + // Non-selection interactions should work the same as other chips. + if ( + source !== MDCChipActionType.PRIMARY || + (trigger !== MDCChipActionInteractionTrigger.CLICK && + trigger !== MDCChipActionInteractionTrigger.ENTER_KEY && + trigger !== MDCChipActionInteractionTrigger.SPACEBAR_KEY) + ) { + super._onChipInteraction(event); + } else if (this.selectable && !this.disabled) { + // Otherwise only let the event through if the chip is enabled and selectable. + this._chipFoundation.handleActionInteraction(event); + this.selectionChange.emit({ + source: this, + isUserInput: true, + selected: this.selected, + }); } } - /** Handles custom key presses. */ - _keydown(event: KeyboardEvent): void { - if (this.disabled) { - return; - } + _hasLeadingGraphic() { + // The checkmark graphic is built in for multi-select chip lists. + return this.leadingIcon || (this._chipListMultiple && this.selectable); + } - switch (event.keyCode) { - case SPACE: - this.toggleSelected(true); + private _setSelectedState(isSelected: boolean, isUserInput: boolean) { + if (isSelected !== this.selected) { + this._chipFoundation.setActionSelected(MDCChipActionType.PRIMARY, isSelected); + this.selectionChange.emit({ + source: this, + isUserInput, + selected: this.selected, + }); + } - // Always prevent space from scrolling the page since the list has focus - event.preventDefault(); - break; - default: - this._handleInteraction(event); + // MDC won't assign the selected class until the animation finishes, but that may not + // happen if animations are disabled. If we detect such a case, assign the class manually. + if (this._animationsDisabled) { + this._elementRef.nativeElement.classList.toggle(MDCChipCssClasses.SELECTED, isSelected); } } - - static ngAcceptInputType_selectable: BooleanInput; - static ngAcceptInputType_selected: BooleanInput; } diff --git a/src/material-experimental/mdc-chips/chip-remove.spec.ts b/src/material-experimental/mdc-chips/chip-remove.spec.ts index 17ebd0dae4e7..02060a4dce04 100644 --- a/src/material-experimental/mdc-chips/chip-remove.spec.ts +++ b/src/material-experimental/mdc-chips/chip-remove.spec.ts @@ -1,14 +1,15 @@ -import {dispatchKeyboardEvent, createKeyboardEvent, dispatchEvent} from '../../cdk/testing/private'; -import {Component, DebugElement} from '@angular/core'; +import {Component} from '@angular/core'; +import {waitForAsync, ComponentFixture, TestBed, fakeAsync, flush} from '@angular/core/testing'; +import {dispatchKeyboardEvent} from '@angular/cdk/testing/private'; import {By} from '@angular/platform-browser'; -import {waitForAsync, ComponentFixture, TestBed} from '@angular/core/testing'; -import {SPACE, ENTER, TAB} from '@angular/cdk/keycodes'; +import {SPACE, ENTER} from '@angular/cdk/keycodes'; +import {MDCChipAnimation, MDCChipCssClasses} from '@material/chips/chip'; import {MatChip, MatChipsModule} from './index'; describe('MDC-based Chip Remove', () => { let fixture: ComponentFixture; let testChip: TestChip; - let chipDebugElement: DebugElement; + let chipInstance: MatChip; let chipNativeElement: HTMLElement; beforeEach( @@ -28,148 +29,120 @@ describe('MDC-based Chip Remove', () => { testChip = fixture.debugElement.componentInstance; fixture.detectChanges(); - chipDebugElement = fixture.debugElement.query(By.directive(MatChip))!; + const chipDebugElement = fixture.debugElement.query(By.directive(MatChip))!; chipNativeElement = chipDebugElement.nativeElement; + chipInstance = chipDebugElement.componentInstance; }), ); - describe('basic behavior', () => { - it('should apply a CSS class to the remove icon', () => { - let buttonElement = chipNativeElement.querySelector('button')!; + function triggerRemoveSequence() { + // At the time of writing, MDC's removal sequence requires the following to happen: + // 1. Button is clicked, triggering the animation. + // 2. Before the animation has finished, the `--hidden` class is added. + // 3. Animation callback fires at some point. It doesn't really matter for the test, + // but it does queue up some `requestAnimationFrame` calls that we need to flush. + // 4. `transitionend` callback fires and finishes the removal sequence if the + // `--hidden` class exists. + fixture.detectChanges(); + (chipInstance as any)._handleAnimationend({ + animationName: MDCChipAnimation.EXIT, + target: chipNativeElement, + }); + flush(); + (chipInstance as any)._handleTransitionend({target: chipNativeElement}); + flush(); + fixture.detectChanges(); + } + describe('basic behavior', () => { + it('should apply a CSS class to the remove icon', fakeAsync(() => { + const buttonElement = chipNativeElement.querySelector('.mdc-evolution-chip__icon--trailing')!; expect(buttonElement.classList).toContain('mat-mdc-chip-remove'); - }); + })); - it('should ensure that the button cannot submit its parent form', () => { + it('should ensure that the button cannot submit its parent form', fakeAsync(() => { const buttonElement = chipNativeElement.querySelector('button')!; - expect(buttonElement.getAttribute('type')).toBe('button'); - }); + })); - it('should not set the `type` attribute on non-button elements', () => { + it('should not set the `type` attribute on non-button elements', fakeAsync(() => { const buttonElement = chipNativeElement.querySelector('span.mat-mdc-chip-remove')!; - expect(buttonElement.hasAttribute('type')).toBe(false); - }); - - it('should emit (removed) event when exit animation is complete', () => { - let buttonElement = chipNativeElement.querySelector('button')!; + })); + it('should emit (removed) event when exit animation is complete', fakeAsync(() => { testChip.removable = true; fixture.detectChanges(); - spyOn(testChip, 'didRemove'); - buttonElement.click(); - fixture.detectChanges(); + chipNativeElement.querySelector('button')!.click(); + triggerRemoveSequence(); expect(testChip.didRemove).toHaveBeenCalled(); - }); - - it('should not start MDC exit animation if parent chip is disabled', () => { - let buttonElement = chipNativeElement.querySelector('button')!; + })); + it('should not start MDC exit animation if parent chip is disabled', fakeAsync(() => { testChip.removable = true; testChip.disabled = true; fixture.detectChanges(); - buttonElement.click(); - fixture.detectChanges(); + chipNativeElement.querySelector('button')!.click(); - expect(chipNativeElement.classList.contains('mdc-chip--exit')).toBe(false); - }); + expect(chipNativeElement.classList.contains(MDCChipCssClasses.HIDDEN)).toBe(false); + })); - it('should not make the element aria-hidden when it is focusable', () => { + it('should not make the element aria-hidden when it is focusable', fakeAsync(() => { const buttonElement = chipNativeElement.querySelector('button')!; - expect(buttonElement.getAttribute('tabindex')).toBe('0'); + expect(buttonElement.getAttribute('tabindex')).toBe('-1'); expect(buttonElement.hasAttribute('aria-hidden')).toBe(false); - }); + })); - it('should prevent the default SPACE action', () => { + it('should prevent the default SPACE action', fakeAsync(() => { const buttonElement = chipNativeElement.querySelector('button')!; testChip.removable = true; fixture.detectChanges(); const event = dispatchKeyboardEvent(buttonElement, 'keydown', SPACE); - fixture.detectChanges(); + triggerRemoveSequence(); expect(event.defaultPrevented).toBe(true); - }); + })); - it('should not prevent the default SPACE action when a modifier key is pressed', () => { - const buttonElement = chipNativeElement.querySelector('button')!; - - testChip.removable = true; - fixture.detectChanges(); - - const event = createKeyboardEvent('keydown', SPACE, undefined, {shift: true}); - dispatchEvent(buttonElement, event); - fixture.detectChanges(); - - expect(event.defaultPrevented).toBe(false); - }); - - it('should prevent the default ENTER action', () => { + it('should prevent the default ENTER action', fakeAsync(() => { const buttonElement = chipNativeElement.querySelector('button')!; testChip.removable = true; fixture.detectChanges(); const event = dispatchKeyboardEvent(buttonElement, 'keydown', ENTER); - fixture.detectChanges(); + triggerRemoveSequence(); expect(event.defaultPrevented).toBe(true); - }); - - it('should not prevent the default ENTER action when a modifier key is pressed', () => { - const buttonElement = chipNativeElement.querySelector('button')!; - - testChip.removable = true; - fixture.detectChanges(); - - const event = createKeyboardEvent('keydown', ENTER, undefined, {shift: true}); - dispatchEvent(buttonElement, event); - fixture.detectChanges(); - - expect(event.defaultPrevented).toBe(false); - }); - - it('should not remove on any key press', () => { - let buttonElement = chipNativeElement.querySelector('button')!; - - testChip.removable = true; - fixture.detectChanges(); - - spyOn(testChip, 'didRemove'); - dispatchKeyboardEvent(buttonElement, 'keydown', TAB); - fixture.detectChanges(); - - expect(testChip.didRemove).not.toHaveBeenCalled(); - }); - - it('should have a focus indicator', () => { - const buttonElement = chipNativeElement.querySelector('button')!; + })); + it('should have a focus indicator', fakeAsync(() => { + const buttonElement = chipNativeElement.querySelector('.mdc-evolution-chip__icon--trailing')!; expect(buttonElement.classList.contains('mat-mdc-focus-indicator')).toBe(true); - }); + })); }); }); @Component({ template: ` - - - - + + + + + + `, }) class TestChip { removable: boolean; disabled = false; - - didRemove() {} + didRemove = jasmine.createSpy('didRemove spy'); } diff --git a/src/material-experimental/mdc-chips/chip-row.html b/src/material-experimental/mdc-chips/chip-row.html index ebc293d08a2d..2c8970d46aec 100644 --- a/src/material-experimental/mdc-chips/chip-row.html +++ b/src/material-experimental/mdc-chips/chip-row.html @@ -1,31 +1,37 @@ - - - + + -
-
-
+ + +
-
-
- -
-
+ + + + + + + + + + + + + -
- - - - -
+ + + diff --git a/src/material-experimental/mdc-chips/chip-row.spec.ts b/src/material-experimental/mdc-chips/chip-row.spec.ts index bad5387bc2b0..c130cda43d36 100644 --- a/src/material-experimental/mdc-chips/chip-row.spec.ts +++ b/src/material-experimental/mdc-chips/chip-row.spec.ts @@ -1,6 +1,11 @@ import {Directionality} from '@angular/cdk/bidi'; -import {BACKSPACE, DELETE, RIGHT_ARROW, ENTER} from '@angular/cdk/keycodes'; -import {createKeyboardEvent, dispatchEvent, dispatchFakeEvent} from '../../cdk/testing/private'; +import {BACKSPACE, DELETE, ENTER} from '@angular/cdk/keycodes'; +import { + createKeyboardEvent, + dispatchEvent, + dispatchFakeEvent, + dispatchKeyboardEvent, +} from '../../cdk/testing/private'; import {Component, DebugElement, ElementRef, ViewChild} from '@angular/core'; import {waitForAsync, ComponentFixture, TestBed, flush, fakeAsync} from '@angular/core/testing'; import {By} from '@angular/platform-browser'; @@ -10,7 +15,6 @@ import { MatChipEditInput, MatChipEvent, MatChipGrid, - MatChipRemove, MatChipRow, MatChipsModule, } from './index'; @@ -20,7 +24,6 @@ describe('MDC-based Row Chips', () => { let chipDebugElement: DebugElement; let chipNativeElement: HTMLElement; let chipInstance: MatChipRow; - let removeIconInstance: MatChipRemove; let dir = 'ltr'; @@ -55,9 +58,6 @@ describe('MDC-based Row Chips', () => { chipNativeElement = chipDebugElement.nativeElement; chipInstance = chipDebugElement.injector.get(MatChipRow); testComponent = fixture.debugElement.componentInstance; - - const removeIconDebugElement = fixture.debugElement.query(By.directive(MatChipRemove))!; - removeIconInstance = removeIconDebugElement.injector.get(MatChipRemove); }); describe('basic behaviors', () => { @@ -134,17 +134,6 @@ describe('MDC-based Row Chips', () => { expect(testComponent.chipRemove).toHaveBeenCalled(); }); - - it('arrow key navigation does not emit the (removed) event', () => { - const ARROW_KEY_EVENT = createKeyboardEvent('keydown', RIGHT_ARROW); - - spyOn(testComponent, 'chipRemove'); - - removeIconInstance.interaction.next(ARROW_KEY_EVENT); - fixture.detectChanges(); - - expect(testComponent.chipRemove).not.toHaveBeenCalled(); - }); }); describe('when removable is false', () => { @@ -178,12 +167,16 @@ describe('MDC-based Row Chips', () => { }); it('should update the aria-label for disabled chips', () => { - expect(chipNativeElement.getAttribute('aria-disabled')).toBe('false'); + const primaryActionElement = chipNativeElement.querySelector( + '.mdc-evolution-chip__action--primary', + )!; + + expect(primaryActionElement.getAttribute('aria-disabled')).toBe('false'); testComponent.disabled = true; fixture.detectChanges(); - expect(chipNativeElement.getAttribute('aria-disabled')).toBe('true'); + expect(primaryActionElement.getAttribute('aria-disabled')).toBe('true'); }); describe('focus management', () => { @@ -191,7 +184,7 @@ describe('MDC-based Row Chips', () => { dispatchFakeEvent(chipNativeElement, 'mousedown'); fixture.detectChanges(); - expect(document.activeElement).toHaveClass('mat-mdc-chip-row-focusable-text-content'); + expect(document.activeElement).toHaveClass('mdc-evolution-chip__action--primary'); }); it('emits focus only once for multiple focus() calls', () => { @@ -215,46 +208,46 @@ describe('MDC-based Row Chips', () => { fixture.detectChanges(); }); - it('should apply the mdc-chip--editable class', () => { - expect(chipNativeElement.classList).toContain('mdc-chip--editable'); - }); - it('should begin editing on double click', () => { + expect(chipNativeElement.querySelector('.mat-chip-edit-input')).toBeFalsy(); dispatchFakeEvent(chipNativeElement, 'dblclick'); - expect(chipNativeElement.classList).toContain('mdc-chip--editing'); + fixture.detectChanges(); + expect(chipNativeElement.querySelector('.mat-chip-edit-input')).toBeTruthy(); }); it('should begin editing on ENTER', () => { - chipInstance.focus(); - const primaryActionElement = chipNativeElement.querySelector('.mdc-chip__primary-action')!; - const enterEvent = createKeyboardEvent('keydown', ENTER, 'Enter'); - dispatchEvent(primaryActionElement, enterEvent); - expect(chipNativeElement.classList).toContain('mdc-chip--editing'); + expect(chipNativeElement.querySelector('.mat-chip-edit-input')).toBeFalsy(); + dispatchKeyboardEvent(chipNativeElement, 'keydown', ENTER); + fixture.detectChanges(); + expect(chipNativeElement.querySelector('.mat-chip-edit-input')).toBeTruthy(); }); }); describe('editing behavior', () => { let editInputInstance: MatChipEditInput; - let chipContentElement: HTMLElement; + let primaryAction: HTMLElement; - beforeEach(() => { + beforeEach(fakeAsync(() => { testComponent.editable = true; fixture.detectChanges(); dispatchFakeEvent(chipNativeElement, 'dblclick'); - spyOn(testComponent, 'chipEdit'); fixture.detectChanges(); + flush(); + spyOn(testComponent, 'chipEdit'); const editInputDebugElement = fixture.debugElement.query(By.directive(MatChipEditInput))!; editInputInstance = editInputDebugElement.injector.get(MatChipEditInput); - - const chipContentSelector = '.mat-mdc-chip-row-focusable-text-content'; - chipContentElement = chipNativeElement.querySelector(chipContentSelector) as HTMLElement; - }); + primaryAction = chipNativeElement.querySelector('.mdc-evolution-chip__action--primary')!; + })); function keyDownOnPrimaryAction(keyCode: number, key: string) { - const primaryActionElement = chipNativeElement.querySelector('.mdc-chip__primary-action')!; const keyDownEvent = createKeyboardEvent('keydown', keyCode, key); - dispatchEvent(primaryActionElement, keyDownEvent); + dispatchEvent(primaryAction, keyDownEvent); + fixture.detectChanges(); + } + + function getEditInput(): HTMLElement { + return chipNativeElement.querySelector('.mat-chip-edit-input')!; } it('should not delete the chip on DELETE or BACKSPACE', () => { @@ -264,33 +257,27 @@ describe('MDC-based Row Chips', () => { expect(testComponent.chipDestroy).not.toHaveBeenCalled(); }); - it('should ignore mousedown events', () => { - spyOn(testComponent, 'chipFocus'); - dispatchFakeEvent(chipNativeElement, 'mousedown'); - expect(testComponent.chipFocus).not.toHaveBeenCalled(); - }); - it('should stop editing on focusout', fakeAsync(() => { - const primaryActionElement = chipNativeElement.querySelector('.mdc-chip__primary-action')!; - dispatchFakeEvent(primaryActionElement, 'focusout', true); + dispatchFakeEvent(primaryAction, 'focusout', true); flush(); - expect(chipNativeElement.classList).not.toContain('mdc-chip--editing'); expect(testComponent.chipEdit).toHaveBeenCalled(); })); - it('should stop editing on ENTER', () => { - keyDownOnPrimaryAction(ENTER, 'Enter'); - expect(chipNativeElement.classList).not.toContain('mdc-chip--editing'); + it('should stop editing on ENTER', fakeAsync(() => { + dispatchKeyboardEvent(getEditInput(), 'keydown', ENTER); + fixture.detectChanges(); + flush(); expect(testComponent.chipEdit).toHaveBeenCalled(); - }); + })); - it('should emit the new chip value when editing completes', () => { + it('should emit the new chip value when editing completes', fakeAsync(() => { const chipValue = 'chip value'; editInputInstance.setValue(chipValue); - keyDownOnPrimaryAction(ENTER, 'Enter'); + dispatchKeyboardEvent(getEditInput(), 'keydown', ENTER); + flush(); const expectedValue = jasmine.objectContaining({value: chipValue}); expect(testComponent.chipEdit).toHaveBeenCalledWith(expectedValue); - }); + })); it('should use the projected edit input if provided', () => { expect(editInputInstance.getNativeElement()).toHaveClass('projected-edit-input'); @@ -308,28 +295,33 @@ describe('MDC-based Row Chips', () => { expect(editInputNoProject.getNativeElement()).not.toHaveClass('projected-edit-input'); }); - it('should focus the chip content if the edit input has focus on completion', () => { + it('should focus the chip content if the edit input has focus on completion', fakeAsync(() => { const chipValue = 'chip value'; editInputInstance.setValue(chipValue); - keyDownOnPrimaryAction(ENTER, 'Enter'); - expect(document.activeElement).toBe(chipContentElement); - }); + dispatchKeyboardEvent(getEditInput(), 'keydown', ENTER); + fixture.detectChanges(); + flush(); + expect(document.activeElement).toBe(primaryAction); + })); - it('should focus the chip content if the body has focus on completion', () => { + it('should focus the chip content if the body has focus on completion', fakeAsync(() => { const chipValue = 'chip value'; editInputInstance.setValue(chipValue); (document.activeElement as HTMLElement).blur(); - keyDownOnPrimaryAction(ENTER, 'Enter'); - expect(document.activeElement).toBe(chipContentElement); - }); + dispatchKeyboardEvent(getEditInput(), 'keydown', ENTER); + fixture.detectChanges(); + flush(); + expect(document.activeElement).toBe(primaryAction); + })); - it('should not change focus if another element has focus on completion', () => { + it('should not change focus if another element has focus on completion', fakeAsync(() => { const chipValue = 'chip value'; editInputInstance.setValue(chipValue); testComponent.chipInput.nativeElement.focus(); keyDownOnPrimaryAction(ENTER, 'Enter'); - expect(document.activeElement).not.toBe(chipContentElement); - }); + flush(); + expect(document.activeElement).not.toBe(primaryAction); + })); }); }); }); @@ -340,7 +332,7 @@ describe('MDC-based Row Chips', () => {
{{name}} @@ -361,7 +353,6 @@ class SingleChip { editable: boolean = false; useCustomEditInput: boolean = true; - chipFocus: (event?: MatChipEvent) => void = () => {}; chipDestroy: (event?: MatChipEvent) => void = () => {}; chipRemove: (event?: MatChipEvent) => void = () => {}; chipEdit: (event?: MatChipEditedEvent) => void = () => {}; diff --git a/src/material-experimental/mdc-chips/chip-row.ts b/src/material-experimental/mdc-chips/chip-row.ts index 6a136cc6e00c..46a5308c7948 100644 --- a/src/material-experimental/mdc-chips/chip-row.ts +++ b/src/material-experimental/mdc-chips/chip-row.ts @@ -7,12 +7,11 @@ */ import {Directionality} from '@angular/cdk/bidi'; -import {BooleanInput} from '@angular/cdk/coercion'; -import {BACKSPACE, DELETE} from '@angular/cdk/keycodes'; +import {BACKSPACE, DELETE, ENTER} from '@angular/cdk/keycodes'; import {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations'; import { - AfterContentInit, AfterViewInit, + Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, @@ -32,9 +31,9 @@ import { MAT_RIPPLE_GLOBAL_OPTIONS, RippleGlobalOptions, } from '@angular/material-experimental/mdc-core'; +import {FocusMonitor} from '@angular/cdk/a11y'; import {MatChip, MatChipEvent} from './chip'; import {MatChipEditInput} from './chip-edit-input'; -import {GridKeyManagerRow} from './grid-key-manager'; /** Represents an event fired on an individual `mat-chip` when it is edited. */ export interface MatChipEditedEvent extends MatChipEvent { @@ -49,23 +48,28 @@ export interface MatChipEditedEvent extends MatChipEvent { @Component({ selector: 'mat-chip-row, mat-basic-chip-row', templateUrl: 'chip-row.html', - styleUrls: ['chips.css'], + styleUrls: ['chip.css'], inputs: ['color', 'disableRipple', 'tabIndex'], host: { - 'role': 'row', - 'class': 'mat-mdc-chip-row', + 'class': 'mat-mdc-chip mat-mdc-chip-row mdc-evolution-chip', + '[class.mat-mdc-chip-with-avatar]': 'leadingIcon', '[class.mat-mdc-chip-disabled]': 'disabled', + '[class.mat-mdc-chip-editing]': '_isEditing', + '[class.mat-mdc-chip-editable]': 'editable', + '[class.mdc-evolution-chip--disabled]': 'disabled', + '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()', + '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon', + '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon', + '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon', '[class.mat-mdc-chip-highlighted]': 'highlighted', - '[class.mat-mdc-chip-with-avatar]': 'leadingIcon', - '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon', - '[class.mdc-chip--editable]': 'editable', + '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()', '[id]': 'id', - '[attr.disabled]': 'disabled || null', - '[attr.aria-disabled]': 'disabled.toString()', - '[tabIndex]': 'tabIndex', + '[attr.tabindex]': 'null', + '[attr.aria-label]': 'null', + '[attr.role]': 'role', '(mousedown)': '_mousedown($event)', - '(dblclick)': '_dblclick($event)', '(keydown)': '_keydown($event)', + '(dblclick)': '_doubleclick()', '(focusin)': '_focusin($event)', '(focusout)': '_focusout($event)', }, @@ -73,10 +77,7 @@ export interface MatChipEditedEvent extends MatChipEvent { encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) -export class MatChipRow - extends MatChip - implements AfterContentInit, AfterViewInit, GridKeyManagerRow -{ +export class MatChipRow extends MatChip implements AfterViewInit { protected override basicChipAttrName = 'mat-basic-chip-row'; @Input() editable: boolean = false; @@ -85,122 +86,92 @@ export class MatChipRow @Output() readonly edited: EventEmitter = new EventEmitter(); - /** - * The focusable wrapper element in the first gridcell, which contains all - * chip content other than the remove icon. - */ - @ViewChild('chipContent') chipContent: ElementRef; - /** The default chip edit input that is used if none is projected into this chip row. */ @ViewChild(MatChipEditInput) defaultEditInput?: MatChipEditInput; /** The projected chip edit input. */ @ContentChild(MatChipEditInput) contentEditInput?: MatChipEditInput; - /** The focusable grid cells for this row. Implemented as part of GridKeyManagerRow. */ - cells!: HTMLElement[]; + _isEditing = false; /** * Timeout used to give some time between `focusin` and `focusout` * in order to determine whether focus has left the chip. */ - private _focusoutTimeout: any; + private _focusoutTimeout: number | null; constructor( - @Inject(DOCUMENT) private readonly _document: any, changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef, ngZone: NgZone, + focusMonitor: FocusMonitor, + @Inject(DOCUMENT) _document: any, @Optional() dir: Directionality, @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string, @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) globalRippleOptions?: RippleGlobalOptions, + @Attribute('tabindex') tabIndex?: string, ) { - super(changeDetectorRef, elementRef, ngZone, dir, animationMode, globalRippleOptions); - } - - override ngAfterContentInit() { - super.ngAfterContentInit(); - - if (this.removeIcon) { - // Defer setting the value in order to avoid the "Expression - // has changed after it was checked" errors from Angular. - setTimeout(() => { - // removeIcon has tabIndex 0 for regular chips, but should only be focusable by - // the GridFocusKeyManager for row chips. - this.removeIcon.tabIndex = -1; - }); - } + super( + changeDetectorRef, + elementRef, + ngZone, + focusMonitor, + _document, + dir, + animationMode, + globalRippleOptions, + tabIndex, + ); + + this.role = 'row'; } - override ngAfterViewInit() { - super.ngAfterViewInit(); - this.cells = this.removeIcon - ? [this.chipContent.nativeElement, this.removeIcon._elementRef.nativeElement] - : [this.chipContent.nativeElement]; - } - - /** - * Allows for programmatic focusing of the chip. - * Sends focus to the first grid cell. The row chip element itself - * is never focused. - */ - focus(): void { - if (this.disabled) { - return; - } - - if (!this._hasFocusInternal) { - this._onFocus.next({chip: this}); - } - - this.chipContent.nativeElement.focus(); + override _hasTrailingIcon() { + // The trailing icon is hidden while editing. + return !this._isEditing && super._hasTrailingIcon(); } /** * Emits a blur event when one of the gridcells loses focus, unless focus moved * to the other gridcell. */ - _focusout(event: FocusEvent) { + _focusout() { if (this._focusoutTimeout) { clearTimeout(this._focusoutTimeout); } // Wait to see if focus moves to the other gridcell - this._focusoutTimeout = setTimeout(() => { + this._focusoutTimeout = window.setTimeout(() => { + if (this._isEditing) { + this._onEditFinish(); + } + this._hasFocusInternal = false; this._onBlur.next({chip: this}); - this._handleInteraction(event); }); } /** Records that the chip has focus when one of the gridcells is focused. */ - _focusin(event: FocusEvent) { + _focusin() { if (this._focusoutTimeout) { clearTimeout(this._focusoutTimeout); this._focusoutTimeout = null; } this._hasFocusInternal = true; - this._handleInteraction(event); } /** Sends focus to the first gridcell when the user clicks anywhere inside the chip. */ _mousedown(event: MouseEvent) { - if (this._isEditing()) { - return; - } + if (!this._isEditing) { + if (!this.disabled) { + this.focus(); + } - if (!this.disabled) { - this.focus(); + event.preventDefault(); } - - event.preventDefault(); - } - - _dblclick(event: MouseEvent) { - this._handleInteraction(event); } /** Handles custom key presses. */ @@ -208,44 +179,60 @@ export class MatChipRow if (this.disabled) { return; } - if (this._isEditing()) { - this._handleInteraction(event); - return; - } + switch (event.keyCode) { + case ENTER: + if (this._isEditing) { + event.preventDefault(); + // Wrap in a timeout so the timing is consistent as when it is emitted in `focusout`. + setTimeout(() => this._onEditFinish()); + } else if (this.editable) { + this._startEditing(); + } + break; case DELETE: case BACKSPACE: - // Remove the focused chip - this.remove(); - // Always prevent so page navigation does not occur - event.preventDefault(); + if (!this._isEditing) { + // Remove the focused chip + this.remove(); + // Always prevent so page navigation does not occur + event.preventDefault(); + } break; - default: - this._handleInteraction(event); } } - _isEditing() { - return this._chipFoundation.isEditing(); + _doubleclick() { + if (!this.disabled && this.editable) { + this._startEditing(); + } } - protected override _onEditStart() { + private _startEditing() { + // The value depends on the DOM so we need to extract it before we flip the flag. + const value = this.value; + + // Make the primary action non-interactive so that it doesn't + // navigate when the user presses the arrow keys while editing. + this.primaryAction.isInteractive = false; + this._isEditing = true; + // Defer initializing the input so it has time to be added to the DOM. - setTimeout(() => { - this._getEditInput().initialize(this.value); - }); + setTimeout(() => this._getEditInput().initialize(value)); } - protected override _onEditFinish() { + private _onEditFinish() { // If the edit input is still focused or focus was returned to the body after it was destroyed, // return focus to the chip contents. if ( this._document.activeElement === this._getEditInput().getNativeElement() || this._document.activeElement === this._document.body ) { - this.chipContent.nativeElement.focus(); + this.primaryAction.focus(); } this.edited.emit({chip: this, value: this._getEditInput().getValue()}); + this.primaryAction.isInteractive = true; + this._isEditing = false; } /** @@ -255,6 +242,4 @@ export class MatChipRow private _getEditInput(): MatChipEditInput { return this.contentEditInput || this.defaultEditInput!; } - - static ngAcceptInputType_editable: BooleanInput; } diff --git a/src/material-experimental/mdc-chips/chip-set.scss b/src/material-experimental/mdc-chips/chip-set.scss new file mode 100644 index 000000000000..4c4fc242066b --- /dev/null +++ b/src/material-experimental/mdc-chips/chip-set.scss @@ -0,0 +1,32 @@ +@use '@material/chips/chip-set' as mdc-chip-set; +@use '../mdc-helpers/mdc-helpers'; + +@include mdc-chip-set.core-styles($query: mdc-helpers.$mat-base-styles-query); + +// Ensures that the internal chip container spans the entire outer container width, if the +// outer container width is customized. This is used by some wrapper components in g3. +.mat-mdc-chip-set { + .mdc-evolution-chip-set__chips { + min-width: 100%; + } +} + +// Angular Material supports vertically-stacked chips, which MDC does not. +.mat-mdc-chip-set-stacked { + flex-direction: column; + align-items: flex-start; + + .mat-mdc-chip { + width: 100%; + } +} + +input.mat-mdc-chip-input { + flex: 1 0 150px; + margin-left: 8px; + + [dir='rtl'] & { + margin-left: 0; + margin-right: 8px; + } +} diff --git a/src/material-experimental/mdc-chips/chip-set.ts b/src/material-experimental/mdc-chips/chip-set.ts index 20a6d4606015..1b8787de063a 100644 --- a/src/material-experimental/mdc-chips/chip-set.ts +++ b/src/material-experimental/mdc-chips/chip-set.ts @@ -6,8 +6,9 @@ * found in the LICENSE file at https://angular.io/license */ -import {Directionality} from '@angular/cdk/bidi'; -import {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion'; +import {LiveAnnouncer} from '@angular/cdk/a11y'; +import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; +import {DOCUMENT} from '@angular/common'; import { AfterContentInit, AfterViewInit, @@ -16,19 +17,27 @@ import { Component, ContentChildren, ElementRef, + Inject, Input, OnDestroy, - Optional, QueryList, ViewEncapsulation, } from '@angular/core'; import {HasTabIndex, mixinTabIndex} from '@angular/material-experimental/mdc-core'; -import {deprecated} from '@material/chips'; -import {merge, Observable, Subject, Subscription} from 'rxjs'; -import {startWith, takeUntil} from 'rxjs/operators'; +import { + MDCChipSetFoundation, + MDCChipSetAdapter, + MDCChipFoundation, + MDCChipEvents, + ChipAnimationEvent, + ChipInteractionEvent, + ChipNavigationEvent, + MDCChipActionType, +} from '@material/chips'; +import {merge, Observable, Subject} from 'rxjs'; +import {startWith, switchMap, takeUntil} from 'rxjs/operators'; import {MatChip, MatChipEvent} from './chip'; - -let uid = 0; +import {emitCustomEvent} from './emit-event'; /** * Boilerplate for applying mixins to MatChipSet. @@ -47,14 +56,17 @@ const _MatChipSetMixinBase = mixinTabIndex(MatChipSetBase); */ @Component({ selector: 'mat-chip-set', - template: '', - styleUrls: ['chips.css'], + template: ` + + + + `, + styleUrls: ['chip-set.css'], host: { - 'class': 'mat-mdc-chip-set mdc-chip-set', + 'class': 'mat-mdc-chip-set mdc-evolution-chip-set', '[attr.role]': 'role', // TODO: replace this binding with use of AriaDescriber '[attr.aria-describedby]': '_ariaDescribedby || null', - '[id]': '_uid', }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, @@ -63,15 +75,6 @@ export class MatChipSet extends _MatChipSetMixinBase implements AfterContentInit, AfterViewInit, HasTabIndex, OnDestroy { - /** Subscription to remove changes in chips. */ - private _chipRemoveSubscription: Subscription | null; - - /** Subscription to destroyed events in chips. */ - private _chipDestroyedSubscription: Subscription | null; - - /** Subscription to chip interactions. */ - private _chipInteractionSubscription: Subscription | null; - /** * When a chip is destroyed, we store the index of the destroyed chip until the chips * query list notifies about the update. This is necessary because we cannot determine an @@ -80,38 +83,61 @@ export class MatChipSet protected _lastDestroyedChipIndex: number | null = null; /** The MDC foundation containing business logic for MDC chip-set. */ - protected _chipSetFoundation: deprecated.MDCChipSetFoundation; + protected _chipSetFoundation: MDCChipSetFoundation; /** Subject that emits when the component has been destroyed. */ protected _destroyed = new Subject(); + /** Combined stream of all of the child chips' remove events. */ + get chipDestroyedChanges(): Observable { + return this._getChipStream(chip => chip.destroyed); + } + /** * Implementation of the MDC chip-set adapter interface. * These methods are called by the chip set foundation. */ - protected _chipSetAdapter: deprecated.MDCChipSetAdapter = { - hasClass: className => this._hasMdcClass(className), - // No-op. We keep track of chips via ContentChildren, which will be updated when a chip is - // removed. - removeChipAtIndex: () => {}, - // No-op for base chip set. MatChipListbox overrides the adapter to provide this method. - selectChipAtIndex: () => {}, - getIndexOfChipById: (id: string) => this._chips.toArray().findIndex(chip => chip.id === id), - focusChipPrimaryActionAtIndex: () => {}, - focusChipTrailingActionAtIndex: () => {}, - removeFocusFromChipAtIndex: () => {}, - isRTL: () => !!this._dir && this._dir.value === 'rtl', - getChipListCount: () => this._chips.length, - // TODO(mmalerba): Implement using LiveAnnouncer. - announceMessage: () => {}, + protected _chipSetAdapter: MDCChipSetAdapter = { + announceMessage: message => this._liveAnnouncer.announce(message), + emitEvent: (eventName, eventDetail) => { + emitCustomEvent(this._elementRef.nativeElement, this._document, eventName, eventDetail, true); + }, + getAttribute: name => this._elementRef.nativeElement.getAttribute(name), + getChipActionsAtIndex: index => this._chipFoundation(index)?.getActions() || [], + getChipCount: () => this._chips.length, + getChipIdAtIndex: index => this._chipFoundation(index)?.getElementID() || '', + getChipIndexById: id => { + return this._chips.toArray().findIndex(chip => chip._getFoundation().getElementID() === id); + }, + isChipFocusableAtIndex: (index, actionType) => { + return this._chipFoundation(index)?.isActionFocusable(actionType) || false; + }, + isChipSelectableAtIndex: (index, actionType) => { + return this._chipFoundation(index)?.isActionSelectable(actionType) || false; + }, + isChipSelectedAtIndex: (index, actionType) => { + return this._chipFoundation(index)?.isActionSelected(actionType) || false; + }, + removeChipAtIndex: index => this._chips.toArray()[index]?.remove(), + setChipFocusAtIndex: (index, action, behavior) => { + this._chipFoundation(index)?.setActionFocus(action, behavior); + }, + setChipSelectedAtIndex: (index, actionType, isSelected) => { + // Setting the trailing action as deselected ends up deselecting the entire chip. + // This is working as expected, but it's not something we want so we only apply the + // selected state to the primary chip. + if (actionType === MDCChipActionType.PRIMARY) { + this._chipFoundation(index)?.setActionSelected(actionType, isSelected); + } + }, + startChipAnimationAtIndex: (index, animation) => { + this._chipFoundation(index)?.startAnimation(animation); + }, }; /** The aria-describedby attribute on the chip list for improved a11y. */ _ariaDescribedby: string; - /** Uid of the chip set */ - _uid: string = `mat-mdc-chip-set-${uid++}`; - /** * Map from class to whether the class is enabled. * Enabled classes are set on the MDC chip-set div. @@ -123,7 +149,7 @@ export class MatChipSet get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); this._syncChipsState(); } @@ -154,21 +180,6 @@ export class MatChipSet return this._hasFocusedChip(); } - /** Combined stream of all of the child chips' remove events. */ - get chipRemoveChanges(): Observable { - return merge(...this._chips.map(chip => chip.removed)); - } - - /** Combined stream of all of the child chips' remove events. */ - get chipDestroyedChanges(): Observable { - return merge(...this._chips.map(chip => chip.destroyed)); - } - - /** Combined stream of all of the child chips' interaction events. */ - get chipInteractionChanges(): Observable { - return merge(...this._chips.map(chip => chip.interaction)); - } - /** The chips that are part of this chip set. */ @ContentChildren(MatChip, { // We need to use `descendants: true`, because Ivy will no longer match @@ -178,12 +189,17 @@ export class MatChipSet _chips: QueryList; constructor( - protected _elementRef: ElementRef, + private _liveAnnouncer: LiveAnnouncer, + @Inject(DOCUMENT) private _document: any, + protected _elementRef: ElementRef, protected _changeDetectorRef: ChangeDetectorRef, - @Optional() protected _dir: Directionality, ) { super(_elementRef); - this._chipSetFoundation = new deprecated.MDCChipSetFoundation(this._chipSetAdapter); + const element = _elementRef.nativeElement; + this._chipSetFoundation = new MDCChipSetFoundation(this._chipSetAdapter); + element.addEventListener(MDCChipEvents.ANIMATION, this._handleChipAnimation); + element.addEventListener(MDCChipEvents.INTERACTION, this._handleChipInteraction); + element.addEventListener(MDCChipEvents.NAVIGATION, this._handleChipNavigation); } ngAfterViewInit() { @@ -199,13 +215,26 @@ export class MatChipSet this._syncChipsState(); }); } + }); + + this.chipDestroyedChanges.pipe(takeUntil(this._destroyed)).subscribe((event: MatChipEvent) => { + const chip = event.chip; + const chipIndex = this._chips.toArray().indexOf(event.chip); - this._resetChips(); + // In case the chip that will be removed is currently focused, we temporarily store + // the index in order to be able to determine an appropriate sibling chip that will + // receive focus. + if (this._isValidIndex(chipIndex) && chip._hasFocus()) { + this._lastDestroyedChipIndex = chipIndex; + } }); } ngOnDestroy() { - this._dropSubscriptions(); + const element = this._elementRef.nativeElement; + element.removeEventListener(MDCChipEvents.ANIMATION, this._handleChipAnimation); + element.removeEventListener(MDCChipEvents.INTERACTION, this._handleChipInteraction); + element.removeEventListener(MDCChipEvents.NAVIGATION, this._handleChipNavigation); this._destroyed.next(); this._destroyed.complete(); this._chipSetFoundation.destroy(); @@ -226,82 +255,6 @@ export class MatChipSet } } - /** Sets whether the given CSS class should be applied to the MDC chip. */ - protected _setMdcClass(cssClass: string, active: boolean) { - const classes = this._elementRef.nativeElement.classList; - active ? classes.add(cssClass) : classes.remove(cssClass); - this._changeDetectorRef.markForCheck(); - } - - /** Adapter method that returns true if the chip set has the given MDC class. */ - protected _hasMdcClass(className: string) { - return this._elementRef.nativeElement.classList.contains(className); - } - - /** Updates subscriptions to chip events. */ - private _resetChips() { - this._dropSubscriptions(); - this._subscribeToChipEvents(); - } - - /** Subscribes to events on the child chips. */ - protected _subscribeToChipEvents() { - this._listenToChipsRemove(); - this._listenToChipsDestroyed(); - this._listenToChipsInteraction(); - } - - /** Subscribes to chip removal events. */ - private _listenToChipsRemove() { - this._chipRemoveSubscription = this.chipRemoveChanges.subscribe((event: MatChipEvent) => { - this._chipSetFoundation.handleChipRemoval({ - chipId: event.chip.id, - // TODO(mmalerba): Add removal message. - removedAnnouncement: null, - }); - }); - } - - /** Subscribes to chip destroyed events. */ - private _listenToChipsDestroyed() { - this._chipDestroyedSubscription = this.chipDestroyedChanges.subscribe((event: MatChipEvent) => { - const chip = event.chip; - const chipIndex: number = this._chips.toArray().indexOf(event.chip); - - // In case the chip that will be removed is currently focused, we temporarily store - // the index in order to be able to determine an appropriate sibling chip that will - // receive focus. - if (this._isValidIndex(chipIndex) && chip._hasFocus()) { - this._lastDestroyedChipIndex = chipIndex; - } - }); - } - - /** Subscribes to chip interaction events. */ - private _listenToChipsInteraction() { - this._chipInteractionSubscription = this.chipInteractionChanges.subscribe((id: string) => { - this._chipSetFoundation.handleChipInteraction({chipId: id}); - }); - } - - /** Unsubscribes from all chip events. */ - protected _dropSubscriptions() { - if (this._chipRemoveSubscription) { - this._chipRemoveSubscription.unsubscribe(); - this._chipRemoveSubscription = null; - } - - if (this._chipInteractionSubscription) { - this._chipInteractionSubscription.unsubscribe(); - this._chipInteractionSubscription = null; - } - - if (this._chipDestroyedSubscription) { - this._chipDestroyedSubscription.unsubscribe(); - this._chipDestroyedSubscription = null; - } - } - /** Dummy method for subclasses to override. Base chip set cannot be focused. */ focus() {} @@ -317,18 +270,41 @@ export class MatChipSet /** Checks whether an event comes from inside a chip element. */ protected _originatesFromChip(event: Event): boolean { - return this._checkForClassInHierarchy(event, 'mdc-chip'); + return this._checkForClassInHierarchy(event, 'mdc-evolution-chip'); } /** - * Checks whether an event comes from inside a chip element in the editing - * state. + * Removes the `tabindex` from the chip grid and resets it back afterwards, allowing the + * user to tab out of it. This prevents the grid from capturing focus and redirecting + * it back to the first chip, creating a focus trap, if it user tries to tab away. */ - protected _originatesFromEditingChip(event: Event): boolean { - return this._checkForClassInHierarchy(event, 'mdc-chip--editing'); + protected _allowFocusEscape() { + const previousTabIndex = this.tabIndex; + + if (this.tabIndex !== -1) { + this.tabIndex = -1; + + setTimeout(() => { + this.tabIndex = previousTabIndex; + this._changeDetectorRef.markForCheck(); + }); + } } - private _checkForClassInHierarchy(event: Event, className: string) { + /** + * Gets a stream of events from all the chips within the set. + * The stream will automatically incorporate any newly-added chips. + */ + protected _getChipStream( + mappingFunction: (chip: C) => Observable, + ): Observable { + return this._chips.changes.pipe( + startWith(null), + switchMap(() => merge(...(this._chips as QueryList).map(mappingFunction))), + ); + } + + protected _checkForClassInHierarchy(event: Event, className: string) { let currentElement = event.target as HTMLElement | null; while (currentElement && currentElement !== this._elementRef.nativeElement) { @@ -343,6 +319,19 @@ export class MatChipSet return false; } - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_tabIndex: NumberInput; + private _chipFoundation(index: number): MDCChipFoundation | undefined { + return this._chips.toArray()[index]?._getFoundation(); + } + + private _handleChipAnimation = (event: Event) => { + this._chipSetFoundation.handleChipAnimation(event as ChipAnimationEvent); + }; + + private _handleChipInteraction = (event: Event) => { + this._chipSetFoundation.handleChipInteraction(event as ChipInteractionEvent); + }; + + private _handleChipNavigation = (event: Event) => { + this._chipSetFoundation.handleChipNavigation(event as ChipNavigationEvent); + }; } diff --git a/src/material-experimental/mdc-chips/chip.html b/src/material-experimental/mdc-chips/chip.html index fd8b2c0278de..35283fd77ea0 100644 --- a/src/material-experimental/mdc-chips/chip.html +++ b/src/material-experimental/mdc-chips/chip.html @@ -1,12 +1,23 @@ - - + + + +
+ + + + + + + +
+
- -
-
-
- + + + diff --git a/src/material-experimental/mdc-chips/chip.scss b/src/material-experimental/mdc-chips/chip.scss new file mode 100644 index 000000000000..4fa66e348c5f --- /dev/null +++ b/src/material-experimental/mdc-chips/chip.scss @@ -0,0 +1,208 @@ +@use '@material/chips/chip' as mdc-chip; +@use '@material/chips/chip-theme' as mdc-chip-theme; +@use '../../material/core/style/layout-common'; +@use '../../cdk/a11y'; +@use '../mdc-helpers/mdc-helpers'; + +@include mdc-chip.without-ripple-styles($query: mdc-helpers.$mat-base-styles-query); + +.mat-mdc-standard-chip { + @include mdc-chip-theme.theme-styles(( + with-avatar-avatar-shape: ( + family: 'rounded', + radius: (14px, 14px, 14px, 14px) + ), + with-icon-icon-size: 18px, + with-leading-icon-disabled-leading-icon-opacity: 0.38, + with-leading-icon-leading-icon-size: 20px, + with-trailing-icon-disabled-trailing-icon-opacity: 0.38, + with-avatar-avatar-size: 28px, + with-avatar-disabled-avatar-opacity: 0.38, + with-icon-disabled-icon-opacity: 0.38, + with-trailing-icon-trailing-icon-size: 18px, + flat-disabled-outline-opacity: 0.12, + flat-disabled-unselected-outline-opacity: 0.12, + flat-selected-outline-width: 0, + outline-width: 1px, + flat-unselected-outline-width: 1px, + flat-outline-width: 1px, + disabled-label-text-opacity: 0.38, + disabled-outline-opacity: 0.12, + elevated-disabled-container-opacity: 0.12, + container-height: 32px, + container-shape: ( + family: 'rounded', + radius: (16px, 16px, 16px, 16px) + ), + )); + + @include a11y.high-contrast(active, off) { + outline: solid 1px; + + &.cdk-focused { + // Use 2px here since the dotted outline is a little thinner. + outline: dotted 2px; + } + + .mdc-evolution-chip__checkmark-path { + // SVG colors won't be changed in high contrast mode and since the checkmark is white + // by default, it'll blend in with the background in black-on-white mode. Override the + // color to ensure that it's visible. We need !important, because the theme styles are + // very specific. + stroke: #000 !important; + } + } + + // Angular Material supports disabled chips, which MDC does not. + // Dim the disabled chips and stop MDC from changing the icon color on click. + &.mdc-evolution-chip--disabled { + opacity: 0.4; + } + + // MDC sets `overflow: hidden` on these elements in order to truncate the text. This is + // unnecessary since our chips don't truncate their text and it makes it difficult to style + // the strong focus indicators so we need to override it. + .mdc-evolution-chip__cell--primary, + .mdc-evolution-chip__action--primary, + .mat-mdc-chip-action-label { + overflow: visible; + } + + // Ensures that the trailing icon is pushed to the end if the chip has a set width. + .mdc-evolution-chip__cell--primary { + width: 100%; + } + + // MDC sizes and positions this element using `width`, `height` and `padding`. + // This usually works, but it's common for apps to add `box-sizing: border-box` + // to all elements on the page which can cause the graphic to be clipped. + // Set an explicit `box-sizing` in order to avoid these issues. + .mat-mdc-chip-graphic, + .mat-mdc-chip-trailing-icon { + box-sizing: content-box; + } + + + &._mat-animation-noopable { + &, + .mdc-evolution-chip__graphic, + .mdc-evolution-chip__checkmark, + .mdc-evolution-chip__checkmark-path { + // MDC listens to `transitionend` events on some of these + // elements so we can't disable the transitions completely. + transition-duration: 1ms; + animation-duration: 1ms; + } + } +} + +// MDC's focus and hover indication is handled through their ripple which we currently +// don't use due to size concerns so we have to re-implement it ourselves. +.mat-mdc-chip-focus-overlay { + @include layout-common.fill; + pointer-events: none; + opacity: 0; + border-radius: inherit; + transition: opacity 150ms linear; + + ._mat-animation-noopable & { + transition: none; + } + + .mat-mdc-basic-chip & { + display: none; + } + + .mat-mdc-chip:hover & { + opacity: 0.04; + } + + .mat-mdc-chip.cdk-focused & { + opacity: 0.12; + } +} + +// The ripple container should match the bounds of the entire chip. +.mat-mdc-chip-ripple { + @include layout-common.fill; + + // Disable pointer events for the ripple container and state overlay because the container + // will overlay the user content and we don't want to disable mouse events on the user content. + // Pointer events can be safely disabled because the ripple trigger element is the host element. + pointer-events: none; + + // Inherit the border radius from the parent so that state overlay and ripples don't exceed the + // parent button boundaries. + border-radius: inherit; +} + +.mat-mdc-chip-avatar { + // In case an icon or text is used as an avatar. + text-align: center; + line-height: 1; +} + +// Required for the strong focus indicator to fill the chip. +.mat-mdc-chip { + position: relative; +} + +.mat-mdc-chip-action-label { + // MDC centers the text, but we have a lot of internal customers who have it at the start. + text-align: left; + + [dir='rtl'] & { + text-align: right; + } + + // When a chip has a trailing action, it'll have two focusable elements when navigating with + // the arrow keys: the primary action and the trailing one. If that's the case, we apply + // `position: relative` to the primary action container so that the indicators is only around + // the text label. This allows for it to be distinguished from the indicator on the trailing icon. + .mat-mdc-chip.mdc-evolution-chip--with-trailing-action & { + position: relative; + } + + .mat-mdc-chip-primary-focus-indicator { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + pointer-events: none; + } +} + +.mat-mdc-chip-remove { + .mat-icon { + width: inherit; + height: inherit; + font-size: inherit; + box-sizing: content-box; + } +} + +// Fades out the trailing icon slightly so that it can become darker when focused. +// The MDC theming has variables for this, but the focus/hover states don't seem to work. +.mat-mdc-chip-remove { + opacity: 0.54; + + &:focus { + opacity: 1; + } +} + +.mat-chip-edit-input { + cursor: text; + display: inline-block; + color: inherit; + outline: 0; +} + +// Single-selection chips show their selected state using a background color which won't be visible +// in high contrast mode. This isn't necessary in multi-selection since there's a checkmark. +.mat-mdc-chip-selected:not(.mat-mdc-chip-multiple) { + @include a11y.high-contrast(active, off) { + outline-width: 3px; + } +} diff --git a/src/material-experimental/mdc-chips/chip.spec.ts b/src/material-experimental/mdc-chips/chip.spec.ts index eba8e531fef8..47390203c972 100644 --- a/src/material-experimental/mdc-chips/chip.spec.ts +++ b/src/material-experimental/mdc-chips/chip.spec.ts @@ -58,19 +58,12 @@ describe('MDC-based MatChip', () => { expect(chip.getAttribute('tabindex')).toBe('3'); }); - it('should be able to set a static tabindex', () => { - fixture = TestBed.createComponent(BasicChipWithStaticTabindex); - fixture.detectChanges(); - - const chip = fixture.nativeElement.querySelector('mat-basic-chip'); - expect(chip.getAttribute('tabindex')).toBe('3'); - }); - it('should be able to set a dynamic tabindex', () => { fixture = TestBed.createComponent(BasicChipWithBoundTabindex); fixture.detectChanges(); const chip = fixture.nativeElement.querySelector('mat-basic-chip'); + expect(chip.getAttribute('tabindex')).toBe('12'); fixture.componentInstance.tabindex = 15; @@ -93,6 +86,7 @@ describe('MDC-based MatChip', () => { describe('MatChip', () => { let testComponent: SingleChip; + let primaryAction: HTMLElement; beforeEach(() => { fixture = TestBed.createComponent(SingleChip); @@ -104,6 +98,7 @@ describe('MDC-based MatChip', () => { chipRippleDebugElement = chipDebugElement.query(By.directive(MatRipple))!; chipRippleInstance = chipRippleDebugElement.injector.get(MatRipple); testComponent = fixture.debugElement.componentInstance; + primaryAction = chipNativeElement.querySelector('.mdc-evolution-chip__action--primary')!; }); it('adds the `mat-chip` class', () => { @@ -169,17 +164,10 @@ describe('MDC-based MatChip', () => { .toBe(true); }); - it('should update the aria-label for disabled chips', () => { - expect(chipNativeElement.getAttribute('aria-disabled')).toBe('false'); - + it('should make disabled chips non-focusable', () => { testComponent.disabled = true; fixture.detectChanges(); - - expect(chipNativeElement.getAttribute('aria-disabled')).toBe('true'); - }); - - it('should make disabled chips non-focusable', () => { - expect(chipNativeElement.getAttribute('tabindex')).toBeFalsy(); + expect(primaryAction.hasAttribute('tabindex')).toBe(false); }); it('should return the chip text if value is undefined', () => { @@ -236,12 +224,12 @@ class SingleChip { class BasicChip {} @Component({ - template: `Hello`, + template: `Hello`, }) class BasicChipWithStaticTabindex {} @Component({ - template: `Hello`, + template: `Hello`, }) class BasicChipWithBoundTabindex { tabindex = 12; diff --git a/src/material-experimental/mdc-chips/chip.ts b/src/material-experimental/mdc-chips/chip.ts index 27ca314a9273..87af59368d6c 100644 --- a/src/material-experimental/mdc-chips/chip.ts +++ b/src/material-experimental/mdc-chips/chip.ts @@ -7,19 +7,16 @@ */ import {Directionality} from '@angular/cdk/bidi'; -import {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion'; +import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations'; import { - AfterContentInit, AfterViewInit, Component, ChangeDetectionStrategy, ChangeDetectorRef, ContentChild, - Directive, ElementRef, EventEmitter, - HostListener, Inject, Input, NgZone, @@ -28,7 +25,9 @@ import { Output, ViewEncapsulation, ViewChild, + Attribute, } from '@angular/core'; +import {DOCUMENT} from '@angular/common'; import { CanColor, CanDisable, @@ -41,10 +40,19 @@ import { mixinTabIndex, RippleGlobalOptions, } from '@angular/material-experimental/mdc-core'; -import {deprecated} from '@material/chips'; -import {SPACE, ENTER, hasModifierKey} from '@angular/cdk/keycodes'; +import { + MDCChipFoundation, + MDCChipAdapter, + MDCChipActionType, + MDCChipActionFocusBehavior, + MDCChipActionFoundation, + MDCChipActionEvents, + ActionInteractionEvent, + ActionNavigationEvent, + MDCChipActionInteractionTrigger, +} from '@material/chips'; +import {FocusMonitor} from '@angular/cdk/a11y'; import {Subject} from 'rxjs'; -import {takeUntil} from 'rxjs/operators'; import { MatChipAvatar, MatChipTrailingIcon, @@ -53,6 +61,8 @@ import { MAT_CHIP_TRAILING_ICON, MAT_CHIP_REMOVE, } from './chip-icons'; +import {emitCustomEvent} from './emit-event'; +import {MatChipAction} from './chip-action'; let uid = 0; @@ -62,17 +72,6 @@ export interface MatChipEvent { chip: MatChip; } -/** - * Directive to add MDC CSS to non-basic chips. - * @docs-private - */ -@Directive({ - selector: `mat-chip, mat-chip-option, mat-chip-row, [mat-chip], [mat-chip-option], - [mat-chip-row]`, - host: {'class': 'mat-mdc-chip mdc-chip'}, -}) -export class MatChipCssInternalOnly {} - /** * Boilerplate for applying mixins to MatChip. * @docs-private @@ -91,36 +90,39 @@ const _MatChipMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(MatChipBas */ @Component({ selector: 'mat-basic-chip, mat-chip', - inputs: ['color', 'disableRipple'], + inputs: ['color', 'disableRipple', 'tabIndex'], exportAs: 'matChip', templateUrl: 'chip.html', - styleUrls: ['chips.css'], + styleUrls: ['chip.css'], host: { - '[class.mat-mdc-chip-disabled]': 'disabled', - '[class.mat-mdc-chip-highlighted]': 'highlighted', + 'class': 'mat-mdc-chip', + '[class.mdc-evolution-chip]': '!_isBasicChip', + '[class.mdc-evolution-chip--disabled]': 'disabled', + '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()', + '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon', + '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon', + '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon', '[class.mat-mdc-chip-with-avatar]': 'leadingIcon', - '[class.mat-mdc-chip-with-trailing-icon]': 'trailingIcon || removeIcon', + '[class.mat-mdc-chip-highlighted]': 'highlighted', + '[class.mat-mdc-chip-disabled]': 'disabled', '[class.mat-mdc-basic-chip]': '_isBasicChip', '[class.mat-mdc-standard-chip]': '!_isBasicChip', + '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()', '[class._mat-animation-noopable]': '_animationsDisabled', '[id]': 'id', - '[attr.disabled]': 'disabled || null', - '[attr.aria-disabled]': 'disabled.toString()', + '[attr.role]': 'role', + '[attr.tabindex]': 'role ? tabIndex : null', + '[attr.aria-label]': 'ariaLabel', }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) export class MatChip extends _MatChipMixinBase - implements - AfterContentInit, - AfterViewInit, - CanColor, - CanDisableRipple, - CanDisable, - HasTabIndex, - OnDestroy + implements AfterViewInit, CanColor, CanDisableRipple, CanDisable, HasTabIndex, OnDestroy { + protected _document: Document; + /** Whether the ripple is centered on the chip. */ readonly _isRippleCentered = false; @@ -130,52 +132,52 @@ export class MatChip /** Emits when the chip is blurred. */ readonly _onBlur = new Subject(); - readonly REMOVE_ICON_HANDLED_KEYS: ReadonlySet = new Set([SPACE, ENTER]); - /** Whether this chip is a basic (unstyled) chip. */ readonly _isBasicChip: boolean; + /** Role for the root of the chip. */ + @Input() role: string | null = null; + /** Whether the chip has focus. */ protected _hasFocusInternal = false; + /** Whether moving focus into the chip is pending. */ + private _pendingFocus: boolean; + /** Whether animations for the chip are enabled. */ _animationsDisabled: boolean; - // We have to use a `HostListener` here in order to support both Ivy and ViewEngine. - // In Ivy the `host` bindings will be merged when this class is extended, whereas in - // ViewEngine they're overwritten. - // TODO(mmalerba): we move this back into `host` once Ivy is turned on by default. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('transitionend', ['$event']) - _handleTransitionEnd(event: TransitionEvent) { - this._chipFoundation.handleTransitionEnd(event); - } - _hasFocus() { return this._hasFocusInternal; } - /** Default unique id for the chip. */ - private _uniqueId = `mat-mdc-chip-${uid++}`; - /** A unique id for the chip. If none is supplied, it will be auto-generated. */ - @Input() id: string = this._uniqueId; + @Input() id: string = `mat-mdc-chip-${uid++}`; + + /** ARIA label for the content of the chip. */ + @Input('aria-label') ariaLabel: string | null = null; @Input() get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); + if (this.removeIcon) { - this.removeIcon.disabled = value; + this.removeIcon.disabled = this._disabled; } + + this._chipFoundation.setDisabled(this._disabled); } protected _disabled: boolean = false; private _textElement!: HTMLElement; - /** The value of the chip. Defaults to the content inside the mdc-chip__text element. */ + /** + * The value of the chip. Defaults to the content inside + * the `mat-mdc-chip-action-label` element. + */ @Input() get value(): any { return this._value !== undefined ? this._value : this._textElement.textContent!.trim(); @@ -192,7 +194,7 @@ export class MatChip get removable(): boolean { return this._removable; } - set removable(value: boolean) { + set removable(value: BooleanInput) { this._removable = coerceBooleanProperty(value); } protected _removable: boolean = true; @@ -204,22 +206,19 @@ export class MatChip get highlighted(): boolean { return this._highlighted; } - set highlighted(value: boolean) { + set highlighted(value: BooleanInput) { this._highlighted = coerceBooleanProperty(value); } protected _highlighted: boolean = false; - /** Emitted when the user interacts with the chip. */ - @Output() readonly interaction = new EventEmitter(); + /** Emitted when a chip is to be removed. */ + @Output() readonly removed: EventEmitter = new EventEmitter(); /** Emitted when the chip is destroyed. */ @Output() readonly destroyed: EventEmitter = new EventEmitter(); - /** Emitted when a chip is to be removed. */ - @Output() readonly removed: EventEmitter = new EventEmitter(); - /** The MDC foundation containing business logic for MDC chip. */ - _chipFoundation: deprecated.MDCChipFoundation; + _chipFoundation: MDCChipFoundation; /** The unstyled chip selector for this component. */ protected basicChipAttrName = 'mat-basic-chip'; @@ -236,151 +235,118 @@ export class MatChip /** Reference to the MatRipple instance of the chip. */ @ViewChild(MatRipple) ripple: MatRipple; + /** Action receiving the primary set of user interactions. */ + @ViewChild(MatChipAction) primaryAction: MatChipAction; + /** * Implementation of the MDC chip adapter interface. * These methods are called by the chip foundation. */ - protected _chipAdapter: deprecated.MDCChipAdapter = { + protected _chipAdapter: MDCChipAdapter = { addClass: className => this._setMdcClass(className, true), removeClass: className => this._setMdcClass(className, false), hasClass: className => this._elementRef.nativeElement.classList.contains(className), - addClassToLeadingIcon: className => this.leadingIcon.setClass(className, true), - removeClassFromLeadingIcon: className => this.leadingIcon.setClass(className, false), - eventTargetHasClass: (target: EventTarget | null, className: string) => { - // We need to null check the `classList`, because IE and Edge don't - // support it on SVG elements and Edge seems to throw for ripple - // elements, because they're outside the DOM. - return target && (target as Element).classList - ? (target as Element).classList.contains(className) - : false; + emitEvent: (eventName: string, data: T) => { + emitCustomEvent(this._elementRef.nativeElement, this._document, eventName, data, true); }, - notifyInteraction: () => this._notifyInteraction(), - notifySelection: () => { - // No-op. We call dispatchSelectionEvent ourselves in MatChipOption, - // because we want to specify whether selection occurred via user - // input. + setStyleProperty: (propertyName: string, value: string) => { + this._elementRef.nativeElement.style.setProperty(propertyName, value); }, - notifyNavigation: () => this._notifyNavigation(), - notifyTrailingIconInteraction: () => {}, - notifyRemoval: () => this.remove(), - notifyEditStart: () => { - this._onEditStart(); - this._changeDetectorRef.markForCheck(); + isRTL: () => this._dir?.value === 'rtl', + getAttribute: attributeName => this._elementRef.nativeElement.getAttribute(attributeName), + getElementID: () => this._elementRef.nativeElement.id, + getOffsetWidth: () => this._elementRef.nativeElement.offsetWidth, + getActions: () => { + const result: MDCChipActionType[] = []; + + if (this._getAction(MDCChipActionType.PRIMARY)) { + result.push(MDCChipActionType.PRIMARY); + } + + if (this._getAction(MDCChipActionType.TRAILING)) { + result.push(MDCChipActionType.TRAILING); + } + + return result; }, - notifyEditFinish: () => { - this._onEditFinish(); - this._changeDetectorRef.markForCheck(); + isActionSelectable: (action: MDCChipActionType) => { + return this._getAction(action)?.isSelectable() || false; }, - getComputedStyleValue: propertyName => { - // This function is run when a chip is removed so it might be - // invoked during server-side rendering. Add some extra checks just in - // case. - if (typeof window !== 'undefined' && window) { - const getComputedStyle = window.getComputedStyle(this._elementRef.nativeElement); - return getComputedStyle.getPropertyValue(propertyName); - } - return ''; + isActionSelected: (action: MDCChipActionType) => { + return this._getAction(action)?.isSelected() || false; }, - setStyleProperty: (propertyName: string, value: string) => { - this._elementRef.nativeElement.style.setProperty(propertyName, value); + isActionDisabled: (action: MDCChipActionType) => { + return this._getAction(action)?.isDisabled() || false; }, - hasLeadingIcon: () => !!this.leadingIcon, - isTrailingActionNavigable: () => { - if (this.trailingIcon) { - return this.trailingIcon.isNavigable(); - } - return false; + isActionFocusable: (action: MDCChipActionType) => { + return this._getAction(action)?.isFocusable() || false; }, - isRTL: () => !!this._dir && this._dir.value === 'rtl', - focusPrimaryAction: () => { - // Angular Material MDC chips fully manage focus. TODO: Managing focus - // and handling keyboard events was added by MDC after our - // implementation; consider consolidating. + setActionSelected: (action: MDCChipActionType, isSelected: boolean) => { + this._getAction(action)?.setSelected(isSelected); }, - focusTrailingAction: () => {}, - removeTrailingActionFocus: () => {}, - setPrimaryActionAttr: (name: string, value: string) => { - // MDC is currently using this method to set aria-checked on choice - // and filter chips, which in the MDC templates have role="checkbox" - // and role="radio" respectively. We have role="option" on those chips - // instead, so we do not want aria-checked. Since we also manage the - // tabindex ourselves, we don't allow MDC to set it. - if (name === 'aria-checked' || name === 'tabindex') { - return; - } - this._elementRef.nativeElement.setAttribute(name, value); + setActionDisabled: (action: MDCChipActionType, isDisabled: boolean) => { + this._getAction(action)?.setDisabled(isDisabled); + }, + setActionFocus: (action: MDCChipActionType, behavior: MDCChipActionFocusBehavior) => { + this._getAction(action)?.setFocus(behavior); }, - // The 2 functions below are used by the MDC ripple, which we aren't using, - // so they will never be called - getRootBoundingClientRect: () => this._elementRef.nativeElement.getBoundingClientRect(), - getCheckmarkBoundingClientRect: () => null, - getAttribute: attr => this._elementRef.nativeElement.getAttribute(attr), }; constructor( public _changeDetectorRef: ChangeDetectorRef, - elementRef: ElementRef, + elementRef: ElementRef, protected _ngZone: NgZone, + private _focusMonitor: FocusMonitor, + @Inject(DOCUMENT) _document: any, @Optional() private _dir: Directionality, @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string, @Optional() @Inject(MAT_RIPPLE_GLOBAL_OPTIONS) private _globalRippleOptions?: RippleGlobalOptions, + @Attribute('tabindex') tabIndex?: string, ) { super(elementRef); - this._chipFoundation = new deprecated.MDCChipFoundation(this._chipAdapter); + const element = elementRef.nativeElement; + this._document = _document; + this._chipFoundation = new MDCChipFoundation(this._chipAdapter); this._animationsDisabled = animationMode === 'NoopAnimations'; this._isBasicChip = - elementRef.nativeElement.hasAttribute(this.basicChipAttrName) || - elementRef.nativeElement.tagName.toLowerCase() === this.basicChipAttrName; - } - - ngAfterContentInit() { - this._initRemoveIcon(); + element.hasAttribute(this.basicChipAttrName) || + element.tagName.toLowerCase() === this.basicChipAttrName; + element.addEventListener(MDCChipActionEvents.INTERACTION, this._handleActionInteraction); + element.addEventListener(MDCChipActionEvents.NAVIGATION, this._handleActionNavigation); + _focusMonitor.monitor(elementRef, true); + + _ngZone.runOutsideAngular(() => { + element.addEventListener('transitionend', this._handleTransitionend); + element.addEventListener('animationend', this._handleAnimationend); + }); + + if (tabIndex != null) { + this.tabIndex = parseInt(tabIndex) ?? this.defaultTabIndex; + } } ngAfterViewInit() { this._chipFoundation.init(); - this._textElement = this._elementRef.nativeElement.querySelector('.mdc-chip__text'); + this._chipFoundation.setDisabled(this.disabled); + this._textElement = this._elementRef.nativeElement.querySelector('.mat-mdc-chip-action-label'); + + if (this._pendingFocus) { + this._pendingFocus = false; + this.focus(); + } } ngOnDestroy() { - this.destroyed.emit({chip: this}); + const element = this._elementRef.nativeElement; + element.removeEventListener(MDCChipActionEvents.INTERACTION, this._handleActionInteraction); + element.removeEventListener(MDCChipActionEvents.NAVIGATION, this._handleActionNavigation); + element.removeEventListener('transitionend', this._handleTransitionend); + element.removeEventListener('animationend', this._handleAnimationend); this._chipFoundation.destroy(); - } - - /** Sets up the remove icon chip foundation, and subscribes to remove icon events. */ - private _initRemoveIcon() { - if (this.removeIcon) { - this._chipFoundation.setShouldRemoveOnTrailingIconClick(true); - this.removeIcon.disabled = this.disabled; - - this.removeIcon.interaction.pipe(takeUntil(this.destroyed)).subscribe(event => { - // The MDC chip foundation calls stopPropagation() for any trailing icon interaction - // event, even ones it doesn't handle, so we want to avoid passing it keyboard events - // for which we have a custom handler. Note that we assert the type of the event using - // the `type`, because `instanceof KeyboardEvent` can throw during server-side rendering. - const isKeyboardEvent = event.type.startsWith('key'); - - if ( - this.disabled || - (isKeyboardEvent && !this.REMOVE_ICON_HANDLED_KEYS.has((event as KeyboardEvent).keyCode)) - ) { - return; - } - - this.remove(); - - if (isKeyboardEvent && !hasModifierKey(event as KeyboardEvent)) { - const keyCode = (event as KeyboardEvent).keyCode; - - // Prevent default space and enter presses so we don't scroll the page or submit forms. - if (keyCode === SPACE || keyCode === ENTER) { - event.preventDefault(); - } - } - }); - } + this._focusMonitor.stopMonitoring(this._elementRef); + this.destroyed.emit({chip: this}); } /** @@ -401,64 +367,98 @@ export class MatChip this._changeDetectorRef.markForCheck(); } - /** Forwards interaction events to the MDC chip foundation. */ - _handleInteraction(event: MouseEvent | KeyboardEvent | FocusEvent) { - if (this.disabled) { - return; - } + /** Whether or not the ripple should be disabled. */ + _isRippleDisabled(): boolean { + return ( + this.disabled || + this.disableRipple || + this._animationsDisabled || + this._isBasicChip || + !!this._globalRippleOptions?.disabled + ); + } - if (event.type === 'click') { - this._chipFoundation.handleClick(); - return; + _getAction(type: MDCChipActionType): MDCChipActionFoundation | undefined { + switch (type) { + case MDCChipActionType.PRIMARY: + return this.primaryAction?._getFoundation(); + case MDCChipActionType.TRAILING: + return (this.removeIcon || this.trailingIcon)?._getFoundation(); } - if (event.type === 'dblclick') { - this._chipFoundation.handleDoubleClick(); - } + return undefined; + } + + _getFoundation() { + return this._chipFoundation; + } - if (event.type === 'keydown') { - this._chipFoundation.handleKeydown(event as KeyboardEvent); + _hasTrailingIcon() { + return !!(this.trailingIcon || this.removeIcon); + } + + /** Allows for programmatic focusing of the chip. */ + focus(): void { + if (this.disabled) { return; } - if (event.type === 'focusout') { - this._chipFoundation.handleFocusOut(event as FocusEvent); + // If `focus` is called before `ngAfterViewInit`, we won't have access to the primary action. + // This can happen if the consumer tries to focus a chip immediately after it is added. + // Queue the method to be called again on init. + if (!this.primaryAction) { + this._pendingFocus = true; + return; } - if (event.type === 'focusin') { - this._chipFoundation.handleFocusIn(event as FocusEvent); + if (!this._hasFocus()) { + this._onFocus.next({chip: this}); + this._hasFocusInternal = true; } - } - /** Whether or not the ripple should be disabled. */ - _isRippleDisabled(): boolean { - return ( - this.disabled || - this.disableRipple || - this._animationsDisabled || - this._isBasicChip || - !!this._globalRippleOptions?.disabled - ); + this.primaryAction.focus(); } - _notifyInteraction() { - this.interaction.emit(this.id); + /** Overridden by MatChipOption. */ + protected _onChipInteraction(event: ActionInteractionEvent) { + const removeElement = this.removeIcon?._elementRef.nativeElement; + const trigger = event.detail.trigger; + + // MDC's removal process requires an `animationend` event followed by a `transitionend` + // event coming from the chip, which in turn will call `remove`. While we can stub + // out these events in our own tests, they can be difficult to fake for consumers that are + // testing our components or are wrapping them. We skip the entire sequence and trigger the + // removal directly in order to make the component easier to deal with. + if ( + removeElement && + (trigger === MDCChipActionInteractionTrigger.CLICK || + trigger === MDCChipActionInteractionTrigger.ENTER_KEY || + trigger === MDCChipActionInteractionTrigger.SPACEBAR_KEY) && + (event.target === removeElement || removeElement.contains(event.target)) + ) { + this.remove(); + } else { + this._chipFoundation.handleActionInteraction(event); + } } - _notifyNavigation() { - // TODO: This is a new feature added by MDC. Consider exposing it to users - // in the future. - } + private _handleActionInteraction = (event: Event) => { + this._onChipInteraction(event as ActionInteractionEvent); + }; - /** Overridden by MatChipRow. */ - protected _onEditStart() {} + private _handleActionNavigation = (event: Event) => { + this._chipFoundation.handleActionNavigation(event as ActionNavigationEvent); + }; - /** Overridden by MatChipRow. */ - protected _onEditFinish() {} + private _handleTransitionend = (event: TransitionEvent) => { + if (event.target === this._elementRef.nativeElement) { + this._ngZone.run(() => this._chipFoundation.handleTransitionEnd()); + } + }; - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_removable: BooleanInput; - static ngAcceptInputType_highlighted: BooleanInput; - static ngAcceptInputType_disableRipple: BooleanInput; - static ngAcceptInputType_tabIndex: NumberInput; + private _handleAnimationend = (event: AnimationEvent) => { + if (event.target === this._elementRef.nativeElement) { + this._ngZone.run(() => this._chipFoundation.handleAnimationEnd(event)); + } + }; } diff --git a/src/material-experimental/mdc-chips/chips.scss b/src/material-experimental/mdc-chips/chips.scss deleted file mode 100644 index 8ef7df07f689..000000000000 --- a/src/material-experimental/mdc-chips/chips.scss +++ /dev/null @@ -1,176 +0,0 @@ -@use '@material/chips/deprecated' as mdc-chips; -@use '@material/ripple' as mdc-ripple; -@use '../../material/core/style/layout-common'; -@use '../../cdk/a11y'; -@use '../mdc-helpers/mdc-helpers'; - -@include mdc-chips.without-ripple($query: mdc-helpers.$mat-base-styles-query); -@include mdc-chips.set-core-styles($query: mdc-helpers.$mat-base-styles-query); - -.mat-mdc-chip { - // MDC uses a pointer cursor - cursor: default; - - &._mat-animation-noopable { - animation: none; - transition: none; - - .mdc-chip__checkmark-svg { - transition: none; - } - } - - @include a11y.high-contrast(active, off) { - outline: solid 1px; - - &:focus { - // Use 2px here since the dotted outline is a little thinner. - outline: dotted 2px; - } - } -} - -// The ripple container should match the bounds of the entire chip. -.mat-mdc-chip-ripple { - @include layout-common.fill; - - // Disable pointer events for the ripple container and state overlay because the container - // will overlay the user content and we don't want to disable mouse events on the user content. - // Pointer events can be safely disabled because the ripple trigger element is the host element. - pointer-events: none; - - // Inherit the border radius from the parent so that state overlay and ripples don't exceed the - // parent button boundaries. - border-radius: inherit; -} - -// The MDC chip styles related to hover and focus states are intertwined with the MDC ripple styles. -// We currently don't use the MDC ripple due to size concerns, therefore we need to add some -// additional styles to restore these states. -.mdc-chip__ripple { - @include mdc-ripple.target-common($query: structure); - - &::after, &::before { - @include layout-common.fill; - content: ''; - pointer-events: none; - opacity: 0; - border-radius: inherit; - - ._mat-animation-noopable & { - transition: none; - } - } -} - -// Angular Material supports disabled chips, which MDC does not. -// Dim the disabled chips and stop MDC from changing the icon color on click. -.mat-mdc-chip-disabled.mat-mdc-chip { - opacity: 0.4; - - .mat-mdc-chip-trailing-icon, .mat-mdc-chip-row-focusable-text-content { - pointer-events: none; - } - - // Do not show state interactions for disabled chips. - .mdc-chip__ripple::after, .mdc-chip__ripple::before { - display: none; - } -} - -// Angular Material supports vertically-stacked chips, which MDC does not. -.mat-mdc-chip-set-stacked { - flex-direction: column; - align-items: flex-start; - - .mat-mdc-chip { - width: 100%; - } -} - -// Add styles for the matChipInputFor input element. -$mat-chip-input-width: 150px; - -input.mat-mdc-chip-input { - flex: 1 0 $mat-chip-input-width; -} - -// The margin value is set in MDC. -$chip-margin: 4px; - -// Don't let the chip margin increase the mat-form-field height. -.mat-mdc-chip-grid { - margin: -$chip-margin; - - // Keep the mat-chip-grid height the same even when there are no chips. - input.mat-mdc-chip-input { - margin: $chip-margin; - } -} - -.mdc-chip__checkmark-path { - ._mat-animation-noopable & { - transition: none; - } - - @include a11y.high-contrast(black-on-white, off) { - // SVG colors won't be changed in high contrast mode and since the checkmark is white - // by default, it'll blend in with the background in black-on-white mode. Override the color - // to ensure that it's visible. We need !important, because the theme styles are very specific. - stroke: #000 !important; - } -} - -// Needed for the focus indicator. -.mat-mdc-chip-row-focusable-text-content { - position: relative; -} - -.mat-mdc-chip-remove { - // Reset the user agent styles in case a button is used. - border: none; - -webkit-appearance: none; - -moz-appearance: none; - padding: 0; - background: none; - - .mat-icon { - width: inherit; - height: inherit; - font-size: inherit; - } -} - -.mat-mdc-chip-row-focusable-text-content, -.mat-mdc-chip-remove-icon { - display: flex; - align-items: center; -} - -.mat-mdc-chip-content { - display: inline-flex; -} - -.mdc-chip--editing { - background-color: transparent; - display: flex; - flex-direction: column; - - .mat-mdc-chip-content { - pointer-events: none; - height: 0; - overflow: hidden; - } -} - -.mat-chip-edit-input { - cursor: text; - display: inline-block; -} - -.mat-mdc-chip-edit-input-container { - width: 100%; - height: 100%; - display: flex; - align-items: center; -} diff --git a/src/material-experimental/mdc-chips/emit-event.ts b/src/material-experimental/mdc-chips/emit-event.ts new file mode 100644 index 000000000000..b208b6d3f0d8 --- /dev/null +++ b/src/material-experimental/mdc-chips/emit-event.ts @@ -0,0 +1,33 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +/** + * Emits a custom event from an element. + * @param element Element from which to emit the event. + * @param _document Document that the element is placed in. + * @param eventName Name of the event. + * @param data Data attached to the event. + * @param shouldBubble Whether the event should bubble. + */ +export function emitCustomEvent( + element: HTMLElement, + _document: Document, + eventName: string, + data: T, + shouldBubble: boolean, +): void { + let event: CustomEvent; + if (typeof CustomEvent === 'function') { + event = new CustomEvent(eventName, {bubbles: shouldBubble, detail: data}); + } else { + event = _document.createEvent('CustomEvent'); + event.initCustomEvent(eventName, shouldBubble, false, data); + } + + element.dispatchEvent(event); +} diff --git a/src/material-experimental/mdc-chips/grid-focus-key-manager.ts b/src/material-experimental/mdc-chips/grid-focus-key-manager.ts deleted file mode 100644 index 40aa6d2280ba..000000000000 --- a/src/material-experimental/mdc-chips/grid-focus-key-manager.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -import {GridKeyManager} from './grid-key-manager'; - -/** - * A version of GridKeyManager where the cells are HTMLElements, and focus() - * is called on a cell when it becomes active. - */ -export class GridFocusKeyManager extends GridKeyManager { - /** - * Sets the active cell to the cell at the specified - * indices and focuses the newly active cell. - * @param cell Row and column indices of the cell to be set as active. - */ - override setActiveCell(cell: {row: number; column: number}): void; - - /** - * Sets the active cell to the cell that is specified and focuses it. - * @param cell Cell to be set as active. - */ - override setActiveCell(cell: HTMLElement): void; - - override setActiveCell(cell: any): void { - super.setActiveCell(cell); - - if (this.activeCell) { - this.activeCell.focus(); - } - } -} diff --git a/src/material-experimental/mdc-chips/grid-key-manager.ts b/src/material-experimental/mdc-chips/grid-key-manager.ts deleted file mode 100644 index d956d2f05b91..000000000000 --- a/src/material-experimental/mdc-chips/grid-key-manager.ts +++ /dev/null @@ -1,285 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -import {QueryList} from '@angular/core'; -import {Subject} from 'rxjs'; -import {UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, HOME, END} from '@angular/cdk/keycodes'; - -/** The keys handled by the GridKeyManager keydown method. */ -export const NAVIGATION_KEYS = [DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW]; - -/** This interface is for rows that can be passed to a GridKeyManager. */ -export interface GridKeyManagerRow { - cells: T[]; -} - -/** - * This class manages keyboard events for grids. If you pass it a query list - * of GridKeyManagerRow, it will set the active cell correctly when arrow events occur. - * - * GridKeyManager expects that rows may change dynamically, but the cells for a given row are - * static. It also expects that all rows have the same number of cells. - */ -export class GridKeyManager { - private _activeRowIndex = -1; - private _activeColumnIndex = -1; - private _activeRow: GridKeyManagerRow | null = null; - private _activeCell: T | null = null; - private _dir: 'ltr' | 'rtl' = 'ltr'; - private _homeAndEnd = false; - - constructor(private _rows: QueryList> | GridKeyManagerRow[]) { - // We allow for the rows to be an array because, in some cases, the consumer may - // not have access to a QueryList of the rows they want to manage (e.g. when the - // rows aren't being collected via `ViewChildren` or `ContentChildren`). - if (_rows instanceof QueryList) { - _rows.changes.subscribe((newRows: QueryList>) => { - if (this._activeRow) { - const newIndex = newRows.toArray().indexOf(this._activeRow); - - if (newIndex > -1 && newIndex !== this._activeRowIndex) { - this._activeRowIndex = newIndex; - } - } - }); - } - } - - /** Stream that emits whenever the active cell of the grid manager changes. */ - change = new Subject<{row: number; column: number}>(); - - /** - * Configures the directionality of the key manager's horizontal movement. - * @param direction Direction which is considered forward movement across a row. - * - * If withDirectionality is not set, the default is 'ltr'. - */ - withDirectionality(direction: 'ltr' | 'rtl'): this { - this._dir = direction; - return this; - } - - /** - * Sets the active cell to the cell at the indices specified. - * @param cell The row and column containing the cell to be set as active. - */ - setActiveCell(cell: {row: number; column: number}): void; - - /** - * Sets the active cell to the cell. - * @param cell The cell to be set as active. - */ - setActiveCell(cell: T): void; - - setActiveCell(cell: any): void { - const previousRowIndex = this._activeRowIndex; - const previousColumnIndex = this._activeColumnIndex; - - this.updateActiveCell(cell); - - if ( - this._activeRowIndex !== previousRowIndex || - this._activeColumnIndex !== previousColumnIndex - ) { - this.change.next({row: this._activeRowIndex, column: this._activeColumnIndex}); - } - } - - /** - * Configures the key manager to activate the first and last items - * respectively when the Home or End key is pressed. - * @param enabled Whether pressing the Home or End key activates the first/last item. - */ - withHomeAndEnd(enabled: boolean = true): this { - this._homeAndEnd = enabled; - return this; - } - - /** - * Sets the active cell depending on the key event passed in. - * @param event Keyboard event to be used for determining which element should be active. - */ - onKeydown(event: KeyboardEvent): void { - const keyCode = event.keyCode; - - switch (keyCode) { - case DOWN_ARROW: - this.setNextRowActive(); - break; - - case UP_ARROW: - this.setPreviousRowActive(); - break; - - case RIGHT_ARROW: - this._dir === 'rtl' ? this.setPreviousColumnActive() : this.setNextColumnActive(); - break; - - case LEFT_ARROW: - this._dir === 'rtl' ? this.setNextColumnActive() : this.setPreviousColumnActive(); - break; - - case HOME: - if (this._homeAndEnd) { - this.setFirstCellActive(); - break; - } else { - return; - } - - case END: - if (this._homeAndEnd) { - this.setLastCellActive(); - break; - } else { - return; - } - - default: - // Note that we return here, in order to avoid preventing - // the default action of non-navigational keys. - return; - } - - event.preventDefault(); - } - - /** Index of the currently active row. */ - get activeRowIndex(): number { - return this._activeRowIndex; - } - - /** Index of the currently active column. */ - get activeColumnIndex(): number { - return this._activeColumnIndex; - } - - /** The active cell. */ - get activeCell(): T | null { - return this._activeCell; - } - - /** Sets the active cell to the first cell in the grid. */ - setFirstCellActive(): void { - this._setActiveCellByIndex(0, 0); - } - - /** Sets the active cell to the last cell in the grid. */ - setLastCellActive(): void { - const lastRowIndex = this._rows.length - 1; - const lastRow = this._getRowsArray()[lastRowIndex]; - this._setActiveCellByIndex(lastRowIndex, lastRow.cells.length - 1); - } - - /** Sets the active row to the next row in the grid. Active column is unchanged. */ - setNextRowActive(): void { - this._activeRowIndex < 0 ? this.setFirstCellActive() : this._setActiveCellByDelta(1, 0); - } - - /** Sets the active row to the previous row in the grid. Active column is unchanged. */ - setPreviousRowActive(): void { - this._setActiveCellByDelta(-1, 0); - } - - /** - * Sets the active column to the next column in the grid. - * Active row is unchanged, unless we reach the end of a row. - */ - setNextColumnActive(): void { - this._activeRowIndex < 0 ? this.setFirstCellActive() : this._setActiveCellByDelta(0, 1); - } - - /** - * Sets the active column to the previous column in the grid. - * Active row is unchanged, unless we reach the end of a row. - */ - setPreviousColumnActive(): void { - this._setActiveCellByDelta(0, -1); - } - - /** - * Allows setting the active cell without any other effects. - * @param cell Row and column of the cell to be set as active. - */ - updateActiveCell(cell: {row: number; column: number}): void; - - /** - * Allows setting the active cell without any other effects. - * @param cell Cell to be set as active. - */ - updateActiveCell(cell: T): void; - - updateActiveCell(cell: any): void { - const rowArray = this._getRowsArray(); - - if ( - typeof cell === 'object' && - typeof cell.row === 'number' && - typeof cell.column === 'number' - ) { - this._activeRowIndex = cell.row; - this._activeColumnIndex = cell.column; - this._activeRow = rowArray[cell.row] || null; - this._activeCell = this._activeRow ? this._activeRow.cells[cell.column] || null : null; - } else { - rowArray.forEach((row, rowIndex) => { - const columnIndex = row.cells.indexOf(cell); - if (columnIndex !== -1) { - this._activeRowIndex = rowIndex; - this._activeColumnIndex = columnIndex; - this._activeRow = row; - this._activeCell = row.cells[columnIndex]; - } - }); - } - } - - /** - * This method sets the active cell, given the row and columns deltas - * between the currently active cell and the new active cell. - */ - private _setActiveCellByDelta(rowDelta: -1 | 0 | 1, columnDelta: -1 | 0 | 1): void { - // If delta puts us past the last cell in a row, move to the first cell of the next row. - if (this._activeRow && this._activeColumnIndex + columnDelta >= this._activeRow.cells.length) { - this._setActiveCellByIndex(this._activeRowIndex + 1, 0); - - // If delta puts us prior to the first cell in a row, move to the last cell of the previous row. - } else if (this._activeColumnIndex + columnDelta < 0) { - const previousRowIndex = this._activeRowIndex - 1; - const previousRow = this._getRowsArray()[previousRowIndex]; - if (previousRow) { - this._setActiveCellByIndex(previousRowIndex, previousRow.cells.length - 1); - } - } else { - this._setActiveCellByIndex( - this._activeRowIndex + rowDelta, - this._activeColumnIndex + columnDelta, - ); - } - } - - /** - * Sets the active cell to the cell at the indices specified, if they are valid. - */ - private _setActiveCellByIndex(rowIndex: number, columnIndex: number): void { - const rows = this._getRowsArray(); - - const targetRow = rows[rowIndex]; - - if (!targetRow || !targetRow.cells[columnIndex]) { - return; - } - - this.setActiveCell({row: rowIndex, column: columnIndex}); - } - - /** Returns the rows as an array. */ - private _getRowsArray(): GridKeyManagerRow[] { - return this._rows instanceof QueryList ? this._rows.toArray() : this._rows; - } -} diff --git a/src/material-experimental/mdc-chips/module.ts b/src/material-experimental/mdc-chips/module.ts index 7ce8256d6caf..ace98686a98e 100644 --- a/src/material-experimental/mdc-chips/module.ts +++ b/src/material-experimental/mdc-chips/module.ts @@ -14,7 +14,7 @@ import { MatCommonModule, MatRippleModule, } from '@angular/material-experimental/mdc-core'; -import {MatChip, MatChipCssInternalOnly} from './chip'; +import {MatChip} from './chip'; import {MAT_CHIPS_DEFAULT_OPTIONS, MatChipsDefaultOptions} from './chip-default-options'; import {MatChipEditInput} from './chip-edit-input'; import {MatChipGrid} from './chip-grid'; @@ -24,11 +24,11 @@ import {MatChipListbox} from './chip-listbox'; import {MatChipRow} from './chip-row'; import {MatChipOption} from './chip-option'; import {MatChipSet} from './chip-set'; +import {MatChipAction} from './chip-action'; const CHIP_DECLARATIONS = [ MatChip, MatChipAvatar, - MatChipCssInternalOnly, MatChipEditInput, MatChipGrid, MatChipInput, @@ -43,7 +43,7 @@ const CHIP_DECLARATIONS = [ @NgModule({ imports: [MatCommonModule, CommonModule, MatRippleModule], exports: [MatCommonModule, CHIP_DECLARATIONS], - declarations: CHIP_DECLARATIONS, + declarations: [MatChipAction, CHIP_DECLARATIONS], providers: [ ErrorStateMatcher, { diff --git a/src/material-experimental/mdc-chips/testing/chip-harness.ts b/src/material-experimental/mdc-chips/testing/chip-harness.ts index 735a5ac40aac..fa880ca782ba 100644 --- a/src/material-experimental/mdc-chips/testing/chip-harness.ts +++ b/src/material-experimental/mdc-chips/testing/chip-harness.ts @@ -17,6 +17,8 @@ import {MatChipRemoveHarness} from './chip-remove-harness'; /** Harness for interacting with a mat-chip in tests. */ export class MatChipHarness extends ContentContainerComponentHarness { + protected _primaryAction = this.locatorFor('.mdc-evolution-chip__action--primary'); + static hostSelector = '.mat-mdc-basic-chip, .mat-mdc-chip'; /** diff --git a/src/material-experimental/mdc-chips/testing/chip-option-harness.ts b/src/material-experimental/mdc-chips/testing/chip-option-harness.ts index c3e73e3485bb..8005a3c7573e 100644 --- a/src/material-experimental/mdc-chips/testing/chip-option-harness.ts +++ b/src/material-experimental/mdc-chips/testing/chip-option-harness.ts @@ -56,6 +56,6 @@ export class MatChipOptionHarness extends MatChipHarness { /** Toggles the selected state of the given chip. */ async toggle(): Promise { - return (await this.host()).sendKeys(' '); + return (await this._primaryAction()).click(); } } diff --git a/src/material-experimental/mdc-chips/testing/chip-row-harness.spec.ts b/src/material-experimental/mdc-chips/testing/chip-row-harness.spec.ts index 67ee6f528ef7..4a497932ad04 100644 --- a/src/material-experimental/mdc-chips/testing/chip-row-harness.spec.ts +++ b/src/material-experimental/mdc-chips/testing/chip-row-harness.spec.ts @@ -24,15 +24,25 @@ describe('MatChipRowHarness', () => { const harnesses = await loader.getAllHarnesses(MatChipRowHarness); expect(harnesses.length).toBe(2); }); + + it('should get whether the chip is editable', async () => { + const harness = await loader.getHarness(MatChipRowHarness); + expect(await harness.isEditable()).toBe(false); + + fixture.componentInstance.editable = true; + expect(await harness.isEditable()).toBe(true); + }); }); @Component({ template: ` - Basic Chip Row - Chip Row + Basic Chip Row + Chip Row `, }) -class ChipRowHarnessTest {} +class ChipRowHarnessTest { + editable = false; +} diff --git a/src/material-experimental/mdc-chips/testing/chip-row-harness.ts b/src/material-experimental/mdc-chips/testing/chip-row-harness.ts index 216d068847c5..39ed349bd5fe 100644 --- a/src/material-experimental/mdc-chips/testing/chip-row-harness.ts +++ b/src/material-experimental/mdc-chips/testing/chip-row-harness.ts @@ -10,6 +10,8 @@ import {HarnessPredicate} from '@angular/cdk/testing'; import {ChipRowHarnessFilters} from './chip-harness-filters'; import {MatChipHarness} from './chip-harness'; +// TODO(crisbeto): add harness for the chip edit input inside the row. + /** Harness for interacting with a mat-chip-row in tests. */ export class MatChipRowHarness extends MatChipHarness { static override hostSelector = '.mat-mdc-chip-row'; @@ -27,4 +29,14 @@ export class MatChipRowHarness extends MatChipHarness { InstanceType >; } + + /** Whether the chip is editable. */ + async isEditable(): Promise { + return (await this.host()).hasClass('mat-mdc-chip-editable'); + } + + /** Whether the chip is currently being edited. */ + async isEditing(): Promise { + return (await this.host()).hasClass('mat-mdc-chip-editing'); + } } diff --git a/src/material-experimental/mdc-core/_core-theme.scss b/src/material-experimental/mdc-core/_core-theme.scss index 75e3bca6cdab..03c97a6f4322 100644 --- a/src/material-experimental/mdc-core/_core-theme.scss +++ b/src/material-experimental/mdc-core/_core-theme.scss @@ -1,8 +1,46 @@ @use '../../material/core/theming/theming'; +@use '../../material/core/typography/typography'; @use './option/option-theme'; @use './option/optgroup-theme'; @use './elevation'; + +@mixin color($config-or-theme) { + $config: theming.get-color-config($config-or-theme); + + @include option-theme.color($config); + @include optgroup-theme.color($config); + + @if $config != null { + // Provides external CSS classes for each elevation value. Each CSS class is formatted as + // `mat-mdc-elevation-z$zValue` where `$zValue` corresponds to the z-space to which the + // element is elevated. + @for $zValue from 0 through 24 { + $selector: elevation.$prefix + $zValue; + // We need the `mat-mdc-elevation-specific`, because some MDC mixins + // come with elevation baked in and we don't have a way of removing it. + .#{$selector}, .mat-mdc-elevation-specific.#{$selector} { + @include elevation.private-theme-elevation($zValue, $config); + } + } + } +} + +@mixin typography($config-or-theme) { + $config: typography.private-typography-to-2018-config( + theming.get-typography-config($config-or-theme)); + + @include option-theme.typography($config-or-theme); + @include optgroup-theme.typography($config-or-theme); +} + +@mixin density($config-or-theme) { + $density-scale: theming.get-density-config($config-or-theme); + + @include option-theme.density($density-scale); + @include optgroup-theme.density($density-scale); +} + // Mixin that renders all of the core styles that depend on the theme. @mixin theme($theme-or-color-config) { $theme: theming.private-legacy-get-theme($theme-or-color-config); @@ -12,22 +50,17 @@ // the imported themes (such as `mat-ripple-theme`) should not report again. @include theming.private-check-duplicate-theme-styles($theme, 'mat-mdc-core') { $color: theming.get-color-config($theme); - - @include option-theme.theme($theme); - @include optgroup-theme.theme($theme); + $density: theming.get-density-config($theme); + $typography: theming.get-typography-config($theme); @if $color != null { - // Provides external CSS classes for each elevation value. Each CSS class is formatted as - // `mat-mdc-elevation-z$zValue` where `$zValue` corresponds to the z-space to which the - // element is elevated. - @for $zValue from 0 through 24 { - $selector: elevation.$prefix + $zValue; - // We need the `mat-mdc-elevation-specific`, because some MDC mixins - // come with elevation baked in and we don't have a way of removing it. - .#{$selector}, .mat-mdc-elevation-specific.#{$selector} { - @include elevation.private-theme-elevation($zValue, $color); - } - } + @include color($color); + } + @if $density != null { + @include density($density); + } + @if $typography != null { + @include typography($typography); } } } diff --git a/src/material-experimental/mdc-core/option/_option-theme.scss b/src/material-experimental/mdc-core/option/_option-theme.scss index 93ca9f354e73..a178ba4e16cd 100644 --- a/src/material-experimental/mdc-core/option/_option-theme.scss +++ b/src/material-experimental/mdc-core/option/_option-theme.scss @@ -55,9 +55,9 @@ theming.get-typography-config($config-or-theme)); @include mdc-helpers.mat-using-mdc-typography($config) { - // MDC uses the `subtitle1` level for list items, but the spec shows `body1` as the correct - // level. Class is repeated for increased specificity. - .mat-mdc-option .mdc-list-item__primary-text { + // MDC uses the `subtitle1` level for list items, but + // the spec shows `body1` as the correct level. + .mat-mdc-option { @include mdc-typography.typography(body1, $query: mdc-helpers.$mat-typography-styles-query); } } diff --git a/src/material-experimental/mdc-core/option/option.scss b/src/material-experimental/mdc-core/option/option.scss index cedca159fef5..3c7fe08a9478 100644 --- a/src/material-experimental/mdc-core/option/option.scss +++ b/src/material-experimental/mdc-core/option/option.scss @@ -66,10 +66,21 @@ pointer-events: none; } - // Needs to be overwritten explicitly, because the style can + // Needs to be overwritten explicitly, because the style can // leak in from the list and cause the text to truncate. .mdc-list-item__primary-text { white-space: normal; + + // MDC assigns the typography to this element, rather than the option itself, which will break + // existing overrides. Set all of the typography-related properties to `inherit` so that any + // styles set on the host can propagate down. + font-size: inherit; + font-weight: inherit; + letter-spacing: inherit; + line-height: inherit; + font-family: inherit; + text-decoration: inherit; + text-transform: inherit; } } diff --git a/src/material-experimental/mdc-core/option/option.ts b/src/material-experimental/mdc-core/option/option.ts index 09166c785261..b4af3be36056 100644 --- a/src/material-experimental/mdc-core/option/option.ts +++ b/src/material-experimental/mdc-core/option/option.ts @@ -48,7 +48,7 @@ import {MatOptgroup} from './optgroup'; encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) -export class MatOption extends _MatOptionBase { +export class MatOption extends _MatOptionBase { constructor( element: ElementRef, changeDetectorRef: ChangeDetectorRef, diff --git a/src/material-experimental/mdc-core/public-api.ts b/src/material-experimental/mdc-core/public-api.ts index 00cbeab3a498..7ca80f2d379c 100644 --- a/src/material-experimental/mdc-core/public-api.ts +++ b/src/material-experimental/mdc-core/public-api.ts @@ -29,8 +29,6 @@ export { MatCommonModule, MatDateFormats, MATERIAL_SANITY_CHECKS, - MatLine, - MatLineModule, MatNativeDateModule, MatPseudoCheckbox, MatPseudoCheckboxModule, diff --git a/src/material-experimental/mdc-dialog/dialog-container.ts b/src/material-experimental/mdc-dialog/dialog-container.ts index 7fc441a0087d..fad5c1775c54 100644 --- a/src/material-experimental/mdc-dialog/dialog-container.ts +++ b/src/material-experimental/mdc-dialog/dialog-container.ts @@ -32,7 +32,9 @@ import {cssClasses, numbers} from '@material/dialog'; templateUrl: 'dialog-container.html', styleUrls: ['dialog.css'], encapsulation: ViewEncapsulation.None, - changeDetection: ChangeDetectionStrategy.OnPush, + // Disabled for consistency with the non-MDC dialog container. + // tslint:disable-next-line:validate-decorators + changeDetection: ChangeDetectionStrategy.Default, host: { 'class': 'mat-mdc-dialog-container mdc-dialog', 'tabindex': '-1', @@ -60,7 +62,7 @@ export class MatDialogContainer extends _MatDialogContainerBase implements OnDes ? numbers.DIALOG_ANIMATION_CLOSE_TIME_MS : 0; /** Current timer for dialog animations. */ - private _animationTimer: any = null; + private _animationTimer: number | null = null; constructor( elementRef: ElementRef, diff --git a/src/material-experimental/mdc-dialog/dialog-content-directives.ts b/src/material-experimental/mdc-dialog/dialog-content-directives.ts index 3daa9f0db283..ea444e87addc 100644 --- a/src/material-experimental/mdc-dialog/dialog-content-directives.ts +++ b/src/material-experimental/mdc-dialog/dialog-content-directives.ts @@ -141,9 +141,18 @@ export class MatDialogContent {} */ @Directive({ selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`, - host: {'class': 'mat-mdc-dialog-actions mdc-dialog__actions'}, + host: { + 'class': 'mat-mdc-dialog-actions mdc-dialog__actions', + '[class.mat-mdc-dialog-actions-align-center]': 'align === "center"', + '[class.mat-mdc-dialog-actions-align-end]': 'align === "end"', + }, }) -export class MatDialogActions {} +export class MatDialogActions { + /** + * Horizontal alignment of action buttons. + */ + @Input() align?: 'start' | 'center' | 'end' = 'start'; +} /** * Finds the closest MatDialogRef to an element by looking at the DOM. diff --git a/src/material-experimental/mdc-dialog/dialog.scss b/src/material-experimental/mdc-dialog/dialog.scss index 4ee775525673..3fde7c85f592 100644 --- a/src/material-experimental/mdc-dialog/dialog.scss +++ b/src/material-experimental/mdc-dialog/dialog.scss @@ -1,7 +1,6 @@ @use '@material/dialog' as mdc-dialog; @use '../mdc-helpers/mdc-helpers'; @use './mdc-dialog-structure-overrides'; -@use '../../cdk/a11y'; // Dialog content max height. This has been copied from the standard dialog // and is needed to make the dialog content scrollable. @@ -10,17 +9,16 @@ $mat-dialog-content-max-height: 65vh !default; // don't expose this value as variable. $mat-dialog-button-horizontal-margin: 8px !default; -@include mdc-dialog.core-styles($query: mdc-helpers.$mat-base-styles-query); +@include mdc-helpers.disable-fallback-declarations { + @include mdc-dialog.core-styles($query: mdc-helpers.$mat-base-styles-query); +} + @include mdc-dialog-structure-overrides.private-dialog-structure-overrides( $mat-dialog-content-max-height); // The dialog container is focusable. We remove the default outline shown in browsers. .mat-mdc-dialog-container { outline: 0; - - @include a11y.high-contrast(active, off) { - outline: solid 1px; - } } // MDC sets the display behavior for title and actions, but not for content. Since we support @@ -34,13 +32,14 @@ $mat-dialog-button-horizontal-margin: 8px !default; // aligns actions at the end of the container. justify-content: start; - &[align='end'] { - justify-content: flex-end; - } - - &[align='center'] { + // .mat-mdc-dialog-actions-align-{center|end} are set by directive input "align" + // [align='center'] and [align='right'] are kept for backwards compability + &.mat-mdc-dialog-actions-align-center, &[align='center'] { justify-content: center; } + &.mat-mdc-dialog-actions-align-end, &[align='end'] { + justify-content: flex-end; + } // MDC applies horizontal margin to buttons that have an explicit `mdc-dialog__button` // class applied. We can't set this class for projected buttons that consumers of the diff --git a/src/material-experimental/mdc-dialog/dialog.spec.ts b/src/material-experimental/mdc-dialog/dialog.spec.ts index ae8519a97749..6c51b2dd8763 100644 --- a/src/material-experimental/mdc-dialog/dialog.spec.ts +++ b/src/material-experimental/mdc-dialog/dialog.spec.ts @@ -20,7 +20,6 @@ import { Directive, Inject, Injector, - NgModule, NgZone, TemplateRef, ViewChild, @@ -61,7 +60,17 @@ describe('MDC-based MatDialog', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatDialogModule, DialogTestModule], + imports: [MatDialogModule, NoopAnimationsModule], + declarations: [ + ComponentWithChildViewContainer, + ComponentWithTemplateRef, + PizzaMsg, + ContentElementDialog, + DialogWithInjectedData, + DialogWithoutFocusableElements, + DirectiveWithViewContainer, + ComponentWithContentElementTemplateRef, + ], providers: [ {provide: Location, useClass: SpyLocation}, { @@ -1661,6 +1670,17 @@ describe('MDC-based MatDialog', () => { .withContext('Expected the aria-labelledby to match the title id.') .toBe(title.id); })); + + it('should add correct css class according to given [align] input in [mat-dialog-actions]', () => { + let actions = overlayContainerElement.querySelector('mat-dialog-actions')!; + + expect(actions) + .withContext('Expected action buttons to not have class align-center') + .not.toHaveClass('mat-mdc-dialog-actions-align-center'); + expect(actions) + .withContext('Expected action buttons to have class align-end') + .toHaveClass('mat-mdc-dialog-actions-align-end'); + }); } }); @@ -1762,7 +1782,7 @@ describe('MDC-based MatDialog with a parent MatDialog', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatDialogModule, DialogTestModule], + imports: [MatDialogModule, NoopAnimationsModule], declarations: [ComponentThatProvidesMatDialog], providers: [ { @@ -1876,7 +1896,8 @@ describe('MDC-based MatDialog with default options', () => { }; TestBed.configureTestingModule({ - imports: [MatDialogModule, DialogTestModule], + imports: [MatDialogModule, NoopAnimationsModule], + declarations: [ComponentWithChildViewContainer, DirectiveWithViewContainer], providers: [{provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: defaultConfig}], }); @@ -1943,7 +1964,8 @@ describe('MDC-based MatDialog with animations enabled', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatDialogModule, DialogTestModule, BrowserAnimationsModule], + imports: [MatDialogModule, BrowserAnimationsModule], + declarations: [ComponentWithChildViewContainer, DirectiveWithViewContainer], }); TestBed.compileComponents(); @@ -2061,7 +2083,7 @@ class PizzaMsg { template: `

This is the title

Lorem ipsum dolor sit amet. - +
diff --git a/src/material-experimental/mdc-form-field/form-field.scss b/src/material-experimental/mdc-form-field/form-field.scss index e1b573d8aea3..eb753608b578 100644 --- a/src/material-experimental/mdc-form-field/form-field.scss +++ b/src/material-experimental/mdc-form-field/form-field.scss @@ -12,13 +12,16 @@ @use '../mdc-helpers/mdc-helpers'; // Base styles for MDC text-field, notched-outline, floating label and line-ripple. -@include mdc-textfield.without-ripple( - $query: mdc-helpers.$mat-base-styles-without-animation-query); -@include mdc-floating-label.core-styles( - $query: mdc-helpers.$mat-base-styles-without-animation-query); -@include mdc-notched-outline.core-styles( - $query: mdc-helpers.$mat-base-styles-without-animation-query); -@include mdc-line-ripple.core-styles($query: mdc-helpers.$mat-base-styles-without-animation-query); +@include mdc-helpers.disable-fallback-declarations { + @include mdc-textfield.without-ripple( + $query: mdc-helpers.$mat-base-styles-without-animation-query); + @include mdc-floating-label.core-styles( + $query: mdc-helpers.$mat-base-styles-without-animation-query); + @include mdc-notched-outline.core-styles( + $query: mdc-helpers.$mat-base-styles-without-animation-query); + @include mdc-line-ripple.core-styles( + $query: mdc-helpers.$mat-base-styles-without-animation-query); +} // MDC text-field overwrites. @include mdc-text-field-textarea-overrides.private-text-field-textarea-overrides(); @@ -87,6 +90,9 @@ .mat-mdc-form-field-icon-suffix { & > .mat-icon { padding: 12px; + // It's common for apps to apply `box-sizing: border-box` + // globally which will break the alignment. + box-sizing: content-box; } } @@ -116,8 +122,10 @@ // In order to make it possible for developers to disable animations for form-fields, // we only activate the animation styles if animations are not explicitly disabled. .mat-mdc-form-field:not(.mat-form-field-no-animations) { - @include mdc-textfield.without-ripple($query: animation); - @include mdc-floating-label.core-styles($query: animation); - @include mdc-notched-outline.core-styles($query: animation); - @include mdc-line-ripple.core-styles($query: animation); + @include mdc-helpers.disable-fallback-declarations { + @include mdc-textfield.without-ripple($query: animation); + @include mdc-floating-label.core-styles($query: animation); + @include mdc-notched-outline.core-styles($query: animation); + @include mdc-line-ripple.core-styles($query: animation); + } } diff --git a/src/material-experimental/mdc-form-field/form-field.ts b/src/material-experimental/mdc-form-field/form-field.ts index f11979d8d937..5e899a0c1d3a 100644 --- a/src/material-experimental/mdc-form-field/form-field.ts +++ b/src/material-experimental/mdc-form-field/form-field.ts @@ -61,14 +61,27 @@ export type FloatLabelType = 'always' | 'auto'; /** Possible appearance styles for the form field. */ export type MatFormFieldAppearance = 'fill' | 'outline'; +/** Behaviors for how the subscript height is set. */ +export type SubscriptSizing = 'fixed' | 'dynamic'; + /** * Represents the default options for the form field that can be configured * using the `MAT_FORM_FIELD_DEFAULT_OPTIONS` injection token. */ export interface MatFormFieldDefaultOptions { + /** Default form field appearance style. */ appearance?: MatFormFieldAppearance; + /** Default color of the form field. */ + color?: ThemePalette; + /** Whether the required marker should be hidden by default. */ hideRequiredMarker?: boolean; + /** + * Whether the label for form fields should by default float `always`, + * `never`, or `auto` (only when necessary). + */ floatLabel?: FloatLabelType; + /** Whether the form field should reserve space for one line by default. */ + subscriptSizing?: SubscriptSizing; } /** @@ -81,12 +94,18 @@ export const MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken; @ViewChild('iconPrefixContainer') _iconPrefixContainer: ElementRef; @@ -162,12 +181,12 @@ export class MatFormField get hideRequiredMarker(): boolean { return this._hideRequiredMarker; } - set hideRequiredMarker(value: boolean) { + set hideRequiredMarker(value: BooleanInput) { this._hideRequiredMarker = coerceBooleanProperty(value); } - private _hideRequiredMarker: boolean; + private _hideRequiredMarker = false; - /** The color palette for the form-field. */ + /** The color palette for the form field. */ @Input() color: ThemePalette = 'primary'; /** Whether the label should always float or float as the user types. */ @@ -178,8 +197,8 @@ export class MatFormField set floatLabel(value: FloatLabelType) { if (value !== this._floatLabel) { this._floatLabel = value; - // For backwards compatibility. Custom form-field controls or directives might set - // the "floatLabel" input and expect the form-field view to be updated automatically. + // For backwards compatibility. Custom form field controls or directives might set + // the "floatLabel" input and expect the form field view to be updated automatically. // e.g. autocomplete trigger. Ideally we'd get rid of this and the consumers would just // emit the "stateChanges" observable. TODO(devversion): consider removing. this._changeDetectorRef.markForCheck(); @@ -187,14 +206,14 @@ export class MatFormField } private _floatLabel: FloatLabelType; - /** The form-field appearance style. */ + /** The form field appearance style. */ @Input() get appearance(): MatFormFieldAppearance { return this._appearance; } set appearance(value: MatFormFieldAppearance) { const oldValue = this._appearance; - this._appearance = value || (this._defaults && this._defaults.appearance) || DEFAULT_APPEARANCE; + this._appearance = value || this._defaults?.appearance || DEFAULT_APPEARANCE; if (this._appearance === 'outline' && this._appearance !== oldValue) { this._refreshOutlineNotchWidth(); @@ -206,6 +225,20 @@ export class MatFormField } private _appearance: MatFormFieldAppearance = DEFAULT_APPEARANCE; + /** + * Whether the form field should reserve space for one line of hint/error text (default) + * or to have the spacing grow from 0px as needed based on the size of the hint/error content. + * Note that when using dynamic sizing, layout shifts will occur when hint/error text changes. + */ + @Input() + get subscriptSizing(): SubscriptSizing { + return this._subscriptSizing || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING; + } + set subscriptSizing(value: SubscriptSizing) { + this._subscriptSizing = value || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING; + } + private _subscriptSizing: SubscriptSizing | null = null; + /** Text for the form field hint. */ @Input() get hintLabel(): string { @@ -259,7 +292,7 @@ export class MatFormField // MDC text-field will call this method on focus, blur and value change. It expects us // to update the floating label state accordingly. Though we make this a noop because we // want to react to floating label state changes through change detection. Relying on this - // adapter method would mean that the label would not update if the custom form-field control + // adapter method would mean that the label would not update if the custom form field control // sets "shouldLabelFloat" to true, or if the "floatLabel" input binding changes to "always". floatLabel: () => {}, @@ -273,7 +306,7 @@ export class MatFormField // closed. This works fine in the standard MDC text-field, but not in Angular where the // floating label could change through interpolation. We want to be able to update the // notched outline whenever the label content changes. Additionally, relying on focus or - // blur to open and close the notch does not work for us since abstract form-field controls + // blur to open and close the notch does not work for us since abstract form field controls // have the ability to control the floating label state (i.e. `shouldLabelFloat`), and we // want to update the notch whenever the `_shouldLabelFloat()` value changes. getLabelWidth: () => 0, @@ -291,10 +324,10 @@ export class MatFormField // The foundation tries to register events on the input. This is not matching // our concept of abstract form field controls. We handle each event manually - // in "stateChanges" based on the form-field control state. The following events + // in "stateChanges" based on the form field control state. The following events // need to be handled: focus, blur. We do not handle the "input" event since // that one is only needed for the text-field character count, which we do - // not implement as part of the form-field, but should be implemented manually + // not implement as part of the form field, but should be implemented manually // by consumers using template bindings. registerInputInteractionHandler: () => {}, deregisterInputInteractionHandler: () => {}, @@ -302,7 +335,7 @@ export class MatFormField // We do not have a reference to the native input since we work with abstract form field // controls. MDC needs a reference to the native input optionally to handle character // counting and value updating. These are both things we do not handle from within the - // form-field, so we can just return null. + // form field, so we can just return null. getNativeInput: () => null, // This method will never be called since we do not have the ability to add event listeners @@ -310,9 +343,9 @@ export class MatFormField // the form field deals with abstract form controls of any type. setLineRippleTransformOrigin: () => {}, - // The foundation tries to register click and keyboard events on the form-field to figure out + // The foundation tries to register click and keyboard events on the form field to figure out // if the input value changes through user interaction. Based on that, the foundation tries - // to focus the input. Since we do not handle the input value as part of the form-field, nor + // to focus the input. Since we do not handle the input value as part of the form field, nor // it's guaranteed to be an input (see adapter methods above), this is a noop. deregisterTextFieldInteractionHandler: () => {}, registerTextFieldInteractionHandler: () => {}, @@ -342,11 +375,15 @@ export class MatFormField @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string, @Inject(DOCUMENT) private _document?: any, ) { - if (_defaults && _defaults.appearance) { - this.appearance = _defaults.appearance; + if (_defaults) { + if (_defaults.appearance) { + this.appearance = _defaults.appearance; + } + this._hideRequiredMarker = Boolean(_defaults?.hideRequiredMarker); + if (_defaults.color) { + this.color = _defaults.color; + } } - - this._hideRequiredMarker = _defaults?.hideRequiredMarker ?? false; } ngAfterViewInit() { @@ -354,7 +391,7 @@ export class MatFormField // MDC uses the "shouldFloat" getter to know whether the label is currently floating. This // does not match our implementation of when the label floats because we support more cases. - // For example, consumers can set "@Input floatLabel" to always, or the custom form-field + // For example, consumers can set "@Input floatLabel" to always, or the custom form field // control can set "MatFormFieldControl#shouldLabelFloat" to true. To ensure that MDC knows // when the label is floating, we overwrite the property to be based on the method we use to // determine the current state of the floating label. @@ -365,11 +402,11 @@ export class MatFormField // By default, the foundation determines the validity of the text-field from the // specified native input. Since we don't pass a native input to the foundation because // abstract form controls are not necessarily consisting of an input, we handle the - // text-field validity through the abstract form-field control state. + // text-field validity through the abstract form field control state. this._foundation.isValid = () => !this._control.errorState; // Initial focus state sync. This happens rarely, but we want to account for - // it in case the form-field control has "focused" set to true on init. + // it in case the form field control has "focused" set to true on init. this._updateFocusState(); // Initial notch width update. This is needed in case the text-field label floats // on initialization, and renders inside of the notched outline. @@ -408,6 +445,7 @@ export class MatFormField } ngOnDestroy() { + this._foundation?.destroy(); this._destroyed.next(); this._destroyed.complete(); } @@ -420,7 +458,7 @@ export class MatFormField } /** - * Gets an ElementRef for the element that a overlay attached to the form-field + * Gets an ElementRef for the element that a overlay attached to the form field * should be positioned relative to. */ getConnectedOverlayOrigin(): ElementRef { @@ -429,20 +467,20 @@ export class MatFormField /** Animates the placeholder up and locks it in position. */ _animateAndLockLabel(): void { - // This is for backwards compatibility only. Consumers of the form-field might use + // This is for backwards compatibility only. Consumers of the form field might use // this method. e.g. the autocomplete trigger. This method has been added to the non-MDC - // form-field because setting "floatLabel" to "always" caused the label to float without + // form field because setting "floatLabel" to "always" caused the label to float without // animation. This is different in MDC where the label always animates, so this method // is no longer necessary. There doesn't seem any benefit in adding logic to allow changing // the floating label state without animations. The non-MDC implementation was inconsistent // because it always animates if "floatLabel" is set away from "always". - // TODO(devversion): consider removing this method when releasing the MDC form-field. + // TODO(devversion): consider removing this method when releasing the MDC form field. if (this._hasFloatingLabel()) { this.floatLabel = 'always'; } } - /** Initializes the registered form-field control. */ + /** Initializes the registered form field control. */ private _initializeControl() { const control = this._control; @@ -477,7 +515,7 @@ export class MatFormField /** Initializes the prefix and suffix containers. */ private _initializePrefixAndSuffix() { this._checkPrefixAndSuffixTypes(); - // Mark the form-field as dirty whenever the prefix or suffix children change. This + // Mark the form field as dirty whenever the prefix or suffix children change. This // is necessary because we conditionally display the prefix/suffix containers based // on whether there is projected content. merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => { @@ -488,7 +526,7 @@ export class MatFormField /** * Initializes the subscript by validating hints and synchronizing "aria-describedby" ids - * with the custom form-field control. Also subscribes to hint and error changes in order + * with the custom form field control. Also subscribes to hint and error changes in order * to be able to validate and synchronize ids on change. */ private _initializeSubscript() { @@ -519,9 +557,9 @@ export class MatFormField private _updateFocusState() { // Usually the MDC foundation would call "activateFocus" and "deactivateFocus" whenever // certain DOM events are emitted. This is not possible in our implementation of the - // form-field because we support abstract form field controls which are not necessarily - // of type input, nor do we have a reference to a native form-field control element. Instead - // we handle the focus by checking if the abstract form-field control focused state changes. + // form field because we support abstract form field controls which are not necessarily + // of type input, nor do we have a reference to a native form field control element. Instead + // we handle the focus by checking if the abstract form field control focused state changes. if (this._control.focused && !this._isFocused) { this._isFocused = true; this._foundation.activateFocus(); @@ -534,7 +572,7 @@ export class MatFormField /** * The floating label in the docked state needs to account for prefixes. The horizontal offset * is calculated whenever the appearance changes to `outline`, the prefixes change, or when the - * form-field is added to the DOM. This method sets up all subscriptions which are needed to + * form field is added to the DOM. This method sets up all subscriptions which are needed to * trigger the label offset update. In general, we want to avoid performing measurements often, * so we rely on the `NgZone` as indicator when the offset should be recalculated, instead of * checking every change detection cycle. @@ -573,7 +611,7 @@ export class MatFormField /** * Whether the label should display in the infix. Labels in the outline appearance are * displayed as part of the notched-outline and are horizontally offset to account for - * form-field prefix content. This won't work in server side rendering since we cannot + * form field prefix content. This won't work in server side rendering since we cannot * measure the width of the prefix container. To make the docked label appear as if the * right offset has been calculated, we forcibly render the label inside the infix. Since * the label is part of the infix, the label cannot overflow the prefix content. @@ -707,7 +745,7 @@ export class MatFormField floatingLabel.style.transform = ''; return; } - // If the form-field is not attached to the DOM yet (e.g. in a tab), we defer + // If the form field is not attached to the DOM yet (e.g. in a tab), we defer // the label offset update until the zone stabilizes. if (!this._isAttachedToDom()) { this._needsOutlineLabelOffsetUpdateOnStable = true; @@ -744,6 +782,4 @@ export class MatFormField // shadow DOM, however browser that support shadow DOM should support `getRootNode` as well. return document.documentElement!.contains(element); } - - static ngAcceptInputType_hideRequiredMarker: BooleanInput; } diff --git a/src/material-experimental/mdc-helpers/_focus-indicators.scss b/src/material-experimental/mdc-helpers/_focus-indicators.scss index 4189d3486265..e30dfcc9303b 100644 --- a/src/material-experimental/mdc-helpers/_focus-indicators.scss +++ b/src/material-experimental/mdc-helpers/_focus-indicators.scss @@ -28,6 +28,10 @@ pointer-events: none; border: $border-width $border-style transparent; border-radius: $border-radius; + + .cdk-high-contrast-active & { + display: none; + } } // By default, all focus indicators are flush with the bounding box of their @@ -38,7 +42,7 @@ .mat-mdc-unelevated-button .mat-mdc-focus-indicator::before, .mat-mdc-raised-button .mat-mdc-focus-indicator::before, .mdc-fab .mat-mdc-focus-indicator::before, - .mat-mdc-focus-indicator.mdc-chip::before { + .mat-mdc-chip-action-label .mat-mdc-focus-indicator::before { margin: -($border-width + 2px); } @@ -46,11 +50,16 @@ margin: -($border-width + 3px); } - .mat-mdc-focus-indicator.mat-mdc-chip-remove::before, - .mat-mdc-focus-indicator.mat-mdc-chip-row-focusable-text-content::before { + .mat-mdc-focus-indicator.mat-mdc-chip-remove::before { margin: -$border-width; } + // MDC sets a padding a on the button which stretches out the focus indicator. + .mat-mdc-focus-indicator.mat-mdc-chip-remove::before { + left: 8px; + right: 8px; + } + .mat-mdc-focus-indicator.mat-mdc-tab::before, .mat-mdc-focus-indicator.mat-mdc-tab-link::before { margin: 5px; @@ -74,6 +83,9 @@ .mat-mdc-slide-toggle-focused .mat-mdc-focus-indicator::before, .mat-mdc-radio-button.cdk-focused .mat-mdc-focus-indicator::before, + // In the chips the individual actions have focus so we target a different element. + .mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before, + // For buttons and list items, render the focus indicator when the parent // button or list item is focused. .mat-mdc-button-base:focus .mat-mdc-focus-indicator::before, diff --git a/src/material-experimental/mdc-helpers/_mdc-helpers.scss b/src/material-experimental/mdc-helpers/_mdc-helpers.scss index 828f5027ff26..58abe05ac36c 100644 --- a/src/material-experimental/mdc-helpers/_mdc-helpers.scss +++ b/src/material-experimental/mdc-helpers/_mdc-helpers.scss @@ -5,6 +5,7 @@ @use '@material/feature-targeting' as mdc-feature-targeting; @use '@material/typography' as mdc-typography; @use '@material/theme/theme-color' as mdc-theme-color; +@use '@material/theme/css' as mdc-theme-css; @use 'sass:map'; @use '../../material/core/theming/theming'; @use '../../material/core/typography/typography'; @@ -169,7 +170,9 @@ $mat-typography-mdc-level-mappings: ( ); // Apply given rules. - @content; + @include disable-fallback-declarations { + @content; + } // Reset the original values. mdc-theme-color.$primary: $orig-primary; @@ -196,8 +199,18 @@ $mat-typography-mdc-level-mappings: ( } // Apply given rules. - @content; + @include disable-fallback-declarations { + @content; + } // Reset the original values. mdc-typography.$styles: $orig-mdc-typography-styles; } + +// Disables MDC's CSS custom property fallbacks for the specified mixin content. +@mixin disable-fallback-declarations { + $previous-value: mdc-theme-css.$enable-fallback-declarations; + mdc-theme-css.$enable-fallback-declarations: false; + @content; + mdc-theme-css.$enable-fallback-declarations: $previous-value; +} diff --git a/src/material-experimental/mdc-input/input.spec.ts b/src/material-experimental/mdc-input/input.spec.ts index db72cfd45405..5af704229ccf 100644 --- a/src/material-experimental/mdc-input/input.spec.ts +++ b/src/material-experimental/mdc-input/input.spec.ts @@ -1,4 +1,3 @@ -import {Platform, PlatformModule} from '@angular/cdk/platform'; import {dispatchFakeEvent, wrappedErrorMessage} from '../../cdk/testing/private'; import { ChangeDetectionStrategy, @@ -32,11 +31,13 @@ import { MatFormField, MatFormFieldAppearance, MatFormFieldModule, + SubscriptSizing, } from '@angular/material-experimental/mdc-form-field'; import {MatIconModule} from '@angular/material/icon'; import {By} from '@angular/platform-browser'; import {BrowserAnimationsModule, NoopAnimationsModule} from '@angular/platform-browser/animations'; import {MAT_INPUT_VALUE_ACCESSOR, MatInput, MatInputModule} from './index'; +import {getSupportedInputTypes} from '@angular/cdk/platform'; describe('MatMdcInput without forms', () => { it('should default to floating labels', fakeAsync(() => { @@ -68,10 +69,9 @@ describe('MatMdcInput without forms', () => { it('should not be treated as empty if type is date', fakeAsync(() => { const fixture = createComponent(MatInputDateTestController); - const platform = TestBed.inject(Platform); fixture.detectChanges(); - if (!(platform.TRIDENT || (platform.SAFARI && !platform.IOS))) { + if (getSupportedInputTypes().has('date')) { const formField = fixture.debugElement.query(By.directive(MatFormField))! .componentInstance as MatFormField; expect(formField).toBeTruthy(); @@ -79,13 +79,11 @@ describe('MatMdcInput without forms', () => { } })); - // Safari Desktop and IE don't support type="date" and fallback to type="text". - it('should be treated as empty if type is date in Safari Desktop or IE', fakeAsync(() => { + it('should be treated as empty if type is date on unsupported browser', fakeAsync(() => { const fixture = createComponent(MatInputDateTestController); - const platform = TestBed.inject(Platform); fixture.detectChanges(); - if (platform.TRIDENT || (platform.SAFARI && !platform.IOS)) { + if (!getSupportedInputTypes().has('date')) { const formField = fixture.debugElement.query(By.directive(MatFormField))! .componentInstance as MatFormField; expect(formField).toBeTruthy(); @@ -344,7 +342,7 @@ describe('MatMdcInput without forms', () => { const label = fixture.debugElement.query(By.css('label'))!; expect(label).not.toBeNull(); expect(label.nativeElement.textContent).toBe('hello'); - expect(label.nativeElement.classList).toContain('mdc-floating-label--required'); + expect(label.nativeElement.querySelector('.mat-mdc-form-field-required-marker')).toBeTruthy(); })); it('should show the required star when using a FormControl', fakeAsync(() => { @@ -354,7 +352,7 @@ describe('MatMdcInput without forms', () => { const label = fixture.debugElement.query(By.css('label'))!; expect(label).not.toBeNull(); expect(label.nativeElement.textContent).toBe('Hello'); - expect(label.nativeElement.classList).toContain('mdc-floating-label--required'); + expect(label.nativeElement.querySelector('.mat-mdc-form-field-required-marker')).toBeTruthy(); })); it('should not hide the required star if input is disabled', () => { @@ -366,7 +364,7 @@ describe('MatMdcInput without forms', () => { const label = fixture.debugElement.query(By.css('label'))!; expect(label).not.toBeNull(); expect(label.nativeElement.textContent).toBe('hello'); - expect(label.nativeElement.classList).toContain('mdc-floating-label--required'); + expect(label.nativeElement.querySelector('.mat-mdc-form-field-required-marker')).toBeTruthy(); }); it('hide label required star when set to hide the required marker', fakeAsync(() => { @@ -375,13 +373,13 @@ describe('MatMdcInput without forms', () => { const label = fixture.debugElement.query(By.css('label'))!; expect(label).not.toBeNull(); - expect(label.nativeElement.classList).toContain('mdc-floating-label--required'); + expect(label.nativeElement.querySelector('.mat-mdc-form-field-required-marker')).toBeTruthy(); expect(label.nativeElement.textContent).toBe('hello'); fixture.componentInstance.hideRequiredMarker = true; fixture.detectChanges(); - expect(label.nativeElement.classList).not.toContain('mdc-floating-label--required'); + expect(label.nativeElement.querySelector('.mat-mdc-form-field-required-marker')).toBeFalsy(); expect(label.nativeElement.textContent).toBe('hello'); })); @@ -1406,6 +1404,78 @@ describe('MatFormField default options', () => { expect(fixture.componentInstance.formField.hideRequiredMarker).toBe(true); expect(fixture.componentInstance.formField.appearance).toBe('outline'); }); + + it('should be able to change the default color', () => { + const fixture = createComponent(MatInputSimple, [ + { + provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, + useValue: {color: 'accent'}, + }, + ]); + fixture.detectChanges(); + const formField = fixture.nativeElement.querySelector('.mat-mdc-form-field'); + expect(formField.classList).toContain('mat-accent'); + }); + + it('defaults subscriptSizing to false', () => { + const fixture = createComponent(MatInputWithSubscriptSizing); + fixture.detectChanges(); + + const subscriptElement = fixture.nativeElement.querySelector( + '.mat-mdc-form-field-subscript-wrapper', + ); + + expect(fixture.componentInstance.formField.subscriptSizing).toBe('fixed'); + expect(subscriptElement.classList.contains('mat-mdc-form-field-subscript-dynamic-size')).toBe( + false, + ); + + fixture.componentInstance.sizing = 'dynamic'; + fixture.detectChanges(); + + expect(fixture.componentInstance.formField.subscriptSizing).toBe('dynamic'); + expect(subscriptElement.classList.contains('mat-mdc-form-field-subscript-dynamic-size')).toBe( + true, + ); + }); + + it('changes the default value of subscriptSizing (undefined input)', () => { + const fixture = createComponent(MatInputWithSubscriptSizing, [ + { + provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, + useValue: { + subscriptSizing: 'dynamic', + }, + }, + ]); + + fixture.detectChanges(); + expect(fixture.componentInstance.formField.subscriptSizing).toBe('dynamic'); + expect( + fixture.nativeElement + .querySelector('.mat-mdc-form-field-subscript-wrapper') + .classList.contains('mat-mdc-form-field-subscript-dynamic-size'), + ).toBe(true); + }); + + it('changes the default value of subscriptSizing (no input)', () => { + const fixture = createComponent(MatInputWithAppearance, [ + { + provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, + useValue: { + subscriptSizing: 'dynamic', + }, + }, + ]); + + fixture.detectChanges(); + expect(fixture.componentInstance.formField.subscriptSizing).toBe('dynamic'); + expect( + fixture.nativeElement + .querySelector('.mat-mdc-form-field-subscript-wrapper') + .classList.contains('mat-mdc-form-field-subscript-dynamic-size'), + ).toBe(true); + }); }); function configureTestingModule( @@ -1425,7 +1495,6 @@ function configureTestingModule( MatIconModule, MatInputModule, animations ? BrowserAnimationsModule : NoopAnimationsModule, - PlatformModule, ReactiveFormsModule, ...imports, ], @@ -1815,6 +1884,19 @@ class MatInputWithAppearance { appearance: MatFormFieldAppearance; } +@Component({ + template: ` + + My Label + + + `, +}) +class MatInputWithSubscriptSizing { + @ViewChild(MatFormField) formField: MatFormField; + sizing: SubscriptSizing; +} + @Component({ template: ` @@ -1949,3 +2031,12 @@ class MatInputInsideOutsideFormField {} class MatInputWithRequiredFormControl { formControl = new FormControl('', [Validators.required]); } + +@Component({ + template: ` + + + + `, +}) +class MatInputSimple {} diff --git a/src/material-experimental/mdc-input/input.ts b/src/material-experimental/mdc-input/input.ts index 6bc4dc5248b7..1fe47f04914f 100644 --- a/src/material-experimental/mdc-input/input.ts +++ b/src/material-experimental/mdc-input/input.ts @@ -37,6 +37,7 @@ import {MatInput as BaseMatInput} from '@angular/material/input'; '[id]': 'id', '[disabled]': 'disabled', '[required]': 'required', + '[attr.name]': 'name', '[attr.placeholder]': 'placeholder', '[attr.readonly]': 'readonly && !_isNativeSelect || null', // Only mark the input as invalid for assistive technology if it has a value since the diff --git a/src/material-experimental/mdc-list/BUILD.bazel b/src/material-experimental/mdc-list/BUILD.bazel index bc18968cb298..aa713af6367c 100644 --- a/src/material-experimental/mdc-list/BUILD.bazel +++ b/src/material-experimental/mdc-list/BUILD.bazel @@ -25,7 +25,9 @@ ng_module( ] + glob(["**/*.html"]), deps = [ "//src:dev_mode_types", + "//src/cdk/coercion", "//src/cdk/collections", + "//src/cdk/observers", "//src/material-experimental/mdc-core", "//src/material/divider", "//src/material/list", diff --git a/src/material-experimental/mdc-list/_interactive-list-theme.scss b/src/material-experimental/mdc-list/_interactive-list-theme.scss index 82be8905608c..c9356301aa88 100644 --- a/src/material-experimental/mdc-list/_interactive-list-theme.scss +++ b/src/material-experimental/mdc-list/_interactive-list-theme.scss @@ -14,21 +14,27 @@ background: $active-base-color; } - &.mdc-list-item--selected::before { - background: $selected-color; - opacity: mdc-ripple.states-opacity($selected-color, selected); + &:not(:focus):not(.mdc-list-item--disabled):hover::before { + opacity: mdc-ripple.states-opacity($active-base-color, hover); } - &:focus::before { - opacity: mdc-ripple.states-opacity($active-base-color, focus); + &.mdc-list-item--selected { + &::before { + background: $selected-color; + opacity: mdc-ripple.states-opacity($selected-color, selected); + } + + &:not(:focus):not(.mdc-list-item--disabled):hover::before { + // The hover and selected opacities need to be combined to match with what the MDC + // ripple state would render. More details here: + // https://github.com/material-components/material-components-web/blob/348665978ce73694ad4518626dd70cdf5b984113/packages/mdc-ripple/_ripple-theme.scss#L450. + opacity: mdc-ripple.states-opacity($selected-color, hover) + + mdc-ripple.states-opacity($selected-color, selected); + } } - } - // MDC still shows focus/selected state if the item is disabled. - // Just hover styles should not show up for disabled items. - .mat-mdc-list-item-interactive:not(.mdc-list-item--disabled) { - &:hover::before { - opacity: mdc-ripple.states-opacity($active-base-color, hover); + &:focus::before { + opacity: mdc-ripple.states-opacity($active-base-color, focus); } } } diff --git a/src/material-experimental/mdc-list/_list-option-theme.scss b/src/material-experimental/mdc-list/_list-option-theme.scss index 031af6384ace..7a6ccdcee09f 100644 --- a/src/material-experimental/mdc-list/_list-option-theme.scss +++ b/src/material-experimental/mdc-list/_list-option-theme.scss @@ -1,14 +1,14 @@ @use '@material/checkbox' as mdc-checkbox; -@use '../mdc-checkbox/checkbox-theme'; +@use '../mdc-checkbox/checkbox-private'; @use '../mdc-helpers/mdc-helpers'; @use './list-option-trailing-avatar-compat'; // Mixin that overrides the selected item and checkbox colors for list options. By // default, the MDC list uses the `primary` color for list items. The MDC checkbox // inside list options by default uses the `primary` color too. -@mixin private-list-option-color-override($color) { +@mixin private-list-option-color-override($color, $mdc-color) { & .mdc-list-item__start, & .mdc-list-item__end { - @include checkbox-theme.private-checkbox-styles-with-color($color); + @include checkbox-private.private-checkbox-styles-with-color($color, $mdc-color); } } diff --git a/src/material-experimental/mdc-list/_list-option-trailing-avatar-compat.scss b/src/material-experimental/mdc-list/_list-option-trailing-avatar-compat.scss index 24c84560b408..1a26a351bb0c 100644 --- a/src/material-experimental/mdc-list/_list-option-trailing-avatar-compat.scss +++ b/src/material-experimental/mdc-list/_list-option-trailing-avatar-compat.scss @@ -3,6 +3,7 @@ @use '@material/density/functions' as density-functions; @use '@material/list/evolution-mixins' as mdc-list; @use '@material/list/evolution-variables' as mdc-list-variables; +@use '../mdc-helpers/mdc-helpers'; // For compatibility with the non-MDC selection list, we support avatars that are // shown at the end of the list option. This is not supported by the MDC list as the @@ -15,19 +16,21 @@ @mixin core-styles($query) { $feat-structure: feature-targeting.create-target($query, structure); - .mat-mdc-list-option-with-trailing-avatar { - @include mdc-list.item-end-spacing(16px, $query: $query); - @include mdc-list.item-end-size(40px, $query: $query); + @include mdc-helpers.disable-fallback-declarations { + .mat-mdc-list-option-with-trailing-avatar { + @include mdc-list.item-end-spacing(16px, $query: $query); + @include mdc-list.item-end-size(40px, $query: $query); - &.mdc-list-item--with-two-lines { - .mdc-list-item__primary-text { - @include typography.text-baseline($top: 32px, $bottom: 20px, $query: $query); + &.mdc-list-item--with-two-lines { + .mdc-list-item__primary-text { + @include typography.text-baseline($top: 32px, $bottom: 20px, $query: $query); + } } - } - .mdc-list-item__end { - @include feature-targeting.targets($feat-structure) { - border-radius: 50%; + .mdc-list-item__end { + @include feature-targeting.targets($feat-structure) { + border-radius: 50%; + } } } } @@ -46,8 +49,10 @@ $property-name: height, ); - .mat-mdc-list-option-with-trailing-avatar { - @include mdc-list.one-line-item-height($one-line-tall-height); - @include mdc-list.two-line-item-height($two-line-tall-height); + @include mdc-helpers.disable-fallback-declarations { + .mat-mdc-list-option-with-trailing-avatar { + @include mdc-list.one-line-item-height($one-line-tall-height); + @include mdc-list.two-line-item-height($two-line-tall-height); + } } } diff --git a/src/material-experimental/mdc-list/_list-theme.scss b/src/material-experimental/mdc-list/_list-theme.scss index ac1eea9c964b..baab3315f8d6 100644 --- a/src/material-experimental/mdc-list/_list-theme.scss +++ b/src/material-experimental/mdc-list/_list-theme.scss @@ -1,8 +1,10 @@ +@use 'sass:map'; @use '@material/list/evolution-mixins' as mdc-list; @use './interactive-list-theme'; @use './list-option-theme'; @use '../mdc-helpers/mdc-helpers'; @use '../../material/core/typography/typography'; +@use '../../material/core/typography/typography-utils'; @use '../../material/core/theming/theming'; @@ -11,22 +13,24 @@ @mixin color($config-or-theme) { $config: theming.get-color-config($config-or-theme); - - // MDC's state styles are tied in with their ripple. Since we don't use the MDC - // ripple, we need to add the hover, focus and selected states manually. - @include interactive-list-theme.private-interactive-list-item-state-colors($config); + $primary: theming.get-color-from-palette(map.get($config, primary)); + $accent: theming.get-color-from-palette(map.get($config, accent)); + $warn: theming.get-color-from-palette(map.get($config, warn)); @include mdc-helpers.mat-using-mdc-theme($config) { + // MDC's state styles are tied in with their ripple. Since we don't use the MDC + // ripple, we need to add the hover, focus and selected states manually. + @include interactive-list-theme.private-interactive-list-item-state-colors($config); @include mdc-list.without-ripple($query: mdc-helpers.$mat-theme-styles-query); .mat-mdc-list-option { - @include list-option-theme.private-list-option-color-override(primary); + @include list-option-theme.private-list-option-color-override($primary, primary); } .mat-mdc-list-option.mat-accent { - @include list-option-theme.private-list-option-color-override(secondary); + @include list-option-theme.private-list-option-color-override($accent, secondary); } .mat-mdc-list-option.mat-warn { - @include list-option-theme.private-list-option-color-override(error); + @include list-option-theme.private-list-option-color-override($warn, error); } } } @@ -34,13 +38,15 @@ @mixin density($config-or-theme) { $density-scale: theming.get-density-config($config-or-theme); - .mat-mdc-list-item { - @include mdc-list.one-line-item-density($density-scale); - @include mdc-list.two-line-item-density($density-scale); - @include mdc-list.three-line-item-density($density-scale); - } + @include mdc-helpers.disable-fallback-declarations { + .mat-mdc-list-item { + @include mdc-list.one-line-item-density($density-scale); + @include mdc-list.two-line-item-density($density-scale); + @include mdc-list.three-line-item-density($density-scale); + } - @include list-option-theme.private-list-option-density-styles($density-scale); + @include list-option-theme.private-list-option-density-styles($density-scale); + } } @mixin typography($config-or-theme) { @@ -50,6 +56,14 @@ @include mdc-list.without-ripple($query: mdc-helpers.$mat-typography-styles-query); @include list-option-theme.private-list-option-typography-styles(); } + + // According to the public spec this should be subtitle-1. + // However, body-1 and subtitle-1 are nearly identical in the public spec, + // and the Google-specific spec states that it should be body-1. + // For consistency, we use body-1 for both public and Google internal. + .mat-mdc-list-item .mdc-list-item__primary-text { + @include typography-utils.typography-level($config, body-1); + } } @mixin theme($theme-or-color-config) { diff --git a/src/material-experimental/mdc-list/action-list.ts b/src/material-experimental/mdc-list/action-list.ts index ff845cb7853f..8683cd4bb786 100644 --- a/src/material-experimental/mdc-list/action-list.ts +++ b/src/material-experimental/mdc-list/action-list.ts @@ -14,7 +14,7 @@ import {MatListBase} from './list-base'; exportAs: 'matActionList', template: '', host: { - 'class': 'mat-mdc-action-list mat-mdc-list-base mdc--list', + 'class': 'mat-mdc-action-list mat-mdc-list-base mdc-list', }, styleUrls: ['list.css'], encapsulation: ViewEncapsulation.None, diff --git a/src/material-experimental/mdc-list/interactive-list-base.ts b/src/material-experimental/mdc-list/interactive-list-base.ts index 805c69246c97..c97bdcea29d1 100644 --- a/src/material-experimental/mdc-list/interactive-list-base.ts +++ b/src/material-experimental/mdc-list/interactive-list-base.ts @@ -7,47 +7,45 @@ */ import {DOCUMENT} from '@angular/common'; -import { - AfterViewInit, - Directive, - ElementRef, - HostListener, - Inject, - OnDestroy, - QueryList, -} from '@angular/core'; +import {AfterViewInit, Directive, ElementRef, Inject, OnDestroy, QueryList} from '@angular/core'; import {MDCListAdapter, MDCListFoundation} from '@material/list'; import {Subscription} from 'rxjs'; import {startWith} from 'rxjs/operators'; import {MatListBase, MatListItemBase} from './list-base'; -@Directive() +@Directive({ + host: { + '(keydown)': '_handleKeydown($event)', + '(click)': '_handleClick($event)', + '(focusin)': '_handleFocusin($event)', + '(focusout)': '_handleFocusout($event)', + }, +}) /** @docs-private */ export abstract class MatInteractiveListBase extends MatListBase implements AfterViewInit, OnDestroy { - @HostListener('keydown', ['$event']) _handleKeydown(event: KeyboardEvent) { const index = this._indexForElement(event.target as HTMLElement); this._foundation.handleKeydown(event, this._elementAtIndex(index) === event.target, index); } - @HostListener('click', ['$event']) _handleClick(event: MouseEvent) { - // The `toggleCheckbox` parameter can always be `true` as it only has an effect if the list - // is recognized as checkbox selection list. For such lists, we would always want to toggle - // the checkbox on list item click. MDC added this parameter so that they can avoid dispatching - // a fake `change` event when the checkbox is directly clicked for the list item. We don't - // need this as we require such list item checkboxes to stop propagation of the change event. + // The `isCheckboxAlreadyUpdatedInAdapter` parameter can always be `false` as it only has an + // effect if the list is recognized as checkbox selection list. For such lists, we would + // always want to toggle the checkbox on list item click. MDC added this parameter so that + // they can avoid dispatching a fake `change` event when the checkbox is directly clicked + // for the list item. We don't need this as we do not have an underlying native checkbox + // that is reachable by users through interaction. // https://github.com/material-components/material-components-web/blob/08ca4d0ec5f359bc3a20bd2a302fa6b733b5e135/packages/mdc-list/component.ts#L308-L310 this._foundation.handleClick( this._indexForElement(event.target as HTMLElement), - /* toggleCheckbox */ true, + /* isCheckboxAlreadyUpdatedInAdapter */ false, + event, ); } - @HostListener('focusin', ['$event']) _handleFocusin(event: FocusEvent) { const itemIndex = this._indexForElement(event.target as HTMLElement); const tabIndex = this._itemsArr[itemIndex]?._hostElement.tabIndex; @@ -64,7 +62,6 @@ export abstract class MatInteractiveListBase this._foundation.handleFocusIn(itemIndex); } - @HostListener('focusout', ['$event']) _handleFocusout(event: FocusEvent) { this._foundation.handleFocusOut(this._indexForElement(event.target as HTMLElement)); } @@ -222,6 +219,7 @@ export function getInteractiveListAdapter( isCheckboxCheckedAtIndex(index: number) { return false; }, + notifySelectionChange() {}, notifyAction() {}, }; } diff --git a/src/material-experimental/mdc-list/list-base.ts b/src/material-experimental/mdc-list/list-base.ts index 5133c4d7859e..13081d1d950c 100644 --- a/src/material-experimental/mdc-list/list-base.ts +++ b/src/material-experimental/mdc-list/list-base.ts @@ -6,14 +6,13 @@ * found in the LICENSE file at https://angular.io/license */ -import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; +import {BooleanInput, coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion'; import {Platform} from '@angular/cdk/platform'; import { - AfterContentInit, + AfterViewInit, ContentChildren, Directive, ElementRef, - HostBinding, Inject, Input, NgZone, @@ -27,29 +26,37 @@ import { RippleGlobalOptions, RippleRenderer, RippleTarget, - setLines, } from '@angular/material-experimental/mdc-core'; import {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations'; -import {Subscription} from 'rxjs'; -import {startWith} from 'rxjs/operators'; -import {MatListAvatarCssMatStyler, MatListIconCssMatStyler} from './list-styling'; - -function toggleClass(el: Element, className: string, on: boolean) { - if (on) { - el.classList.add(className); - } else { - el.classList.remove(className); - } -} +import {Subscription, merge} from 'rxjs'; +import { + MatListItemLine, + MatListItemTitle, + MatListItemIcon, + MatListItemAvatar, +} from './list-item-sections'; -@Directive() +@Directive({ + host: { + '[class.mdc-list-item--disabled]': 'disabled', + '[attr.aria-disabled]': 'disabled', + }, +}) /** @docs-private */ -export abstract class MatListItemBase implements AfterContentInit, OnDestroy, RippleTarget { +export abstract class MatListItemBase implements AfterViewInit, OnDestroy, RippleTarget { /** Query list matching list-item line elements. */ - abstract lines: QueryList>; + abstract _lines: QueryList | undefined; - /** Element reference referring to the primary list item text. */ - abstract _itemText: ElementRef; + /** Query list matching list-item title elements. */ + abstract _titles: QueryList | undefined; + + /** + * Element reference to the unscoped content in a list item. + * + * Unscoped content is user-projected text content in a list item that is + * not part of an explicit line or title. + */ + abstract _unscopedContent: ElementRef | undefined; /** Host element for the list item. */ _hostElement: HTMLElement; @@ -57,8 +64,25 @@ export abstract class MatListItemBase implements AfterContentInit, OnDestroy, Ri /** Whether animations are disabled. */ _noopAnimations: boolean; - @ContentChildren(MatListAvatarCssMatStyler, {descendants: false}) _avatars: QueryList; - @ContentChildren(MatListIconCssMatStyler, {descendants: false}) _icons: QueryList; + @ContentChildren(MatListItemAvatar, {descendants: false}) _avatars: QueryList; + @ContentChildren(MatListItemIcon, {descendants: false}) _icons: QueryList; + + /** + * The number of lines this list item should reserve space for. If not specified, + * lines are inferred based on the projected content. + * + * Explicitly specifying the number of lines is useful if you want to acquire additional + * space and enable the wrapping of text. The unscoped text content of a list item will + * always be able to take up the remaining space of the item, unless it represents the title. + * + * A maximum of three lines is supported as per the Material Design specification. + */ + @Input() + set lines(lines: number | string | null) { + this._explicitLines = coerceNumberProperty(lines, null); + this._updateItemLines(false); + } + _explicitLines: number | null = null; @Input() get disableRipple(): boolean { @@ -72,13 +96,11 @@ export abstract class MatListItemBase implements AfterContentInit, OnDestroy, Ri private _disableRipple: boolean = false; /** Whether the list-item is disabled. */ - @HostBinding('class.mdc-list-item--disabled') - @HostBinding('attr.aria-disabled') @Input() get disabled(): boolean { return this._disabled || (this._listBase && this._listBase.disabled); } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } private _disabled = false; @@ -86,6 +108,9 @@ export abstract class MatListItemBase implements AfterContentInit, OnDestroy, Ri private _subscriptions = new Subscription(); private _rippleRenderer: RippleRenderer | null = null; + /** Whether the list item has unscoped text content. */ + _hasUnscopedTextContent: boolean = false; + /** * Implemented as part of `RippleTarget`. * @docs-private @@ -100,7 +125,7 @@ export abstract class MatListItemBase implements AfterContentInit, OnDestroy, Ri return this.disableRipple || !!this.rippleConfig.disabled; } - constructor( + protected constructor( public _elementRef: ElementRef, protected _ngZone: NgZone, private _listBase: MatListBase, @@ -129,8 +154,9 @@ export abstract class MatListItemBase implements AfterContentInit, OnDestroy, Ri } } - ngAfterContentInit() { - this._monitorLines(); + ngAfterViewInit() { + this._monitorProjectedLinesAndTitle(); + this._updateItemLines(true); } ngOnDestroy() { @@ -142,7 +168,11 @@ export abstract class MatListItemBase implements AfterContentInit, OnDestroy, Ri /** Gets the label for the list item. This is used for the typeahead. */ _getItemLabel(): string { - return this._itemText ? this._itemText.nativeElement.textContent || '' : ''; + const titleElement = this._titles?.get(0)?._elementRef.nativeElement; + // If there is no explicit title element, the unscoped text content + // is treated as the list item title. + const labelEl = titleElement ?? this._unscopedContent?.nativeElement; + return labelEl ? labelEl.textContent ?? '' : ''; } /** Whether the list item has icons or avatars. */ @@ -162,42 +192,105 @@ export abstract class MatListItemBase implements AfterContentInit, OnDestroy, Ri } /** - * Subscribes to changes in `MatLine` content children and annotates them - * appropriately when they change. + * Subscribes to changes in the projected title and lines. Triggers a + * item lines update whenever a change occurs. */ - private _monitorLines() { + private _monitorProjectedLinesAndTitle() { this._ngZone.runOutsideAngular(() => { this._subscriptions.add( - this.lines.changes - .pipe(startWith(this.lines)) - .subscribe((lines: QueryList>) => { - toggleClass(this._hostElement, 'mat-mdc-list-item-single-line', lines.length <= 1); - toggleClass(this._hostElement, 'mdc-list-item--with-one-line', lines.length <= 1); - - lines.forEach((line: ElementRef, index: number) => { - toggleClass(this._hostElement, 'mdc-list-item--with-two-lines', lines.length === 2); - toggleClass(this._hostElement, 'mdc-list-item--with-three-lines', lines.length === 3); - toggleClass( - line.nativeElement, - 'mdc-list-item__primary-text', - index === 0 && lines.length > 1, - ); - toggleClass(line.nativeElement, 'mdc-list-item__secondary-text', index !== 0); - }); - setLines(lines, this._elementRef, 'mat-mdc'); - }), + merge(this._lines!.changes, this._titles!.changes).subscribe(() => + this._updateItemLines(false), + ), ); }); } - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_disableRipple: BooleanInput; + /** + * Updates the lines of the list item. Based on the projected user content and optional + * explicit lines setting, the visual appearance of the list item is determined. + * + * This method should be invoked whenever the projected user content changes, or + * when the explicit lines have been updated. + * + * @param recheckUnscopedContent Whether the projected unscoped content should be re-checked. + * The unscoped content is not re-checked for every update as it is a rather expensive check + * for content that is expected to not change very often. + */ + _updateItemLines(recheckUnscopedContent: boolean) { + // If the updated is triggered too early before the view and content is initialized, + // we just skip the update. After view initialization the update is triggered again. + if (!this._lines || !this._titles || !this._unscopedContent) { + return; + } + + // Re-check the DOM for unscoped text content if requested. This needs to + // happen before any computation or sanity checks run as these rely on the + // result of whether there is unscoped text content or not. + if (recheckUnscopedContent) { + this._checkDomForUnscopedTextContent(); + } + + // Sanity check the list item lines and title in the content. This is a dev-mode only + // check that can be dead-code eliminated by Terser in production. + if (typeof ngDevMode === 'undefined' || ngDevMode) { + sanityCheckListItemContent(this); + } + + const numberOfLines = this._explicitLines ?? this._inferLinesFromContent(); + const unscopedContentEl = this._unscopedContent.nativeElement; + + // Update the list item element to reflect the number of lines. + this._hostElement.classList.toggle('mat-mdc-list-item-single-line', numberOfLines <= 1); + this._hostElement.classList.toggle('mdc-list-item--with-one-line', numberOfLines <= 1); + this._hostElement.classList.toggle('mdc-list-item--with-two-lines', numberOfLines === 2); + this._hostElement.classList.toggle('mdc-list-item--with-three-lines', numberOfLines === 3); + + // If there is no title and the unscoped content is the is the only line, the + // unscoped text content will be treated as the title of the list-item. + if (this._hasUnscopedTextContent) { + const treatAsTitle = this._titles.length === 0 && numberOfLines === 1; + unscopedContentEl.classList.toggle('mdc-list-item__primary-text', treatAsTitle); + unscopedContentEl.classList.toggle('mdc-list-item__secondary-text', !treatAsTitle); + } else { + unscopedContentEl.classList.remove('mdc-list-item__primary-text'); + unscopedContentEl.classList.remove('mdc-list-item__secondary-text'); + } + } + + /** + * Infers the number of lines based on the projected user content. This is useful + * if no explicit number of lines has been specified on the list item. + * + * The number of lines is inferred based on whether there is a title, the number of + * additional lines (secondary/tertiary). An additional line is acquired if there is + * unscoped text content. + */ + private _inferLinesFromContent() { + let numOfLines = this._titles!.length + this._lines!.length; + if (this._hasUnscopedTextContent) { + numOfLines += 1; + } + return numOfLines; + } + + /** Checks whether the list item has unscoped text content. */ + private _checkDomForUnscopedTextContent() { + this._hasUnscopedTextContent = Array.from( + this._unscopedContent!.nativeElement.childNodes, + ) + .filter(node => node.nodeType !== node.COMMENT_NODE) + .some(node => !!(node.textContent && node.textContent.trim())); + } } -@Directive() +@Directive({ + host: { + '[class.mat-mdc-list-non-interactive]': '_isNonInteractive', + '[attr.aria-disabled]': 'disabled', + }, +}) /** @docs-private */ export abstract class MatListBase { - @HostBinding('class.mat-mdc-list-non-interactive') _isNonInteractive: boolean = true; /** Whether ripples for all list items is disabled. */ @@ -205,22 +298,48 @@ export abstract class MatListBase { get disableRipple(): boolean { return this._disableRipple; } - set disableRipple(value: boolean) { + set disableRipple(value: BooleanInput) { this._disableRipple = coerceBooleanProperty(value); } private _disableRipple: boolean = false; /** Whether all list items are disabled. */ - @HostBinding('attr.aria-disabled') @Input() get disabled(): boolean { return this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } private _disabled = false; +} + +/** + * Sanity checks the configuration of the list item with respect to the amount + * of lines, whether there is a title, or if there is unscoped text content. + * + * The checks are extracted into a top-level function that can be dead-code + * eliminated by Terser or other optimizers in production mode. + */ +function sanityCheckListItemContent(item: MatListItemBase) { + const numTitles = item._titles!.length; + const numLines = item._titles!.length; - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_disableRipple: BooleanInput; + if (numTitles > 1) { + throw Error('A list item cannot have multiple titles.'); + } + if (numTitles === 0 && numLines > 0) { + throw Error('A list item line can only be used if there is a list item title.'); + } + if ( + numTitles === 0 && + item._hasUnscopedTextContent && + item._explicitLines !== null && + item._explicitLines > 1 + ) { + throw Error('A list item cannot have wrapping content without a title.'); + } + if (numLines > 2 || (numLines === 2 && item._hasUnscopedTextContent)) { + throw Error('A list item can have at maximum three lines.'); + } } diff --git a/src/material-experimental/mdc-list/list-item-sections.ts b/src/material-experimental/mdc-list/list-item-sections.ts new file mode 100644 index 000000000000..78101de89688 --- /dev/null +++ b/src/material-experimental/mdc-list/list-item-sections.ts @@ -0,0 +1,100 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {Directive, ElementRef, Inject, Optional} from '@angular/core'; +import {LIST_OPTION, ListOption} from './list-option-types'; + +/** + * Directive capturing the title of a list item. A list item usually consists of a + * title and optional secondary or tertiary lines. + * + * Text content for the title never wraps. There can only be a single title per list item. + */ +@Directive({ + selector: '[matListItemTitle]', + host: {'class': 'mat-mdc-list-item-title mdc-list-item__primary-text'}, +}) +export class MatListItemTitle { + constructor(public _elementRef: ElementRef) {} +} + +/** + * Directive capturing a line in a list item. A list item usually consists of a + * title and optional secondary or tertiary lines. + * + * Text content inside a line never wraps. There can be at maximum two lines per list item. + */ +@Directive({ + selector: '[matListItemLine]', + host: {'class': 'mat-mdc-list-item-line mdc-list-item__secondary-text'}, +}) +export class MatListItemLine { + constructor(public _elementRef: ElementRef) {} +} + +/** + * Directive matching an optional meta section for list items. + * + * List items can reserve space at the end of an item to display a control, + * button or additional text content. + */ +@Directive({ + selector: '[matListItemMeta]', + host: {'class': 'mat-mdc-list-item-meta mdc-list-item__end'}, +}) +export class MatListItemMeta {} + +/** + * @docs-private + * + * MDC uses the very intuitively named classes `.mdc-list-item__start` and `.mat-list-item__end` + * to position content such as icons or checkboxes that comes either before or after the text + * content respectively. This directive detects the placement of the checkbox and applies the + * correct MDC class to position the icon/avatar on the opposite side. + */ +@Directive({ + host: { + // MDC uses intuitively named classes `.mdc-list-item__start` and `.mat-list-item__end` + // to position content such as icons or checkboxes that comes either before or after the text + // content respectively. This directive detects the placement of the checkbox and applies the + // correct MDC class to position the icon/avatar on the opposite side. + '[class.mdc-list-item__start]': '_isAlignedAtStart()', + '[class.mdc-list-item__end]': '!_isAlignedAtStart()', + }, +}) +export class _MatListItemGraphicBase { + constructor(@Optional() @Inject(LIST_OPTION) public _listOption: ListOption) {} + + _isAlignedAtStart() { + // By default, in all list items the graphic is aligned at start. In list options, + // the graphic is only aligned at start if the checkbox is at the end. + return !this._listOption || this._listOption?._getCheckboxPosition() === 'after'; + } +} + +/** + * Directive matching an optional avatar within a list item. + * + * List items can reserve space at the beginning of an item to display an avatar. + */ +@Directive({ + selector: '[matListItemAvatar]', + host: {'class': 'mat-mdc-list-item-avatar'}, +}) +export class MatListItemAvatar extends _MatListItemGraphicBase {} + +/** + * Directive matching an optional icon within a list item. + * + * List items can reserve space at the beginning of an item to display an icon. + */ +@Directive({ + selector: '[matListItemIcon]', + host: {'class': 'mat-mdc-list-item-icon'}, +}) +export class MatListItemIcon extends _MatListItemGraphicBase {} diff --git a/src/material-experimental/mdc-list/list-item.html b/src/material-experimental/mdc-list/list-item.html index e00076915380..e52a1e9491c4 100644 --- a/src/material-experimental/mdc-list/list-item.html +++ b/src/material-experimental/mdc-list/list-item.html @@ -1,19 +1,16 @@ - + - - - - - - - - + + + + + + + + - + @@ -36,8 +36,13 @@ - - + + + + + + diff --git a/src/material-experimental/mdc-list/list-option.scss b/src/material-experimental/mdc-list/list-option.scss index 05cee79f3949..351a92dc04fa 100644 --- a/src/material-experimental/mdc-list/list-option.scss +++ b/src/material-experimental/mdc-list/list-option.scss @@ -1,8 +1,11 @@ -@use '@material/checkbox' as mdc-checkbox; +@use 'sass:map'; +@use '@material/checkbox/checkbox' as mdc-checkbox; @use '@material/list/evolution-variables' as mdc-list-variables; +@use '@material/checkbox/checkbox-theme' as mdc-checkbox-theme; @use '../mdc-helpers/mdc-helpers'; @use '../../cdk/a11y'; @use './list-option-trailing-avatar-compat'; +@use '../mdc-checkbox/checkbox-private'; // For compatibility with the non-MDC list, we support avatars that are shown at the end // of the list option. We create a class similar to MDC's `--trailing-icon` one. @@ -11,11 +14,31 @@ .mat-mdc-list-option { // The MDC-based list-option uses the MDC checkbox for the selection indicators. // We need to ensure that the checkbox styles are not included for the list-option. - @include mdc-checkbox.without-ripple( - $query: mdc-helpers.$mat-base-styles-without-animation-query); + @include mdc-helpers.disable-fallback-declarations { + @include mdc-checkbox.static-styles( + $query: mdc-helpers.$mat-base-styles-without-animation-query); - &:not(._mat-animation-noopable) { - @include mdc-checkbox.without-ripple($query: animation); + &:not(._mat-animation-noopable) { + @include mdc-checkbox.static-styles($query: animation); + } + } + + // We can't use the MDC checkbox here directly, because this checkbox is purely + // decorative and including the MDC one will bring in unnecessary JS. + .mdc-checkbox { + $config: map.merge(checkbox-private.$private-checkbox-theme-config, ( + // Since this checkbox isn't interactive, we can exclude the focus/hover/press styles. + selected-focus-icon-color: null, + selected-hover-icon-color: null, + selected-pressed-icon-color: null, + unselected-focus-icon-color: null, + unselected-hover-icon-color: null, + unselected-pressed-icon-color: null, + )); + + // MDC theme styles also include structural styles so we have to include the theme at least + // once here. The values will be overwritten by our own theme file afterwards. + @include mdc-checkbox-theme.theme-styles($config); } // The internal checkbox is purely decorative, but because it's an `input`, the user can still diff --git a/src/material-experimental/mdc-list/list-option.ts b/src/material-experimental/mdc-list/list-option.ts index ccbfccaa7d4a..89b9de13b32c 100644 --- a/src/material-experimental/mdc-list/list-option.ts +++ b/src/material-experimental/mdc-list/list-option.ts @@ -29,7 +29,6 @@ import { ViewEncapsulation, } from '@angular/core'; import { - MatLine, MAT_RIPPLE_GLOBAL_OPTIONS, RippleGlobalOptions, ThemePalette, @@ -37,6 +36,7 @@ import { import {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations'; import {MatListBase, MatListItemBase} from './list-base'; import {LIST_OPTION, ListOption, MatListOptionCheckboxPosition} from './list-option-types'; +import {MatListItemLine, MatListItemTitle} from './list-item-sections'; /** * Injection token that can be used to reference instances of an `SelectionList`. It serves @@ -94,11 +94,10 @@ export interface SelectionList extends MatListBase { ], }) export class MatListOption extends MatListItemBase implements ListOption, OnInit, OnDestroy { - /** - * This is set to true after the first OnChanges cycle so we don't - * clear the value of `selected` in the first cycle. - */ - private _inputsInitialized = false; + @ContentChildren(MatListItemLine, {descendants: true}) _lines: QueryList; + @ContentChildren(MatListItemTitle, {descendants: true}) _titles: QueryList; + @ViewChild('unscopedContent') _unscopedContent: ElementRef; + @ViewChild('text') _itemText: ElementRef; /** * Emits when the selected state of the option has changed. @@ -108,12 +107,6 @@ export class MatListOption extends MatListItemBase implements ListOption, OnInit @Output() readonly selectedChange: EventEmitter = new EventEmitter(); - @ViewChild('text') _itemText: ElementRef; - - @ContentChildren(MatLine, {read: ElementRef, descendants: true}) lines: QueryList< - ElementRef - >; - /** Whether the label should appear before or after the checkbox. Defaults to 'after' */ @Input() checkboxPosition: MatListOptionCheckboxPosition = 'after'; @@ -146,7 +139,7 @@ export class MatListOption extends MatListItemBase implements ListOption, OnInit get selected(): boolean { return this._selectionList.selectedOptions.isSelected(this); } - set selected(value: boolean) { + set selected(value: BooleanInput) { const isSelected = coerceBooleanProperty(value); if (isSelected !== this._selected) { @@ -159,6 +152,12 @@ export class MatListOption extends MatListItemBase implements ListOption, OnInit } private _selected = false; + /** + * This is set to true after the first OnChanges cycle so we don't + * clear the value of `selected` in the first cycle. + */ + private _inputsInitialized = false; + constructor( element: ElementRef, ngZone: NgZone, @@ -201,6 +200,8 @@ export class MatListOption extends MatListItemBase implements ListOption, OnInit } override ngOnDestroy(): void { + super.ngOnDestroy(); + if (this.selected) { // We have to delay this until the next tick in order // to avoid changed after checked errors. @@ -279,6 +280,4 @@ export class MatListOption extends MatListItemBase implements ListOption, OnInit _markForCheck() { this._changeDetectorRef.markForCheck(); } - - static ngAcceptInputType_selected: BooleanInput; } diff --git a/src/material-experimental/mdc-list/list-styling.ts b/src/material-experimental/mdc-list/list-styling.ts deleted file mode 100644 index 571340f3fa4e..000000000000 --- a/src/material-experimental/mdc-list/list-styling.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -import {Directive, Inject, Optional} from '@angular/core'; -import {LIST_OPTION, ListOption} from './list-option-types'; - -/** - * MDC uses the very intuitively named classes `.mdc-list-item__start` and `.mat-list-item__end` - * to position content such as icons or checkboxes that comes either before or after the text - * content respectively. This directive detects the placement of the checkbox and applies the - * correct MDC class to position the icon/avatar on the opposite side. - * @docs-private - */ -@Directive({ - selector: '[mat-list-avatar], [matListAvatar], [mat-list-icon], [matListIcon]', - host: { - '[class.mdc-list-item__start]': '_isAlignedAtStart()', - '[class.mdc-list-item__end]': '!_isAlignedAtStart()', - }, -}) -export class MatListGraphicAlignmentStyler { - constructor(@Optional() @Inject(LIST_OPTION) public _listOption: ListOption) {} - - _isAlignedAtStart() { - // By default, in all list items the graphic is aligned at start. In list options, - // the graphic is only aligned at start if the checkbox is at the end. - return !this._listOption || this._listOption?._getCheckboxPosition() === 'after'; - } -} - -/** - * Directive whose purpose is to add the mat- CSS styling to this selector. - * @docs-private - */ -@Directive({ - selector: '[mat-list-avatar], [matListAvatar]', - host: {'class': 'mat-mdc-list-avatar'}, -}) -export class MatListAvatarCssMatStyler {} - -/** - * Directive whose purpose is to add the mat- CSS styling to this selector. - * @docs-private - */ -@Directive({ - selector: '[mat-list-icon], [matListIcon]', - host: {'class': 'mat-mdc-list-icon'}, -}) -export class MatListIconCssMatStyler {} - -/** - * Directive whose purpose is to add the mat- CSS styling to this selector. - * @docs-private - */ -@Directive({ - selector: '[mat-subheader], [matSubheader]', - // TODO(mmalerba): MDC's subheader font looks identical to the list item font, figure out why and - // make a change in one of the repos to visually distinguish. - host: {'class': 'mat-mdc-subheader mdc-list-group__subheader'}, -}) -export class MatListSubheaderCssMatStyler {} diff --git a/src/material-experimental/mdc-list/list.scss b/src/material-experimental/mdc-list/list.scss index 4a27011f7146..c31bf6888ce9 100644 --- a/src/material-experimental/mdc-list/list.scss +++ b/src/material-experimental/mdc-list/list.scss @@ -2,7 +2,9 @@ @use '../mdc-helpers/mdc-helpers'; @use '../../material/core/style/layout-common'; -@include mdc-list.without-ripple($query: mdc-helpers.$mat-base-styles-query); +@include mdc-helpers.disable-fallback-declarations { + @include mdc-list.without-ripple($query: mdc-helpers.$mat-base-styles-query); +} // MDC expects the list element to be a `
-
{ it('should set an asterisk after the label if control is required', fakeAsync(() => { const label = fixture.nativeElement.querySelector('.mat-mdc-form-field label'); - expect(label.classList).not.toContain( - 'mdc-floating-label--required', - `Expected label not to have an asterisk, as control was not required.`, - ); + expect(label.querySelector('.mat-mdc-form-field-required-marker')) + .withContext(`Expected label not to have an asterisk, as control was not required.`) + .toBeFalsy(); fixture.componentInstance.isRequired = true; fixture.detectChanges(); - expect(label.classList) + expect(label.querySelector('.mat-mdc-form-field-required-marker')) .withContext(`Expected label to have an asterisk, as control was required.`) - .toContain('mdc-floating-label--required'); + .toBeTruthy(); })); }); @@ -2237,9 +2236,8 @@ describe('MDC-based MatSelect', () => { dispatchKeyboardEvent(host, 'keydown', DOWN_ARROW); } - // +
diff --git a/src/material/datepicker/calendar-body.scss b/src/material/datepicker/calendar-body.scss index fdc02cecd319..334585fcd42b 100644 --- a/src/material/datepicker/calendar-body.scss +++ b/src/material/datepicker/calendar-body.scss @@ -1,4 +1,5 @@ @use 'sass:math'; +@use '../core/style/button-common'; @use '../../cdk/a11y'; $calendar-body-label-padding-start: 5% !default; @@ -31,13 +32,24 @@ $calendar-range-end-body-cell-size: padding-right: $calendar-body-label-side-padding; } -.mat-calendar-body-cell { +.mat-calendar-body-cell-container { position: relative; height: 0; line-height: 0; +} + +.mat-calendar-body-cell { + @include button-common.reset(); + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: none; text-align: center; outline: none; - cursor: pointer; + font-family: inherit; + margin: 0; } // We use ::before to apply a background to the body cell, because we need to apply a border @@ -208,8 +220,12 @@ $calendar-range-end-body-cell-size: .cdk-keyboard-focused .mat-calendar-body-active, .cdk-program-focused .mat-calendar-body-active { - & > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + & > .mat-calendar-body-cell-content { outline: dotted 2px; + + &.mat-calendar-body-selected { + outline: solid 3px; + } } } @@ -274,14 +290,3 @@ $calendar-range-end-body-cell-size: text-align: right; } } - -// Disable the hover styles on non-hover devices. Since this is more of a progressive -// enhancement and not all desktop browsers support this kind of media query, we can't -// use something like `@media (hover)`. -@media (hover: none) { - .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover { - & > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { - background-color: transparent; - } - } -} diff --git a/src/material/datepicker/calendar-body.spec.ts b/src/material/datepicker/calendar-body.spec.ts index 7237b8ab6841..52ff40e20359 100644 --- a/src/material/datepicker/calendar-body.spec.ts +++ b/src/material/datepicker/calendar-body.spec.ts @@ -47,9 +47,43 @@ describe('MatCalendarBody', () => { }); it('highlights today', () => { - const todayCell = calendarBodyNativeElement.querySelector('.mat-calendar-body-today')!; + const todayCells = calendarBodyNativeElement.querySelectorAll('.mat-calendar-body-today')!; + expect(todayCells.length).toBe(1); + + const todayCell = todayCells[0]; + expect(todayCell).not.toBeNull(); - expect(todayCell.innerHTML.trim()).toBe('3'); + expect(todayCell.textContent!.trim()).toBe('3'); + }); + + it('sets aria-current="date" on today', () => { + const todayCells = calendarBodyNativeElement.querySelectorAll( + '[aria-current="date"] .mat-calendar-body-today', + )!; + expect(todayCells.length).toBe(1); + + const todayCell = todayCells[0]; + + expect(todayCell).not.toBeNull(); + expect(todayCell.textContent!.trim()).toBe('3'); + }); + + it('does not highlight today if today is not within the scope', () => { + testComponent.todayValue = 100000; + fixture.detectChanges(); + + const todayCell = calendarBodyNativeElement.querySelector('.mat-calendar-body-today')!; + expect(todayCell).toBeNull(); + }); + + it('does not set aria-current="date" on any cell if today is not ' + 'the scope', () => { + testComponent.todayValue = 100000; + fixture.detectChanges(); + + const todayCell = calendarBodyNativeElement.querySelector( + '[aria-current="date"] .mat-calendar-body-today', + )!; + expect(todayCell).toBeNull(); }); it('highlights selected', () => { @@ -58,15 +92,13 @@ describe('MatCalendarBody', () => { expect(selectedCell.innerHTML.trim()).toBe('4'); }); - it('should set aria-selected correctly', () => { - const selectedCells = cellEls.filter(c => c.getAttribute('aria-selected') === 'true'); - const deselectedCells = cellEls.filter(c => c.getAttribute('aria-selected') === 'false'); + it('should set aria-pressed correctly', () => { + const pressedCells = cellEls.filter(c => c.getAttribute('aria-pressed') === 'true'); + const depressedCells = cellEls.filter(c => c.getAttribute('aria-pressed') === 'false'); - expect(selectedCells.length) - .withContext('Expected one cell to be marked as selected.') - .toBe(1); - expect(deselectedCells.length) - .withContext('Expected remaining cells to be marked as deselected.') + expect(pressedCells.length).withContext('Expected one cell to be marked as pressed.').toBe(1); + expect(depressedCells.length) + .withContext('Expected remaining cells to be marked as not pressed.') .toBe(cellEls.length - 1); }); diff --git a/src/material/datepicker/calendar-body.ts b/src/material/datepicker/calendar-body.ts index 895db4b41472..3749c74bb0f6 100644 --- a/src/material/datepicker/calendar-body.ts +++ b/src/material/datepicker/calendar-body.ts @@ -18,6 +18,7 @@ import { OnChanges, SimpleChanges, OnDestroy, + AfterViewChecked, } from '@angular/core'; import {take} from 'rxjs/operators'; @@ -67,13 +68,18 @@ export interface MatCalendarUserEvent { encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) -export class MatCalendarBody implements OnChanges, OnDestroy { +export class MatCalendarBody implements OnChanges, OnDestroy, AfterViewChecked { /** * Used to skip the next focus event when rendering the preview range. * We need a flag like this, because some browsers fire focus events asynchronously. */ private _skipNextFocus: boolean; + /** + * Used to focus the active cell after change detection has run. + */ + private _focusActiveCellAfterViewChecked = false; + /** The label for the table. (e.g. "Jan 2017"). */ @Input() label: string; @@ -98,6 +104,13 @@ export class MatCalendarBody implements OnChanges, OnDestroy { /** The cell number of the active cell in the table. */ @Input() activeCell: number = 0; + ngAfterViewChecked() { + if (this._focusActiveCellAfterViewChecked) { + this._focusActiveCell(); + this._focusActiveCellAfterViewChecked = false; + } + } + /** Whether a range is being selected. */ @Input() isRange: boolean = false; @@ -127,6 +140,8 @@ export class MatCalendarBody implements OnChanges, OnDestroy { MatCalendarUserEvent >(); + @Output() readonly activeDateChange = new EventEmitter>(); + /** The number of blank cells to put at the beginning for the first row. */ _firstRowOffset: number; @@ -153,6 +168,12 @@ export class MatCalendarBody implements OnChanges, OnDestroy { } } + _emitActiveDateChange(cell: MatCalendarCell, event: FocusEvent): void { + if (cell.enabled) { + this.activeDateChange.emit({value: cell.value, event}); + } + } + /** Returns whether a cell should be marked as selected. */ _isSelected(value: number) { return this.startValue === value || this.endValue === value; @@ -214,6 +235,11 @@ export class MatCalendarBody implements OnChanges, OnDestroy { }); } + /** Focuses the active cell after change detection has run and the microtask queue is empty. */ + _scheduleFocusActiveCellAfterViewChecked() { + this._focusActiveCellAfterViewChecked = true; + } + /** Gets whether a value is the start of the main range. */ _isRangeStart(value: number) { return isStart(value, this.startValue, this.endValue); @@ -337,7 +363,7 @@ export class MatCalendarBody implements OnChanges, OnDestroy { // Only reset the preview end value when leaving cells. This looks better, because // we have a gap between the cells and the rows and we don't want to remove the // range just for it to show up again when the user moves a few pixels to the side. - if (event.target && isTableCell(event.target as HTMLElement)) { + if (event.target && this._getCellFromElement(event.target as HTMLElement)) { this._ngZone.run(() => this.previewChange.emit({value: null, event})); } } diff --git a/src/material/datepicker/calendar.scss b/src/material/datepicker/calendar.scss index aabdee6aa8c8..ec7358846f7c 100644 --- a/src/material/datepicker/calendar.scss +++ b/src/material/datepicker/calendar.scss @@ -125,6 +125,3 @@ $calendar-next-icon-transform: translateX(-2px) rotate(45deg); } } -.mat-calendar-abbr { - text-decoration: none; -} diff --git a/src/material/datepicker/date-range-input-parts.ts b/src/material/datepicker/date-range-input-parts.ts index f161e45d33d1..e9254b0e1b88 100644 --- a/src/material/datepicker/date-range-input-parts.ts +++ b/src/material/datepicker/date-range-input-parts.ts @@ -73,7 +73,10 @@ abstract class MatDateRangeInputPartBase extends MatDatepickerInputBase> implements OnInit, DoCheck { - /** @docs-private */ + /** + * Form control bound to this input part. + * @docs-private + */ ngControl: NgControl; /** @docs-private */ @@ -208,10 +211,7 @@ const _MatDateRangeInputBase = mixinErrorState(MatDateRangeInputPartBase); outputs: ['dateChange', 'dateInput'], inputs: ['errorStateMatcher'], }) -export class MatStartDate - extends _MatDateRangeInputBase - implements CanUpdateErrorState, DoCheck, OnInit -{ +export class MatStartDate extends _MatDateRangeInputBase implements CanUpdateErrorState { /** Validator that checks that the start date isn't after the end date. */ private _startValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => { const start = this._dateAdapter.getValidDateOrNull( @@ -233,9 +233,6 @@ export class MatStartDate @Optional() dateAdapter: DateAdapter, @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats, ) { - // TODO(crisbeto): this constructor shouldn't be necessary, but ViewEngine doesn't seem to - // handle DI correctly when it is inherited from `MatDateRangeInputPartBase`. We can drop this - // constructor once ViewEngine is removed. super( rangeInput, elementRef, @@ -248,26 +245,6 @@ export class MatStartDate ); } - override ngOnInit() { - // Normally this happens automatically, but it seems to break if not added explicitly when all - // of the criteria below are met: - // 1) The class extends a TS mixin. - // 2) The application is running in ViewEngine. - // 3) The application is being transpiled through tsickle. - // This can be removed once google3 is completely migrated to Ivy. - super.ngOnInit(); - } - - override ngDoCheck() { - // Normally this happens automatically, but it seems to break if not added explicitly when all - // of the criteria below are met: - // 1) The class extends a TS mixin. - // 2) The application is running in ViewEngine. - // 3) The application is being transpiled through tsickle. - // This can be removed once google3 is completely migrated to Ivy. - super.ngDoCheck(); - } - protected _validator = Validators.compose([...super._getValidators(), this._startValidator]); protected _getValueFromModel(modelValue: DateRange) { @@ -334,10 +311,7 @@ export class MatStartDate outputs: ['dateChange', 'dateInput'], inputs: ['errorStateMatcher'], }) -export class MatEndDate - extends _MatDateRangeInputBase - implements CanUpdateErrorState, DoCheck, OnInit -{ +export class MatEndDate extends _MatDateRangeInputBase implements CanUpdateErrorState { /** Validator that checks that the end date isn't before the start date. */ private _endValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => { const end = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value)); @@ -357,9 +331,6 @@ export class MatEndDate @Optional() dateAdapter: DateAdapter, @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats, ) { - // TODO(crisbeto): this constructor shouldn't be necessary, but ViewEngine doesn't seem to - // handle DI correctly when it is inherited from `MatDateRangeInputPartBase`. We can drop this - // constructor once ViewEngine is removed. super( rangeInput, elementRef, @@ -372,26 +343,6 @@ export class MatEndDate ); } - override ngOnInit() { - // Normally this happens automatically, but it seems to break if not added explicitly when all - // of the criteria below are met: - // 1) The class extends a TS mixin. - // 2) The application is running in ViewEngine. - // 3) The application is being transpiled through tsickle. - // This can be removed once google3 is completely migrated to Ivy. - super.ngOnInit(); - } - - override ngDoCheck() { - // Normally this happens automatically, but it seems to break if not added explicitly when all - // of the criteria below are met: - // 1) The class extends a TS mixin. - // 2) The application is running in ViewEngine. - // 3) The application is being transpiled through tsickle. - // This can be removed once google3 is completely migrated to Ivy. - super.ngDoCheck(); - } - protected _validator = Validators.compose([...super._getValidators(), this._endValidator]); protected _getValueFromModel(modelValue: DateRange) { diff --git a/src/material/datepicker/date-range-input.spec.ts b/src/material/datepicker/date-range-input.spec.ts index 26c5680670b7..a9ba94dd7d16 100644 --- a/src/material/datepicker/date-range-input.spec.ts +++ b/src/material/datepicker/date-range-input.spec.ts @@ -208,7 +208,7 @@ describe('MatDateRangeInput', () => { fixture.detectChanges(); tick(); - const popup = document.querySelector('.cdk-overlay-pane')!; + const popup = document.querySelector('.cdk-overlay-pane .mat-datepicker-content-container')!; expect(popup).toBeTruthy(); expect(popup.getAttribute('aria-labelledby')).toBe(label.getAttribute('id')); })); diff --git a/src/material/datepicker/date-range-input.ts b/src/material/datepicker/date-range-input.ts index b9f458b16d8e..9af6b2d299b2 100644 --- a/src/material/datepicker/date-range-input.ts +++ b/src/material/datepicker/date-range-input.ts @@ -132,7 +132,7 @@ export class MatDateRangeInput get required(): boolean { return !!this._required; } - set required(value: boolean) { + set required(value: BooleanInput) { this._required = coerceBooleanProperty(value); } private _required: boolean; @@ -196,7 +196,7 @@ export class MatDateRangeInput ? this._startInput.disabled && this._endInput.disabled : this._groupDisabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { const newValue = coerceBooleanProperty(value); if (newValue !== this._groupDisabled) { @@ -413,7 +413,4 @@ export class MatDateRangeInput this._endInput._registerModel(model); } } - - static ngAcceptInputType_required: BooleanInput; - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/material/datepicker/datepicker-base.ts b/src/material/datepicker/datepicker-base.ts index b2b855cfedc7..d09208929e90 100644 --- a/src/material/datepicker/datepicker-base.ts +++ b/src/material/datepicker/datepicker-base.ts @@ -123,7 +123,6 @@ export class MatDatepickerContent> { private _subscriptions = new Subscription(); private _model: MatDateSelectionModel; - /** Reference to the internal calendar component. */ @ViewChild(MatCalendar) _calendar: MatCalendar; @@ -154,6 +153,9 @@ export class MatDatepickerContent> /** Portal with projected action buttons. */ _actionsPortal: TemplatePortal | null = null; + /** Id of the label for the `role="dialog"` element. */ + _dialogLabelId: string | null; + constructor( elementRef: ElementRef, private _changeDetectorRef: ChangeDetectorRef, @@ -327,7 +329,7 @@ export abstract class MatDatepickerBase< get touchUi(): boolean { return this._touchUi; } - set touchUi(value: boolean) { + set touchUi(value: BooleanInput) { this._touchUi = coerceBooleanProperty(value); } private _touchUi = false; @@ -339,7 +341,7 @@ export abstract class MatDatepickerBase< ? this.datepickerInput.disabled : !!this._disabled; } - set disabled(value: boolean) { + set disabled(value: BooleanInput) { const newValue = coerceBooleanProperty(value); if (newValue !== this._disabled) { @@ -366,7 +368,7 @@ export abstract class MatDatepickerBase< get restoreFocus(): boolean { return this._restoreFocus; } - set restoreFocus(value: boolean) { + set restoreFocus(value: BooleanInput) { this._restoreFocus = coerceBooleanProperty(value); } private _restoreFocus = true; @@ -417,7 +419,7 @@ export abstract class MatDatepickerBase< get opened(): boolean { return this._opened; } - set opened(value: boolean) { + set opened(value: BooleanInput) { coerceBooleanProperty(value) ? this.open() : this.close(); } private _opened = false; @@ -622,6 +624,7 @@ export abstract class MatDatepickerBase< instance.datepicker = this; instance.color = this.color; instance._actionsPortal = this._actionsPortal; + instance._dialogLabelId = this.datepickerInput.getOverlayLabelId(); } /** Opens the overlay with the calendar. */ @@ -629,7 +632,6 @@ export abstract class MatDatepickerBase< this._destroyOverlay(); const isDialog = this.touchUi; - const labelId = this.datepickerInput.getOverlayLabelId(); const portal = new ComponentPortal>( MatDatepickerContent, this._viewContainerRef, @@ -647,16 +649,6 @@ export abstract class MatDatepickerBase< panelClass: `mat-datepicker-${isDialog ? 'dialog' : 'popup'}`, }), )); - const overlayElement = overlayRef.overlayElement; - overlayElement.setAttribute('role', 'dialog'); - - if (labelId) { - overlayElement.setAttribute('aria-labelledby', labelId); - } - - if (isDialog) { - overlayElement.setAttribute('aria-modal', 'true'); - } this._getCloseStream(overlayRef).subscribe(event => { if (event) { @@ -751,9 +743,4 @@ export abstract class MatDatepickerBase< ), ); } - - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_opened: BooleanInput; - static ngAcceptInputType_touchUi: BooleanInput; - static ngAcceptInputType_restoreFocus: BooleanInput; } diff --git a/src/material/datepicker/datepicker-content.html b/src/material/datepicker/datepicker-content.html index 97109f1f59df..2c4b931305fd 100644 --- a/src/material/datepicker/datepicker-content.html +++ b/src/material/datepicker/datepicker-content.html @@ -1,6 +1,10 @@
-
- {{item.displayValue}} -
-
+ +
+
- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +
Date typeDate
Supported localesen-US
DependenciesNone
Import from@angular/material/core
Date typeDate
Supported localesen-US
DependenciesNone
Import from@angular/material/core
@@ -329,22 +329,22 @@ The easiest way to ensure this is to import one of the provided date modules: - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +
Date typeDate
Supported localesSee project for details
Dependenciesdate-fns
Import from@angular/material-date-fns-adapter
Date typeDate
Supported localesSee project for details
Dependenciesdate-fns
Import from@angular/material-date-fns-adapter
@@ -352,22 +352,22 @@ The easiest way to ensure this is to import one of the provided date modules: - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +
Date typeDateTime
Supported localesSee project for details
DependenciesLuxon
Import from@angular/material-luxon-adapter
Date typeDateTime
Supported localesSee project for details
DependenciesLuxon
Import from@angular/material-luxon-adapter
@@ -375,22 +375,22 @@ The easiest way to ensure this is to import one of the provided date modules: - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +
Date typeMoment
Supported localesSee project for details
DependenciesMoment.js
Import from@angular/material-moment-adapter
Date typeMoment
Supported localesSee project for details
DependenciesMoment.js
Import from@angular/material-moment-adapter
diff --git a/src/material/datepicker/datepicker.spec.ts b/src/material/datepicker/datepicker.spec.ts index bfd5a726963a..a376018bed8c 100644 --- a/src/material/datepicker/datepicker.spec.ts +++ b/src/material/datepicker/datepicker.spec.ts @@ -8,6 +8,7 @@ import { dispatchFakeEvent, dispatchKeyboardEvent, dispatchMouseEvent, + typeInElement, } from '../../cdk/testing/private'; import {Component, Type, ViewChild, Provider, Directive, ViewEncapsulation} from '@angular/core'; import {ComponentFixture, fakeAsync, flush, inject, TestBed, tick} from '@angular/core/testing'; @@ -24,7 +25,6 @@ import {MatFormField, MatFormFieldModule} from '@angular/material/form-field'; import {DEC, JAN, JUL, JUN, SEP} from '../testing'; import {By} from '@angular/platform-browser'; import {_supportsShadowDom} from '@angular/cdk/platform'; -import {BrowserDynamicTestingModule} from '@angular/platform-browser-dynamic/testing'; import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {Subject} from 'rxjs'; import {MatInputModule} from '../input/index'; @@ -47,7 +47,6 @@ describe('MatDatepicker', () => { component: Type, imports: Type[] = [], providers: Provider[] = [], - entryComponents: Type[] = [], declarations: Type[] = [], ): ComponentFixture { TestBed.configureTestingModule({ @@ -61,15 +60,9 @@ describe('MatDatepicker', () => { ...imports, ], providers, - declarations: [component, ...declarations, ...entryComponents], + declarations: [component, ...declarations], }); - TestBed.overrideModule(BrowserDynamicTestingModule, { - set: { - entryComponents: [entryComponents], - }, - }).compileComponents(); - return TestBed.createComponent(component); } @@ -244,7 +237,7 @@ describe('MatDatepicker', () => { fixture.detectChanges(); flush(); - const popup = document.querySelector('.cdk-overlay-pane')!; + const popup = document.querySelector('.mat-datepicker-content-container')!; expect(popup).toBeTruthy(); expect(popup.getAttribute('role')).toBe('dialog'); })); @@ -262,7 +255,9 @@ describe('MatDatepicker', () => { fixture.detectChanges(); flush(); - const popup = document.querySelector('.cdk-overlay-pane')!; + const popup = document.querySelector( + '.cdk-overlay-pane .mat-datepicker-content-container', + )!; expect(popup).toBeTruthy(); expect(popup.getAttribute('aria-labelledby')).toBe('test-label'); }), @@ -1054,6 +1049,17 @@ describe('MatDatepicker', () => { subscription.unsubscribe(); }), ); + + it('should set the matDatepickerParse error when an invalid value is typed for the first time', () => { + const formControl = fixture.componentInstance.formControl; + + expect(formControl.hasError('matDatepickerParse')).toBe(false); + + typeInElement(fixture.nativeElement.querySelector('input'), 'Today'); + fixture.detectChanges(); + + expect(formControl.hasError('matDatepickerParse')).toBe(true); + }); }); describe('datepicker with mat-datepicker-toggle', () => { @@ -1413,7 +1419,9 @@ describe('MatDatepicker', () => { fixture.detectChanges(); flush(); - const popup = document.querySelector('.cdk-overlay-pane')!; + const popup = document.querySelector( + '.cdk-overlay-pane .mat-datepicker-content-container', + )!; expect(popup).toBeTruthy(); expect(popup.getAttribute('aria-labelledby')).toBe(label.getAttribute('id')); })); @@ -2198,7 +2206,6 @@ describe('MatDatepicker', () => { DatepickerInputWithCustomValidator, [MatNativeDateModule], undefined, - undefined, [CustomValidator], ); fixture.detectChanges(); @@ -2221,7 +2228,6 @@ describe('MatDatepicker', () => { DatepickerInputWithCustomValidator, [MatNativeDateModule], undefined, - undefined, [CustomValidator], ); fixture.detectChanges(); diff --git a/src/material/datepicker/month-view.html b/src/material/datepicker/month-view.html index 35deaf2339c2..3ccafd6d2e94 100644 --- a/src/material/datepicker/month-view.html +++ b/src/material/datepicker/month-view.html @@ -1,11 +1,8 @@ - @@ -24,6 +21,7 @@ [labelMinRequiredCells]="3" [activeCell]="_dateAdapter.getDate(activeDate) - 1" (selectedValueChange)="_dateSelected($event)" + (activeDateChange)="_updateActiveDate($event)" (previewChange)="_previewChanged($event)" (keyup)="_handleCalendarBodyKeyup($event)" (keydown)="_handleCalendarBodyKeydown($event)"> diff --git a/src/material/datepicker/month-view.spec.ts b/src/material/datepicker/month-view.spec.ts index 7a4909f8efbb..27bada546455 100644 --- a/src/material/datepicker/month-view.spec.ts +++ b/src/material/datepicker/month-view.spec.ts @@ -520,6 +520,30 @@ describe('MatMonthView', () => { ); }, ); + + it('should go to month that is focused', () => { + const jan11Cell = fixture.debugElement.nativeElement.querySelector( + '[data-mat-row="1"][data-mat-col="3"] button', + ) as HTMLElement; + + dispatchFakeEvent(jan11Cell, 'focus'); + fixture.detectChanges(); + + expect(calendarInstance.date).toEqual(new Date(2017, JAN, 11)); + }); + + it('should not call `.focus()` when the active date is focused', () => { + const jan5Cell = fixture.debugElement.nativeElement.querySelector( + '[data-mat-row="0"][data-mat-col="4"] button', + ) as HTMLElement; + const focusSpy = (jan5Cell.focus = jasmine.createSpy('cellFocused')); + + dispatchFakeEvent(jan5Cell, 'focus'); + fixture.detectChanges(); + + expect(calendarInstance.date).toEqual(new Date(2017, JAN, 5)); + expect(focusSpy).not.toHaveBeenCalled(); + }); }); }); }); diff --git a/src/material/datepicker/month-view.ts b/src/material/datepicker/month-view.ts index a46abfb4dfbd..03fdfa9dc0eb 100644 --- a/src/material/datepicker/month-view.ts +++ b/src/material/datepicker/month-view.ts @@ -230,9 +230,7 @@ export class MatMonthView implements AfterContentInit, OnChanges, OnDestroy { /** Handles when a new date is selected. */ _dateSelected(event: MatCalendarUserEvent) { const date = event.value; - const selectedYear = this._dateAdapter.getYear(this.activeDate); - const selectedMonth = this._dateAdapter.getMonth(this.activeDate); - const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date); + const selectedDate = this._getDateFromDayOfMonth(date); let rangeStartDate: number | null; let rangeEndDate: number | null; @@ -252,6 +250,26 @@ export class MatMonthView implements AfterContentInit, OnChanges, OnDestroy { this._changeDetectorRef.markForCheck(); } + /** + * Takes the index of a calendar body cell wrapped in in an event as argument. For the date that + * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with + * that date. + * + * This fucntion is used to match each component's model of the active date with the calendar + * body cell that was focused. It updates its value of `activeDate` synchronously and updates the + * parent's value asynchonously via the `activeDateChange` event. The child component receives an + * updated value asynchronously via the `activeCell` Input. + */ + _updateActiveDate(event: MatCalendarUserEvent) { + const month = event.value; + const oldActiveDate = this._activeDate; + this.activeDate = this._getDateFromDayOfMonth(month); + + if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + this.activeDateChange.emit(this._activeDate); + } + } + /** Handles keydown events on the calendar body when calendar is in month view. */ _handleCalendarBodyKeydown(event: KeyboardEvent): void { // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent @@ -327,9 +345,10 @@ export class MatMonthView implements AfterContentInit, OnChanges, OnDestroy { if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { this.activeDateChange.emit(this.activeDate); + + this._focusActiveCellAfterViewChecked(); } - this._focusActiveCell(); // Prevent unexpected default actions such as form submission. event.preventDefault(); } @@ -376,6 +395,11 @@ export class MatMonthView implements AfterContentInit, OnChanges, OnDestroy { this._matCalendarBody._focusActiveCell(movePreview); } + /** Focuses the active cell after change detection has run and the microtask queue is empty. */ + _focusActiveCellAfterViewChecked() { + this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked(); + } + /** Called when the user has activated a new cell and the preview needs to be updated. */ _previewChanged({event, value: cell}: MatCalendarUserEvent | null>) { if (this._rangeStrategy) { @@ -398,6 +422,18 @@ export class MatMonthView implements AfterContentInit, OnChanges, OnDestroy { } } + /** + * Takes a day of the month and returns a new date in the same month and year as the currently + * active date. The returned date will have the same day of the month as the argument date. + */ + private _getDateFromDayOfMonth(dayOfMonth: number): D { + return this._dateAdapter.createDate( + this._dateAdapter.getYear(this.activeDate), + this._dateAdapter.getMonth(this.activeDate), + dayOfMonth, + ); + } + /** Initializes the weekdays. */ private _initWeekdays() { const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek(); diff --git a/src/material/datepicker/multi-year-view.html b/src/material/datepicker/multi-year-view.html index ee12a9e67d29..84220c8fa95f 100644 --- a/src/material/datepicker/multi-year-view.html +++ b/src/material/datepicker/multi-year-view.html @@ -11,6 +11,7 @@ [cellAspectRatio]="4 / 7" [activeCell]="_getActiveCell()" (selectedValueChange)="_yearSelected($event)" + (activeDateChange)="_updateActiveDate($event)" (keyup)="_handleCalendarBodyKeyup($event)" (keydown)="_handleCalendarBodyKeydown($event)"> diff --git a/src/material/datepicker/multi-year-view.spec.ts b/src/material/datepicker/multi-year-view.spec.ts index 61c14607eb26..f106df18f178 100644 --- a/src/material/datepicker/multi-year-view.spec.ts +++ b/src/material/datepicker/multi-year-view.spec.ts @@ -13,7 +13,7 @@ import {dispatchFakeEvent, dispatchKeyboardEvent} from '../../cdk/testing/privat import {Component, ViewChild} from '@angular/core'; import {waitForAsync, ComponentFixture, TestBed} from '@angular/core/testing'; import {MatNativeDateModule} from '@angular/material/core'; -import {JAN} from '../testing'; +import {JAN, MAR} from '../testing'; import {By} from '@angular/platform-browser'; import {MatCalendarBody} from './calendar-body'; import {MatMultiYearView, yearsPerPage, yearsPerRow} from './multi-year-view'; @@ -116,7 +116,7 @@ describe('MatMultiYearView', () => { ) as HTMLElement; expect(calendarBodyEl).not.toBeNull(); dir.value = 'ltr'; - fixture.componentInstance.date = new Date(2017, JAN, 1); + fixture.componentInstance.date = new Date(2017, JAN, 3); dispatchFakeEvent(calendarBodyEl, 'focus'); fixture.detectChanges(); }); @@ -125,96 +125,124 @@ describe('MatMultiYearView', () => { dispatchKeyboardEvent(calendarBodyEl, 'keydown', LEFT_ARROW); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2016, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2016, JAN, 3)); dispatchKeyboardEvent(calendarBodyEl, 'keydown', LEFT_ARROW); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2015, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2015, JAN, 3)); }); it('should increment year on right arrow press', () => { dispatchKeyboardEvent(calendarBodyEl, 'keydown', RIGHT_ARROW); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2018, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2018, JAN, 3)); dispatchKeyboardEvent(calendarBodyEl, 'keydown', RIGHT_ARROW); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2019, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2019, JAN, 3)); }); it('should go up a row on up arrow press', () => { dispatchKeyboardEvent(calendarBodyEl, 'keydown', UP_ARROW); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2017 - yearsPerRow, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2017 - yearsPerRow, JAN, 3)); dispatchKeyboardEvent(calendarBodyEl, 'keydown', UP_ARROW); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2017 - yearsPerRow * 2, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2017 - yearsPerRow * 2, JAN, 3)); }); it('should go down a row on down arrow press', () => { dispatchKeyboardEvent(calendarBodyEl, 'keydown', DOWN_ARROW); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2017 + yearsPerRow, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2017 + yearsPerRow, JAN, 3)); dispatchKeyboardEvent(calendarBodyEl, 'keydown', DOWN_ARROW); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2017 + yearsPerRow * 2, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2017 + yearsPerRow * 2, JAN, 3)); }); it('should go to first year in current range on home press', () => { dispatchKeyboardEvent(calendarBodyEl, 'keydown', HOME); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2016, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2016, JAN, 3)); dispatchKeyboardEvent(calendarBodyEl, 'keydown', HOME); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2016, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2016, JAN, 3)); }); it('should go to last year in current range on end press', () => { dispatchKeyboardEvent(calendarBodyEl, 'keydown', END); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2039, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2039, JAN, 3)); dispatchKeyboardEvent(calendarBodyEl, 'keydown', END); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2039, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2039, JAN, 3)); }); it('should go to same index in previous year range page up press', () => { dispatchKeyboardEvent(calendarBodyEl, 'keydown', PAGE_UP); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2017 - yearsPerPage, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2017 - yearsPerPage, JAN, 3)); dispatchKeyboardEvent(calendarBodyEl, 'keydown', PAGE_UP); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2017 - yearsPerPage * 2, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2017 - yearsPerPage * 2, JAN, 3)); }); it('should go to same index in next year range on page down press', () => { dispatchKeyboardEvent(calendarBodyEl, 'keydown', PAGE_DOWN); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2017 + yearsPerPage, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2017 + yearsPerPage, JAN, 3)); dispatchKeyboardEvent(calendarBodyEl, 'keydown', PAGE_DOWN); fixture.detectChanges(); - expect(calendarInstance.date).toEqual(new Date(2017 + yearsPerPage * 2, JAN, 1)); + expect(calendarInstance.date).toEqual(new Date(2017 + yearsPerPage * 2, JAN, 3)); + }); + + it('should go to the year that is focused', () => { + fixture.componentInstance.date = new Date(2017, MAR, 5); + fixture.detectChanges(); + expect(calendarInstance.date).toEqual(new Date(2017, MAR, 5)); + + const year2022Cell = fixture.debugElement.nativeElement.querySelector( + '[data-mat-row="1"][data-mat-col="2"] button', + ) as HTMLElement; + + dispatchFakeEvent(year2022Cell, 'focus'); + fixture.detectChanges(); + + expect(calendarInstance.date).toEqual(new Date(2022, MAR, 5)); + }); + + it('should not call `.focus()` when the active date is focused', () => { + const year2017Cell = fixture.debugElement.nativeElement.querySelector( + '[data-mat-row="0"][data-mat-col="1"] button', + ) as HTMLElement; + const focusSpy = (year2017Cell.focus = jasmine.createSpy('cellFocused')); + + dispatchFakeEvent(year2017Cell, 'focus'); + fixture.detectChanges(); + + expect(calendarInstance.date).toEqual(new Date(2017, JAN, 3)); + expect(focusSpy).not.toHaveBeenCalled(); }); }); }); diff --git a/src/material/datepicker/multi-year-view.ts b/src/material/datepicker/multi-year-view.ts index da7206057bdc..4d1d6b133255 100644 --- a/src/material/datepicker/multi-year-view.ts +++ b/src/material/datepicker/multi-year-view.ts @@ -204,18 +204,31 @@ export class MatMultiYearView implements AfterContentInit, OnDestroy { /** Handles when a new year is selected. */ _yearSelected(event: MatCalendarUserEvent) { const year = event.value; - this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1)); - let month = this._dateAdapter.getMonth(this.activeDate); - let daysInMonth = this._dateAdapter.getNumDaysInMonth( - this._dateAdapter.createDate(year, month, 1), - ); - this.selectedChange.emit( - this._dateAdapter.createDate( - year, - month, - Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth), - ), - ); + const selectedYear = this._dateAdapter.createDate(year, 0, 1); + const selectedDate = this._getDateFromYear(year); + + this.yearSelected.emit(selectedYear); + this.selectedChange.emit(selectedDate); + } + + /** + * Takes the index of a calendar body cell wrapped in in an event as argument. For the date that + * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with + * that date. + * + * This fucntion is used to match each component's model of the active date with the calendar + * body cell that was focused. It updates its value of `activeDate` synchronously and updates the + * parent's value asynchonously via the `activeDateChange` event. The child component receives an + * updated value asynchronously via the `activeCell` Input. + */ + _updateActiveDate(event: MatCalendarUserEvent) { + const year = event.value; + const oldActiveDate = this._activeDate; + + this.activeDate = this._getDateFromYear(year); + if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + this.activeDateChange.emit(this.activeDate); + } } /** Handles keydown events on the calendar body when calendar is in multi-year view. */ @@ -278,7 +291,7 @@ export class MatMultiYearView implements AfterContentInit, OnDestroy { this.activeDateChange.emit(this.activeDate); } - this._focusActiveCell(); + this._focusActiveCellAfterViewChecked(); // Prevent unexpected default actions such as form submission. event.preventDefault(); } @@ -303,6 +316,28 @@ export class MatMultiYearView implements AfterContentInit, OnDestroy { this._matCalendarBody._focusActiveCell(); } + /** Focuses the active cell after change detection has run and the microtask queue is empty. */ + _focusActiveCellAfterViewChecked() { + this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked(); + } + + /** + * Takes a year and returns a new date on the same day and month as the currently active date + * The returned date will have the same year as the argument date. + */ + private _getDateFromYear(year: number) { + const activeMonth = this._dateAdapter.getMonth(this.activeDate); + const daysInMonth = this._dateAdapter.getNumDaysInMonth( + this._dateAdapter.createDate(year, activeMonth, 1), + ); + const normalizedDate = this._dateAdapter.createDate( + year, + activeMonth, + Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth), + ); + return normalizedDate; + } + /** Creates an MatCalendarCell for the given year. */ private _createCellForYear(year: number) { const date = this._dateAdapter.createDate(year, 0, 1); diff --git a/src/material/datepicker/testing/calendar-cell-harness.ts b/src/material/datepicker/testing/calendar-cell-harness.ts index 4ebee4c8ccb4..c0274c0d281d 100644 --- a/src/material/datepicker/testing/calendar-cell-harness.ts +++ b/src/material/datepicker/testing/calendar-cell-harness.ts @@ -69,7 +69,7 @@ export class MatCalendarCellHarness extends ComponentHarness { /** Whether the cell is selected. */ async isSelected(): Promise { const host = await this.host(); - return (await host.getAttribute('aria-selected')) === 'true'; + return (await host.getAttribute('aria-pressed')) === 'true'; } /** Whether the cell is disabled. */ diff --git a/src/material/datepicker/year-view.html b/src/material/datepicker/year-view.html index dae81c5e2a27..afb9821dd416 100644 --- a/src/material/datepicker/year-view.html +++ b/src/material/datepicker/year-view.html @@ -13,6 +13,7 @@ [cellAspectRatio]="4 / 7" [activeCell]="_dateAdapter.getMonth(activeDate)" (selectedValueChange)="_monthSelected($event)" + (activeDateChange)="_updateActiveDate($event)" (keyup)="_handleCalendarBodyKeyup($event)" (keydown)="_handleCalendarBodyKeydown($event)"> diff --git a/src/material/datepicker/year-view.spec.ts b/src/material/datepicker/year-view.spec.ts index 99e6ca6783f9..2fb07ef50423 100644 --- a/src/material/datepicker/year-view.spec.ts +++ b/src/material/datepicker/year-view.spec.ts @@ -292,6 +292,30 @@ describe('MatYearView', () => { expect(calendarInstance.date).toEqual(new Date(2018, FEB, 28)); }); + + it('should go to date that is focused', () => { + const juneCell = fixture.debugElement.nativeElement.querySelector( + '[data-mat-row="1"][data-mat-col="1"] button', + ) as HTMLElement; + + dispatchFakeEvent(juneCell, 'focus'); + fixture.detectChanges(); + + expect(calendarInstance.date).toEqual(new Date(2017, JUN, 5)); + }); + + it('should not call `.focus()` when the active date is focused', () => { + const janCell = fixture.debugElement.nativeElement.querySelector( + '[data-mat-row="0"][data-mat-col="0"] button', + ) as HTMLElement; + const focusSpy = (janCell.focus = jasmine.createSpy('cellFocused')); + + dispatchFakeEvent(janCell, 'focus'); + fixture.detectChanges(); + + expect(calendarInstance.date).toEqual(new Date(2017, JAN, 5)); + expect(focusSpy).not.toHaveBeenCalled(); + }); }); }); }); diff --git a/src/material/datepicker/year-view.ts b/src/material/datepicker/year-view.ts index 2e121f75cc15..b69c98bba7f9 100644 --- a/src/material/datepicker/year-view.ts +++ b/src/material/datepicker/year-view.ts @@ -179,23 +179,37 @@ export class MatYearView implements AfterContentInit, OnDestroy { /** Handles when a new month is selected. */ _monthSelected(event: MatCalendarUserEvent) { const month = event.value; - const normalizedDate = this._dateAdapter.createDate( + + const selectedMonth = this._dateAdapter.createDate( this._dateAdapter.getYear(this.activeDate), month, 1, ); + this.monthSelected.emit(selectedMonth); - this.monthSelected.emit(normalizedDate); + const selectedDate = this._getDateFromMonth(month); + this.selectedChange.emit(selectedDate); + } - const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate); + /** + * Takes the index of a calendar body cell wrapped in in an event as argument. For the date that + * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with + * that date. + * + * This fucntion is used to match each component's model of the active date with the calendar + * body cell that was focused. It updates its value of `activeDate` synchronously and updates the + * parent's value asynchonously via the `activeDateChange` event. The child component receives an + * updated value asynchronously via the `activeCell` Input. + */ + _updateActiveDate(event: MatCalendarUserEvent) { + const month = event.value; + const oldActiveDate = this._activeDate; - this.selectedChange.emit( - this._dateAdapter.createDate( - this._dateAdapter.getYear(this.activeDate), - month, - Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth), - ), - ); + this.activeDate = this._getDateFromMonth(month); + + if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + this.activeDateChange.emit(this.activeDate); + } } /** Handles keydown events on the calendar body when calendar is in year view. */ @@ -259,9 +273,9 @@ export class MatYearView implements AfterContentInit, OnDestroy { if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { this.activeDateChange.emit(this.activeDate); + this._focusActiveCellAfterViewChecked(); } - this._focusActiveCell(); // Prevent unexpected default actions such as form submission. event.preventDefault(); } @@ -298,6 +312,11 @@ export class MatYearView implements AfterContentInit, OnDestroy { this._matCalendarBody._focusActiveCell(); } + /** Schedules the matCalendarBody to focus the active cell after change detection has run */ + _focusActiveCellAfterViewChecked() { + this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked(); + } + /** * Gets the month in this year that the given Date falls on. * Returns null if the given Date is in another year. @@ -308,6 +327,26 @@ export class MatYearView implements AfterContentInit, OnDestroy { : null; } + /** + * Takes a month and returns a new date in the same day and year as the currently active date. + * The returned date will have the same month as the argument date. + */ + private _getDateFromMonth(month: number) { + const normalizedDate = this._dateAdapter.createDate( + this._dateAdapter.getYear(this.activeDate), + month, + 1, + ); + + const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate); + + return this._dateAdapter.createDate( + this._dateAdapter.getYear(this.activeDate), + month, + Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth), + ); + } + /** Creates an MatCalendarCell for the given month. */ private _createCellForMonth(month: number, monthName: string) { const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1); diff --git a/src/material/dialog/dialog-content-directives.ts b/src/material/dialog/dialog-content-directives.ts index 5c782353e57a..2b5f44715da0 100644 --- a/src/material/dialog/dialog-content-directives.ts +++ b/src/material/dialog/dialog-content-directives.ts @@ -145,9 +145,18 @@ export class MatDialogContent {} */ @Directive({ selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`, - host: {'class': 'mat-dialog-actions'}, + host: { + 'class': 'mat-dialog-actions', + '[class.mat-dialog-actions-align-center]': 'align === "center"', + '[class.mat-dialog-actions-align-end]': 'align === "end"', + }, }) -export class MatDialogActions {} +export class MatDialogActions { + /** + * Horizontal alignment of action buttons. + */ + @Input() align?: 'start' | 'center' | 'end' = 'start'; +} /** * Finds the closest MatDialogRef to an element by looking at the DOM. diff --git a/src/material/dialog/dialog-module.ts b/src/material/dialog/dialog-module.ts index 608a1912fb48..01442e29c80b 100644 --- a/src/material/dialog/dialog-module.ts +++ b/src/material/dialog/dialog-module.ts @@ -37,6 +37,5 @@ import { MatDialogContent, ], providers: [MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER], - entryComponents: [MatDialogContainer], }) export class MatDialogModule {} diff --git a/src/material/dialog/dialog-ref.ts b/src/material/dialog/dialog-ref.ts index add2c64bad85..df3f51868be9 100644 --- a/src/material/dialog/dialog-ref.ts +++ b/src/material/dialog/dialog-ref.ts @@ -49,7 +49,7 @@ export class MatDialogRef { private _result: R | undefined; /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */ - private _closeFallbackTimeout: any; + private _closeFallbackTimeout: number; /** Current state of the dialog. */ private _state = MatDialogState.OPEN; diff --git a/src/material/dialog/dialog.md b/src/material/dialog/dialog.md index ad29d63fc096..6aefedfce50b 100644 --- a/src/material/dialog/dialog.md +++ b/src/material/dialog/dialog.md @@ -39,38 +39,6 @@ export class YourDialog { } ``` -### Configuring dialog content via `entryComponents` -**You only need to specify `entryComponents` if your project uses ViewEngine. Projects -using Angular Ivy don't need `entryComponents`.** - -Because `MatDialog` instantiates components at run-time, the Angular compiler needs extra -information to create the necessary `ComponentFactory` for your dialog content component. - -For any component loaded into a dialog, you must include your component class in the list of -`entryComponents` in your NgModule definition so that the Angular compiler knows to create -the `ComponentFactory` for it. - -```ts -@NgModule({ - imports: [ - // ... - MatDialogModule - ], - - declarations: [ - AppComponent, - ExampleDialogComponent - ], - - entryComponents: [ - ExampleDialogComponent - ], - - bootstrap: [AppComponent] -}) -export class AppModule {} -``` - ### Specifying global configuration defaults Default dialog options can be specified by providing an instance of `MatDialogConfig` for MAT_DIALOG_DEFAULT_OPTIONS in your application's root module. @@ -194,5 +162,5 @@ sheet attempts to restore focus. You can add handling for this situation with the `afterClosed()` observable from `MatDialogRef`. diff --git a/src/material/dialog/dialog.scss b/src/material/dialog/dialog.scss index ca5f92cde2af..6ba8ad382925 100644 --- a/src/material/dialog/dialog.scss +++ b/src/material/dialog/dialog.scss @@ -56,13 +56,14 @@ $button-margin: 8px !default; // Pull the actions down to avoid their padding stacking with the dialog's padding. margin-bottom: -$padding; - &[align='end'] { - justify-content: flex-end; - } - - &[align='center'] { + // .mat-dialog-actions-align-{center|end} are set by directive input "align" + // [align='center'] and [align='right'] are kept for backwards compability + &.mat-dialog-actions-align-center, &[align='center'] { justify-content: center; } + &.mat-dialog-actions-align-end, &[align='end'] { + justify-content: flex-end; + } .mat-button-base + .mat-button-base, .mat-mdc-button-base + .mat-mdc-button-base { diff --git a/src/material/dialog/dialog.spec.ts b/src/material/dialog/dialog.spec.ts index f4d7a50b0758..c874e01e4389 100644 --- a/src/material/dialog/dialog.spec.ts +++ b/src/material/dialog/dialog.spec.ts @@ -14,7 +14,6 @@ import { Directive, Inject, Injector, - NgModule, TemplateRef, ViewChild, ViewContainerRef, @@ -61,7 +60,17 @@ describe('MatDialog', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatDialogModule, DialogTestModule], + imports: [MatDialogModule, NoopAnimationsModule], + declarations: [ + ComponentWithChildViewContainer, + ComponentWithTemplateRef, + PizzaMsg, + ContentElementDialog, + DialogWithInjectedData, + DialogWithoutFocusableElements, + DirectiveWithViewContainer, + ComponentWithContentElementTemplateRef, + ], providers: [ {provide: Location, useClass: SpyLocation}, { @@ -1724,6 +1733,18 @@ describe('MatDialog', () => { .withContext('Expected the aria-labelledby to match the title id.') .toBe(title.id); })); + + it('should add correct css class according to given [align] input in [mat-dialog-actions]', () => { + let actions = overlayContainerElement.querySelector('mat-dialog-actions')!; + + expect(actions) + .withContext('Expected action buttons to not have class mat-dialog-actions-align-center') + .not.toHaveClass('mat-dialog-actions-align-center'); + + expect(actions) + .withContext('Expected action buttons to have class mat-dialog-actions-align-end') + .toHaveClass('mat-dialog-actions-align-end'); + }); } }); @@ -1828,8 +1849,8 @@ describe('MatDialog with a parent MatDialog', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatDialogModule, DialogTestModule], - declarations: [ComponentThatProvidesMatDialog], + imports: [MatDialogModule, NoopAnimationsModule], + declarations: [ComponentThatProvidesMatDialog, DirectiveWithViewContainer], providers: [ { provide: OverlayContainer, @@ -1942,8 +1963,9 @@ describe('MatDialog with default options', () => { }; TestBed.configureTestingModule({ - imports: [MatDialogModule, DialogTestModule], + imports: [MatDialogModule, NoopAnimationsModule], providers: [{provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: defaultConfig}], + declarations: [ComponentWithChildViewContainer, DirectiveWithViewContainer], }); TestBed.compileComponents(); @@ -2009,7 +2031,8 @@ describe('MatDialog with animations enabled', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatDialogModule, DialogTestModule, BrowserAnimationsModule], + imports: [MatDialogModule, BrowserAnimationsModule], + declarations: [ComponentWithChildViewContainer, DirectiveWithViewContainer], }); TestBed.compileComponents(); @@ -2105,7 +2128,7 @@ class PizzaMsg { template: `

This is the title

Lorem ipsum dolor sit amet. - + +
Section 2
@@ -482,7 +491,9 @@ export function runHarnessTests( `, }) -class ListHarnessTest {} +class ListHarnessTest { + disableThirdItem = false; +} @Component({ template: ` @@ -498,7 +509,10 @@ class ListHarnessTest {} Item 2 - +
Section 2
@@ -508,6 +522,7 @@ class ListHarnessTest {} }) class ActionListHarnessTest { lastClicked: string; + disableThirdItem = false; } @Component({ @@ -524,7 +539,11 @@ class ActionListHarnessTest { Item 2 - Item 3 + Item 3
Section 2
@@ -534,6 +553,7 @@ class ActionListHarnessTest { }) class NavListHarnessTest { lastClicked: string; + disableThirdItem = false; onClick(event: Event, value: string) { event.preventDefault(); @@ -555,7 +575,7 @@ class NavListHarnessTest { Item 2 - Item 3 + Item 3
Section 2
@@ -564,7 +584,7 @@ class NavListHarnessTest { `, }) class SelectionListHarnessTest { - disableItem3 = false; + disableThirdItem = false; } class TestItemContentHarness extends ComponentHarness { diff --git a/src/material/menu/menu-content.ts b/src/material/menu/menu-content.ts index 1510ec0e9c55..d3f2f9753002 100644 --- a/src/material/menu/menu-content.ts +++ b/src/material/menu/menu-content.ts @@ -37,6 +37,20 @@ export abstract class _MatMenuContentBase implements OnDestroy { /** Emits when the menu content has been attached. */ readonly _attached = new Subject(); + /** + * @deprecated `changeDetectorRef` is now a required parameter. + * @breaking-change 9.0.0 + */ + constructor( + template: TemplateRef, + componentFactoryResolver: ComponentFactoryResolver, + appRef: ApplicationRef, + injector: Injector, + viewContainerRef: ViewContainerRef, + document: any, + changeDetectorRef?: ChangeDetectorRef, + ); + constructor( private _template: TemplateRef, private _componentFactoryResolver: ComponentFactoryResolver, @@ -80,10 +94,7 @@ export abstract class _MatMenuContentBase implements OnDestroy { // not be updated by Angular. By explicitly marking for check here, we tell Angular that // it needs to check for new menu items and update the `@ContentChild` in `MatMenu`. // @breaking-change 9.0.0 Make change detector ref required - if (this._changeDetectorRef) { - this._changeDetectorRef.markForCheck(); - } - + this._changeDetectorRef?.markForCheck(); this._portal.attach(this._outlet, context); this._attached.next(); } diff --git a/src/material/menu/menu-errors.ts b/src/material/menu/menu-errors.ts index 16a855a38e75..6027d4e3da5d 100644 --- a/src/material/menu/menu-errors.ts +++ b/src/material/menu/menu-errors.ts @@ -6,18 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -/** - * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance - * @docs-private - */ -export function throwMatMenuMissingError() { - throw Error(`matMenuTriggerFor: must pass in an mat-menu instance. - - Example: - - `); -} - /** * Throws an exception for the case when menu's x-position value isn't valid. * In other words, it doesn't match 'before' or 'after'. diff --git a/src/material/menu/menu-item.ts b/src/material/menu/menu-item.ts index c94c292866cc..d9e903b7aa81 100644 --- a/src/material/menu/menu-item.ts +++ b/src/material/menu/menu-item.ts @@ -7,7 +7,6 @@ */ import {FocusableOption, FocusMonitor, FocusOrigin} from '@angular/cdk/a11y'; -import {BooleanInput} from '@angular/cdk/coercion'; import { ChangeDetectionStrategy, Component, @@ -17,7 +16,6 @@ import { Inject, Optional, Input, - HostListener, AfterViewInit, ChangeDetectorRef, } from '@angular/core'; @@ -51,6 +49,8 @@ const _MatMenuItemBase = mixinDisableRipple(mixinDisabled(class {})); '[attr.aria-disabled]': 'disabled.toString()', '[attr.disabled]': 'disabled || null', 'class': 'mat-focus-indicator', + '(click)': '_checkDisabled($event)', + '(mouseenter)': '_handleMouseEnter()', }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, @@ -75,27 +75,27 @@ export class MatMenuItem /** Whether the menu item acts as a trigger for a sub-menu. */ _triggersSubmenu: boolean = false; + /** + * @deprecated `_document`, `changeDetectorRef` and `focusMonitor` to become required. + * @breaking-change 12.0.0 + */ + constructor( + elementRef: ElementRef, + document?: any, + focusMonitor?: FocusMonitor, + parentMenu?: MatMenuPanel, + changeDetectorRef?: ChangeDetectorRef, + ); + constructor( private _elementRef: ElementRef, - /** - * @deprecated `_document` parameter is no longer being used and will be removed. - * @breaking-change 12.0.0 - */ - @Inject(DOCUMENT) _document?: any, + @Inject(DOCUMENT) private _document?: any, private _focusMonitor?: FocusMonitor, @Inject(MAT_MENU_PANEL) @Optional() public _parentMenu?: MatMenuPanel, - /** - * @deprecated `_changeDetectorRef` to become a required parameter. - * @breaking-change 14.0.0 - */ private _changeDetectorRef?: ChangeDetectorRef, ) { - // @breaking-change 8.0.0 make `_focusMonitor` and `document` required params. super(); - - if (_parentMenu && _parentMenu.addItem) { - _parentMenu.addItem(this); - } + _parentMenu?.addItem?.(this); } /** Focuses the menu item. */ @@ -142,12 +142,6 @@ export class MatMenuItem } /** Prevents the default element actions if it is disabled. */ - // We have to use a `HostListener` here in order to support both Ivy and ViewEngine. - // In Ivy the `host` bindings will be merged when this class is extended, whereas in - // ViewEngine they're overwritten. - // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('click', ['$event']) _checkDisabled(event: Event): void { if (this.disabled) { event.preventDefault(); @@ -156,12 +150,6 @@ export class MatMenuItem } /** Emits to the hover stream. */ - // We have to use a `HostListener` here in order to support both Ivy and ViewEngine. - // In Ivy the `host` bindings will be merged when this class is extended, whereas in - // ViewEngine they're overwritten. - // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default. - // tslint:disable-next-line:no-host-decorator-in-concrete - @HostListener('mouseenter') _handleMouseEnter() { this._hovered.next(this); } @@ -183,11 +171,12 @@ export class MatMenuItem // We need to mark this for check for the case where the content is coming from a // `matMenuContent` whose change detection tree is at the declaration position, // not the insertion position. See #23175. - // @breaking-change 14.0.0 Remove null check for `_changeDetectorRef`. + // @breaking-change 12.0.0 Remove null check for `_changeDetectorRef`. this._highlighted = isHighlighted; this._changeDetectorRef?.markForCheck(); } - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_disableRipple: BooleanInput; + _hasFocus(): boolean { + return this._document && this._document.activeElement === this._getHostElement(); + } } diff --git a/src/material/menu/menu-trigger.ts b/src/material/menu/menu-trigger.ts index a046af2c4eb4..50b3903c6598 100644 --- a/src/material/menu/menu-trigger.ts +++ b/src/material/menu/menu-trigger.ts @@ -29,11 +29,10 @@ import { Directive, ElementRef, EventEmitter, - HostBinding, - HostListener, Inject, InjectionToken, Input, + NgZone, OnDestroy, Optional, Output, @@ -44,7 +43,7 @@ import {normalizePassiveListenerOptions} from '@angular/cdk/platform'; import {asapScheduler, merge, Observable, of as observableOf, Subscription} from 'rxjs'; import {delay, filter, take, takeUntil} from 'rxjs/operators'; import {_MatMenuBase, MenuCloseReason} from './menu'; -import {throwMatMenuMissingError, throwMatMenuRecursiveError} from './menu-errors'; +import {throwMatMenuRecursiveError} from './menu-errors'; import {MatMenuItem} from './menu-item'; import {MAT_MENU_PANEL, MatMenuPanel} from './menu-panel'; import {MenuPositionX, MenuPositionY} from './menu-positions'; @@ -66,7 +65,11 @@ export const MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = { useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY, }; -/** Default top padding of the menu panel. */ +/** + * Default top padding of the menu panel. + * @deprecated No longer being used. Will be removed. + * @breaking-change 15.0.0 + */ export const MENU_PANEL_TOP_PADDING = 8; /** Options for binding a passive event listener. */ @@ -74,7 +77,16 @@ const passiveEventListenerOptions = normalizePassiveListenerOptions({passive: tr // TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors -@Directive() +@Directive({ + host: { + '[attr.aria-haspopup]': 'menu ? "menu" : null', + '[attr.aria-expanded]': 'menuOpen || null', + '[attr.aria-controls]': 'menuOpen ? menu.panelId : null', + '(click)': '_handleClick($event)', + '(mousedown)': '_handleMousedown($event)', + '(keydown)': '_handleKeydown($event)', + }, +}) export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy { private _portal: TemplatePortal; private _overlayRef: OverlayRef | null = null; @@ -90,6 +102,12 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy */ private _parentMaterialMenu: _MatMenuBase | undefined; + /** + * Cached value of the padding of the parent menu panel. + * Used to offset sub-menus to compensate for the padding. + */ + private _parentInnerPadding: number | undefined; + /** * Handles touch start events on the trigger. * Needs to be an arrow function so we can easily use addEventListener and removeEventListener. @@ -104,40 +122,24 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy // the first item of the list when the menu is opened via the keyboard _openedBy: Exclude | undefined = undefined; - @HostBinding('attr.aria-expanded') - // Need tp use getter for HostBinding - // tslint:disable-next-line:no-private-getters - get _ariaExpanded() { - return this.menuOpen || null; - } - - @HostBinding('attr.aria-controls') - // Need tp use getter for HostBinding - // tslint:disable-next-line:no-private-getters - get _ariaControl() { - return this.menuOpen ? this.menu.panelId : null; - } - - @HostBinding('attr.aria-haspopup') _ariaHaspopup = true; - /** * @deprecated * @breaking-change 8.0.0 */ @Input('mat-menu-trigger-for') - get _deprecatedMatMenuTriggerFor(): MatMenuPanel { + get _deprecatedMatMenuTriggerFor(): MatMenuPanel | null { return this.menu; } - set _deprecatedMatMenuTriggerFor(v: MatMenuPanel) { + set _deprecatedMatMenuTriggerFor(v: MatMenuPanel | null) { this.menu = v; } /** References the menu instance that the trigger is associated with. */ @Input('matMenuTriggerFor') - get menu() { + get menu(): MatMenuPanel | null { return this._menu; } - set menu(menu: MatMenuPanel) { + set menu(menu: MatMenuPanel | null) { if (menu === this._menu) { return; } @@ -160,7 +162,7 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy }); } } - private _menu: MatMenuPanel; + private _menu: MatMenuPanel | null; /** Data to be passed along to any lazily-rendered content. */ @Input('matMenuTriggerData') menuData: any; @@ -194,6 +196,36 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy // tslint:disable-next-line:no-output-on-prefix @Output() readonly onMenuClose: EventEmitter = this.menuClosed; + /** + * @deprecated `focusMonitor` will become a required parameter. + * @breaking-change 8.0.0 + */ + constructor( + overlay: Overlay, + element: ElementRef, + viewContainerRef: ViewContainerRef, + scrollStrategy: any, + parentMenu: MatMenuPanel, + menuItemInstance: MatMenuItem, + dir: Directionality, + focusMonitor?: FocusMonitor | null, + ); + + /** + * @deprecated `ngZone` will become a required parameter. + * @breaking-change 15.0.0 + */ + constructor( + overlay: Overlay, + element: ElementRef, + viewContainerRef: ViewContainerRef, + scrollStrategy: any, + parentMenu: MatMenuPanel, + menuItemInstance: MatMenuItem, + dir: Directionality, + focusMonitor: FocusMonitor, + ); + constructor( private _overlay: Overlay, private _element: ElementRef, @@ -204,9 +236,8 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy // tslint:disable-next-line: lightweight-tokens @Optional() @Self() private _menuItemInstance: MatMenuItem, @Optional() private _dir: Directionality, - // TODO(crisbeto): make the _focusMonitor required when doing breaking changes. - // @breaking-change 8.0.0 - private _focusMonitor?: FocusMonitor, + private _focusMonitor: FocusMonitor | null, + private _ngZone?: NgZone, ) { this._scrollStrategy = scrollStrategy; this._parentMaterialMenu = parentMenu instanceof _MatMenuBase ? parentMenu : undefined; @@ -223,7 +254,6 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy } ngAfterContentInit() { - this._checkMenu(); this._handleHover(); } @@ -266,35 +296,42 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy /** Opens the menu. */ openMenu(): void { - if (this._menuOpen) { + const menu = this.menu; + + if (this._menuOpen || !menu) { return; } - this._checkMenu(); - - const overlayRef = this._createOverlay(); + const overlayRef = this._createOverlay(menu); const overlayConfig = overlayRef.getConfig(); + const positionStrategy = overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy; - this._setPosition(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy); + this._setPosition(menu, positionStrategy); overlayConfig.hasBackdrop = - this.menu.hasBackdrop == null ? !this.triggersSubmenu() : this.menu.hasBackdrop; - overlayRef.attach(this._getPortal()); + menu.hasBackdrop == null ? !this.triggersSubmenu() : menu.hasBackdrop; + overlayRef.attach(this._getPortal(menu)); - if (this.menu.lazyContent) { - this.menu.lazyContent.attach(this.menuData); + if (menu.lazyContent) { + menu.lazyContent.attach(this.menuData); } this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu()); - this._initMenu(); + this._initMenu(menu); - if (this.menu instanceof _MatMenuBase) { - this.menu._startAnimation(); + if (menu instanceof _MatMenuBase) { + menu._startAnimation(); + menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => { + // Re-adjust the position without locking when the amount of items + // changes so that the overlay is allowed to pick a new optimal position. + positionStrategy.withLockedPosition(false).reapplyLastPosition(); + positionStrategy.withLockedPosition(true); + }); } } /** Closes the menu. */ closeMenu(): void { - this.menu.close.emit(); + this.menu?.close.emit(); } /** @@ -358,10 +395,7 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy } } else { this._setIsMenuOpen(false); - - if (menu.lazyContent) { - menu.lazyContent.detach(); - } + menu?.lazyContent?.detach(); } } @@ -369,26 +403,26 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy * This method sets the menu state to open and focuses the first item if * the menu was opened via the keyboard. */ - private _initMenu(): void { - this.menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined; - this.menu.direction = this.dir; - this._setMenuElevation(); - this.menu.focusFirstItem(this._openedBy || 'program'); + private _initMenu(menu: MatMenuPanel): void { + menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined; + menu.direction = this.dir; + this._setMenuElevation(menu); + menu.focusFirstItem(this._openedBy || 'program'); this._setIsMenuOpen(true); } /** Updates the menu elevation based on the amount of parent menus that it has. */ - private _setMenuElevation(): void { - if (this.menu.setElevation) { + private _setMenuElevation(menu: MatMenuPanel): void { + if (menu.setElevation) { let depth = 0; - let parentMenu = this.menu.parentMenu; + let parentMenu = menu.parentMenu; while (parentMenu) { depth++; parentMenu = parentMenu.parentMenu; } - this.menu.setElevation(depth); + menu.setElevation(depth); } } @@ -402,24 +436,17 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy } } - /** - * This method checks that a valid instance of MatMenu has been passed into - * matMenuTriggerFor. If not, an exception is thrown. - */ - private _checkMenu() { - if (!this.menu && (typeof ngDevMode === 'undefined' || ngDevMode)) { - throwMatMenuMissingError(); - } - } - /** * This method creates the overlay from the provided menu's template and saves its * OverlayRef so that it can be attached to the DOM when openMenu is called. */ - private _createOverlay(): OverlayRef { + private _createOverlay(menu: MatMenuPanel): OverlayRef { if (!this._overlayRef) { - const config = this._getOverlayConfig(); - this._subscribeToPositions(config.positionStrategy as FlexibleConnectedPositionStrategy); + const config = this._getOverlayConfig(menu); + this._subscribeToPositions( + menu, + config.positionStrategy as FlexibleConnectedPositionStrategy, + ); this._overlayRef = this._overlay.create(config); // Consume the `keydownEvents` in order to prevent them from going to another overlay. @@ -435,7 +462,7 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy * This method builds the configuration object needed to create the overlay, the OverlayState. * @returns OverlayConfig */ - private _getOverlayConfig(): OverlayConfig { + private _getOverlayConfig(menu: MatMenuPanel): OverlayConfig { return new OverlayConfig({ positionStrategy: this._overlay .position() @@ -443,8 +470,8 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy .withLockedPosition() .withGrowAfterOpen() .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'), - backdropClass: this.menu.backdropClass || 'cdk-overlay-transparent-backdrop', - panelClass: this.menu.overlayPanelClass, + backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop', + panelClass: menu.overlayPanelClass, scrollStrategy: this._scrollStrategy(), direction: this._dir, }); @@ -455,13 +482,20 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy * on the menu based on the new position. This ensures the animation origin is always * correct, even if a fallback position is used for the overlay. */ - private _subscribeToPositions(position: FlexibleConnectedPositionStrategy): void { - if (this.menu.setPositionClasses) { + private _subscribeToPositions(menu: MatMenuPanel, position: FlexibleConnectedPositionStrategy) { + if (menu.setPositionClasses) { position.positionChanges.subscribe(change => { const posX: MenuPositionX = change.connectionPair.overlayX === 'start' ? 'after' : 'before'; const posY: MenuPositionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above'; - this.menu.setPositionClasses!(posX, posY); + // @breaking-change 15.0.0 Remove null check for `ngZone`. + // `positionChanges` fires outside of the `ngZone` and `setPositionClasses` might be + // updating something in the view so we need to bring it back in. + if (this._ngZone) { + this._ngZone.run(() => menu.setPositionClasses!(posX, posY)); + } else { + menu.setPositionClasses!(posX, posY); + } }); } } @@ -471,12 +505,12 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy * so the overlay connects with the trigger correctly. * @param positionStrategy Strategy whose position to update. */ - private _setPosition(positionStrategy: FlexibleConnectedPositionStrategy) { + private _setPosition(menu: MatMenuPanel, positionStrategy: FlexibleConnectedPositionStrategy) { let [originX, originFallbackX]: HorizontalConnectionPos[] = - this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end']; + menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end']; let [overlayY, overlayFallbackY]: VerticalConnectionPos[] = - this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom']; + menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom']; let [originY, originFallbackY] = [overlayY, overlayFallbackY]; let [overlayX, overlayFallbackX] = [originX, originFallbackX]; @@ -485,10 +519,18 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy if (this.triggersSubmenu()) { // When the menu is a sub-menu, it should always align itself // to the edges of the trigger, instead of overlapping it. - overlayFallbackX = originX = this.menu.xPosition === 'before' ? 'start' : 'end'; + overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end'; originFallbackX = overlayX = originX === 'end' ? 'start' : 'end'; - offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING; - } else if (!this.menu.overlapTrigger) { + + if (this._parentMaterialMenu) { + if (this._parentInnerPadding == null) { + const firstItem = this._parentMaterialMenu.items.first; + this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0; + } + + offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding; + } + } else if (!menu.overlapTrigger) { originY = overlayY === 'top' ? 'bottom' : 'top'; originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top'; } @@ -529,7 +571,6 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy } /** Handles mouse presses on the trigger. */ - @HostListener('mousedown', ['$event']) _handleMousedown(event: MouseEvent): void { if (!isFakeMousedownFromScreenReader(event)) { // Since right or middle button clicks won't trigger the `click` event, @@ -546,7 +587,6 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy } /** Handles key presses on the trigger. */ - @HostListener('keydown', ['$event']) _handleKeydown(event: KeyboardEvent): void { const keyCode = event.keyCode; @@ -566,7 +606,6 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy } /** Handles click events on the trigger. */ - @HostListener('click', ['$event']) _handleClick(event: MouseEvent): void { if (this.triggersSubmenu()) { // Stop event propagation to avoid closing the parent menu. @@ -612,12 +651,12 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy } /** Gets the portal that should be attached to the overlay. */ - private _getPortal(): TemplatePortal { + private _getPortal(menu: MatMenuPanel): TemplatePortal { // Note that we can avoid this check by keeping the portal on the menu panel. // While it would be cleaner, we'd have to introduce another required method on // `MatMenuPanel`, making it harder to consume. - if (!this._portal || this._portal.templateRef !== this.menu.templateRef) { - this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef); + if (!this._portal || this._portal.templateRef !== menu.templateRef) { + this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef); } return this._portal; diff --git a/src/material/menu/menu.e2e.spec.ts b/src/material/menu/menu.e2e.spec.ts index 45e5466798fe..64bd7a9daa3d 100644 --- a/src/material/menu/menu.e2e.spec.ts +++ b/src/material/menu/menu.e2e.spec.ts @@ -1,4 +1,4 @@ -import {browser, by, element, ExpectedConditions, Key, protractor} from 'protractor'; +import {browser, by, element, ExpectedConditions, Key} from 'protractor'; import { expectAlignedWith, expectFocusOn, @@ -135,7 +135,8 @@ describe('menu', () => { await pressKeys(Key.TAB, Key.ENTER); await expectToExist(menuSelector); - await pressKeys(protractor.Key.chord(Key.SHIFT, Key.TAB)); + // Press SHIFT+TAB, but make sure to release SHIFT again. + await pressKeys(Key.SHIFT, Key.TAB, Key.SHIFT); await expectToExist(menuSelector, false); }); @@ -149,13 +150,14 @@ describe('menu', () => { }); it('should focus before and after trigger when tabbing past items', async () => { - let shiftTab = protractor.Key.chord(Key.SHIFT, Key.TAB); + // Press SHIFT+TAB, but make sure to release SHIFT again. + let shiftTab = [Key.SHIFT, Key.TAB, Key.SHIFT]; await pressKeys(Key.ENTER, Key.TAB); await expectFocusOn(page.triggerTwo()); // navigate back to trigger - await pressKeys(shiftTab, Key.ENTER, shiftTab); + await pressKeys(...shiftTab, Key.ENTER, ...shiftTab); await expectFocusOn(page.start()); }); }); diff --git a/src/material/menu/menu.scss b/src/material/menu/menu.scss index 353986269014..bbb3c57510d6 100644 --- a/src/material/menu/menu.scss +++ b/src/material/menu/menu.scss @@ -22,6 +22,10 @@ mat-menu { // collapse it to zero when they scroll away. min-height: menu-common.$item-height + $vertical-padding * 2; + // Nothing in CSS depends upon this, but we need it so that the `offsetParent` in JS is the + // menu rather than the overlay panel. This comes into play when we read the `offsetTop`. + position: relative; + // Prevent users from interacting with the panel while it's animating. Note that // people won't be able to click through it, because the overlay pane will catch the click. // This fixes the following issues: diff --git a/src/material/menu/menu.spec.ts b/src/material/menu/menu.spec.ts index 0848e63c9a29..8dc06ec502f4 100644 --- a/src/material/menu/menu.spec.ts +++ b/src/material/menu/menu.spec.ts @@ -11,7 +11,7 @@ import { TAB, } from '@angular/cdk/keycodes'; import {Overlay, OverlayContainer} from '@angular/cdk/overlay'; -import {ScrollDispatcher} from '@angular/cdk/scrolling'; +import {ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling'; import { createKeyboardEvent, createMouseEvent, @@ -52,11 +52,14 @@ import { MenuPositionX, MenuPositionY, } from './index'; -import {MAT_MENU_SCROLL_STRATEGY, MENU_PANEL_TOP_PADDING} from './menu-trigger'; +import {MAT_MENU_SCROLL_STRATEGY} from './menu-trigger'; + +const MENU_PANEL_TOP_PADDING = 8; describe('MatMenu', () => { let overlayContainerElement: HTMLElement; let focusMonitor: FocusMonitor; + let viewportRuler: ViewportRuler; function createComponent( component: Type, @@ -71,6 +74,7 @@ describe('MatMenu', () => { overlayContainerElement = TestBed.inject(OverlayContainer).getContainerElement(); focusMonitor = TestBed.inject(FocusMonitor); + viewportRuler = TestBed.inject(ViewportRuler); const fixture = TestBed.createComponent(component); window.scroll(0, 0); return fixture; @@ -87,6 +91,19 @@ describe('MatMenu', () => { ); })); + it('should set aria-haspopup based on whether a menu is assigned', fakeAsync(() => { + const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + fixture.detectChanges(); + const triggerElement = fixture.componentInstance.triggerEl.nativeElement; + + expect(triggerElement.getAttribute('aria-haspopup')).toBe('menu'); + + fixture.componentInstance.trigger.menu = null; + fixture.detectChanges(); + + expect(triggerElement.hasAttribute('aria-haspopup')).toBe(false); + })); + it('should open the menu as an idempotent operation', fakeAsync(() => { const fixture = createComponent(SimpleMenu, [], [FakeIcon]); fixture.detectChanges(); @@ -127,6 +144,14 @@ describe('MatMenu', () => { expect(overlayContainerElement.querySelector('.cdk-overlay-backdrop')).toBeFalsy(); })); + it('should set the correct aria-haspopup value on the trigger element', fakeAsync(() => { + const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + fixture.detectChanges(); + const triggerElement = fixture.componentInstance.triggerEl.nativeElement; + + expect(triggerElement.getAttribute('aria-haspopup')).toBe('menu'); + })); + it('should be able to remove the backdrop on repeat openings', fakeAsync(() => { const fixture = createComponent(SimpleMenu, [], [FakeIcon]); fixture.detectChanges(); @@ -236,6 +261,26 @@ describe('MatMenu', () => { tick(500); })); + it('should move focus to another item if the active item is destroyed', fakeAsync(() => { + const fixture = createComponent(MenuWithRepeatedItems, [], [FakeIcon]); + fixture.detectChanges(); + const triggerEl = fixture.componentInstance.triggerEl.nativeElement; + + triggerEl.click(); + fixture.detectChanges(); + tick(500); + + const items = overlayContainerElement.querySelectorAll('.mat-menu-panel .mat-menu-item'); + + expect(document.activeElement).toBe(items[0]); + + fixture.componentInstance.items.shift(); + fixture.detectChanges(); + tick(500); + + expect(document.activeElement).toBe(items[1]); + })); + it('should be able to set a custom class on the backdrop', fakeAsync(() => { const fixture = createComponent(SimpleMenu, [], [FakeIcon]); @@ -328,6 +373,7 @@ describe('MatMenu', () => { // Add 50 items to make the menu scrollable fixture.componentInstance.extraItems = new Array(50).fill('Hello there'); fixture.detectChanges(); + tick(50); const triggerEl = fixture.componentInstance.triggerEl.nativeElement; dispatchFakeEvent(triggerEl, 'mousedown'); @@ -428,6 +474,7 @@ describe('MatMenu', () => { const panel = overlayContainerElement.querySelector('.mat-menu-panel')!; const event = createKeyboardEvent('keydown', ESCAPE); + spyOn(event, 'stopPropagation').and.callThrough(); dispatchEvent(panel, event); fixture.detectChanges(); @@ -435,6 +482,7 @@ describe('MatMenu', () => { expect(overlayContainerElement.textContent).toBe(''); expect(event.defaultPrevented).toBe(true); + expect(event.stopPropagation).toHaveBeenCalled(); })); it('should not close the menu when pressing ESCAPE with a modifier', fakeAsync(() => { @@ -823,20 +871,6 @@ describe('MatMenu', () => { expect(triggerEl.hasAttribute('aria-expanded')).toBe(false); })); - it('should throw the correct error if the menu is not defined after init', fakeAsync(() => { - const fixture = createComponent(SimpleMenu, [], [FakeIcon]); - fixture.detectChanges(); - - fixture.componentInstance.trigger.menu = null!; - fixture.detectChanges(); - - expect(() => { - fixture.componentInstance.trigger.openMenu(); - fixture.detectChanges(); - tick(500); - }).toThrowError(/must pass in an mat-menu instance/); - })); - it('should throw if assigning a menu that contains the trigger', fakeAsync(() => { expect(() => { const fixture = createComponent(InvalidRecursiveMenu, [], [FakeIcon]); @@ -1135,6 +1169,28 @@ describe('MatMenu', () => { expect(panel.classList).toContain('mat-menu-after'); })); + it('should keep the panel in the viewport when more items are added while open', () => { + const fixture = createComponent(SimpleMenu, [], [FakeIcon]); + fixture.detectChanges(); + + const triggerEl = fixture.componentInstance.triggerEl.nativeElement; + triggerEl.style.position = 'absolute'; + triggerEl.style.left = '200px'; + triggerEl.style.bottom = '300px'; + triggerEl.click(); + fixture.detectChanges(); + + const panel = overlayContainerElement.querySelector('.mat-menu-panel')!; + const viewportHeight = viewportRuler.getViewportSize().height; + let panelRect = panel.getBoundingClientRect(); + expect(Math.floor(panelRect.bottom)).toBeLessThan(viewportHeight); + + fixture.componentInstance.extraItems = new Array(50).fill('Hello there'); + fixture.detectChanges(); + panelRect = panel.getBoundingClientRect(); + expect(Math.floor(panelRect.bottom)).toBe(viewportHeight); + }); + describe('lazy rendering', () => { it('should be able to render the menu content lazily', fakeAsync(() => { const fixture = createComponent(SimpleLazyMenu); @@ -1300,6 +1356,29 @@ describe('MatMenu', () => { expect(panel.classList).not.toContain('mat-menu-above'); })); + it('should update the position classes if the window is resized', fakeAsync(() => { + trigger.style.position = 'fixed'; + trigger.style.top = '300px'; + fixture.componentInstance.yPosition = 'above'; + fixture.componentInstance.trigger.openMenu(); + fixture.detectChanges(); + tick(500); + + const panel = overlayContainerElement.querySelector('.mat-menu-panel') as HTMLElement; + + expect(panel.classList).toContain('mat-menu-above'); + expect(panel.classList).not.toContain('mat-menu-below'); + + trigger.style.top = '0'; + dispatchFakeEvent(window, 'resize'); + fixture.detectChanges(); + tick(500); + fixture.detectChanges(); + + expect(panel.classList).not.toContain('mat-menu-above'); + expect(panel.classList).toContain('mat-menu-below'); + })); + it('should be able to update the position after the first open', fakeAsync(() => { trigger.style.position = 'fixed'; trigger.style.top = '200px'; @@ -2051,7 +2130,7 @@ describe('MatMenu', () => { .toBe(true); })); - it('should restore focus to a nested trigger when navgating via the keyboard', fakeAsync(() => { + it('should restore focus to a nested trigger when navigating via the keyboard', fakeAsync(() => { compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); fixture.detectChanges(); @@ -2072,7 +2151,7 @@ describe('MatMenu', () => { compileTestComponent(); instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.left = '50px'; - instance.rootTriggerEl.nativeElement.style.top = '50px'; + instance.rootTriggerEl.nativeElement.style.top = '200px'; instance.rootTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -2082,7 +2161,7 @@ describe('MatMenu', () => { tick(500); const triggerRect = overlay.querySelector('#level-one-trigger')!.getBoundingClientRect(); - const panelRect = overlay.querySelectorAll('.cdk-overlay-pane')[1].getBoundingClientRect(); + const panelRect = overlay.querySelectorAll('.mat-menu-panel')[1].getBoundingClientRect(); expect(Math.round(triggerRect.right)).toBe(Math.round(panelRect.left)); expect(Math.round(triggerRect.top)).toBe(Math.round(panelRect.top) + MENU_PANEL_TOP_PADDING); @@ -2092,7 +2171,7 @@ describe('MatMenu', () => { compileTestComponent(); instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.right = '10px'; - instance.rootTriggerEl.nativeElement.style.top = '50%'; + instance.rootTriggerEl.nativeElement.style.top = '200px'; instance.rootTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -2102,7 +2181,7 @@ describe('MatMenu', () => { tick(500); const triggerRect = overlay.querySelector('#level-one-trigger')!.getBoundingClientRect(); - const panelRect = overlay.querySelectorAll('.cdk-overlay-pane')[1].getBoundingClientRect(); + const panelRect = overlay.querySelectorAll('.mat-menu-panel')[1].getBoundingClientRect(); expect(Math.round(triggerRect.left)).toBe(Math.round(panelRect.right)); expect(Math.round(triggerRect.top)).toBe(Math.round(panelRect.top) + MENU_PANEL_TOP_PADDING); @@ -2112,7 +2191,7 @@ describe('MatMenu', () => { compileTestComponent('rtl'); instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.left = '50%'; - instance.rootTriggerEl.nativeElement.style.top = '50%'; + instance.rootTriggerEl.nativeElement.style.top = '200px'; instance.rootTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -2122,7 +2201,7 @@ describe('MatMenu', () => { tick(500); const triggerRect = overlay.querySelector('#level-one-trigger')!.getBoundingClientRect(); - const panelRect = overlay.querySelectorAll('.cdk-overlay-pane')[1].getBoundingClientRect(); + const panelRect = overlay.querySelectorAll('.mat-menu-panel')[1].getBoundingClientRect(); expect(Math.round(triggerRect.left)).toBe(Math.round(panelRect.right)); expect(Math.round(triggerRect.top)).toBe(Math.round(panelRect.top) + MENU_PANEL_TOP_PADDING); @@ -2132,7 +2211,7 @@ describe('MatMenu', () => { compileTestComponent('rtl'); instance.rootTriggerEl.nativeElement.style.position = 'fixed'; instance.rootTriggerEl.nativeElement.style.left = '10px'; - instance.rootTriggerEl.nativeElement.style.top = '50%'; + instance.rootTriggerEl.nativeElement.style.top = '200px'; instance.rootTrigger.openMenu(); fixture.detectChanges(); tick(500); @@ -2142,12 +2221,32 @@ describe('MatMenu', () => { tick(500); const triggerRect = overlay.querySelector('#level-one-trigger')!.getBoundingClientRect(); - const panelRect = overlay.querySelectorAll('.cdk-overlay-pane')[1].getBoundingClientRect(); + const panelRect = overlay.querySelectorAll('.mat-menu-panel')[1].getBoundingClientRect(); expect(Math.round(triggerRect.right)).toBe(Math.round(panelRect.left)); expect(Math.round(triggerRect.top)).toBe(Math.round(panelRect.top) + MENU_PANEL_TOP_PADDING); })); + it('should account for custom padding when offsetting the sub-menu', () => { + compileTestComponent(); + instance.rootTriggerEl.nativeElement.style.position = 'fixed'; + instance.rootTriggerEl.nativeElement.style.left = '10px'; + instance.rootTriggerEl.nativeElement.style.top = '200px'; + instance.rootTrigger.openMenu(); + fixture.detectChanges(); + + // Change the padding to something different from the default. + (overlay.querySelector('.mat-menu-content') as HTMLElement).style.padding = '15px 0'; + + instance.levelOneTrigger.openMenu(); + fixture.detectChanges(); + + const triggerRect = overlay.querySelector('#level-one-trigger')!.getBoundingClientRect(); + const panelRect = overlay.querySelectorAll('.mat-menu-panel')[1].getBoundingClientRect(); + + expect(Math.round(triggerRect.top)).toBe(Math.round(panelRect.top) + 15); + }); + it('should close all of the menus when an item is clicked', fakeAsync(() => { compileTestComponent(); instance.rootTriggerEl.nativeElement.click(); @@ -2997,3 +3096,18 @@ class StaticAriaLabelledByMenu {} template: '', }) class StaticAriaDescribedbyMenu {} + +@Component({ + template: ` + + + + + `, +}) +class MenuWithRepeatedItems { + @ViewChild(MatMenuTrigger, {static: false}) trigger: MatMenuTrigger; + @ViewChild('triggerEl', {static: false}) triggerEl: ElementRef; + @ViewChild(MatMenu, {static: false}) menu: MatMenu; + items = ['One', 'Two', 'Three']; +} diff --git a/src/material/menu/menu.ts b/src/material/menu/menu.ts index d65c6e6ace05..fcf0d2fa54d5 100644 --- a/src/material/menu/menu.ts +++ b/src/material/menu/menu.ts @@ -37,6 +37,7 @@ import { ViewChild, ViewEncapsulation, OnInit, + ChangeDetectorRef, } from '@angular/core'; import {merge, Observable, Subject, Subscription} from 'rxjs'; import {startWith, switchMap, take} from 'rxjs/operators'; @@ -109,7 +110,7 @@ export class _MatMenuBase @ContentChildren(MatMenuItem, {descendants: true}) _allItems: QueryList; /** Only the direct descendant menu items. */ - private _directDescendantItems = new QueryList(); + _directDescendantItems = new QueryList(); /** Subscription to tab events on the menu panel */ private _tabSubscription = Subscription.EMPTY; @@ -198,7 +199,7 @@ export class _MatMenuBase get overlapTrigger(): boolean { return this._overlapTrigger; } - set overlapTrigger(value: boolean) { + set overlapTrigger(value: BooleanInput) { this._overlapTrigger = coerceBooleanProperty(value); } private _overlapTrigger: boolean = this._defaultOptions.overlapTrigger; @@ -208,7 +209,7 @@ export class _MatMenuBase get hasBackdrop(): boolean | undefined { return this._hasBackdrop; } - set hasBackdrop(value: boolean | undefined) { + set hasBackdrop(value: BooleanInput) { this._hasBackdrop = coerceBooleanProperty(value); } private _hasBackdrop: boolean | undefined = this._defaultOptions.hasBackdrop; @@ -272,6 +273,8 @@ export class _MatMenuBase private _elementRef: ElementRef, private _ngZone: NgZone, @Inject(MAT_MENU_DEFAULT_OPTIONS) private _defaultOptions: MatMenuDefaultOptions, + // @breaking-change 15.0.0 `_changeDetectorRef` to become a required parameter. + private _changeDetectorRef?: ChangeDetectorRef, ) {} ngOnInit() { @@ -295,6 +298,24 @@ export class _MatMenuBase switchMap(items => merge(...items.map((item: MatMenuItem) => item._focused))), ) .subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem as MatMenuItem)); + + this._directDescendantItems.changes.subscribe((itemsList: QueryList) => { + // Move focus to another item, if the active item is removed from the list. + // We need to debounce the callback, because multiple items might be removed + // in quick succession. + const manager = this._keyManager; + + if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) { + const items = itemsList.toArray(); + const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0)); + + if (items[index] && !items[index].disabled) { + manager.setActiveItem(index); + } else { + manager.setNextItemActive(); + } + } + }); } ngOnDestroy() { @@ -357,7 +378,12 @@ export class _MatMenuBase } manager.onKeydown(event); + return; } + + // Don't allow the event to propagate if we've already handled it, or it may + // end up reaching other overlays that were opened earlier (see #22694). + event.stopPropagation(); } /** @@ -386,7 +412,7 @@ export class _MatMenuBase // Move focus to the menu panel so keyboard events like Escape still work. Also this will // give _some_ feedback to screen readers. if (!manager.activeItem && this._directDescendantItems.length) { - let element = this._directDescendantItems.first._getHostElement().parentElement; + let element = this._directDescendantItems.first!._getHostElement().parentElement; // Because the `mat-menu` is at the DOM insertion point, not inside the overlay, we don't // have a nice way of getting a hold of the menu panel. We can't use a `ViewChild` either @@ -447,6 +473,9 @@ export class _MatMenuBase classes['mat-menu-after'] = posX === 'after'; classes['mat-menu-above'] = posY === 'above'; classes['mat-menu-below'] = posY === 'below'; + + // @breaking-change 15.0.0 Remove null check for `_changeDetectorRef`. + this._changeDetectorRef?.markForCheck(); } /** Starts the enter animation. */ @@ -495,9 +524,6 @@ export class _MatMenuBase this._directDescendantItems.notifyOnChanges(); }); } - - static ngAcceptInputType_overlapTrigger: BooleanInput; - static ngAcceptInputType_hasBackdrop: BooleanInput; } /** @docs-public MatMenu */ @@ -520,11 +546,22 @@ export class MatMenu extends _MatMenuBase { protected override _elevationPrefix = 'mat-elevation-z'; protected override _baseElevation = 4; + /** + * @deprecated `changeDetectorRef` parameter will become a required parameter. + * @breaking-change 15.0.0 + */ + constructor( + elementRef: ElementRef, + ngZone: NgZone, + defaultOptions: MatMenuDefaultOptions, + ); + constructor( elementRef: ElementRef, ngZone: NgZone, @Inject(MAT_MENU_DEFAULT_OPTIONS) defaultOptions: MatMenuDefaultOptions, + changeDetectorRef?: ChangeDetectorRef, ) { - super(elementRef, ngZone, defaultOptions); + super(elementRef, ngZone, defaultOptions, changeDetectorRef); } } diff --git a/src/material/package.json b/src/material/package.json index 49e931621e16..217a88cef08e 100644 --- a/src/material/package.json +++ b/src/material/package.json @@ -49,6 +49,7 @@ "@angular/core": "0.0.0-NG", "@angular/common": "0.0.0-NG", "@angular/forms": "0.0.0-NG", + "@angular/platform-browser": "0.0.0-NG", "rxjs": "0.0.0-RXJS" }, "dependencies": { @@ -67,4 +68,3 @@ }, "sideEffects": false } - diff --git a/src/material/paginator/paginator.html b/src/material/paginator/paginator.html index cb5f42ed0275..4fb3184d6cd5 100644 --- a/src/material/paginator/paginator.html +++ b/src/material/paginator/paginator.html @@ -13,6 +13,8 @@ diff --git a/src/material/paginator/paginator.md b/src/material/paginator/paginator.md index e824c26d1679..ab40df1494e1 100644 --- a/src/material/paginator/paginator.md +++ b/src/material/paginator/paginator.md @@ -16,7 +16,11 @@ any associated data view. The paginator displays a dropdown of page sizes for the user to choose from. The options for this dropdown can be set via `pageSizeOptions` -The current pageSize will always appear in the dropdown, even if it is not included in pageSizeOptions. +The current pageSize will always appear in the dropdown, even if it is not included in +pageSizeOptions. + +If you want to customize some of the optional of the `mat-select` inside the `mat-paginator`, you +can use the `selectConfig` input. ### Internationalization The labels for the paginator can be customized by providing your own instance of `MatPaginatorIntl`. @@ -30,5 +34,5 @@ The paginator uses `role="group"` to semantically group its child controls. You `aria-label` or `aria-labelledby` attribute to `` with a label that describes the content controlled by the pagination control. -You can set the `aria-label` attributes for the button and select controls within the paginator in +You can set the `aria-label` attributes for the button and select controls within the paginator in `MatPaginatorIntl`. diff --git a/src/material/paginator/paginator.spec.ts b/src/material/paginator/paginator.spec.ts index 84bdb4e64b68..eb6a0a5768bf 100644 --- a/src/material/paginator/paginator.spec.ts +++ b/src/material/paginator/paginator.spec.ts @@ -6,7 +6,11 @@ import {ThemePalette} from '@angular/material/core'; import {MatSelect} from '@angular/material/select'; import {By} from '@angular/platform-browser'; import {MatPaginator, MatPaginatorIntl, MatPaginatorModule} from './index'; -import {MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginatorDefaultOptions} from './paginator'; +import { + MAT_PAGINATOR_DEFAULT_OPTIONS, + MatPaginatorDefaultOptions, + MatPaginatorSelectConfig, +} from './paginator'; describe('MatPaginator', () => { function createComponent(type: Type, providers: Provider[] = []): ComponentFixture { @@ -210,6 +214,24 @@ describe('MatPaginator', () => { expect(formField.classList).not.toContain('mat-accent'); }); + it('should be able to pass options to the underlying mat-select', () => { + const fixture = createComponent(MatPaginatorApp); + fixture.detectChanges(); + const select: MatSelect = fixture.debugElement.query(By.directive(MatSelect)).componentInstance; + + expect(select.disableOptionCentering).toBe(false); + expect(select.panelClass).toBeFalsy(); + + fixture.componentInstance.selectConfig = { + disableOptionCentering: true, + panelClass: 'custom-class', + }; + fixture.detectChanges(); + + expect(select.disableOptionCentering).toBe(true); + expect(select.panelClass).toBe('custom-class'); + }); + describe('when showing the first and last button', () => { let fixture: ComponentFixture; let component: MatPaginatorApp; @@ -506,6 +528,13 @@ describe('MatPaginator', () => { const hostElement = fixture.nativeElement.querySelector('mat-paginator'); expect(hostElement.getAttribute('role')).toBe('group'); }); + + it('should handle the page size options input being passed in as readonly array', () => { + const fixture = createComponent(MatPaginatorWithReadonlyOptions); + fixture.detectChanges(); + + expect(fixture.componentInstance.paginator._displayedPageSizeOptions).toEqual([5, 10, 25, 100]); + }); }); function getPreviousButton(fixture: ComponentFixture) { @@ -530,6 +559,7 @@ function getLastButton(fixture: ComponentFixture) { [pageSize]="pageSize" [pageSizeOptions]="pageSizeOptions" [hidePageSize]="hidePageSize" + [selectConfig]="selectConfig" [showFirstLastButtons]="showFirstLastButtons" [length]="length" [color]="color" @@ -548,6 +578,7 @@ class MatPaginatorApp { disabled: boolean; pageEvent = jasmine.createSpy('page event'); color: ThemePalette; + selectConfig: MatPaginatorSelectConfig = {}; @ViewChild(MatPaginator) paginator: MatPaginator; @@ -595,3 +626,14 @@ class MatPaginatorWithoutOptionsApp { class MatPaginatorWithStringValues { @ViewChild(MatPaginator) paginator: MatPaginator; } + +@Component({ + template: ` + + + `, +}) +class MatPaginatorWithReadonlyOptions { + @ViewChild(MatPaginator) paginator: MatPaginator; + pageSizeOptions: readonly number[] = [5, 10, 25, 100]; +} diff --git a/src/material/paginator/paginator.ts b/src/material/paginator/paginator.ts index da80f713d1dc..a1c606f37989 100644 --- a/src/material/paginator/paginator.ts +++ b/src/material/paginator/paginator.ts @@ -89,6 +89,15 @@ export const MAT_PAGINATOR_DEFAULT_OPTIONS = new InjectionToken | {[key: string]: any}; +} + /** * Base class with all of the `MatPaginator` functionality. * @docs-private @@ -116,7 +125,7 @@ export abstract class _MatPaginatorBase< get pageIndex(): number { return this._pageIndex; } - set pageIndex(value: number) { + set pageIndex(value: NumberInput) { this._pageIndex = Math.max(coerceNumberProperty(value), 0); this._changeDetectorRef.markForCheck(); } @@ -127,7 +136,7 @@ export abstract class _MatPaginatorBase< get length(): number { return this._length; } - set length(value: number) { + set length(value: NumberInput) { this._length = coerceNumberProperty(value); this._changeDetectorRef.markForCheck(); } @@ -138,7 +147,7 @@ export abstract class _MatPaginatorBase< get pageSize(): number { return this._pageSize; } - set pageSize(value: number) { + set pageSize(value: NumberInput) { this._pageSize = Math.max(coerceNumberProperty(value), 0); this._updateDisplayedPageSizeOptions(); } @@ -149,7 +158,7 @@ export abstract class _MatPaginatorBase< get pageSizeOptions(): number[] { return this._pageSizeOptions; } - set pageSizeOptions(value: number[]) { + set pageSizeOptions(value: number[] | readonly number[]) { this._pageSizeOptions = (value || []).map(p => coerceNumberProperty(p)); this._updateDisplayedPageSizeOptions(); } @@ -160,7 +169,7 @@ export abstract class _MatPaginatorBase< get hidePageSize(): boolean { return this._hidePageSize; } - set hidePageSize(value: boolean) { + set hidePageSize(value: BooleanInput) { this._hidePageSize = coerceBooleanProperty(value); } private _hidePageSize = false; @@ -170,11 +179,14 @@ export abstract class _MatPaginatorBase< get showFirstLastButtons(): boolean { return this._showFirstLastButtons; } - set showFirstLastButtons(value: boolean) { + set showFirstLastButtons(value: BooleanInput) { this._showFirstLastButtons = coerceBooleanProperty(value); } private _showFirstLastButtons = false; + /** Used to configure the underlying `MatSelect` inside the paginator. */ + @Input() selectConfig: MatPaginatorSelectConfig = {}; + /** Event emitted when the paginator changes the page size or page index. */ @Output() readonly page: EventEmitter = new EventEmitter(); @@ -227,7 +239,7 @@ export abstract class _MatPaginatorBase< } const previousPageIndex = this.pageIndex; - this.pageIndex++; + this.pageIndex = this.pageIndex + 1; this._emitPageEvent(previousPageIndex); } @@ -238,7 +250,7 @@ export abstract class _MatPaginatorBase< } const previousPageIndex = this.pageIndex; - this.pageIndex--; + this.pageIndex = this.pageIndex - 1; this._emitPageEvent(previousPageIndex); } @@ -350,13 +362,6 @@ export abstract class _MatPaginatorBase< length: this.length, }); } - - static ngAcceptInputType_pageIndex: NumberInput; - static ngAcceptInputType_length: NumberInput; - static ngAcceptInputType_pageSize: NumberInput; - static ngAcceptInputType_hidePageSize: BooleanInput; - static ngAcceptInputType_showFirstLastButtons: BooleanInput; - static ngAcceptInputType_disabled: BooleanInput; } /** diff --git a/src/material/progress-bar/progress-bar.md b/src/material/progress-bar/progress-bar.md index 3a909d265521..0516a1192add 100644 --- a/src/material/progress-bar/progress-bar.md +++ b/src/material/progress-bar/progress-bar.md @@ -45,6 +45,6 @@ use the theme's primary color. This can be changed to `'accent'` or `'warn'`. `MatProgressBar` implements the ARIA `role="progressbar"` pattern. By default, the progress bar sets `aria-valuemin` to `0` and `aria-valuemax` to `100`. Avoid changing these values, as this may -cause incompatiblity with some assitive technology. +cause incompatiblity with some assistive technology. Always provide an accessible label via `aria-label` or `aria-labelledby` for each progress bar. diff --git a/src/material/progress-bar/progress-bar.spec.ts b/src/material/progress-bar/progress-bar.spec.ts index c80cb1120613..a2a0b0844d65 100644 --- a/src/material/progress-bar/progress-bar.spec.ts +++ b/src/material/progress-bar/progress-bar.spec.ts @@ -218,6 +218,41 @@ describe('MatProgressBar', () => { expect(progressElement.componentInstance.mode).toBe('buffer'); expect(progressElement.componentInstance.color).toBe('warn'); }); + + it('should update the DOM transform when the value has changed', () => { + const fixture = createComponent(BasicProgressBar); + fixture.detectChanges(); + + const progressElement = fixture.debugElement.query(By.css('mat-progress-bar'))!; + const progressComponent = progressElement.componentInstance; + const primaryBar = progressElement.nativeElement.querySelector('.mat-progress-bar-primary'); + + expect(primaryBar.style.transform).toBe('scale3d(0, 1, 1)'); + + progressComponent.value = 40; + fixture.detectChanges(); + + expect(primaryBar.style.transform).toBe('scale3d(0.4, 1, 1)'); + }); + + it('should update the DOM transform when the bufferValue has changed', () => { + const fixture = createComponent(BasicProgressBar); + fixture.detectChanges(); + + const progressElement = fixture.debugElement.query(By.css('mat-progress-bar'))!; + const progressComponent = progressElement.componentInstance; + const bufferBar = progressElement.nativeElement.querySelector('.mat-progress-bar-buffer'); + + progressComponent.mode = 'buffer'; + fixture.detectChanges(); + + expect(bufferBar.style.transform).toBeFalsy(); + + progressComponent.bufferValue = 40; + fixture.detectChanges(); + + expect(bufferBar.style.transform).toBe('scale3d(0.4, 1, 1)'); + }); }); describe('animation trigger on determinate setting', () => { diff --git a/src/material/progress-bar/progress-bar.ts b/src/material/progress-bar/progress-bar.ts index 3c7c278ca54e..c35b625ab09f 100644 --- a/src/material/progress-bar/progress-bar.ts +++ b/src/material/progress-bar/progress-bar.ts @@ -23,6 +23,7 @@ import { Output, ViewChild, ViewEncapsulation, + ChangeDetectorRef, } from '@angular/core'; import {CanColor, mixinColor, ThemePalette} from '@angular/material/core'; import {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations'; @@ -135,16 +136,20 @@ export class MatProgressBar @Optional() @Inject(MAT_PROGRESS_BAR_DEFAULT_OPTIONS) defaults?: MatProgressBarDefaultOptions, + /** + * @deprecated `_changeDetectorRef` parameter to be made required. + * @breaking-change 11.0.0 + */ + private _changeDetectorRef?: ChangeDetectorRef, ) { super(elementRef); // We need to prefix the SVG reference with the current path, otherwise they won't work // in Safari if the page has a `` tag. Note that we need quotes inside the `url()`, - - // because named route URLs can contain parentheses (see #12338). Also we don't use since - // we can't tell the difference between whether - // the consumer is using the hash location strategy or not, because `Location` normalizes - // both `/#/foo/bar` and `/foo/bar` to the same thing. + // because named route URLs can contain parentheses (see #12338). Also we don't use `Location` + // since we can't tell the difference between whether the consumer is using the hash location + // strategy or not, because `Location` normalizes both `/#/foo/bar` and `/foo/bar` to + // the same thing. const path = location ? location.getPathname().split('#')[0] : ''; this._rectangleFillValue = `url('${path}#${this.progressbarId}')`; this._isNoopAnimation = _animationMode === 'NoopAnimations'; @@ -166,8 +171,11 @@ export class MatProgressBar get value(): number { return this._value; } - set value(v: number) { + set value(v: NumberInput) { this._value = clamp(coerceNumberProperty(v) || 0); + + // @breaking-change 11.0.0 Remove null check for _changeDetectorRef. + this._changeDetectorRef?.markForCheck(); } private _value: number = 0; @@ -178,6 +186,9 @@ export class MatProgressBar } set bufferValue(v: number) { this._bufferValue = clamp(v || 0); + + // @breaking-change 11.0.0 Remove null check for _changeDetectorRef. + this._changeDetectorRef?.markForCheck(); } private _bufferValue: number = 0; @@ -249,8 +260,6 @@ export class MatProgressBar ngOnDestroy() { this._animationEndSubscription.unsubscribe(); } - - static ngAcceptInputType_value: NumberInput; } /** Clamps a value to be between two numbers, by default 0 and 100. */ diff --git a/src/material/progress-spinner/BUILD.bazel b/src/material/progress-spinner/BUILD.bazel index c1535578c6e0..2de0e6ce53c4 100644 --- a/src/material/progress-spinner/BUILD.bazel +++ b/src/material/progress-spinner/BUILD.bazel @@ -22,6 +22,7 @@ ng_module( deps = [ "//src/cdk/coercion", "//src/cdk/platform", + "//src/cdk/scrolling", "//src/material/core", "@npm//@angular/animations", "@npm//@angular/common", diff --git a/src/material/progress-spinner/progress-spinner-module.ts b/src/material/progress-spinner/progress-spinner-module.ts index 50e2fddd90ef..ad512e4d384e 100644 --- a/src/material/progress-spinner/progress-spinner-module.ts +++ b/src/material/progress-spinner/progress-spinner-module.ts @@ -8,11 +8,11 @@ import {NgModule} from '@angular/core'; import {CommonModule} from '@angular/common'; import {MatCommonModule} from '@angular/material/core'; -import {MatProgressSpinner, MatSpinner} from './progress-spinner'; +import {MatProgressSpinner} from './progress-spinner'; @NgModule({ imports: [MatCommonModule, CommonModule], - exports: [MatProgressSpinner, MatSpinner, MatCommonModule], - declarations: [MatProgressSpinner, MatSpinner], + exports: [MatProgressSpinner, MatCommonModule], + declarations: [MatProgressSpinner], }) export class MatProgressSpinnerModule {} diff --git a/src/material/progress-spinner/progress-spinner.html b/src/material/progress-spinner/progress-spinner.html index 29c093050abd..9156f5d44a4c 100644 --- a/src/material/progress-spinner/progress-spinner.html +++ b/src/material/progress-spinner/progress-spinner.html @@ -14,7 +14,8 @@ preserveAspectRatio="xMidYMid meet" focusable="false" [ngSwitch]="mode === 'indeterminate'" - aria-hidden="true"> + aria-hidden="true" + #svg> diff --git a/src/material/slide-toggle/slide-toggle.scss b/src/material/slide-toggle/slide-toggle.scss index 5a68bf0df822..f84cf16a2629 100644 --- a/src/material/slide-toggle/slide-toggle.scss +++ b/src/material/slide-toggle/slide-toggle.scss @@ -121,6 +121,7 @@ $bar-track-width: $bar-width - $thumb-size; height: $thumb-size; width: $thumb-size; border-radius: 50%; + display: block; } // Horizontal bar for the slide-toggle. diff --git a/src/material/slide-toggle/slide-toggle.spec.ts b/src/material/slide-toggle/slide-toggle.spec.ts index 071d81f0728c..fd6e137bed9f 100644 --- a/src/material/slide-toggle/slide-toggle.spec.ts +++ b/src/material/slide-toggle/slide-toggle.spec.ts @@ -318,16 +318,6 @@ describe('MatSlideToggle without forms', () => { expect(document.activeElement).toBe(inputElement); })); - it('should focus on underlying element when the host is focused', fakeAsync(() => { - expect(document.activeElement).not.toBe(inputElement); - - slideToggleElement.focus(); - fixture.detectChanges(); - flush(); - - expect(document.activeElement).toBe(inputElement); - })); - it('should not manually move focus to underlying when focus comes from mouse or touch', inject( [FocusMonitor], (focusMonitor: FocusMonitor) => { @@ -410,13 +400,13 @@ describe('MatSlideToggle without forms', () => { .toBe(5); })); - it('should set the tabindex of the host element to -1', fakeAsync(() => { + it('should remove the tabindex from the host node', fakeAsync(() => { const fixture = TestBed.createComponent(SlideToggleWithTabindexAttr); fixture.detectChanges(); const slideToggle = fixture.debugElement.query(By.directive(MatSlideToggle))!.nativeElement; - expect(slideToggle.getAttribute('tabindex')).toBe('-1'); + expect(slideToggle.hasAttribute('tabindex')).toBe(false); })); it('should remove the tabindex from the host element when disabled', fakeAsync(() => { diff --git a/src/material/slide-toggle/slide-toggle.ts b/src/material/slide-toggle/slide-toggle.ts index 19205094945c..426a9a26ada0 100644 --- a/src/material/slide-toggle/slide-toggle.ts +++ b/src/material/slide-toggle/slide-toggle.ts @@ -7,7 +7,7 @@ */ import {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y'; -import {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion'; +import {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion'; import { AfterContentInit, Attribute, @@ -83,8 +83,8 @@ const _MatSlideToggleBase = mixinTabIndex( host: { 'class': 'mat-slide-toggle', '[id]': 'id', - // Needs to be `-1` so it can still receive programmatic focus. - '[attr.tabindex]': 'disabled ? null : -1', + // Needs to be removed since it causes some a11y issues (see #21266). + '[attr.tabindex]': 'null', '[attr.aria-label]': 'null', '[attr.aria-labelledby]': 'null', '[class.mat-checked]': 'checked', @@ -149,7 +149,7 @@ export class MatSlideToggle get required(): boolean { return this._required; } - set required(value) { + set required(value: BooleanInput) { this._required = coerceBooleanProperty(value); } @@ -158,7 +158,7 @@ export class MatSlideToggle get checked(): boolean { return this._checked; } - set checked(value) { + set checked(value: BooleanInput) { this._checked = coerceBooleanProperty(value); this._changeDetectorRef.markForCheck(); } @@ -198,13 +198,7 @@ export class MatSlideToggle ngAfterContentInit() { this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => { - // Only forward focus manually when it was received programmatically or through the - // keyboard. We should not do this for mouse/touch focus for two reasons: - // 1. It can prevent clicks from landing in Chrome (see #18269). - // 2. They're already handled by the wrapping `label` element. - if (focusOrigin === 'keyboard' || focusOrigin === 'program') { - this._inputElement.nativeElement.focus(); - } else if (!focusOrigin) { + if (!focusOrigin) { // When a focused element becomes disabled, the browser *immediately* fires a blur event. // Angular does not expect events to be raised during change detection, so any state // change (such as a form control's 'ng-touched') will cause a changed-after-checked @@ -308,10 +302,4 @@ export class MatSlideToggle // we only trigger an explicit change detection for the slide-toggle view and its children. this._changeDetectorRef.detectChanges(); } - - static ngAcceptInputType_required: BooleanInput; - static ngAcceptInputType_checked: BooleanInput; - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_disableRipple: BooleanInput; - static ngAcceptInputType_tabIndex: NumberInput; } diff --git a/src/material/slide-toggle/testing/BUILD.bazel b/src/material/slide-toggle/testing/BUILD.bazel index 9851dff365ac..242cd790b3e7 100644 --- a/src/material/slide-toggle/testing/BUILD.bazel +++ b/src/material/slide-toggle/testing/BUILD.bazel @@ -24,7 +24,6 @@ ng_test_library( srcs = ["shared.spec.ts"], deps = [ ":testing", - "//src/cdk/platform", "//src/cdk/testing", "//src/cdk/testing/testbed", "//src/material/slide-toggle", diff --git a/src/material/slide-toggle/testing/shared.spec.ts b/src/material/slide-toggle/testing/shared.spec.ts index bfdb3b98dd34..099d4d218b4e 100644 --- a/src/material/slide-toggle/testing/shared.spec.ts +++ b/src/material/slide-toggle/testing/shared.spec.ts @@ -1,4 +1,3 @@ -import {Platform} from '@angular/cdk/platform'; import {HarnessLoader} from '@angular/cdk/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {Component} from '@angular/core'; @@ -12,7 +11,6 @@ export function runHarnessTests( slideToggleModule: typeof MatSlideToggleModule, slideToggleHarness: typeof MatSlideToggleHarness, ) { - let platform: Platform; let fixture: ComponentFixture; let loader: HarnessLoader; @@ -22,7 +20,6 @@ export function runHarnessTests( declarations: [SlideToggleHarnessTest], }).compileComponents(); - platform = TestBed.inject(Platform); fixture = TestBed.createComponent(SlideToggleHarnessTest); fixture.detectChanges(); loader = TestbedHarnessEnvironment.loader(fixture); @@ -149,13 +146,6 @@ export function runHarnessTests( }); it('should not toggle disabled slide-toggle', async () => { - if (platform.FIREFOX) { - // do not run this test on firefox as click events on the label of the underlying - // input checkbox cause the value to be changed. Read more in the bug report: - // https://bugzilla.mozilla.org/show_bug.cgi?id=1540995 - return; - } - const disabledToggle = await loader.getHarness(slideToggleHarness.with({label: 'Second'})); expect(await disabledToggle.isChecked()).toBe(false); await disabledToggle.toggle(); diff --git a/src/material/slider/_slider-theme.scss b/src/material/slider/_slider-theme.scss index a916b5d89516..745564eb7fd2 100644 --- a/src/material/slider/_slider-theme.scss +++ b/src/material/slider/_slider-theme.scss @@ -52,16 +52,18 @@ background-color: $mat-slider-off-color; } - .mat-primary { - @include _inner-content-theme($primary); - } + .mat-slider { + &.mat-primary { + @include _inner-content-theme($primary); + } - .mat-accent { - @include _inner-content-theme($accent); - } + &.mat-accent { + @include _inner-content-theme($accent); + } - .mat-warn { - @include _inner-content-theme($warn); + &.mat-warn { + @include _inner-content-theme($warn); + } } .mat-slider:hover, @@ -71,7 +73,7 @@ } } - .mat-slider-disabled { + .mat-slider.mat-slider-disabled { .mat-slider-track-background, .mat-slider-track-fill, .mat-slider-thumb { @@ -85,7 +87,7 @@ } } - .mat-slider-min-value { + .mat-slider.mat-slider-min-value { .mat-slider-focus-ring { $opacity: 0.12; $color: theming.get-color-from-palette($foreground, base, $opacity); diff --git a/src/material/slider/slider.spec.ts b/src/material/slider/slider.spec.ts index a9acb3be6232..04e92cd4fbb8 100644 --- a/src/material/slider/slider.spec.ts +++ b/src/material/slider/slider.spec.ts @@ -18,7 +18,8 @@ import { dispatchKeyboardEvent, dispatchMouseEvent, createKeyboardEvent, -} from '../../cdk/testing/private'; + createTouchEvent, +} from '@angular/cdk/testing/private'; import {Component, DebugElement, Type, ViewChild} from '@angular/core'; import {ComponentFixture, fakeAsync, flush, TestBed} from '@angular/core/testing'; import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; @@ -242,6 +243,17 @@ describe('MatSlider', () => { it('should have a focus indicator', () => { expect(sliderNativeElement.classList.contains('mat-focus-indicator')).toBe(true); }); + + it('should not try to preventDefault on a non-cancelable event', () => { + const event = createTouchEvent('touchstart'); + const spy = spyOn(event, 'preventDefault'); + Object.defineProperty(event, 'cancelable', {value: false}); + + dispatchEvent(sliderNativeElement, event); + fixture.detectChanges(); + + expect(spy).not.toHaveBeenCalled(); + }); }); describe('disabled slider', () => { @@ -438,6 +450,26 @@ describe('MatSlider', () => { expect(sliderInstance.percent).toBe(1); }, ); + it('should properly update ticks when max value changed to 0', () => { + testComponent.min = 0; + testComponent.max = 100; + fixture.detectChanges(); + + dispatchMouseenterEvent(sliderNativeElement); + fixture.detectChanges(); + + expect(ticksElement.style.backgroundSize).toBe('6% 2px'); + expect(ticksElement.style.transform).toContain('translateX(3%)'); + + testComponent.max = 0; + fixture.detectChanges(); + + dispatchMouseenterEvent(sliderNativeElement); + fixture.detectChanges(); + + expect(ticksElement.style.backgroundSize).toBe('0% 2px'); + expect(ticksElement.style.transform).toContain('translateX(0%)'); + }); }); describe('slider with set value', () => { @@ -962,6 +994,7 @@ describe('MatSlider', () => { let sliderNativeElement: HTMLElement; let testComponent: SliderWithChangeHandler; let sliderInstance: MatSlider; + let trackFillElement: HTMLElement; beforeEach(() => { fixture = createComponent(SliderWithChangeHandler); @@ -974,6 +1007,7 @@ describe('MatSlider', () => { sliderDebugElement = fixture.debugElement.query(By.directive(MatSlider))!; sliderNativeElement = sliderDebugElement.nativeElement; sliderInstance = sliderDebugElement.injector.get(MatSlider); + trackFillElement = sliderNativeElement.querySelector('.mat-slider-track-fill') as HTMLElement; }); it('should increment slider by 1 on up arrow pressed', () => { @@ -1028,6 +1062,21 @@ describe('MatSlider', () => { expect(sliderInstance.value).toBe(99); }); + it('should decrement from max when interacting after out-of-bounds value is assigned', () => { + sliderInstance.max = 100; + sliderInstance.value = 200; + fixture.detectChanges(); + + expect(sliderInstance.value).toBe(200); + expect(trackFillElement.style.transform).toContain('scale3d(1, 1, 1)'); + + dispatchKeyboardEvent(sliderNativeElement, 'keydown', LEFT_ARROW); + fixture.detectChanges(); + + expect(sliderInstance.value).toBe(99); + expect(trackFillElement.style.transform).toContain('scale3d(0.99, 1, 1)'); + }); + it('should increment slider by 10 on page up pressed', () => { expect(testComponent.onChange).not.toHaveBeenCalled(); diff --git a/src/material/slider/slider.ts b/src/material/slider/slider.ts index 1c7e547c00f3..019043801915 100644 --- a/src/material/slider/slider.ts +++ b/src/material/slider/slider.ts @@ -170,7 +170,7 @@ export class MatSlider get invert(): boolean { return this._invert; } - set invert(value: boolean) { + set invert(value: BooleanInput) { this._invert = coerceBooleanProperty(value); } private _invert = false; @@ -180,7 +180,7 @@ export class MatSlider get max(): number { return this._max; } - set max(v: number) { + set max(v: NumberInput) { this._max = coerceNumberProperty(v, this._max); this._percent = this._calculatePercentage(this._value); @@ -194,7 +194,7 @@ export class MatSlider get min(): number { return this._min; } - set min(v: number) { + set min(v: NumberInput) { this._min = coerceNumberProperty(v, this._min); this._percent = this._calculatePercentage(this._value); @@ -208,7 +208,7 @@ export class MatSlider get step(): number { return this._step; } - set step(v: number) { + set step(v: NumberInput) { this._step = coerceNumberProperty(v, this._step); if (this._step % 1 !== 0) { @@ -225,7 +225,7 @@ export class MatSlider get thumbLabel(): boolean { return this._thumbLabel; } - set thumbLabel(value: boolean) { + set thumbLabel(value: BooleanInput) { this._thumbLabel = coerceBooleanProperty(value); } private _thumbLabel: boolean = false; @@ -235,10 +235,10 @@ export class MatSlider * Ex: Tick interval of 4 with a step of 3 will draw a tick every 4 steps (every 12 values). */ @Input() - get tickInterval() { + get tickInterval(): 'auto' | number { return this._tickInterval; } - set tickInterval(value: 'auto' | number) { + set tickInterval(value: 'auto' | NumberInput) { if (value === 'auto') { this._tickInterval = 'auto'; } else if (typeof value === 'number' || typeof value === 'string') { @@ -258,7 +258,7 @@ export class MatSlider } return this._value as number; } - set value(v: number) { + set value(v: NumberInput) { if (v !== this._value) { let value = coerceNumberProperty(v, 0); @@ -292,7 +292,7 @@ export class MatSlider get vertical(): boolean { return this._vertical; } - set vertical(value: boolean) { + set vertical(value: BooleanInput) { this._vertical = coerceBooleanProperty(value); } private _vertical = false; @@ -672,7 +672,6 @@ export class MatSlider const oldValue = this.value; this._isSliding = 'pointer'; this._lastPointerEvent = event; - event.preventDefault(); this._focusHostElement(); this._onMouseenter(); // Simulate mouseenter in case this is a mobile device. this._bindGlobalEvents(event); @@ -680,6 +679,13 @@ export class MatSlider this._updateValueFromPosition(pointerPosition); this._valueOnSlideStart = oldValue; + // Despite the fact that we explicitly bind active events, in some cases the browser + // still dispatches non-cancelable events which cause this call to throw an error. + // There doesn't appear to be a good way of avoiding them. See #23820. + if (event.cancelable) { + event.preventDefault(); + } + // Emit a change and input event if the value changed. if (oldValue != this.value) { this._emitInputEvent(); @@ -793,7 +799,10 @@ export class MatSlider /** Increments the slider by the given number of steps (negative number decrements). */ private _increment(numSteps: number) { - this.value = this._clamp((this.value || 0) + this.step * numSteps, this.min, this.max); + // Pre-clamp the current value since it's allowed to be + // out of bounds when assigned programmatically. + const clampedValue = this._clamp(this.value || 0, this.min, this.max); + this.value = this._clamp(clampedValue + this.step * numSteps, this.min, this.max); } /** Calculate the new value from the new physical location. The value will always be snapped. */ @@ -851,15 +860,17 @@ export class MatSlider return; } + let tickIntervalPercent: number; if (this.tickInterval == 'auto') { let trackSize = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width; let pixelsPerStep = (trackSize * this.step) / (this.max - this.min); let stepsPerTick = Math.ceil(MIN_AUTO_TICK_SEPARATION / pixelsPerStep); let pixelsPerTick = stepsPerTick * this.step; - this._tickIntervalPercent = pixelsPerTick / trackSize; + tickIntervalPercent = pixelsPerTick / trackSize; } else { - this._tickIntervalPercent = (this.tickInterval * this.step) / (this.max - this.min); + tickIntervalPercent = (this.tickInterval * this.step) / (this.max - this.min); } + this._tickIntervalPercent = isSafeNumber(tickIntervalPercent) ? tickIntervalPercent : 0; } /** Creates a slider change object from the specified value. */ @@ -874,7 +885,8 @@ export class MatSlider /** Calculates the percentage of the slider that a value is. */ private _calculatePercentage(value: number | null) { - return ((value || 0) - this.min) / (this.max - this.min); + const percentage = ((value || 0) - this.min) / (this.max - this.min); + return isSafeNumber(percentage) ? percentage : 0; } /** Calculates the value a percentage of the slider corresponds to. */ @@ -943,17 +955,11 @@ export class MatSlider setDisabledState(isDisabled: boolean) { this.disabled = isDisabled; } +} - static ngAcceptInputType_invert: BooleanInput; - static ngAcceptInputType_max: NumberInput; - static ngAcceptInputType_min: NumberInput; - static ngAcceptInputType_step: NumberInput; - static ngAcceptInputType_thumbLabel: BooleanInput; - static ngAcceptInputType_tickInterval: NumberInput; - static ngAcceptInputType_value: NumberInput; - static ngAcceptInputType_vertical: BooleanInput; - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_tabIndex: NumberInput; +/** Checks if number is safe for calculation */ +function isSafeNumber(value: number) { + return !isNaN(value) && isFinite(value); } /** Returns whether an event is a touch event. */ diff --git a/src/material/snack-bar/simple-snack-bar.html b/src/material/snack-bar/simple-snack-bar.html index a581b91d6dd4..c0326acdba11 100644 --- a/src/material/snack-bar/simple-snack-bar.html +++ b/src/material/snack-bar/simple-snack-bar.html @@ -1,4 +1,4 @@ -{{data.message}} +{{data.message}}
diff --git a/src/material/snack-bar/simple-snack-bar.scss b/src/material/snack-bar/simple-snack-bar.scss index 50188497237a..977dc8556ae2 100644 --- a/src/material/snack-bar/simple-snack-bar.scss +++ b/src/material/snack-bar/simple-snack-bar.scss @@ -30,3 +30,8 @@ $button-vertical-margin: -(math.div($button-height - $line-height, 2)); margin-right: $button-horizontal-margin; } } + +.mat-simple-snack-bar-content { + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/src/material/snack-bar/snack-bar-container.ts b/src/material/snack-bar/snack-bar-container.ts index b92dc74b5ae4..2bf4a2d901d5 100644 --- a/src/material/snack-bar/snack-bar-container.ts +++ b/src/material/snack-bar/snack-bar-container.ts @@ -77,7 +77,7 @@ export class MatSnackBarContainer private readonly _announceDelay: number = 150; /** The timeout for announcing the snack bar's content. */ - private _announceTimeoutId: any; + private _announceTimeoutId: number; /** Whether the component has been destroyed. */ private _destroyed = false; diff --git a/src/material/snack-bar/snack-bar-module.ts b/src/material/snack-bar/snack-bar-module.ts index a24d6f505e83..881c55389909 100644 --- a/src/material/snack-bar/snack-bar-module.ts +++ b/src/material/snack-bar/snack-bar-module.ts @@ -19,6 +19,5 @@ import {MatSnackBarContainer} from './snack-bar-container'; imports: [OverlayModule, PortalModule, CommonModule, MatButtonModule, MatCommonModule], exports: [MatSnackBarContainer, MatCommonModule], declarations: [MatSnackBarContainer, SimpleSnackBar], - entryComponents: [MatSnackBarContainer, SimpleSnackBar], }) export class MatSnackBarModule {} diff --git a/src/material/snack-bar/snack-bar-ref.ts b/src/material/snack-bar/snack-bar-ref.ts index 1b657134189d..0d7de41d9706 100644 --- a/src/material/snack-bar/snack-bar-ref.ts +++ b/src/material/snack-bar/snack-bar-ref.ts @@ -45,7 +45,7 @@ export class MatSnackBarRef { * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is * dismissed before the duration passes. */ - private _durationTimeoutId: any; + private _durationTimeoutId: number; /** Whether the snack bar was dismissed using the action button. */ private _dismissedByAction = false; diff --git a/src/material/snack-bar/snack-bar.spec.ts b/src/material/snack-bar/snack-bar.spec.ts index d32e92dc4a43..d1dc01f64606 100644 --- a/src/material/snack-bar/snack-bar.spec.ts +++ b/src/material/snack-bar/snack-bar.spec.ts @@ -5,7 +5,6 @@ import { Component, Directive, Inject, - NgModule, TemplateRef, ViewChild, ViewContainerRef, @@ -39,7 +38,12 @@ describe('MatSnackBar', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatSnackBarModule, SnackBarTestModule, NoopAnimationsModule], + imports: [MatSnackBarModule, CommonModule, NoopAnimationsModule], + declarations: [ + ComponentWithChildViewContainer, + BurritosNotification, + DirectiveWithViewContainer, + ], }).compileComponents(); })); @@ -746,8 +750,8 @@ describe('MatSnackBar with parent MatSnackBar', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatSnackBarModule, SnackBarTestModule, NoopAnimationsModule], - declarations: [ComponentThatProvidesMatSnackBar], + imports: [MatSnackBarModule, CommonModule, NoopAnimationsModule], + declarations: [ComponentThatProvidesMatSnackBar, DirectiveWithViewContainer], }).compileComponents(); })); @@ -820,7 +824,8 @@ describe('MatSnackBar Positioning', () => { beforeEach(fakeAsync(() => { TestBed.configureTestingModule({ - imports: [MatSnackBarModule, SnackBarTestModule, NoopAnimationsModule], + imports: [MatSnackBarModule, CommonModule, NoopAnimationsModule], + declarations: [ComponentWithChildViewContainer, DirectiveWithViewContainer], }).compileComponents(); })); @@ -1157,22 +1162,3 @@ class BurritosNotification { class ComponentThatProvidesMatSnackBar { constructor(public snackBar: MatSnackBar) {} } - -/** - * Simple component to open snack bars from. - * Create a real (non-test) NgModule as a workaround forRoot - * https://github.com/angular/angular/issues/10760 - */ -const TEST_DIRECTIVES = [ - ComponentWithChildViewContainer, - BurritosNotification, - DirectiveWithViewContainer, - ComponentWithTemplateRef, -]; -@NgModule({ - imports: [CommonModule, MatSnackBarModule], - exports: TEST_DIRECTIVES, - declarations: TEST_DIRECTIVES, - entryComponents: [ComponentWithChildViewContainer, BurritosNotification], -}) -class SnackBarTestModule {} diff --git a/src/material/snack-bar/snack-bar.ts b/src/material/snack-bar/snack-bar.ts index 0ba152441b13..b9ac058fa914 100644 --- a/src/material/snack-bar/snack-bar.ts +++ b/src/material/snack-bar/snack-bar.ts @@ -44,11 +44,8 @@ export function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig { return new MatSnackBarConfig(); } -/** - * Service to dispatch Material Design snack bar messages. - */ -@Injectable({providedIn: MatSnackBarModule}) -export class MatSnackBar implements OnDestroy { +@Injectable() +export abstract class _MatSnackBarBase implements OnDestroy { /** * Reference to the current snack bar in the view *at this level* (in the Angular injector tree). * If there is a parent snack-bar service, all operations should delegate to that parent @@ -57,13 +54,13 @@ export class MatSnackBar implements OnDestroy { private _snackBarRefAtThisLevel: MatSnackBarRef | null = null; /** The component that should be rendered as the snack bar's simple component. */ - protected simpleSnackBarComponent: Type = SimpleSnackBar; + protected abstract simpleSnackBarComponent: Type; /** The container component that attaches the provided template or component. */ - protected snackBarContainerComponent: Type<_SnackBarContainer> = MatSnackBarContainer; + protected abstract snackBarContainerComponent: Type<_SnackBarContainer>; /** The CSS class to apply for handset mode. */ - protected handsetCssClass = 'mat-snack-bar-handset'; + protected abstract handsetCssClass: string; /** Reference to the currently opened snackbar at *any* level. */ get _openedSnackBarRef(): MatSnackBarRef | null { @@ -84,7 +81,7 @@ export class MatSnackBar implements OnDestroy { private _live: LiveAnnouncer, private _injector: Injector, private _breakpointObserver: BreakpointObserver, - @Optional() @SkipSelf() private _parentSnackBar: MatSnackBar, + @Optional() @SkipSelf() private _parentSnackBar: _MatSnackBarBase, @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) private _defaultConfig: MatSnackBarConfig, ) {} @@ -311,3 +308,24 @@ export class MatSnackBar implements OnDestroy { }); } } + +/** + * Service to dispatch Material Design snack bar messages. + */ +@Injectable({providedIn: MatSnackBarModule}) +export class MatSnackBar extends _MatSnackBarBase { + protected simpleSnackBarComponent = SimpleSnackBar; + protected snackBarContainerComponent = MatSnackBarContainer; + protected handsetCssClass = 'mat-snack-bar-handset'; + + constructor( + overlay: Overlay, + live: LiveAnnouncer, + injector: Injector, + breakpointObserver: BreakpointObserver, + @Optional() @SkipSelf() parentSnackBar: MatSnackBar, + @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) defaultConfig: MatSnackBarConfig, + ) { + super(overlay, live, injector, breakpointObserver, parentSnackBar, defaultConfig); + } +} diff --git a/src/material/sort/sort-header.html b/src/material/sort/sort-header.html index cc575585a601..77af0a462235 100644 --- a/src/material/sort/sort-header.html +++ b/src/material/sort/sort-header.html @@ -10,9 +10,9 @@ -->
+ [attr.role]="_isDisabled() ? null : 'button'"> -This feature is supported by Chrome, Firefox, Safari, and Edge. It is not supported in IE, but -it does fail gracefully so that the rows simply do not stick. - Note that on Safari mobile when using the flex-based table, a cell stuck in more than one direction will struggle to stay in the correct position as you scroll. For example, if a header row is stuck to the top and the first column is stuck, then the top-left-most cell will appear jittery as you diff --git a/src/material/table/table.spec.ts b/src/material/table/table.spec.ts index 6ae4f276c3f5..0b5d0cb14069 100644 --- a/src/material/table/table.spec.ts +++ b/src/material/table/table.spec.ts @@ -92,17 +92,19 @@ describe('MatTable', () => { const table = fixture.nativeElement.querySelector('.mat-table')!; const initialData = fixture.componentInstance.dataSource!.data; - expect(table.textContent.trim()).not.toContain('No data'); + expect(table.querySelector('.mat-no-data-row')).toBeFalsy(); fixture.componentInstance.dataSource!.data = []; fixture.detectChanges(); - expect(table.textContent.trim()).toContain('No data'); + const noDataRow: HTMLElement = table.querySelector('.mat-no-data-row'); + expect(noDataRow).toBeTruthy(); + expect(noDataRow.getAttribute('role')).toBe('row'); fixture.componentInstance.dataSource!.data = initialData; fixture.detectChanges(); - expect(table.textContent.trim()).not.toContain('No data'); + expect(table.querySelector('.mat-no-data-row')).toBeFalsy(); }); it('should show the no data row if there is no data on init', () => { @@ -111,7 +113,7 @@ describe('MatTable', () => { fixture.detectChanges(); const table = fixture.nativeElement.querySelector('.mat-table')!; - expect(table.textContent.trim()).toContain('No data'); + expect(table.querySelector('.mat-no-data-row')).toBeTruthy(); }); }); @@ -154,17 +156,19 @@ describe('MatTable', () => { const dataSource = fixture.componentInstance.dataSource!; const initialData = dataSource.data; - expect(tbody.textContent.trim()).not.toContain('No data'); + expect(tbody.querySelector('.mat-no-data-row')).toBeFalsy(); dataSource.data = []; fixture.detectChanges(); - expect(tbody.textContent.trim()).toContain('No data'); + const noDataRow: HTMLElement = tbody.querySelector('.mat-no-data-row'); + expect(noDataRow).toBeTruthy(); + expect(noDataRow.getAttribute('role')).toBe('row'); dataSource.data = initialData; fixture.detectChanges(); - expect(tbody.textContent.trim()).not.toContain('No data'); + expect(tbody.querySelector('.mat-no-data-row')).toBeFalsy(); }); it('should render with MatTableDataSource and sort', () => { @@ -572,6 +576,45 @@ describe('MatTable', () => { ['Footer A', 'Footer B', 'Footer C'], ]); }); + + it('should fall back to empty table if invalid data is passed in', () => { + component.underlyingDataSource.addData(); + fixture.detectChanges(); + expectTableToMatchContent(tableElement, [ + ['Column A', 'Column B', 'Column C'], + ['a_1', 'b_1', 'c_1'], + ['a_2', 'b_2', 'c_2'], + ['a_3', 'b_3', 'c_3'], + ['a_4', 'b_4', 'c_4'], + ['Footer A', 'Footer B', 'Footer C'], + ]); + + dataSource.data = null!; + fixture.detectChanges(); + expectTableToMatchContent(tableElement, [ + ['Column A', 'Column B', 'Column C'], + ['Footer A', 'Footer B', 'Footer C'], + ]); + + component.underlyingDataSource.addData(); + fixture.detectChanges(); + expectTableToMatchContent(tableElement, [ + ['Column A', 'Column B', 'Column C'], + ['a_1', 'b_1', 'c_1'], + ['a_2', 'b_2', 'c_2'], + ['a_3', 'b_3', 'c_3'], + ['a_4', 'b_4', 'c_4'], + ['a_5', 'b_5', 'c_5'], + ['Footer A', 'Footer B', 'Footer C'], + ]); + + dataSource.data = {} as any; + fixture.detectChanges(); + expectTableToMatchContent(tableElement, [ + ['Column A', 'Column B', 'Column C'], + ['Footer A', 'Footer B', 'Footer C'], + ]); + }); }); }); diff --git a/src/material/tabs/_tabs-common.scss b/src/material/tabs/_tabs-common.scss index e53684cb2633..1d566335a4e4 100644 --- a/src/material/tabs/_tabs-common.scss +++ b/src/material/tabs/_tabs-common.scss @@ -95,6 +95,15 @@ $tab-animation-duration: 500ms !default; z-index: 2; -webkit-tap-highlight-color: transparent; touch-action: none; + box-sizing: content-box; + background: none; + border: none; + outline: 0; + padding: 0; + + &::-moz-focus-inner { + border: 0; + } .mat-tab-header-pagination-controls-enabled & { display: flex; @@ -120,7 +129,6 @@ $tab-animation-duration: 500ms !default; .mat-tab-header-pagination-chevron { border-style: solid; border-width: 2px 2px 0 0; - content: ''; height: 8px; width: 8px; } diff --git a/src/material/tabs/paginated-tab-header.ts b/src/material/tabs/paginated-tab-header.ts index 07bcbfd31a9e..6ea78907b278 100644 --- a/src/material/tabs/paginated-tab-header.ts +++ b/src/material/tabs/paginated-tab-header.ts @@ -22,7 +22,12 @@ import { Input, } from '@angular/core'; import {Direction, Directionality} from '@angular/cdk/bidi'; -import {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion'; +import { + BooleanInput, + coerceBooleanProperty, + coerceNumberProperty, + NumberInput, +} from '@angular/cdk/coercion'; import {ViewportRuler} from '@angular/cdk/scrolling'; import {FocusKeyManager, FocusableOption} from '@angular/cdk/a11y'; import {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes'; @@ -76,6 +81,7 @@ export abstract class MatPaginatedTabHeader abstract _inkBar: {hide: () => void; alignToElement: (element: HTMLElement) => void}; abstract _tabListContainer: ElementRef; abstract _tabList: ElementRef; + abstract _tabListInner: ElementRef; abstract _nextPaginator: ElementRef; abstract _previousPaginator: ElementRef; @@ -120,13 +126,19 @@ export abstract class MatPaginatedTabHeader * layout recalculations if it's known that pagination won't be required. */ @Input() - disablePagination: boolean = false; + get disablePagination(): boolean { + return this._disablePagination; + } + set disablePagination(value: BooleanInput) { + this._disablePagination = coerceBooleanProperty(value); + } + private _disablePagination: boolean = false; /** The index of the active tab. */ get selectedIndex(): number { return this._selectedIndex; } - set selectedIndex(value: number) { + set selectedIndex(value: NumberInput) { value = coerceNumberProperty(value); if (this._selectedIndex != value) { @@ -452,7 +464,7 @@ export abstract class MatPaginatedTabHeader labelBeforePos = offsetLeft; labelAfterPos = labelBeforePos + offsetWidth; } else { - labelAfterPos = this._tabList.nativeElement.offsetWidth - offsetLeft; + labelAfterPos = this._tabListInner.nativeElement.offsetWidth - offsetLeft; labelBeforePos = labelAfterPos - offsetWidth; } @@ -481,7 +493,7 @@ export abstract class MatPaginatedTabHeader this._showPaginationControls = false; } else { const isEnabled = - this._tabList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth; + this._tabListInner.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth; if (!isEnabled) { this.scrollDistance = 0; @@ -523,7 +535,7 @@ export abstract class MatPaginatedTabHeader * should be called sparingly. */ _getMaxScrollDistance(): number { - const lengthOfTabList = this._tabList.nativeElement.scrollWidth; + const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth; const viewLength = this._tabListContainer.nativeElement.offsetWidth; return lengthOfTabList - viewLength || 0; } @@ -595,6 +607,4 @@ export abstract class MatPaginatedTabHeader return {maxScrollDistance, distance: this._scrollDistance}; } - - static ngAcceptInputType_selectedIndex: NumberInput; } diff --git a/src/material/tabs/public-api.ts b/src/material/tabs/public-api.ts index 7c14d0697dd8..9fdca2961430 100644 --- a/src/material/tabs/public-api.ts +++ b/src/material/tabs/public-api.ts @@ -20,7 +20,13 @@ export {MatTabHeader, _MatTabHeaderBase} from './tab-header'; export {MatTabLabelWrapper} from './tab-label-wrapper'; export {MatTab, MAT_TAB_GROUP} from './tab'; export {MatTabLabel, MAT_TAB} from './tab-label'; -export {MatTabNav, MatTabLink, _MatTabNavBase, _MatTabLinkBase} from './tab-nav-bar/index'; +export { + MatTabNav, + MatTabLink, + MatTabNavPanel, + _MatTabNavBase, + _MatTabLinkBase, +} from './tab-nav-bar/index'; export {MatTabContent} from './tab-content'; export {ScrollDirection} from './paginated-tab-header'; export * from './tabs-animations'; diff --git a/src/material/tabs/tab-body.scss b/src/material/tabs/tab-body.scss index a92aaf492e20..0bed41796ef9 100644 --- a/src/material/tabs/tab-body.scss +++ b/src/material/tabs/tab-body.scss @@ -5,4 +5,15 @@ .mat-tab-group-dynamic-height & { overflow: hidden; } + + // Usually the `visibility: hidden` added by the animation is enough to prevent focus from + // entering the collapsed content, but children with their own `visibility` can override it. + // This is a fallback that completely hides the content when the element becomes hidden. + // Note that we can't do this in the animation definition, because the style gets recomputed too + // late, breaking the animation because Angular didn't have time to figure out the target height. + // This can also be achieved with JS, but it has issues when starting an animation before + // the previous one has finished. + &[style*='visibility: hidden'] { + display: none; + } } diff --git a/src/material/tabs/tab-body.ts b/src/material/tabs/tab-body.ts index 731f7380b22e..36b2129f11a4 100644 --- a/src/material/tabs/tab-body.ts +++ b/src/material/tabs/tab-body.ts @@ -93,7 +93,9 @@ export class MatTabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestr }); this._leavingSub = this._host._afterLeavingCenter.subscribe(() => { - this.detach(); + if (!this._host.preserveContent) { + this.detach(); + } }); } @@ -149,6 +151,9 @@ export abstract class _MatTabBodyBase implements OnInit, OnDestroy { /** Duration for the tab's animation. */ @Input() animationDuration: string = '500ms'; + /** Whether the tab's content should be kept in the DOM while it's off-screen. */ + @Input() preserveContent: boolean = false; + /** The shifted index position of the tab body, where zero represents the active center tab. */ @Input() set position(position: number) { diff --git a/src/material/tabs/tab-config.ts b/src/material/tabs/tab-config.ts index 5c6711aa2c40..f974e1d480e9 100644 --- a/src/material/tabs/tab-config.ts +++ b/src/material/tabs/tab-config.ts @@ -29,6 +29,13 @@ export interface MatTabsConfig { /** `tabindex` to be set on the inner element that wraps the tab content. */ contentTabIndex?: number; + + /** + * By default tabs remove their content from the DOM while it's off-screen. + * Setting this to `true` will keep it in the DOM which will prevent elements + * like iframes and videos from reloading next time it comes back into the view. + */ + preserveContent?: boolean; } /** Injection token that can be used to provide the default options the tabs module. */ diff --git a/src/material/tabs/tab-group.html b/src/material/tabs/tab-group.html index 268ed3076d1e..c39e3528f2a0 100644 --- a/src/material/tabs/tab-group.html +++ b/src/material/tabs/tab-group.html @@ -4,17 +4,19 @@ [disablePagination]="disablePagination" (indexFocused)="_focusChanged($event)" (selectFocusedIndex)="selectedIndex = $event"> -
@@ -43,10 +45,12 @@ [attr.tabindex]="(contentTabIndex != null && selectedIndex === i) ? contentTabIndex : null" [attr.aria-labelledby]="_getTabLabelId(i)" [class.mat-tab-body-active]="selectedIndex === i" + [ngClass]="tab.bodyClass" [content]="tab.content!" [position]="tab.position!" [origin]="tab.origin" [animationDuration]="animationDuration" + [preserveContent]="preserveContent" (_onCentered)="_removeTabBodyWrapperHeight()" (_onCentering)="_setTabBodyWrapperHeight($event)"> diff --git a/src/material/tabs/tab-group.spec.ts b/src/material/tabs/tab-group.spec.ts index d91b51ca43cf..911a2e4dd24c 100644 --- a/src/material/tabs/tab-group.spec.ts +++ b/src/material/tabs/tab-group.spec.ts @@ -1,6 +1,6 @@ import {LEFT_ARROW} from '@angular/cdk/keycodes'; import {dispatchFakeEvent, dispatchKeyboardEvent} from '../../cdk/testing/private'; -import {Component, OnInit, QueryList, ViewChild, ViewChildren} from '@angular/core'; +import {Component, DebugElement, OnInit, QueryList, ViewChild, ViewChildren} from '@angular/core'; import { waitForAsync, ComponentFixture, @@ -40,6 +40,7 @@ describe('MatTabGroup', () => { TabGroupWithIndirectDescendantTabs, TabGroupWithSpaceAbove, NestedTabGroupWithLabel, + TabsWithClassesTestApp, ], }); @@ -197,7 +198,6 @@ describe('MatTabGroup', () => { .toBe(0); dispatchFakeEvent(tabLabel.nativeElement, 'mousedown'); - dispatchFakeEvent(tabLabel.nativeElement, 'mouseup'); expect(testElement.querySelectorAll('.mat-ripple-element').length) .withContext('Expected one ripple to show up on label mousedown.') @@ -216,7 +216,6 @@ describe('MatTabGroup', () => { .toBe(0); dispatchFakeEvent(tabLabel.nativeElement, 'mousedown'); - dispatchFakeEvent(tabLabel.nativeElement, 'mouseup'); expect(testElement.querySelectorAll('.mat-ripple-element').length) .withContext('Expected no ripple to show up on label mousedown.') @@ -419,11 +418,16 @@ describe('MatTabGroup', () => { expect(tab.getAttribute('aria-label')).toBe('Fruit'); expect(tab.hasAttribute('aria-labelledby')).toBe(false); + + fixture.componentInstance.ariaLabel = 'Veggie'; + fixture.detectChanges(); + expect(tab.getAttribute('aria-label')).toBe('Veggie'); }); }); describe('disable tabs', () => { let fixture: ComponentFixture; + beforeEach(() => { fixture = TestBed.createComponent(DisabledTabsTestApp); }); @@ -659,6 +663,56 @@ describe('MatTabGroup', () => { expect(tabGroupNode.classList).toContain('mat-tab-group-inverted-header'); }); + + it('should be able to opt into keeping the inactive tab content in the DOM', fakeAsync(() => { + fixture.componentInstance.preserveContent = true; + fixture.detectChanges(); + + expect(fixture.nativeElement.textContent).toContain('Pizza, fries'); + expect(fixture.nativeElement.textContent).not.toContain('Peanuts'); + + tabGroup.selectedIndex = 3; + fixture.detectChanges(); + tick(); + + expect(fixture.nativeElement.textContent).toContain('Pizza, fries'); + expect(fixture.nativeElement.textContent).toContain('Peanuts'); + })); + + it('should visibly hide the content of inactive tabs', fakeAsync(() => { + const contentElements: HTMLElement[] = Array.from( + fixture.nativeElement.querySelectorAll('.mat-tab-body-content'), + ); + + expect(contentElements.map(element => element.style.visibility)).toEqual([ + '', + 'hidden', + 'hidden', + 'hidden', + ]); + + tabGroup.selectedIndex = 2; + fixture.detectChanges(); + tick(); + + expect(contentElements.map(element => element.style.visibility)).toEqual([ + 'hidden', + 'hidden', + '', + 'hidden', + ]); + + tabGroup.selectedIndex = 1; + fixture.detectChanges(); + tick(); + + expect(contentElements.map(element => element.style.visibility)).toEqual([ + 'hidden', + '', + 'hidden', + 'hidden', + ]); + })); }); describe('lazy loaded tabs', () => { @@ -779,6 +833,62 @@ describe('MatTabGroup', () => { })); }); + describe('tabs with custom css classes', () => { + let fixture: ComponentFixture; + let labelElements: DebugElement[]; + let bodyElements: DebugElement[]; + + beforeEach(() => { + fixture = TestBed.createComponent(TabsWithClassesTestApp); + fixture.detectChanges(); + labelElements = fixture.debugElement.queryAll(By.css('.mat-tab-label')); + bodyElements = fixture.debugElement.queryAll(By.css('mat-tab-body')); + }); + + it('should apply label/body classes', () => { + expect(labelElements[1].nativeElement.classList).toContain('hardcoded-label-class'); + expect(bodyElements[1].nativeElement.classList).toContain('hardcoded-body-class'); + }); + + it('should set classes as strings dynamically', () => { + expect(labelElements[0].nativeElement.classList).not.toContain('custom-label-class'); + expect(bodyElements[0].nativeElement.classList).not.toContain('custom-body-class'); + + fixture.componentInstance.labelClassList = 'custom-label-class'; + fixture.componentInstance.bodyClassList = 'custom-body-class'; + fixture.detectChanges(); + + expect(labelElements[0].nativeElement.classList).toContain('custom-label-class'); + expect(bodyElements[0].nativeElement.classList).toContain('custom-body-class'); + + delete fixture.componentInstance.labelClassList; + delete fixture.componentInstance.bodyClassList; + fixture.detectChanges(); + + expect(labelElements[0].nativeElement.classList).not.toContain('custom-label-class'); + expect(bodyElements[0].nativeElement.classList).not.toContain('custom-body-class'); + }); + + it('should set classes as strings array dynamically', () => { + expect(labelElements[0].nativeElement.classList).not.toContain('custom-label-class'); + expect(bodyElements[0].nativeElement.classList).not.toContain('custom-body-class'); + + fixture.componentInstance.labelClassList = ['custom-label-class']; + fixture.componentInstance.bodyClassList = ['custom-body-class']; + fixture.detectChanges(); + + expect(labelElements[0].nativeElement.classList).toContain('custom-label-class'); + expect(bodyElements[0].nativeElement.classList).toContain('custom-body-class'); + + delete fixture.componentInstance.labelClassList; + delete fixture.componentInstance.bodyClassList; + fixture.detectChanges(); + + expect(labelElements[0].nativeElement.classList).not.toContain('custom-label-class'); + expect(bodyElements[0].nativeElement.classList).not.toContain('custom-body-class'); + }); + }); + /** * Checks that the `selectedIndex` has been updated; checks that the label and body have their * respective `active` classes @@ -960,7 +1070,6 @@ class BindedTabsTestApp { } @Component({ - selector: 'test-app', template: ` @@ -1011,7 +1120,7 @@ class AsyncTabsTestApp implements OnInit { @Component({ template: ` - + Pizza, fries Broccoli, spinach {{otherContent}} @@ -1020,13 +1129,13 @@ class AsyncTabsTestApp implements OnInit { `, }) class TabGroupWithSimpleApi { + preserveContent = false; otherLabel = 'Fruit'; otherContent = 'Apples, grapes'; @ViewChild('legumes') legumes: any; } @Component({ - selector: 'nested-tabs', template: ` Tab one content @@ -1045,7 +1154,6 @@ class NestedTabs { } @Component({ - selector: 'template-tabs', template: ` @@ -1149,3 +1257,21 @@ class TabGroupWithSpaceAbove { `, }) class NestedTabGroupWithLabel {} + +@Component({ + template: ` + + + Tab one content + + + Tab two content + + + `, +}) +class TabsWithClassesTestApp { + labelClassList?: string | string[]; + bodyClassList?: string | string[]; +} diff --git a/src/material/tabs/tab-group.ts b/src/material/tabs/tab-group.ts index f77af0c0c543..79853fad9a47 100644 --- a/src/material/tabs/tab-group.ts +++ b/src/material/tabs/tab-group.ts @@ -71,7 +71,8 @@ const _MatTabGroupMixinBase = mixinColor( ); interface MatTabGroupBaseHeader { - _alignInkBarToSelectedTab: () => void; + _alignInkBarToSelectedTab(): void; + updatePagination(): void; focusIndex: number; } @@ -112,17 +113,17 @@ export abstract class _MatTabGroupBase get dynamicHeight(): boolean { return this._dynamicHeight; } - set dynamicHeight(value: boolean) { + set dynamicHeight(value: BooleanInput) { this._dynamicHeight = coerceBooleanProperty(value); } - private _dynamicHeight: boolean; + private _dynamicHeight: boolean = false; /** The index of the active tab. */ @Input() get selectedIndex(): number | null { return this._selectedIndex; } - set selectedIndex(value: number | null) { + set selectedIndex(value: NumberInput) { this._indexToSelect = coerceNumberProperty(value, null); } private _selectedIndex: number | null = null; @@ -135,8 +136,8 @@ export abstract class _MatTabGroupBase get animationDuration(): string { return this._animationDuration; } - set animationDuration(value: string) { - this._animationDuration = /^\d+$/.test(value) ? value + 'ms' : value; + set animationDuration(value: NumberInput) { + this._animationDuration = /^\d+$/.test(value + '') ? value + 'ms' : (value as string); } private _animationDuration: string; @@ -150,7 +151,7 @@ export abstract class _MatTabGroupBase get contentTabIndex(): number | null { return this._contentTabIndex; } - set contentTabIndex(value: number | null) { + set contentTabIndex(value: NumberInput) { this._contentTabIndex = coerceNumberProperty(value, null); } private _contentTabIndex: number | null; @@ -160,7 +161,27 @@ export abstract class _MatTabGroupBase * layout recalculations if it's known that pagination won't be required. */ @Input() - disablePagination: boolean; + get disablePagination(): boolean { + return this._disablePagination; + } + set disablePagination(value: BooleanInput) { + this._disablePagination = coerceBooleanProperty(value); + } + private _disablePagination: boolean = false; + + /** + * By default tabs remove their content from the DOM while it's off-screen. + * Setting this to `true` will keep it in the DOM which will prevent elements + * like iframes and videos from reloading next time it comes back into the view. + */ + @Input() + get preserveContent(): boolean { + return this._preserveContent; + } + set preserveContent(value: BooleanInput) { + this._preserveContent = coerceBooleanProperty(value); + } + private _preserveContent: boolean = false; /** Background color of the tab group. */ @Input() @@ -213,6 +234,7 @@ export abstract class _MatTabGroupBase this.dynamicHeight = defaultConfig && defaultConfig.dynamicHeight != null ? defaultConfig.dynamicHeight : false; this.contentTabIndex = defaultConfig?.contentTabIndex ?? null; + this.preserveContent = !!defaultConfig?.preserveContent; } /** @@ -327,6 +349,19 @@ export abstract class _MatTabGroupBase } } + /** + * Recalculates the tab group's pagination dimensions. + * + * WARNING: Calling this method can be very costly in terms of performance. It should be called + * as infrequently as possible from outside of the Tabs component as it causes a reflow of the + * page. + */ + updatePagination() { + if (this._tabHeader) { + this._tabHeader.updatePagination(); + } + } + /** * Sets focus to a particular tab. * @param index Index of the tab to be focused. @@ -439,12 +474,6 @@ export abstract class _MatTabGroupBase this._tabHeader.focusIndex = index; } } - - static ngAcceptInputType_dynamicHeight: BooleanInput; - static ngAcceptInputType_animationDuration: NumberInput; - static ngAcceptInputType_selectedIndex: NumberInput; - static ngAcceptInputType_disableRipple: BooleanInput; - static ngAcceptInputType_contentTabIndex: NumberInput; } /** diff --git a/src/material/tabs/tab-header.html b/src/material/tabs/tab-header.html index e3febcb6f045..2a67d1eefc92 100644 --- a/src/material/tabs/tab-header.html +++ b/src/material/tabs/tab-header.html @@ -1,13 +1,17 @@ - +
-
+
- + diff --git a/src/material/tabs/tab-header.ts b/src/material/tabs/tab-header.ts index 63e784578cc2..7a7062b77d49 100644 --- a/src/material/tabs/tab-header.ts +++ b/src/material/tabs/tab-header.ts @@ -45,10 +45,10 @@ export abstract class _MatTabHeaderBase { /** Whether the ripple effect is disabled or not. */ @Input() - get disableRipple() { + get disableRipple(): boolean { return this._disableRipple; } - set disableRipple(value: any) { + set disableRipple(value: BooleanInput) { this._disableRipple = coerceBooleanProperty(value); } private _disableRipple: boolean = false; @@ -97,6 +97,7 @@ export class MatTabHeader extends _MatTabHeaderBase { @ViewChild(MatInkBar, {static: true}) _inkBar: MatInkBar; @ViewChild('tabListContainer', {static: true}) _tabListContainer: ElementRef; @ViewChild('tabList', {static: true}) _tabList: ElementRef; + @ViewChild('tabListInner', {static: true}) _tabListInner: ElementRef; @ViewChild('nextPaginator') _nextPaginator: ElementRef; @ViewChild('previousPaginator') _previousPaginator: ElementRef; @@ -111,6 +112,4 @@ export class MatTabHeader extends _MatTabHeaderBase { ) { super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode); } - - static ngAcceptInputType_disableRipple: BooleanInput; } diff --git a/src/material/tabs/tab-label-wrapper.ts b/src/material/tabs/tab-label-wrapper.ts index 3b9914de6f38..0ae024e09126 100644 --- a/src/material/tabs/tab-label-wrapper.ts +++ b/src/material/tabs/tab-label-wrapper.ts @@ -6,7 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -import {BooleanInput} from '@angular/cdk/coercion'; import {Directive, ElementRef} from '@angular/core'; import {CanDisable, mixinDisabled} from '@angular/material/core'; @@ -43,6 +42,4 @@ export class MatTabLabelWrapper extends _MatTabLabelWrapperBase implements CanDi getOffsetWidth(): number { return this.elementRef.nativeElement.offsetWidth; } - - static ngAcceptInputType_disabled: BooleanInput; } diff --git a/src/material/tabs/tab-nav-bar/tab-nav-bar.html b/src/material/tabs/tab-nav-bar/tab-nav-bar.html index 315f57a4e978..9dcc869a2da5 100644 --- a/src/material/tabs/tab-nav-bar/tab-nav-bar.html +++ b/src/material/tabs/tab-nav-bar/tab-nav-bar.html @@ -1,13 +1,17 @@ - +
diff --git a/tools/dgeni/tsconfig.json b/tools/dgeni/tsconfig.json index 440732d118c5..90a80bf846dd 100644 --- a/tools/dgeni/tsconfig.json +++ b/tools/dgeni/tsconfig.json @@ -6,6 +6,7 @@ "moduleResolution": "node", "esModuleInterop": true, "strictNullChecks": true, + "useUnknownInCatchVariables": true, "noImplicitReturns": true, "strictFunctionTypes": true, "noImplicitThis": true, @@ -13,8 +14,6 @@ "noFallthroughCasesInSwitch": true, "noImplicitOverride": true, "target": "es2020", - "types": [ - "node" - ] + "types": ["node"] } } diff --git a/tools/esbuild/BUILD.bazel b/tools/esbuild/BUILD.bazel deleted file mode 100644 index 7fcefca5ef55..000000000000 --- a/tools/esbuild/BUILD.bazel +++ /dev/null @@ -1 +0,0 @@ -exports_files(["esbuild-amd-config.mjs"]) diff --git a/tools/esbuild/devmode-output.bzl b/tools/esbuild/devmode-output.bzl deleted file mode 100644 index 17b5deaf51cc..000000000000 --- a/tools/esbuild/devmode-output.bzl +++ /dev/null @@ -1,43 +0,0 @@ -load("@build_bazel_rules_nodejs//internal/linker:link_node_modules.bzl", "LinkerPackageMappingInfo", "module_mappings_aspect") -load("@build_bazel_rules_nodejs//:providers.bzl", "ExternalNpmPackageInfo", "JSModuleInfo", "node_modules_aspect") - -def _extract_devmode_sources_impl(ctx): - """Private rule that extracts devmode sources for all direct dependencies and re-exposes - them as part of a single target. External node modules are passed-through as well.""" - - mappings = {} - js_sources = [] - - for dep in ctx.attr.deps: - if JSModuleInfo in dep: - js_sources.append(dep[JSModuleInfo].sources) - if ExternalNpmPackageInfo in dep: - js_sources.append(dep[ExternalNpmPackageInfo].sources) - if LinkerPackageMappingInfo in dep: - mappings.update(dep[LinkerPackageMappingInfo].mappings) - - return [ - LinkerPackageMappingInfo(mappings = mappings), - JSModuleInfo( - direct_sources = depset(transitive = js_sources), - sources = depset(transitive = js_sources), - ), - ] - -extract_devmode_sources = rule( - implementation = _extract_devmode_sources_impl, - attrs = { - "deps": attr.label_list(mandatory = True, aspects = [module_mappings_aspect, node_modules_aspect]), - }, -) - -def extract_devmode_output_with_mappings(name, deps, testonly): - """Macro that extracts devmode ESM2020 sources from the given dependencies.""" - - extract_devmode_sources( - name = "%s_sources" % name, - testonly = testonly, - deps = deps, - ) - - return ["%s_sources" % name] diff --git a/tools/esbuild/esbuild-amd-config.mjs b/tools/esbuild/esbuild-amd-config.mjs deleted file mode 100644 index 03905a0b3ded..000000000000 --- a/tools/esbuild/esbuild-amd-config.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import url from 'url'; -import path from 'path'; - -/** Path to the ESBuild configuration maintained by the user. */ -const userConfigExecPath = "TMPL_CONFIG_PATH" - -/** User ESBuild config. Empty if none is loaded. */ -let userConfig = {}; - -if (userConfigExecPath !== '') { - const userConfigPath = path.join(process.cwd(), userConfigExecPath); - const userConfigUrl = url.pathToFileURL(userConfigPath); - - // Load the user config, assuming it is set as `default` export. - userConfig = (await import(userConfigUrl)).default; -} - -export default { - ...userConfig, - globalName: "__exports", - format: 'iife', - banner: {js: 'define("TMPL_MODULE_NAME", [], function() {'}, - footer: {js: 'return __exports;})'}, -}; diff --git a/tools/esbuild/index.bzl b/tools/esbuild/index.bzl deleted file mode 100644 index 2f96bd02cbb0..000000000000 --- a/tools/esbuild/index.bzl +++ /dev/null @@ -1,52 +0,0 @@ -load("@npm//@bazel/esbuild:index.bzl", _esbuild = "esbuild", _esbuild_config = "esbuild_config") -load("@npm//@angular/dev-infra-private/bazel:expand_template.bzl", "expand_template") -load("//tools/esbuild:devmode-output.bzl", "extract_devmode_output_with_mappings") - -# Re-export of the actual esbuild definitions. -esbuild_config = _esbuild_config - -def esbuild(name, deps = [], mapping_targets = [], testonly = False, **kwargs): - # Extract all JS module sources before passing to ESBuild. The ESBuild rule requests - # both the devmode and prodmode unfortunately and this would slow-down the development - # turnaround significantly. We only request the devmode sources which are ESM as well. - devmode_targets = extract_devmode_output_with_mappings(name, deps, testonly) - - _esbuild( - name = name, - deps = devmode_targets, - testonly = testonly, - **kwargs - ) - -"""Generates an AMD bundle for the specified entry-point with the given AMD module name.""" - -def esbuild_amd(name, entry_point, module_name, testonly = False, config = None, deps = [], **kwargs): - expand_template( - name = "%s_config" % name, - testonly = testonly, - template = "//tools/esbuild:esbuild-amd-config.mjs", - output_name = "%s_config.mjs" % name, - substitutions = { - "TMPL_MODULE_NAME": module_name, - "TMPL_CONFIG_PATH": "$(execpath %s)" % config if config else "", - }, - data = [config] if config else None, - ) - - _esbuild_config( - name = "%s_config_lib" % name, - testonly = testonly, - config_file = "%s_config" % name, - # Adds the user configuration and its deps as dependency of the AMD ESBuild config. - # https://github.com/bazelbuild/rules_nodejs/blob/a892caf5a040bae5eeec174a3cf6250f02caf364/packages/esbuild/esbuild_config.bzl#L23. - deps = [config, "%s_deps" % config] if config else None, - ) - - esbuild( - name = name, - testonly = testonly, - deps = deps, - entry_point = entry_point, - config = "%s_config_lib" % name, - **kwargs - ) diff --git a/tools/example-module/parse-example-file.ts b/tools/example-module/parse-example-file.ts index 69eb05e413dd..52cdec11e939 100644 --- a/tools/example-module/parse-example-file.ts +++ b/tools/example-module/parse-example-file.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; interface ParsedMetadata { isPrimary: boolean; diff --git a/tools/example-module/parse-example-module-file.ts b/tools/example-module/parse-example-module-file.ts index 7caff5af3579..e7d15de4432a 100644 --- a/tools/example-module/parse-example-module-file.ts +++ b/tools/example-module/parse-example-module-file.ts @@ -1,6 +1,7 @@ -import * as ts from 'typescript'; import * as fs from 'fs'; +import ts from 'typescript'; + /** Parses an example module file by returning all module names within the given file. */ export function parseExampleModuleFile(filePath: string) { const fileContent = fs.readFileSync(filePath, 'utf8'); diff --git a/tools/markdown-to-html/tsconfig.json b/tools/markdown-to-html/tsconfig.json index 4c6a8a27c956..42b8317aeb81 100644 --- a/tools/markdown-to-html/tsconfig.json +++ b/tools/markdown-to-html/tsconfig.json @@ -5,14 +5,9 @@ "target": "es2020", "esModuleInterop": true, "sourceMap": true, - "types": [ - "jasmine", - "node" - ] + "types": ["jasmine", "node"] }, - "exclude": [ - "*.spec.ts", - ], + "exclude": ["*.spec.ts"], "bazelOptions": { "suppressTsconfigOverrideWarnings": true } diff --git a/tools/postinstall/apply-patches.js b/tools/postinstall/apply-patches.js index 9028678583c1..143218c2e825 100644 --- a/tools/postinstall/apply-patches.js +++ b/tools/postinstall/apply-patches.js @@ -14,7 +14,7 @@ const chalk = require('chalk'); * Version of the post install patch. Needs to be incremented when * existing patches or edits have been modified. */ -const PATCH_VERSION = 13; +const PATCH_VERSION = 14; /** Path to the project directory. */ const projectDir = path.join(__dirname, '../..'); @@ -52,15 +52,6 @@ async function main() { } function applyPatches() { - // Workaround for: https://github.com/angular/angular/pull/32650 - searchAndReplace( - 'let resolvedEntryPoint = null;', - ` - let resolvedEntryPoint = tsFiles.find(f => f.endsWith('/public-api.ts')) || null; - `, - 'node_modules/@angular/compiler-cli/bundles/index.js', - ); - // Switches the devmode output for Angular Bazel to ES2020 target and module. applyPatch(path.join(__dirname, './devmode-es2020-bazel.patch')); diff --git a/tools/postinstall/devmode-es2020-bazel.patch b/tools/postinstall/devmode-es2020-bazel.patch index 18e1a1facf23..52668fbde3d2 100644 --- a/tools/postinstall/devmode-es2020-bazel.patch +++ b/tools/postinstall/devmode-es2020-bazel.patch @@ -1,14 +1,16 @@ diff --git node_modules/@angular/bazel/src/ng_module/ng_module.bzl node_modules/@angular/bazel//src/ng_module/ng_module.bzl index 3520997..adf46e8 100644 ---- node_modules/@angular/bazel//src/ng_module/ng_module.bzl -+++ node_modules/@angular/bazel//src/ng_module/ng_module.bzl -@@ -401,6 +401,9 @@ def _ngc_tsconfig(ctx, files, srcs, **kwargs): - if not is_devmode: +--- node_modules/@angular/bazel/src/ng_module/ng_module.bzl ++++ node_modules/@angular/bazel/src/ng_module/ng_module.bzl +@@ -276,9 +276,8 @@ def _ngc_tsconfig(ctx, files, srcs, **kwargs): # Note: Keep in sync with the `prodmode_target` for `ts_library` in `tools/defaults.bzl` tsconfig["compilerOptions"]["target"] = "es2020" -+ else: + else: +- # For devmode output, we use ES2015 to match with what `ts_library` produces by default. +- # https://github.com/bazelbuild/rules_nodejs/blob/9b36274dba34204625579463e3da054a9f42cb47/packages/typescript/internal/build_defs.bzl#L83. +- tsconfig["compilerOptions"]["target"] = "es2015" + tsconfig["compilerOptions"]["target"] = "es2020" + tsconfig["compilerOptions"]["module"] = "esnext" return tsconfig - + diff --git a/tools/public_api_guard/cdk/a11y.md b/tools/public_api_guard/cdk/a11y.md index 4e3ef6b329a4..ac25ff5b7ff1 100644 --- a/tools/public_api_guard/cdk/a11y.md +++ b/tools/public_api_guard/cdk/a11y.md @@ -12,8 +12,7 @@ import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; import * as i0 from '@angular/core'; -import * as i4 from '@angular/cdk/platform'; -import * as i5 from '@angular/cdk/observers'; +import * as i4 from '@angular/cdk/observers'; import { InjectionToken } from '@angular/core'; import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; @@ -32,7 +31,7 @@ export class A11yModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public (undocumented) @@ -43,7 +42,8 @@ export class ActiveDescendantKeyManager extends ListKeyManager; + static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } @@ -97,15 +98,11 @@ export class CdkTrapFocus implements OnDestroy, AfterContentInit, OnChanges, DoC constructor(_elementRef: ElementRef, _focusTrapFactory: FocusTrapFactory, _document: any); get autoCapture(): boolean; - set autoCapture(value: boolean); + set autoCapture(value: BooleanInput); get enabled(): boolean; - set enabled(value: boolean); + set enabled(value: BooleanInput); focusTrap: FocusTrap; // (undocumented) - static ngAcceptInputType_autoCapture: BooleanInput; - // (undocumented) - static ngAcceptInputType_enabled: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngDoCheck(): void; @@ -402,7 +399,7 @@ export interface LiveAnnouncerDefaultOptions { politeness?: AriaLivePoliteness; } -// @public +// @public @deprecated export const MESSAGES_CONTAINER_ID = "cdk-describedby-message-container"; // @public diff --git a/tools/public_api_guard/cdk/accordion.md b/tools/public_api_guard/cdk/accordion.md index b38efe9b32e3..18c5098577b8 100644 --- a/tools/public_api_guard/cdk/accordion.md +++ b/tools/public_api_guard/cdk/accordion.md @@ -23,9 +23,7 @@ export class CdkAccordion implements OnDestroy, OnChanges { closeAll(): void; readonly id: string; get multi(): boolean; - set multi(multi: boolean); - // (undocumented) - static ngAcceptInputType_multi: BooleanInput; + set multi(multi: BooleanInput); // (undocumented) ngOnChanges(changes: SimpleChanges): void; // (undocumented) @@ -48,17 +46,13 @@ export class CdkAccordionItem implements OnDestroy { readonly closed: EventEmitter; readonly destroyed: EventEmitter; get disabled(): boolean; - set disabled(disabled: boolean); + set disabled(disabled: BooleanInput); get expanded(): boolean; - set expanded(expanded: boolean); + set expanded(expanded: BooleanInput); readonly expandedChange: EventEmitter; // (undocumented) protected _expansionDispatcher: UniqueSelectionDispatcher; readonly id: string; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_expanded: BooleanInput; ngOnDestroy(): void; open(): void; readonly opened: EventEmitter; diff --git a/tools/public_api_guard/cdk/bidi.md b/tools/public_api_guard/cdk/bidi.md index fb394856c8e3..3529507f406e 100644 --- a/tools/public_api_guard/cdk/bidi.md +++ b/tools/public_api_guard/cdk/bidi.md @@ -24,7 +24,7 @@ export class BidiModule { export class Dir implements Directionality, AfterContentInit, OnDestroy { readonly change: EventEmitter; get dir(): Direction; - set dir(value: Direction); + set dir(value: Direction | 'auto'); ngAfterContentInit(): void; // (undocumented) ngOnDestroy(): void; diff --git a/tools/public_api_guard/cdk/drag-drop.md b/tools/public_api_guard/cdk/drag-drop.md index 684bf9a0e279..ff9f20483020 100644 --- a/tools/public_api_guard/cdk/drag-drop.md +++ b/tools/public_api_guard/cdk/drag-drop.md @@ -58,7 +58,7 @@ export class CdkDrag implements AfterViewInit, OnChanges, OnDestroy { constrainPosition?: (point: Point, dragRef: DragRef) => Point; data: T; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); _dragRef: DragRef>; dragStartDelay: DragStartDelay; dropContainer: CdkDropListInternal; @@ -81,8 +81,6 @@ export class CdkDrag implements AfterViewInit, OnChanges, OnDestroy { lockAxis: DragAxis; readonly moved: Observable>; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnChanges(changes: SimpleChanges): void; @@ -114,6 +112,7 @@ export interface CdkDragDrop { x: number; y: number; }; + event: MouseEvent | TouchEvent; isPointerOverContainer: boolean; item: CdkDrag; previousContainer: CdkDropList; @@ -130,6 +129,7 @@ export interface CdkDragEnd { x: number; y: number; }; + event: MouseEvent | TouchEvent; source: CdkDrag; } @@ -150,12 +150,10 @@ export interface CdkDragExit { export class CdkDragHandle implements OnDestroy { constructor(element: ElementRef, parentDrag?: any); get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); // (undocumented) element: ElementRef; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngOnDestroy(): void; _parentDrag: {} | undefined; readonly _stateChanges: Subject; @@ -200,9 +198,7 @@ export class CdkDragPreview { constructor(templateRef: TemplateRef); data: T; get matchSize(): boolean; - set matchSize(value: boolean); - // (undocumented) - static ngAcceptInputType_matchSize: BooleanInput; + set matchSize(value: BooleanInput); // (undocumented) templateRef: TemplateRef; // (undocumented) @@ -213,6 +209,7 @@ export class CdkDragPreview { // @public export interface CdkDragRelease { + event: MouseEvent | TouchEvent; source: CdkDrag; } @@ -226,6 +223,7 @@ export interface CdkDragSortEvent { // @public export interface CdkDragStart { + event: MouseEvent | TouchEvent; source: CdkDrag; } @@ -234,12 +232,12 @@ export class CdkDropList implements OnDestroy { constructor( element: ElementRef, dragDrop: DragDrop, _changeDetectorRef: ChangeDetectorRef, _scrollDispatcher: ScrollDispatcher, _dir?: Directionality | undefined, _group?: CdkDropListGroup> | undefined, config?: DragDropConfig); addItem(item: CdkDrag): void; - autoScrollDisabled: boolean; - autoScrollStep: number; + autoScrollDisabled: BooleanInput; + autoScrollStep: NumberInput; connectedTo: (CdkDropList | string)[] | CdkDropList | string; data: T; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); _dropListRef: DropListRef>; readonly dropped: EventEmitter>; element: ElementRef; @@ -250,19 +248,11 @@ export class CdkDropList implements OnDestroy { id: string; lockAxis: DragAxis; // (undocumented) - static ngAcceptInputType_autoScrollDisabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_autoScrollStep: NumberInput; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_sortingDisabled: BooleanInput; - // (undocumented) ngOnDestroy(): void; orientation: DropListOrientation; removeItem(item: CdkDrag): void; readonly sorted: EventEmitter>; - sortingDisabled: boolean; + sortingDisabled: BooleanInput; sortPredicate: (index: number, drag: CdkDrag, drop: CdkDropList) => boolean; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration, "[cdkDropList], cdk-drop-list", ["cdkDropList"], { "connectedTo": "cdkDropListConnectedTo"; "data": "cdkDropListData"; "orientation": "cdkDropListOrientation"; "id": "id"; "lockAxis": "cdkDropListLockAxis"; "disabled": "cdkDropListDisabled"; "sortingDisabled": "cdkDropListSortingDisabled"; "enterPredicate": "cdkDropListEnterPredicate"; "sortPredicate": "cdkDropListSortPredicate"; "autoScrollDisabled": "cdkDropListAutoScrollDisabled"; "autoScrollStep": "cdkDropListAutoScrollStep"; }, { "dropped": "cdkDropListDropped"; "entered": "cdkDropListEntered"; "exited": "cdkDropListExited"; "sorted": "cdkDropListSorted"; }, never>; @@ -273,11 +263,9 @@ export class CdkDropList implements OnDestroy { // @public export class CdkDropListGroup implements OnDestroy { get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); readonly _items: Set; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngOnDestroy(): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration, "[cdkDropListGroup]", ["cdkDropListGroup"], { "disabled": "cdkDropListGroupDisabled"; }, {}, never>; @@ -395,12 +383,14 @@ export class DragRef { distance: Point; dropPoint: Point; isPointerOverContainer: boolean; + event: MouseEvent | TouchEvent; }>; enableHandle(handle: HTMLElement): void; readonly ended: Subject<{ source: DragRef; distance: Point; dropPoint: Point; + event: MouseEvent | TouchEvent; }>; readonly entered: Subject<{ container: DropListRefInternal; @@ -433,12 +423,14 @@ export class DragRef { previewClass: string | string[] | undefined; readonly released: Subject<{ source: DragRef; + event: MouseEvent | TouchEvent; }>; reset(): void; setFreeDragPosition(value: Point): this; _sortFromLastPointerPosition(): void; readonly started: Subject<{ source: DragRef; + event: MouseEvent | TouchEvent; }>; withBoundaryElement(boundaryElement: ElementRef | HTMLElement | null): this; withDirection(direction: Direction): this; @@ -479,7 +471,7 @@ export class DropListRef { data: T; disabled: boolean; dispose(): void; - drop(item: DragRefInternal, currentIndex: number, previousIndex: number, previousContainer: DropListRef, isPointerOverContainer: boolean, distance: Point, dropPoint: Point): void; + drop(item: DragRefInternal, currentIndex: number, previousIndex: number, previousContainer: DropListRef, isPointerOverContainer: boolean, distance: Point, dropPoint: Point, event?: MouseEvent | TouchEvent): void; readonly dropped: Subject<{ item: DragRefInternal; currentIndex: number; @@ -489,6 +481,7 @@ export class DropListRef { isPointerOverContainer: boolean; distance: Point; dropPoint: Point; + event: MouseEvent | TouchEvent; }>; element: HTMLElement | ElementRef; enter(item: DragRefInternal, pointerX: number, pointerY: number, index?: number): void; diff --git a/tools/public_api_guard/cdk/observers.md b/tools/public_api_guard/cdk/observers.md index 9fdcf38a3995..2dc6c5d7a38a 100644 --- a/tools/public_api_guard/cdk/observers.md +++ b/tools/public_api_guard/cdk/observers.md @@ -18,15 +18,11 @@ import { OnDestroy } from '@angular/core'; export class CdkObserveContent implements AfterContentInit, OnDestroy { constructor(_contentObserver: ContentObserver, _elementRef: ElementRef, _ngZone: NgZone); get debounce(): number; - set debounce(value: number); - get disabled(): any; - set disabled(value: any); + set debounce(value: NumberInput); + get disabled(): boolean; + set disabled(value: BooleanInput); readonly event: EventEmitter; // (undocumented) - static ngAcceptInputType_debounce: NumberInput; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnDestroy(): void; diff --git a/tools/public_api_guard/cdk/overlay.md b/tools/public_api_guard/cdk/overlay.md index cf6ea72a5d20..e6f7a560cebc 100644 --- a/tools/public_api_guard/cdk/overlay.md +++ b/tools/public_api_guard/cdk/overlay.md @@ -68,27 +68,17 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges { get dir(): Direction; disableClose: boolean; get flexibleDimensions(): boolean; - set flexibleDimensions(value: boolean); + set flexibleDimensions(value: BooleanInput); get growAfterOpen(): boolean; - set growAfterOpen(value: boolean); - get hasBackdrop(): any; - set hasBackdrop(value: any); + set growAfterOpen(value: BooleanInput); + get hasBackdrop(): boolean; + set hasBackdrop(value: BooleanInput); height: number | string; - get lockPosition(): any; - set lockPosition(value: any); + get lockPosition(): boolean; + set lockPosition(value: BooleanInput); minHeight: number | string; minWidth: number | string; // (undocumented) - static ngAcceptInputType_flexibleDimensions: BooleanInput; - // (undocumented) - static ngAcceptInputType_growAfterOpen: BooleanInput; - // (undocumented) - static ngAcceptInputType_hasBackdrop: BooleanInput; - // (undocumented) - static ngAcceptInputType_lockPosition: BooleanInput; - // (undocumented) - static ngAcceptInputType_push: BooleanInput; - // (undocumented) ngOnChanges(changes: SimpleChanges): void; // (undocumented) ngOnDestroy(): void; @@ -106,7 +96,7 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges { positions: ConnectedPosition[]; positionStrategy: FlexibleConnectedPositionStrategy; get push(): boolean; - set push(value: boolean); + set push(value: BooleanInput); scrollStrategy: ScrollStrategy; transformOriginSelector: string; viewportMargin: number; @@ -240,10 +230,12 @@ export class GlobalPositionStrategy implements PositionStrategy { centerHorizontally(offset?: string): this; centerVertically(offset?: string): this; dispose(): void; + end(value?: string): this; // @deprecated height(value?: string): this; left(value?: string): this; right(value?: string): this; + start(value?: string): this; top(value?: string): this; // @deprecated width(value?: string): this; @@ -327,11 +319,12 @@ export class OverlayContainer implements OnDestroy { // @public export class OverlayKeyboardDispatcher extends BaseOverlayDispatcher { - constructor(document: any); + constructor(document: any, + _ngZone?: NgZone | undefined); add(overlayRef: OverlayReference): void; protected detach(): void; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵprov: i0.ɵɵInjectableDeclaration; } @@ -348,11 +341,12 @@ export class OverlayModule { // @public export class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher { - constructor(document: any, _platform: Platform); + constructor(document: any, _platform: Platform, + _ngZone?: NgZone | undefined); add(overlayRef: OverlayReference): void; protected detach(): void; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵprov: i0.ɵɵInjectableDeclaration; } diff --git a/tools/public_api_guard/cdk/portal.md b/tools/public_api_guard/cdk/portal.md index cd583e0c616d..71b106338faf 100644 --- a/tools/public_api_guard/cdk/portal.md +++ b/tools/public_api_guard/cdk/portal.md @@ -62,13 +62,11 @@ export class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestr get attachedRef(): CdkPortalOutletAttachedRef; attachTemplatePortal(portal: TemplatePortal): EmbeddedViewRef; // (undocumented) - static ngAcceptInputType_portal: Portal | null | undefined | ''; - // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; get portal(): Portal | null; - set portal(portal: Portal | null); + set portal(portal: Portal | null | undefined | ''); // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) diff --git a/tools/public_api_guard/cdk/scrolling.md b/tools/public_api_guard/cdk/scrolling.md index b1c6b36e5c92..d37bc51abb8b 100644 --- a/tools/public_api_guard/cdk/scrolling.md +++ b/tools/public_api_guard/cdk/scrolling.md @@ -13,7 +13,6 @@ import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import * as i0 from '@angular/core'; import * as i5 from '@angular/cdk/bidi'; -import * as i6 from '@angular/cdk/platform'; import { InjectionToken } from '@angular/core'; import { IterableDiffers } from '@angular/core'; import { ListRange } from '@angular/cdk/collections'; @@ -40,24 +39,18 @@ export type _Bottom = { // @public export class CdkFixedSizeVirtualScroll implements OnChanges { get itemSize(): number; - set itemSize(value: number); + set itemSize(value: NumberInput); // (undocumented) _itemSize: number; get maxBufferPx(): number; - set maxBufferPx(value: number); + set maxBufferPx(value: NumberInput); // (undocumented) _maxBufferPx: number; get minBufferPx(): number; - set minBufferPx(value: number); + set minBufferPx(value: NumberInput); // (undocumented) _minBufferPx: number; // (undocumented) - static ngAcceptInputType_itemSize: NumberInput; - // (undocumented) - static ngAcceptInputType_maxBufferPx: NumberInput; - // (undocumented) - static ngAcceptInputType_minBufferPx: NumberInput; - // (undocumented) ngOnChanges(): void; _scrollStrategy: FixedSizeVirtualScrollStrategy; // (undocumented) @@ -115,14 +108,12 @@ export class CdkVirtualForOf implements CdkVirtualScrollRepeater, Collecti _cdkVirtualForOf: DataSource | Observable | NgIterable | null | undefined; set cdkVirtualForTemplate(value: TemplateRef>); get cdkVirtualForTemplateCacheSize(): number; - set cdkVirtualForTemplateCacheSize(size: number); + set cdkVirtualForTemplateCacheSize(size: NumberInput); get cdkVirtualForTrackBy(): TrackByFunction | undefined; set cdkVirtualForTrackBy(fn: TrackByFunction | undefined); readonly dataStream: Observable; measureRangeSize(range: ListRange, orientation: 'horizontal' | 'vertical'): number; // (undocumented) - static ngAcceptInputType_cdkVirtualForTemplateCacheSize: NumberInput; - // (undocumented) ngDoCheck(): void; // (undocumented) ngOnDestroy(): void; @@ -157,7 +148,7 @@ export interface CdkVirtualScrollRepeater { export class CdkVirtualScrollViewport extends CdkScrollable implements OnInit, OnDestroy { constructor(elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, ngZone: NgZone, _scrollStrategy: VirtualScrollStrategy, dir: Directionality, scrollDispatcher: ScrollDispatcher, viewportRuler: ViewportRuler); get appendOnly(): boolean; - set appendOnly(value: boolean); + set appendOnly(value: BooleanInput); attach(forOf: CdkVirtualScrollRepeater): void; checkViewportSize(): void; _contentWrapper: ElementRef; @@ -172,8 +163,6 @@ export class CdkVirtualScrollViewport extends CdkScrollable implements OnInit, O measureRenderedContentSize(): number; measureScrollOffset(from?: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number; // (undocumented) - static ngAcceptInputType_appendOnly: BooleanInput; - // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; @@ -261,7 +250,7 @@ export class ScrollingModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/cdk/stepper.md b/tools/public_api_guard/cdk/stepper.md index e5731456d2ca..f2e64fc9c161 100644 --- a/tools/public_api_guard/cdk/stepper.md +++ b/tools/public_api_guard/cdk/stepper.md @@ -29,34 +29,26 @@ export class CdkStep implements OnChanges { ariaLabel: string; ariaLabelledby: string; get completed(): boolean; - set completed(value: boolean); + set completed(value: BooleanInput); // (undocumented) _completedOverride: boolean | null; content: TemplateRef; // (undocumented) _displayDefaultIndicatorType: boolean; get editable(): boolean; - set editable(value: boolean); + set editable(value: BooleanInput); errorMessage: string; get hasError(): boolean; - set hasError(value: boolean); + set hasError(value: BooleanInput); interacted: boolean; readonly interactedStream: EventEmitter; label: string; // (undocumented) _markAsInteracted(): void; // (undocumented) - static ngAcceptInputType_completed: BooleanInput; - // (undocumented) - static ngAcceptInputType_editable: BooleanInput; - // (undocumented) - static ngAcceptInputType_hasError: BooleanInput; - // (undocumented) - static ngAcceptInputType_optional: BooleanInput; - // (undocumented) ngOnChanges(): void; get optional(): boolean; - set optional(value: boolean); + set optional(value: BooleanInput); reset(): void; select(): void; _showError(): boolean; @@ -96,8 +88,7 @@ export class CdkStepLabel { // @public (undocumented) export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy { - constructor(_dir: Directionality, _changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef, - _document: any); + constructor(_dir: Directionality, _changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef); protected readonly _destroyed: Subject; _getAnimationDirection(index: number): StepContentPositionState; _getFocusIndex(): number | null; @@ -106,21 +97,9 @@ export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy { _getStepLabelId(i: number): string; _groupId: number; get linear(): boolean; - set linear(value: boolean); + set linear(value: BooleanInput); next(): void; // (undocumented) - static ngAcceptInputType_completed: BooleanInput; - // (undocumented) - static ngAcceptInputType_editable: BooleanInput; - // (undocumented) - static ngAcceptInputType_hasError: BooleanInput; - // (undocumented) - static ngAcceptInputType_linear: BooleanInput; - // (undocumented) - static ngAcceptInputType_optional: BooleanInput; - // (undocumented) - static ngAcceptInputType_selectedIndex: NumberInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngAfterViewInit(): void; @@ -130,14 +109,12 @@ export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy { _onKeydown(event: KeyboardEvent): void; get orientation(): StepperOrientation; set orientation(value: StepperOrientation); - // @deprecated (undocumented) - protected _orientation: StepperOrientation; previous(): void; reset(): void; get selected(): CdkStep | undefined; set selected(step: CdkStep | undefined); get selectedIndex(): number; - set selectedIndex(index: number); + set selectedIndex(index: NumberInput); readonly selectionChange: EventEmitter; _stateChanged(): void; _stepHeader: QueryList; @@ -146,7 +123,7 @@ export class CdkStepper implements AfterContentInit, AfterViewInit, OnDestroy { // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) @@ -163,8 +140,6 @@ export class CdkStepperModule { export class CdkStepperNext { constructor(_stepper: CdkStepper); // (undocumented) - _handleClick(): void; - // (undocumented) _stepper: CdkStepper; type: string; // (undocumented) @@ -177,8 +152,6 @@ export class CdkStepperNext { export class CdkStepperPrevious { constructor(_stepper: CdkStepper); // (undocumented) - _handleClick(): void; - // (undocumented) _stepper: CdkStepper; type: string; // (undocumented) diff --git a/tools/public_api_guard/cdk/table.md b/tools/public_api_guard/cdk/table.md index c2eca5fbc46d..e3fcc520ed33 100644 --- a/tools/public_api_guard/cdk/table.md +++ b/tools/public_api_guard/cdk/table.md @@ -149,13 +149,9 @@ export class CdkColumnDef extends _CdkColumnDefBase implements CanStick { set name(name: string); // (undocumented) protected _name: string; - // (undocumented) - static ngAcceptInputType_sticky: BooleanInput; - // (undocumented) - static ngAcceptInputType_stickyEnd: BooleanInput; protected _setNameInput(value: string): void; get stickyEnd(): boolean; - set stickyEnd(v: boolean); + set stickyEnd(v: BooleanInput); // (undocumented) _stickyEnd: boolean; // (undocumented) @@ -199,8 +195,6 @@ export class CdkFooterRow { export class CdkFooterRowDef extends _CdkFooterRowDefBase implements CanStick, OnChanges { constructor(template: TemplateRef, _differs: IterableDiffers, _table?: any); // (undocumented) - static ngAcceptInputType_sticky: BooleanInput; - // (undocumented) ngOnChanges(changes: SimpleChanges): void; // (undocumented) _table?: any; @@ -242,8 +236,6 @@ export class CdkHeaderRow { export class CdkHeaderRowDef extends _CdkHeaderRowDefBase implements CanStick, OnChanges { constructor(template: TemplateRef, _differs: IterableDiffers, _table?: any); // (undocumented) - static ngAcceptInputType_sticky: BooleanInput; - // (undocumented) ngOnChanges(changes: SimpleChanges): void; // (undocumented) _table?: any; @@ -257,6 +249,8 @@ export class CdkHeaderRowDef extends _CdkHeaderRowDefBase implements CanStick, O export class CdkNoDataRow { constructor(templateRef: TemplateRef); // (undocumented) + _contentClassName: string; + // (undocumented) templateRef: TemplateRef; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; @@ -295,7 +289,8 @@ export class CdkRowDef extends BaseRowDef { // @public export class CdkTable implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit { constructor(_differs: IterableDiffers, _changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef, role: string, _dir: Directionality, _document: any, _platform: Platform, _viewRepeater: _ViewRepeater, RowContext>, _coalescedStyleScheduler: _CoalescedStyleScheduler, _viewportRuler: ViewportRuler, - _stickyPositioningListener: StickyPositioningListener); + _stickyPositioningListener: StickyPositioningListener, + _ngZone?: NgZone | undefined); addColumnDef(columnDef: CdkColumnDef): void; addFooterRowDef(footerRowDef: CdkFooterRowDef): void; addHeaderRowDef(headerRowDef: CdkHeaderRowDef): void; @@ -319,7 +314,7 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes // (undocumented) protected readonly _elementRef: ElementRef; get fixedLayout(): boolean; - set fixedLayout(v: boolean); + set fixedLayout(v: BooleanInput); // (undocumented) _footerRowOutlet: FooterRowOutlet; _getRenderedRows(rowOutlet: RowOutlet): HTMLElement[]; @@ -328,20 +323,18 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes _headerRowOutlet: HeaderRowOutlet; protected _isNativeHtmlTable: boolean; get multiTemplateDataRows(): boolean; - set multiTemplateDataRows(v: boolean); + set multiTemplateDataRows(v: BooleanInput); // (undocumented) _multiTemplateDataRows: boolean; protected needsPositionStickyOnElement: boolean; // (undocumented) - static ngAcceptInputType_fixedLayout: BooleanInput; - // (undocumented) - static ngAcceptInputType_multiTemplateDataRows: BooleanInput; - // (undocumented) ngAfterContentChecked(): void; // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; + // @deprecated (undocumented) + protected readonly _ngZone?: NgZone | undefined; _noDataRow: CdkNoDataRow; // (undocumented) _noDataRowOutlet: NoDataRowOutlet; @@ -370,7 +363,7 @@ export class CdkTable implements AfterContentChecked, CollectionViewer, OnDes // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration, "cdk-table, table[cdk-table]", ["cdkTable"], { "trackBy": "trackBy"; "dataSource": "dataSource"; "multiTemplateDataRows": "multiTemplateDataRows"; "fixedLayout": "fixedLayout"; }, { "contentChanged": "contentChanged"; }, ["_noDataRow", "_contentColumnDefs", "_contentRowDefs", "_contentHeaderRowDefs", "_contentFooterRowDefs"], ["caption", "colgroup, col"]>; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration, [null, null, null, { attribute: "role"; }, { optional: true; }, null, null, null, null, null, { optional: true; skipSelf: true; }]>; + static ɵfac: i0.ɵɵFactoryDeclaration, [null, null, null, { attribute: "role"; }, { optional: true; }, null, null, null, null, null, { optional: true; skipSelf: true; }, { optional: true; }]>; } // @public (undocumented) diff --git a/tools/public_api_guard/cdk/testing.md b/tools/public_api_guard/cdk/testing.md index 954a3e4de266..a256b1a5cd15 100644 --- a/tools/public_api_guard/cdk/testing.md +++ b/tools/public_api_guard/cdk/testing.md @@ -56,7 +56,11 @@ export abstract class ContentContainerComponentHarness; // (undocumented) getHarness(query: HarnessQuery): Promise; + // (undocumented) + getHarnessOrNull(query: HarnessQuery): Promise; protected getRootHarnessLoader(): Promise; + // (undocumented) + hasHarness(query: HarnessQuery): Promise; } // @public @@ -103,12 +107,16 @@ export abstract class HarnessEnvironment implements HarnessLoader, LocatorFac // (undocumented) getHarness(query: HarnessQuery): Promise; // (undocumented) + getHarnessOrNull(query: HarnessQuery): Promise; + // (undocumented) harnessLoaderFor(selector: string): Promise; // (undocumented) harnessLoaderForAll(selector: string): Promise; // (undocumented) harnessLoaderForOptional(selector: string): Promise; // (undocumented) + hasHarness(query: HarnessQuery): Promise; + // (undocumented) locatorFor | string)[]>(...queries: T): AsyncFactoryFn>; // (undocumented) locatorForAll | string)[]>(...queries: T): AsyncFactoryFn[]>; @@ -117,7 +125,8 @@ export abstract class HarnessEnvironment implements HarnessLoader, LocatorFac // (undocumented) protected rawRootElement: E; // (undocumented) - rootElement: TestElement; + get rootElement(): TestElement; + set rootElement(element: TestElement); // (undocumented) rootHarnessLoader(): Promise; // (undocumented) @@ -130,6 +139,8 @@ export interface HarnessLoader { getAllHarnesses(query: HarnessQuery): Promise; getChildLoader(selector: string): Promise; getHarness(query: HarnessQuery): Promise; + getHarnessOrNull(query: HarnessQuery): Promise; + hasHarness(query: HarnessQuery): Promise; } // @public diff --git a/tools/public_api_guard/cdk/text-field.md b/tools/public_api_guard/cdk/text-field.md index 00049dfdd373..3a025e917714 100644 --- a/tools/public_api_guard/cdk/text-field.md +++ b/tools/public_api_guard/cdk/text-field.md @@ -10,7 +10,6 @@ import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; import * as i0 from '@angular/core'; -import * as i3 from '@angular/cdk/platform'; import { NgZone } from '@angular/core'; import { NumberInput } from '@angular/cdk/coercion'; import { Observable } from 'rxjs'; @@ -59,17 +58,11 @@ export class CdkTextareaAutosize implements AfterViewInit, DoCheck, OnDestroy { document?: any); protected _document?: Document; get enabled(): boolean; - set enabled(value: boolean); + set enabled(value: BooleanInput); get maxRows(): number; - set maxRows(value: number); + set maxRows(value: NumberInput); get minRows(): number; - set minRows(value: number); - // (undocumented) - static ngAcceptInputType_enabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_maxRows: NumberInput; - // (undocumented) - static ngAcceptInputType_minRows: NumberInput; + set minRows(value: NumberInput); // (undocumented) ngAfterViewInit(): void; // (undocumented) @@ -98,7 +91,7 @@ export class TextFieldModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // (No @packageDocumentation comment for this package) diff --git a/tools/public_api_guard/cdk/tree.md b/tools/public_api_guard/cdk/tree.md index 652a6e73cabe..7296e2e125c2 100644 --- a/tools/public_api_guard/cdk/tree.md +++ b/tools/public_api_guard/cdk/tree.md @@ -12,7 +12,6 @@ import { ChangeDetectorRef } from '@angular/core'; import { CollectionViewer } from '@angular/cdk/collections'; import { DataSource } from '@angular/cdk/collections'; import { Directionality } from '@angular/cdk/bidi'; -import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { FocusableOption } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; @@ -56,7 +55,7 @@ export abstract class BaseTreeControl implements TreeControl { export const CDK_TREE_NODE_OUTLET_NODE: InjectionToken<{}>; // @public -export class CdkNestedTreeNode extends CdkTreeNode implements AfterContentInit, DoCheck, OnDestroy, OnInit { +export class CdkNestedTreeNode extends CdkTreeNode implements AfterContentInit, OnDestroy, OnInit { constructor(elementRef: ElementRef, tree: CdkTree, _differs: IterableDiffers); protected _children: T[]; protected _clear(): void; @@ -65,8 +64,6 @@ export class CdkNestedTreeNode extends CdkTreeNode implements Af // (undocumented) ngAfterContentInit(): void; // (undocumented) - ngDoCheck(): void; - // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; @@ -118,7 +115,7 @@ export class CdkTreeModule { } // @public -export class CdkTreeNode implements DoCheck, FocusableOption, OnDestroy, OnInit { +export class CdkTreeNode implements FocusableOption, OnDestroy, OnInit { constructor(_elementRef: ElementRef, _tree: CdkTree); get data(): T; set data(value: T); @@ -130,15 +127,11 @@ export class CdkTreeNode implements DoCheck, FocusableOption, OnDestro protected _elementRef: ElementRef; focus(): void; // (undocumented) - protected _isAriaExpanded: boolean; - // (undocumented) get isExpanded(): boolean; // (undocumented) get level(): number; static mostRecentTreeNode: CdkTreeNode | null; // (undocumented) - ngDoCheck(): void; - // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; @@ -198,16 +191,14 @@ export class CdkTreeNodePadding implements OnDestroy { _indent: number; indentUnits: string; get level(): number; - set level(value: number); + set level(value: NumberInput); // (undocumented) _level: number; // (undocumented) - static ngAcceptInputType_level: NumberInput; - // (undocumented) ngOnDestroy(): void; _paddingIndent(): string | null; protected _setIndentInput(indent: number | string): void; - protected _setLevelInput(value: number): void; + protected _setLevelInput(value: NumberInput): void; // (undocumented) _setPadding(forceChange?: boolean): void; // (undocumented) @@ -219,10 +210,8 @@ export class CdkTreeNodePadding implements OnDestroy { // @public export class CdkTreeNodeToggle { constructor(_tree: CdkTree, _treeNode: CdkTreeNode); - // (undocumented) - static ngAcceptInputType_recursive: BooleanInput; get recursive(): boolean; - set recursive(value: boolean); + set recursive(value: BooleanInput); // (undocumented) protected _recursive: boolean; // (undocumented) diff --git a/tools/public_api_guard/google-maps/google-maps.md b/tools/public_api_guard/google-maps/google-maps.md index 2147c7593a0e..3fa90123c9df 100644 --- a/tools/public_api_guard/google-maps/google-maps.md +++ b/tools/public_api_guard/google-maps/google-maps.md @@ -65,6 +65,7 @@ export class GoogleMap implements OnChanges, OnInit, OnDestroy { readonly mapDrag: Observable; readonly mapDragend: Observable; readonly mapDragstart: Observable; + readonly mapInitialized: EventEmitter; readonly mapMousemove: Observable; readonly mapMouseout: Observable; readonly mapMouseover: Observable; @@ -92,7 +93,7 @@ export class GoogleMap implements OnChanges, OnInit, OnDestroy { set zoom(zoom: number); readonly zoomChanged: Observable; // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } @@ -328,7 +329,7 @@ export class MapInfoWindow implements OnInit, OnDestroy { ngOnDestroy(): void; // (undocumented) ngOnInit(): void; - open(anchor?: MapAnchorPoint): void; + open(anchor?: MapAnchorPoint, shouldFocus?: boolean): void; // (undocumented) set options(options: google.maps.InfoWindowOptions); // (undocumented) diff --git a/tools/public_api_guard/material/autocomplete.md b/tools/public_api_guard/material/autocomplete.md index 58247525df07..8aaaa0b21737 100644 --- a/tools/public_api_guard/material/autocomplete.md +++ b/tools/public_api_guard/material/autocomplete.md @@ -92,7 +92,9 @@ export abstract class _MatAutocompleteBase extends _MatAutocompleteMixinBase imp ariaLabel: string; ariaLabelledby: string; get autoActiveFirstOption(): boolean; - set autoActiveFirstOption(value: boolean); + set autoActiveFirstOption(value: BooleanInput); + get autoSelectActiveOption(): boolean; + set autoSelectActiveOption(value: BooleanInput); set classList(value: string | string[]); // (undocumented) _classList: { @@ -111,10 +113,6 @@ export abstract class _MatAutocompleteBase extends _MatAutocompleteMixinBase imp _isOpen: boolean; _keyManager: ActiveDescendantKeyManager<_MatOptionBase>; // (undocumented) - static ngAcceptInputType_autoActiveFirstOption: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnDestroy(): void; @@ -131,7 +129,7 @@ export abstract class _MatAutocompleteBase extends _MatAutocompleteMixinBase imp template: TemplateRef; protected abstract _visibleClass: string; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration<_MatAutocompleteBase, never, never, { "ariaLabel": "aria-label"; "ariaLabelledby": "aria-labelledby"; "displayWith": "displayWith"; "autoActiveFirstOption": "autoActiveFirstOption"; "panelWidth": "panelWidth"; "classList": "class"; }, { "optionSelected": "optionSelected"; "opened": "opened"; "closed": "closed"; "optionActivated": "optionActivated"; }, never>; + static ɵdir: i0.ɵɵDirectiveDeclaration<_MatAutocompleteBase, never, never, { "ariaLabel": "aria-label"; "ariaLabelledby": "aria-labelledby"; "displayWith": "displayWith"; "autoActiveFirstOption": "autoActiveFirstOption"; "autoSelectActiveOption": "autoSelectActiveOption"; "panelWidth": "panelWidth"; "classList": "class"; }, { "optionSelected": "optionSelected"; "opened": "opened"; "closed": "closed"; "optionActivated": "optionActivated"; }, never>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration<_MatAutocompleteBase, never>; } @@ -139,6 +137,7 @@ export abstract class _MatAutocompleteBase extends _MatAutocompleteMixinBase imp // @public export interface MatAutocompleteDefaultOptions { autoActiveFirstOption?: boolean; + autoSelectActiveOption?: boolean; overlayPanelClass?: string | string[]; } @@ -194,22 +193,22 @@ export class MatAutocompleteTrigger extends _MatAutocompleteTriggerBase { export abstract class _MatAutocompleteTriggerBase implements ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy { constructor(_element: ElementRef, _overlay: Overlay, _viewContainerRef: ViewContainerRef, _zone: NgZone, _changeDetectorRef: ChangeDetectorRef, scrollStrategy: any, _dir: Directionality, _formField: MatFormField, _document: any, _viewportRuler: ViewportRuler, _defaults?: MatAutocompleteDefaultOptions | undefined); protected abstract _aboveClass: string; - get activeOption(): MatOption | null; + get activeOption(): _MatOptionBase | null; autocomplete: _MatAutocompleteBase; autocompleteAttribute: string; get autocompleteDisabled(): boolean; - set autocompleteDisabled(value: boolean); + set autocompleteDisabled(value: BooleanInput); closePanel(): void; connectedTo: _MatAutocompleteOriginBase; // (undocumented) + _handleClick(): void; + // (undocumented) _handleFocus(): void; // (undocumented) _handleInput(event: KeyboardEvent): void; // (undocumented) _handleKeydown(event: KeyboardEvent): void; // (undocumented) - static ngAcceptInputType_autocompleteDisabled: BooleanInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnChanges(changes: SimpleChanges): void; diff --git a/tools/public_api_guard/material/badge.md b/tools/public_api_guard/material/badge.md index bad1bf772b06..f6a9c14d7904 100644 --- a/tools/public_api_guard/material/badge.md +++ b/tools/public_api_guard/material/badge.md @@ -30,22 +30,16 @@ export class MatBadge extends _MatBadgeBase implements OnInit, OnDestroy, CanDis set description(newDescription: string); getBadgeElement(): HTMLElement | undefined; get hidden(): boolean; - set hidden(val: boolean); + set hidden(val: BooleanInput); _id: number; isAbove(): boolean; isAfter(): boolean; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_hidden: BooleanInput; - // (undocumented) - static ngAcceptInputType_overlap: BooleanInput; - // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; get overlap(): boolean; - set overlap(val: boolean); + set overlap(val: BooleanInput); position: MatBadgePosition; size: MatBadgeSize; // (undocumented) diff --git a/tools/public_api_guard/material/button-toggle.md b/tools/public_api_guard/material/button-toggle.md index b2eef59e072c..6f011e8f5313 100644 --- a/tools/public_api_guard/material/button-toggle.md +++ b/tools/public_api_guard/material/button-toggle.md @@ -43,24 +43,14 @@ export class MatButtonToggle extends _MatButtonToggleBase implements OnInit, Aft buttonToggleGroup: MatButtonToggleGroup; readonly change: EventEmitter; get checked(): boolean; - set checked(value: boolean); + set checked(value: BooleanInput); get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); focus(options?: FocusOptions): void; id: string; _markForCheck(): void; name: string; // (undocumented) - static ngAcceptInputType_checked: BooleanInput; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_multiple: BooleanInput; - // (undocumented) - static ngAcceptInputType_vertical: BooleanInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnDestroy(): void; @@ -100,21 +90,15 @@ export class MatButtonToggleGroup implements ControlValueAccessor, OnInit, After readonly change: EventEmitter; _controlValueAccessorChangeFn: (value: any) => void; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); _emitChangeEvent(): void; _isPrechecked(toggle: MatButtonToggle): boolean; _isSelected(toggle: MatButtonToggle): boolean; get multiple(): boolean; - set multiple(value: boolean); + set multiple(value: BooleanInput); get name(): string; set name(value: string); // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_multiple: BooleanInput; - // (undocumented) - static ngAcceptInputType_vertical: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnInit(): void; @@ -131,7 +115,7 @@ export class MatButtonToggleGroup implements ControlValueAccessor, OnInit, After set value(newValue: any); readonly valueChange: EventEmitter; get vertical(): boolean; - set vertical(value: boolean); + set vertical(value: BooleanInput); writeValue(value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; diff --git a/tools/public_api_guard/material/button.md b/tools/public_api_guard/material/button.md index dc1c58c50c36..36d8683dbadf 100644 --- a/tools/public_api_guard/material/button.md +++ b/tools/public_api_guard/material/button.md @@ -6,7 +6,6 @@ import { _AbstractConstructor } from '@angular/material/core'; import { AfterViewInit } from '@angular/core'; -import { BooleanInput } from '@angular/cdk/coercion'; import { CanColor } from '@angular/material/core'; import { CanDisable } from '@angular/material/core'; import { CanDisableRipple } from '@angular/material/core'; @@ -18,18 +17,24 @@ import { FocusOrigin } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i2 from '@angular/material/core'; import { MatRipple } from '@angular/material/core'; +import { NgZone } from '@angular/core'; import { OnDestroy } from '@angular/core'; // @public -export class MatAnchor extends MatButton { - constructor(focusMonitor: FocusMonitor, elementRef: ElementRef, animationMode: string); +export class MatAnchor extends MatButton implements AfterViewInit, OnDestroy { + constructor(focusMonitor: FocusMonitor, elementRef: ElementRef, animationMode: string, + _ngZone?: NgZone | undefined); // (undocumented) - _haltDisabledEvents(event: Event): void; + _haltDisabledEvents: (event: Event) => void; + // (undocumented) + ngAfterViewInit(): void; + // (undocumented) + ngOnDestroy(): void; tabIndex: number; // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public @@ -46,10 +51,6 @@ export class MatButton extends _MatButtonBase implements AfterViewInit, OnDestro _isRippleDisabled(): boolean; readonly isRoundButton: boolean; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnDestroy(): void; diff --git a/tools/public_api_guard/material/checkbox.md b/tools/public_api_guard/material/checkbox.md index aec9306393a2..5991d6833560 100644 --- a/tools/public_api_guard/material/checkbox.md +++ b/tools/public_api_guard/material/checkbox.md @@ -27,7 +27,6 @@ import * as i4 from '@angular/cdk/observers'; import { InjectionToken } from '@angular/core'; import { MatRipple } from '@angular/material/core'; import { NgZone } from '@angular/core'; -import { NumberInput } from '@angular/cdk/coercion'; import { OnDestroy } from '@angular/core'; import { Provider } from '@angular/core'; import { ThemePalette } from '@angular/material/core'; @@ -55,32 +54,22 @@ export class MatCheckbox extends _MatCheckboxBase implements ControlValueAccesso readonly change: EventEmitter; get checked(): boolean; set checked(value: boolean); - get disabled(): any; - set disabled(value: any); + get disabled(): boolean; + set disabled(value: BooleanInput); focus(origin?: FocusOrigin, options?: FocusOptions): void; // (undocumented) _getAriaChecked(): 'true' | 'false' | 'mixed'; id: string; get indeterminate(): boolean; - set indeterminate(value: boolean); + set indeterminate(value: BooleanInput); readonly indeterminateChange: EventEmitter; _inputElement: ElementRef; get inputId(): string; // (undocumented) - _isRippleDisabled(): any; + _isRippleDisabled(): boolean; labelPosition: 'before' | 'after'; name: string | null; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_indeterminate: BooleanInput; - // (undocumented) - static ngAcceptInputType_required: BooleanInput; - // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; - // (undocumented) ngAfterViewChecked(): void; // (undocumented) ngAfterViewInit(): void; @@ -96,7 +85,7 @@ export class MatCheckbox extends _MatCheckboxBase implements ControlValueAccesso // (undocumented) registerOnTouched(fn: any): void; get required(): boolean; - set required(value: boolean); + set required(value: BooleanInput); ripple: MatRipple; // (undocumented) setDisabledState(isDisabled: boolean): void; diff --git a/tools/public_api_guard/material/chips.md b/tools/public_api_guard/material/chips.md index 73fa7666a701..a8f8bada3b3c 100644 --- a/tools/public_api_guard/material/chips.md +++ b/tools/public_api_guard/material/chips.md @@ -30,7 +30,6 @@ import { MatFormFieldControl } from '@angular/material/form-field'; import { NgControl } from '@angular/forms'; import { NgForm } from '@angular/forms'; import { NgZone } from '@angular/core'; -import { NumberInput } from '@angular/cdk/coercion'; import { Observable } from 'rxjs'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; @@ -71,7 +70,7 @@ export class MatChip extends _MatChipMixinBase implements FocusableOption, OnDes deselect(): void; readonly destroyed: EventEmitter; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); // (undocumented) protected _disabled: boolean; focus(): void; @@ -79,23 +78,11 @@ export class MatChip extends _MatChipMixinBase implements FocusableOption, OnDes _handleKeydown(event: KeyboardEvent): void; _hasFocus: boolean; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_removable: BooleanInput; - // (undocumented) - static ngAcceptInputType_selectable: BooleanInput; - // (undocumented) - static ngAcceptInputType_selected: BooleanInput; - // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; - // (undocumented) ngOnDestroy(): void; readonly _onBlur: Subject; readonly _onFocus: Subject; get removable(): boolean; - set removable(value: boolean); + set removable(value: BooleanInput); // (undocumented) protected _removable: boolean; remove(): void; @@ -105,11 +92,11 @@ export class MatChip extends _MatChipMixinBase implements FocusableOption, OnDes get rippleDisabled(): boolean; select(): void; get selectable(): boolean; - set selectable(value: boolean); + set selectable(value: BooleanInput); // (undocumented) protected _selectable: boolean; get selected(): boolean; - set selected(value: boolean); + set selected(value: BooleanInput); // (undocumented) protected _selected: boolean; readonly selectionChange: EventEmitter; @@ -143,7 +130,7 @@ export interface MatChipEvent { export class MatChipInput implements MatChipTextControl, OnChanges, OnDestroy, AfterContentInit { constructor(_elementRef: ElementRef, _defaultOptions: MatChipsDefaultOptions); get addOnBlur(): boolean; - set addOnBlur(value: boolean); + set addOnBlur(value: BooleanInput); // (undocumented) _addOnBlur: boolean; _blur(): void; @@ -153,7 +140,7 @@ export class MatChipInput implements MatChipTextControl, OnChanges, OnDestroy, A _chipList: MatChipList; clear(): void; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); // (undocumented) protected _elementRef: ElementRef; _emitChipEnd(event?: KeyboardEvent): void; @@ -167,10 +154,6 @@ export class MatChipInput implements MatChipTextControl, OnChanges, OnDestroy, A _keydown(event?: KeyboardEvent): void; _keyup(event: KeyboardEvent): void; // (undocumented) - static ngAcceptInputType_addOnBlur: BooleanInput; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnChanges(): void; @@ -188,7 +171,7 @@ export class MatChipInput implements MatChipTextControl, OnChanges, OnDestroy, A // @public export interface MatChipInputEvent { - chipInput?: MatChipInput; + chipInput: MatChipInput; // @deprecated input: HTMLInputElement; value: string; @@ -198,7 +181,6 @@ export interface MatChipInputEvent { export class MatChipList extends _MatChipListBase implements MatFormFieldControl, ControlValueAccessor, AfterContentInit, DoCheck, OnInit, OnDestroy, CanUpdateErrorState { constructor(_elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef, _dir: Directionality, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, _defaultErrorStateMatcher: ErrorStateMatcher, ngControl: NgControl); _allowFocusEscape(): void; - _ariaDescribedby: string; ariaOrientation: 'horizontal' | 'vertical'; _blur(): void; readonly change: EventEmitter; @@ -212,7 +194,7 @@ export class MatChipList extends _MatChipListBase implements MatFormFieldControl set compareWith(fn: (o1: any, o2: any) => boolean); readonly controlType: string; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); // (undocumented) protected _disabled: boolean; // (undocumented) @@ -227,15 +209,7 @@ export class MatChipList extends _MatChipListBase implements MatFormFieldControl _keyManager: FocusKeyManager; _markAsTouched(): void; get multiple(): boolean; - set multiple(value: boolean); - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_multiple: BooleanInput; - // (undocumented) - static ngAcceptInputType_required: BooleanInput; - // (undocumented) - static ngAcceptInputType_selectable: BooleanInput; + set multiple(value: BooleanInput); // (undocumented) ngAfterContentInit(): void; // (undocumented) @@ -257,12 +231,12 @@ export class MatChipList extends _MatChipListBase implements MatFormFieldControl // (undocumented) registerOnTouched(fn: () => void): void; get required(): boolean; - set required(value: boolean); + set required(value: BooleanInput); // (undocumented) protected _required: boolean | undefined; get role(): string | null; get selectable(): boolean; - set selectable(value: boolean); + set selectable(value: BooleanInput); // (undocumented) protected _selectable: boolean; get selected(): MatChip[] | MatChip; @@ -280,6 +254,7 @@ export class MatChipList extends _MatChipListBase implements MatFormFieldControl _uid: string; protected _updateFocusForDestroyedChips(): void; protected _updateTabIndex(): void; + userAriaDescribedBy: string; _userTabIndex: number | null; get value(): any; set value(value: any); @@ -289,7 +264,7 @@ export class MatChipList extends _MatChipListBase implements MatFormFieldControl // (undocumented) writeValue(value: any): void; // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } diff --git a/tools/public_api_guard/material/core.md b/tools/public_api_guard/material/core.md index a61ffd5ebf99..b9415bc8d027 100644 --- a/tools/public_api_guard/material/core.md +++ b/tools/public_api_guard/material/core.md @@ -5,6 +5,7 @@ ```ts import { _AbstractConstructor as _AbstractConstructor_2 } from '@angular/material/core'; +import { AbstractControl } from '@angular/forms'; import { AfterViewChecked } from '@angular/core'; import { BooleanInput } from '@angular/cdk/coercion'; import { ChangeDetectorRef } from '@angular/core'; @@ -14,12 +15,10 @@ import { EventEmitter } from '@angular/core'; import { FocusableOption } from '@angular/cdk/a11y'; import { FocusOptions as FocusOptions_2 } from '@angular/cdk/a11y'; import { FocusOrigin } from '@angular/cdk/a11y'; -import { FormControl } from '@angular/forms'; import { FormGroupDirective } from '@angular/forms'; import { HighContrastModeDetector } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/bidi'; -import * as i1_2 from '@angular/cdk/platform'; import * as i4 from '@angular/common'; import { InjectionToken } from '@angular/core'; import { NgControl } from '@angular/forms'; @@ -78,7 +77,6 @@ export interface CanDisableRipple { export interface CanUpdateErrorState { errorState: boolean; errorStateMatcher: ErrorStateMatcher; - readonly stateChanges: Subject; updateErrorState(): void; } @@ -133,7 +131,7 @@ export const defaultRippleAnimationConfig: { // @public export class ErrorStateMatcher { // (undocumented) - isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean; + isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) @@ -188,8 +186,7 @@ export const MAT_RIPPLE_GLOBAL_OPTIONS: InjectionToken; // @public export class MatCommonModule { - constructor(highContrastModeDetector: HighContrastModeDetector, sanityChecks: any, document: any); - protected _document: Document; + constructor(highContrastModeDetector: HighContrastModeDetector, _sanityChecks: SanityChecks, _document: Document); // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) @@ -233,7 +230,7 @@ export class MatLineModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public (undocumented) @@ -261,30 +258,28 @@ export class _MatOptgroupBase extends _MatOptgroupMixinBase implements CanDisabl label: string; _labelId: string; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration<_MatOptgroupBase, never, never, { "label": "label"; }, {}, never>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration<_MatOptgroupBase, [{ optional: true; }]>; } // @public -export class MatOption extends _MatOptionBase { +export class MatOption extends _MatOptionBase { constructor(element: ElementRef, changeDetectorRef: ChangeDetectorRef, parent: MatOptionParentComponent, group: MatOptgroup); // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration, "mat-option", ["matOption"], {}, {}, never, ["*"]>; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration, [null, null, { optional: true; }, { optional: true; }]>; } // @public (undocumented) -export class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy { +export class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDestroy { constructor(_element: ElementRef, _changeDetectorRef: ChangeDetectorRef, _parent: MatOptionParentComponent, group: _MatOptgroupBase); get active(): boolean; deselect(): void; - get disabled(): any; - set disabled(value: any); - get disableRipple(): boolean | undefined; + get disabled(): boolean; + set disabled(value: BooleanInput); + get disableRipple(): boolean; focus(_origin?: FocusOrigin, options?: FocusOptions_2): void; _getAriaSelected(): boolean | null; _getHostElement(): HTMLElement; @@ -296,24 +291,22 @@ export class _MatOptionBase implements FocusableOption, AfterViewChecked, OnDest id: string; get multiple(): boolean | undefined; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngAfterViewChecked(): void; // (undocumented) ngOnDestroy(): void; - readonly onSelectionChange: EventEmitter; + readonly onSelectionChange: EventEmitter>; select(): void; get selected(): boolean; _selectViaInteraction(): void; setActiveStyles(): void; setInactiveStyles(): void; readonly _stateChanges: Subject; - value: any; + value: T; get viewValue(): string; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration<_MatOptionBase, never, never, { "value": "value"; "id": "id"; "disabled": "disabled"; }, { "onSelectionChange": "onSelectionChange"; }, never>; + static ɵdir: i0.ɵɵDirectiveDeclaration<_MatOptionBase, never, never, { "value": "value"; "id": "id"; "disabled": "disabled"; }, { "onSelectionChange": "onSelectionChange"; }, never>; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration<_MatOptionBase, never>; + static ɵfac: i0.ɵɵFactoryDeclaration<_MatOptionBase, never>; } // @public (undocumented) @@ -323,7 +316,7 @@ export class MatOptionModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public @@ -337,12 +330,12 @@ export interface MatOptionParentComponent { } // @public -export class MatOptionSelectionChange { +export class MatOptionSelectionChange { constructor( - source: _MatOptionBase, + source: _MatOptionBase, isUserInput?: boolean); isUserInput: boolean; - source: _MatOptionBase; + source: _MatOptionBase; } // @public @@ -365,7 +358,7 @@ export class MatPseudoCheckboxModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public @@ -406,7 +399,7 @@ export class MatRippleModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public @@ -491,7 +484,7 @@ export class NativeDateModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public @@ -523,7 +516,9 @@ export class RippleRef { fadeOutRipple(ref: RippleRef): void; }, element: HTMLElement, - config: RippleConfig); + config: RippleConfig, _animationForciblyDisabledThroughCss?: boolean); + // (undocumented) + _animationForciblyDisabledThroughCss: boolean; config: RippleConfig; element: HTMLElement; fadeOut(): void; @@ -569,7 +564,7 @@ export function setLines(lines: QueryList, element: ElementRef; // (undocumented) diff --git a/tools/public_api_guard/material/datepicker.md b/tools/public_api_guard/material/datepicker.md index 510ea0ec7719..4d3a353d8c48 100644 --- a/tools/public_api_guard/material/datepicker.md +++ b/tools/public_api_guard/material/datepicker.md @@ -197,15 +197,19 @@ export class MatCalendar implements AfterContentInit, AfterViewChecked, OnDes } // @public -export class MatCalendarBody implements OnChanges, OnDestroy { +export class MatCalendarBody implements OnChanges, OnDestroy, AfterViewChecked { constructor(_elementRef: ElementRef, _ngZone: NgZone); activeCell: number; + // (undocumented) + readonly activeDateChange: EventEmitter>; cellAspectRatio: number; _cellClicked(cell: MatCalendarCell, event: MouseEvent): void; _cellPadding: string; _cellWidth: string; comparisonEnd: number | null; comparisonStart: number | null; + // (undocumented) + _emitActiveDateChange(cell: MatCalendarCell, event: FocusEvent): void; endValue: number; _firstRowOffset: number; _focusActiveCell(movePreview?: boolean): void; @@ -227,6 +231,8 @@ export class MatCalendarBody implements OnChanges, OnDestroy { label: string; labelMinRequiredCells: number; // (undocumented) + ngAfterViewChecked(): void; + // (undocumented) ngOnChanges(changes: SimpleChanges): void; // (undocumented) ngOnDestroy(): void; @@ -235,11 +241,12 @@ export class MatCalendarBody implements OnChanges, OnDestroy { previewEnd: number | null; previewStart: number | null; rows: MatCalendarCell[][]; + _scheduleFocusActiveCellAfterViewChecked(): void; readonly selectedValueChange: EventEmitter>; startValue: number; todayValue: number; // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } @@ -359,7 +366,7 @@ abstract class MatDatepickerBase, S, D = Extra dateClass: MatCalendarCellClassFunction; datepickerInput: C; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); protected _forwardContentValues(instance: MatDatepickerContent): void; // (undocumented) _getDateFilter(): DateFilterFn; @@ -368,20 +375,12 @@ abstract class MatDatepickerBase, S, D = Extra id: string; readonly monthSelected: EventEmitter; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_opened: BooleanInput; - // (undocumented) - static ngAcceptInputType_restoreFocus: BooleanInput; - // (undocumented) - static ngAcceptInputType_touchUi: BooleanInput; - // (undocumented) ngOnChanges(changes: SimpleChanges): void; // (undocumented) ngOnDestroy(): void; open(): void; get opened(): boolean; - set opened(value: boolean); + set opened(value: BooleanInput); readonly openedStream: EventEmitter; get panelClass(): string | string[]; set panelClass(value: string | string[]); @@ -389,7 +388,7 @@ abstract class MatDatepickerBase, S, D = Extra registerInput(input: C): MatDateSelectionModel; removeActions(portal: TemplatePortal): void; get restoreFocus(): boolean; - set restoreFocus(value: boolean); + set restoreFocus(value: BooleanInput); select(date: D): void; _selectMonth(normalizedMonth: D): void; _selectYear(normalizedYear: D): void; @@ -398,7 +397,7 @@ abstract class MatDatepickerBase, S, D = Extra startView: 'month' | 'year' | 'multi-year'; readonly stateChanges: Subject; get touchUi(): boolean; - set touchUi(value: boolean); + set touchUi(value: BooleanInput); readonly viewChanged: EventEmitter; _viewChanged(view: MatCalendarView): void; xPosition: DatepickerDropdownPositionX; @@ -434,6 +433,7 @@ export class MatDatepickerContent> extend comparisonEnd: D | null; comparisonStart: D | null; datepicker: MatDatepickerBase; + _dialogLabelId: string | null; // (undocumented) _getSelected(): D | DateRange | null; // (undocumented) @@ -573,13 +573,11 @@ export class MatDatepickerToggle implements AfterContentInit, OnChanges, OnDe _customIcon: MatDatepickerToggleIcon; datepicker: MatDatepickerPanel, D>; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); disableRipple: boolean; // (undocumented) _intl: MatDatepickerIntl; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnChanges(changes: SimpleChanges): void; @@ -612,7 +610,7 @@ export class MatDateRangeInput implements MatFormFieldControl>, get dateFilter(): DateFilterFn; set dateFilter(value: DateFilterFn); get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); get empty(): boolean; // (undocumented) _endInput: MatEndDate; @@ -633,10 +631,6 @@ export class MatDateRangeInput implements MatFormFieldControl>, get min(): D | null; set min(value: D | null); // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_required: BooleanInput; - // (undocumented) ngAfterContentInit(): void; ngControl: NgControl | null; // (undocumented) @@ -649,7 +643,7 @@ export class MatDateRangeInput implements MatFormFieldControl>, get rangePicker(): MatDatepickerPanel, DateRange, D>; set rangePicker(rangePicker: MatDatepickerPanel, DateRange, D>); get required(): boolean; - set required(value: boolean); + set required(value: BooleanInput); separator: string; setDescribedByIds(ids: string[]): void; _shouldHidePlaceholders(): boolean; @@ -741,17 +735,13 @@ export abstract class MatDateSelectionModel extends _MatDateRangeInputBase implements CanUpdateErrorState, DoCheck, OnInit { +export class MatEndDate extends _MatDateRangeInputBase implements CanUpdateErrorState { constructor(rangeInput: MatDateRangeInputParent, elementRef: ElementRef, defaultErrorStateMatcher: ErrorStateMatcher, injector: Injector, parentForm: NgForm, parentFormGroup: FormGroupDirective, dateAdapter: DateAdapter, dateFormats: MatDateFormats); // (undocumented) protected _assignValueToModel(value: D | null): void; // (undocumented) protected _getValueFromModel(modelValue: DateRange): D | null; // (undocumented) - ngDoCheck(): void; - // (undocumented) - ngOnInit(): void; - // (undocumented) _onKeydown(event: KeyboardEvent): void; // (undocumented) protected _shouldHandleChangeEvent(change: DateSelectionModelChange>): boolean; @@ -782,6 +772,7 @@ export class MatMonthView implements AfterContentInit, OnChanges, OnDestroy { _dateSelected(event: MatCalendarUserEvent): void; _firstWeekOffset: number; _focusActiveCell(movePreview?: boolean): void; + _focusActiveCellAfterViewChecked(): void; _handleCalendarBodyKeydown(event: KeyboardEvent): void; _handleCalendarBodyKeyup(event: KeyboardEvent): void; _init(): void; @@ -807,6 +798,7 @@ export class MatMonthView implements AfterContentInit, OnChanges, OnDestroy { set selected(value: DateRange | D | null); readonly selectedChange: EventEmitter; _todayDate: number | null; + _updateActiveDate(event: MatCalendarUserEvent): void; readonly _userSelection: EventEmitter>; _weekdays: { long: string; @@ -830,6 +822,7 @@ export class MatMultiYearView implements AfterContentInit, OnDestroy { dateClass: MatCalendarCellClassFunction; dateFilter: (date: D) => boolean; _focusActiveCell(): void; + _focusActiveCellAfterViewChecked(): void; // (undocumented) _getActiveCell(): number; _handleCalendarBodyKeydown(event: KeyboardEvent): void; @@ -849,6 +842,7 @@ export class MatMultiYearView implements AfterContentInit, OnDestroy { readonly selectedChange: EventEmitter; _selectedYear: number | null; _todayYear: number; + _updateActiveDate(event: MatCalendarUserEvent): void; _years: MatCalendarCell[][]; readonly yearSelected: EventEmitter; _yearSelected(event: MatCalendarUserEvent): void; @@ -885,7 +879,7 @@ export class MatSingleDateSelectionModel extends MatDateSelectionModel extends _MatDateRangeInputBase implements CanUpdateErrorState, DoCheck, OnInit { +export class MatStartDate extends _MatDateRangeInputBase implements CanUpdateErrorState { constructor(rangeInput: MatDateRangeInputParent, elementRef: ElementRef, defaultErrorStateMatcher: ErrorStateMatcher, injector: Injector, parentForm: NgForm, parentFormGroup: FormGroupDirective, dateAdapter: DateAdapter, dateFormats: MatDateFormats); // (undocumented) protected _assignValueToModel(value: D | null): void; @@ -895,10 +889,6 @@ export class MatStartDate extends _MatDateRangeInputBase implements CanUpd // (undocumented) protected _getValueFromModel(modelValue: DateRange): D | null; // (undocumented) - ngDoCheck(): void; - // (undocumented) - ngOnInit(): void; - // (undocumented) protected _shouldHandleChangeEvent(change: DateSelectionModelChange>): boolean; // (undocumented) protected _validator: ValidatorFn | null; @@ -921,6 +911,7 @@ export class MatYearView implements AfterContentInit, OnDestroy { dateClass: MatCalendarCellClassFunction; dateFilter: (date: D) => boolean; _focusActiveCell(): void; + _focusActiveCellAfterViewChecked(): void; _handleCalendarBodyKeydown(event: KeyboardEvent): void; _handleCalendarBodyKeyup(event: KeyboardEvent): void; _init(): void; @@ -941,6 +932,7 @@ export class MatYearView implements AfterContentInit, OnDestroy { readonly selectedChange: EventEmitter; _selectedMonth: number | null; _todayMonth: number | null; + _updateActiveDate(event: MatCalendarUserEvent): void; _yearLabel: string; // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration, "mat-year-view", ["matYearView"], { "activeDate": "activeDate"; "selected": "selected"; "minDate": "minDate"; "maxDate": "maxDate"; "dateFilter": "dateFilter"; "dateClass": "dateClass"; }, { "selectedChange": "selectedChange"; "monthSelected": "monthSelected"; "activeDateChange": "activeDateChange"; }, never, never>; diff --git a/tools/public_api_guard/material/dialog.md b/tools/public_api_guard/material/dialog.md index 35da0a953e73..dbebade3802a 100644 --- a/tools/public_api_guard/material/dialog.md +++ b/tools/public_api_guard/material/dialog.md @@ -96,8 +96,9 @@ export class MatDialog extends _MatDialogBase { // @public export class MatDialogActions { + align?: 'start' | 'center' | 'end'; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration; + static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } diff --git a/tools/public_api_guard/material/divider.md b/tools/public_api_guard/material/divider.md index da5649fec26c..df4ef44cf8d5 100644 --- a/tools/public_api_guard/material/divider.md +++ b/tools/public_api_guard/material/divider.md @@ -11,13 +11,9 @@ import * as i2 from '@angular/material/core'; // @public (undocumented) export class MatDivider { get inset(): boolean; - set inset(value: boolean); - // (undocumented) - static ngAcceptInputType_inset: BooleanInput; - // (undocumented) - static ngAcceptInputType_vertical: BooleanInput; + set inset(value: BooleanInput); get vertical(): boolean; - set vertical(value: boolean); + set vertical(value: BooleanInput); // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) diff --git a/tools/public_api_guard/material/expansion.md b/tools/public_api_guard/material/expansion.md index b6bfc69a8c95..8a033ebf00ad 100644 --- a/tools/public_api_guard/material/expansion.md +++ b/tools/public_api_guard/material/expansion.md @@ -26,7 +26,6 @@ import * as i6 from '@angular/material/core'; import * as i7 from '@angular/cdk/accordion'; import * as i8 from '@angular/cdk/portal'; import { InjectionToken } from '@angular/core'; -import { NumberInput } from '@angular/cdk/coercion'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { QueryList } from '@angular/core'; @@ -54,9 +53,7 @@ export class MatAccordion extends CdkAccordion implements MatAccordionBase, Afte _handleHeaderKeydown(event: KeyboardEvent): void; _headers: QueryList; get hideToggle(): boolean; - set hideToggle(show: boolean); - // (undocumented) - static ngAcceptInputType_hideToggle: BooleanInput; + set hideToggle(show: BooleanInput); // (undocumented) ngAfterContentInit(): void; // (undocumented) @@ -115,12 +112,10 @@ export class MatExpansionPanel extends CdkAccordionItem implements AfterContentI _hasSpacing(): boolean; _headerId: string; get hideToggle(): boolean; - set hideToggle(value: boolean); + set hideToggle(value: BooleanInput); readonly _inputChanges: Subject; _lazyContent: MatExpansionPanelContent; // (undocumented) - static ngAcceptInputType_hideToggle: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnChanges(changes: SimpleChanges): void; @@ -187,8 +182,6 @@ export class MatExpansionPanelHeader extends _MatExpansionPanelHeaderMixinBase i _isExpanded(): boolean; _keydown(event: KeyboardEvent): void; // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnDestroy(): void; diff --git a/tools/public_api_guard/material/form-field.md b/tools/public_api_guard/material/form-field.md index 23c7f37adcc1..c80c2431394e 100644 --- a/tools/public_api_guard/material/form-field.md +++ b/tools/public_api_guard/material/form-field.md @@ -26,6 +26,7 @@ import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { Platform } from '@angular/cdk/platform'; import { QueryList } from '@angular/core'; +import { ThemePalette } from '@angular/material/core'; // @public export type FloatLabelType = 'always' | 'never' | 'auto'; @@ -103,7 +104,7 @@ export class MatFormField extends _MatFormFieldBase implements AfterContentInit, // (undocumented) _hideControlPlaceholder(): boolean; get hideRequiredMarker(): boolean; - set hideRequiredMarker(value: boolean); + set hideRequiredMarker(value: BooleanInput); // (undocumented) _hintChildren: QueryList; get hintLabel(): string; @@ -119,8 +120,6 @@ export class MatFormField extends _MatFormFieldBase implements AfterContentInit, // (undocumented) readonly _labelId: string; // (undocumented) - static ngAcceptInputType_hideRequiredMarker: BooleanInput; - // (undocumented) ngAfterContentChecked(): void; // (undocumented) ngAfterContentInit(): void; @@ -181,10 +180,9 @@ export abstract class MatFormFieldControl { // @public export interface MatFormFieldDefaultOptions { - // (undocumented) appearance?: MatFormFieldAppearance; + color?: ThemePalette; floatLabel?: FloatLabelType; - // (undocumented) hideRequiredMarker?: boolean; } diff --git a/tools/public_api_guard/material/grid-list.md b/tools/public_api_guard/material/grid-list.md index 99d758125fdb..a84ac5f46863 100644 --- a/tools/public_api_guard/material/grid-list.md +++ b/tools/public_api_guard/material/grid-list.md @@ -27,11 +27,9 @@ export class MatGridAvatarCssMatStyler { export class MatGridList implements MatGridListBase, OnInit, AfterContentChecked, TileStyleTarget { constructor(_element: ElementRef, _dir: Directionality); get cols(): number; - set cols(value: number); + set cols(value: NumberInput); get gutterSize(): string; set gutterSize(value: string); - // (undocumented) - static ngAcceptInputType_cols: NumberInput; ngAfterContentChecked(): void; // (undocumented) ngOnInit(): void; @@ -59,17 +57,13 @@ export class MatGridListModule { export class MatGridTile { constructor(_element: ElementRef, _gridList?: MatGridListBase | undefined); get colspan(): number; - set colspan(value: number); + set colspan(value: NumberInput); // (undocumented) _colspan: number; // (undocumented) _gridList?: MatGridListBase | undefined; - // (undocumented) - static ngAcceptInputType_colspan: NumberInput; - // (undocumented) - static ngAcceptInputType_rowspan: NumberInput; get rowspan(): number; - set rowspan(value: number); + set rowspan(value: NumberInput); // (undocumented) _rowspan: number; _setStyle(property: string, value: any): void; diff --git a/tools/public_api_guard/material/icon-testing.md b/tools/public_api_guard/material/icon-testing.md index c240c8c20b79..919ce2e72d5f 100644 --- a/tools/public_api_guard/material/icon-testing.md +++ b/tools/public_api_guard/material/icon-testing.md @@ -35,7 +35,7 @@ export class FakeMatIconRegistry implements PublicApi, OnDestro // (undocumented) classNameForFontAlias(alias: string): string; // (undocumented) - getDefaultFontSetClass(): string; + getDefaultFontSetClass(): string[]; // (undocumented) getNamedSvgIcon(): Observable; // (undocumented) diff --git a/tools/public_api_guard/material/icon.md b/tools/public_api_guard/material/icon.md index 9f3b46bf789f..2387653cabe6 100644 --- a/tools/public_api_guard/material/icon.md +++ b/tools/public_api_guard/material/icon.md @@ -22,6 +22,7 @@ import { OnInit } from '@angular/core'; import { Optional } from '@angular/core'; import { SafeHtml } from '@angular/platform-browser'; import { SafeResourceUrl } from '@angular/platform-browser'; +import { ThemePalette } from '@angular/material/core'; // @public export function getMatIconFailedToSanitizeLiteralError(literal: SafeHtml): Error; @@ -54,6 +55,9 @@ export interface IconOptions { // @public export type IconResolver = (name: string, namespace: string) => SafeResourceUrl | SafeResourceUrlWithIconOptions | null; +// @public +export const MAT_ICON_DEFAULT_OPTIONS: InjectionToken; + // @public export const MAT_ICON_LOCATION: InjectionToken; @@ -62,15 +66,13 @@ export function MAT_ICON_LOCATION_FACTORY(): MatIconLocation; // @public export class MatIcon extends _MatIconBase implements OnInit, AfterViewChecked, CanColor, OnDestroy { - constructor(elementRef: ElementRef, _iconRegistry: MatIconRegistry, ariaHidden: string, _location: MatIconLocation, _errorHandler: ErrorHandler); + constructor(elementRef: ElementRef, _iconRegistry: MatIconRegistry, ariaHidden: string, _location: MatIconLocation, _errorHandler: ErrorHandler, defaults?: MatIconDefaultOptions); get fontIcon(): string; set fontIcon(value: string); get fontSet(): string; set fontSet(value: string); get inline(): boolean; - set inline(inline: boolean); - // (undocumented) - static ngAcceptInputType_inline: BooleanInput; + set inline(inline: BooleanInput); // (undocumented) ngAfterViewChecked(): void; // (undocumented) @@ -88,7 +90,13 @@ export class MatIcon extends _MatIconBase implements OnInit, AfterViewChecked, C // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; +} + +// @public +export interface MatIconDefaultOptions { + color?: ThemePalette; + fontSet?: string; } // @public @@ -120,13 +128,13 @@ export class MatIconRegistry implements OnDestroy { addSvgIconSetLiteral(literal: SafeHtml, options?: IconOptions): this; addSvgIconSetLiteralInNamespace(namespace: string, literal: SafeHtml, options?: IconOptions): this; classNameForFontAlias(alias: string): string; - getDefaultFontSetClass(): string; + getDefaultFontSetClass(): string[]; getNamedSvgIcon(name: string, namespace?: string): Observable; getSvgIconFromUrl(safeUrl: SafeResourceUrl): Observable; // (undocumented) ngOnDestroy(): void; registerFontClassAlias(alias: string, className?: string): this; - setDefaultFontSetClass(className: string): this; + setDefaultFontSetClass(...classNames: string[]): this; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) diff --git a/tools/public_api_guard/material/input.md b/tools/public_api_guard/material/input.md index 9a6d511c6eb8..384f7dc3f80d 100644 --- a/tools/public_api_guard/material/input.md +++ b/tools/public_api_guard/material/input.md @@ -44,7 +44,7 @@ export class MatInput extends _MatInputBase implements MatFormFieldControl, controlType: string; protected _dirtyCheckNativeValue(): void; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); // (undocumented) protected _disabled: boolean; // (undocumented) @@ -65,17 +65,10 @@ export class MatInput extends _MatInputBase implements MatFormFieldControl, protected _isNeverEmpty(): boolean; readonly _isServer: boolean; readonly _isTextarea: boolean; + name: string; // (undocumented) protected _neverEmptyInputTypes: string[]; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_readonly: BooleanInput; - // (undocumented) - static ngAcceptInputType_required: BooleanInput; - // (undocumented) - static ngAcceptInputType_value: any; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngDoCheck(): void; @@ -92,9 +85,9 @@ export class MatInput extends _MatInputBase implements MatFormFieldControl, // (undocumented) protected _previousNativeValue: any; get readonly(): boolean; - set readonly(value: boolean); + set readonly(value: BooleanInput); get required(): boolean; - set required(value: boolean); + set required(value: BooleanInput); // (undocumented) protected _required: boolean | undefined; setDescribedByIds(ids: string[]): void; @@ -109,9 +102,9 @@ export class MatInput extends _MatInputBase implements MatFormFieldControl, userAriaDescribedBy: string; protected _validateType(): void; get value(): string; - set value(value: string); + set value(value: any); // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration; + static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } diff --git a/tools/public_api_guard/material/list-testing.md b/tools/public_api_guard/material/list-testing.md index 12fe03a49397..6f3b794bd565 100644 --- a/tools/public_api_guard/material/list-testing.md +++ b/tools/public_api_guard/material/list-testing.md @@ -87,7 +87,6 @@ export class MatListOptionHarness extends MatListItemHarnessBase { focus(): Promise; getCheckboxPosition(): Promise; static hostSelector: string; - isDisabled(): Promise; isFocused(): Promise; isSelected(): Promise; select(): Promise; diff --git a/tools/public_api_guard/material/list.md b/tools/public_api_guard/material/list.md index 0cdc0a53b757..7d663f341721 100644 --- a/tools/public_api_guard/material/list.md +++ b/tools/public_api_guard/material/list.md @@ -47,10 +47,6 @@ export class MatList extends _MatListBase implements CanDisable, CanDisableRippl // (undocumented) _getListType(): 'list' | 'action-list' | null; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) ngOnChanges(): void; // (undocumented) ngOnDestroy(): void; @@ -83,7 +79,7 @@ export class MatListItem extends _MatListItemMixinBase implements AfterContentIn // (undocumented) _avatar: MatListAvatarCssMatStyler; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); _getHostElement(): HTMLElement; // (undocumented) _icon: MatListIconCssMatStyler; @@ -91,10 +87,6 @@ export class MatListItem extends _MatListItemMixinBase implements AfterContentIn // (undocumented) _lines: QueryList; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnDestroy(): void; @@ -123,8 +115,8 @@ export class MatListOption extends _MatListOptionBase implements AfterContentIni checkboxPosition: MatListOptionCheckboxPosition; get color(): ThemePalette; set color(newValue: ThemePalette); - get disabled(): any; - set disabled(value: any); + get disabled(): boolean; + set disabled(value: BooleanInput); focus(): void; _getHostElement(): HTMLElement; getLabel(): any; @@ -136,24 +128,18 @@ export class MatListOption extends _MatListOptionBase implements AfterContentIni _handleFocus(): void; // (undocumented) _icon: MatListIconCssMatStyler; - _isRippleDisabled(): any; + _isRippleDisabled(): boolean; // (undocumented) _lines: QueryList; _markForCheck(): void; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_selected: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; get selected(): boolean; - set selected(value: boolean); + set selected(value: BooleanInput); readonly selectedChange: EventEmitter; selectionList: MatSelectionList; _setSelected(selected: boolean): boolean; @@ -180,10 +166,6 @@ export class MatListSubheaderCssMatStyler { // @public (undocumented) export class MatNavList extends _MatListBase implements CanDisable, CanDisableRipple, OnChanges, OnDestroy { - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; // (undocumented) ngOnChanges(): void; // (undocumented) @@ -202,19 +184,13 @@ export class MatSelectionList extends _MatSelectionListBase implements CanDisabl compareWith: (o1: any, o2: any) => boolean; deselectAll(): MatListOption[]; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); _emitChangeEvent(options: MatListOption[]): void; focus(options?: FocusOptions): void; _keydown(event: KeyboardEvent): void; _keyManager: FocusKeyManager; get multiple(): boolean; - set multiple(value: boolean); - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_multiple: BooleanInput; + set multiple(value: BooleanInput); // (undocumented) ngAfterContentInit(): void; // (undocumented) diff --git a/tools/public_api_guard/material/menu.md b/tools/public_api_guard/material/menu.md index 2a53f47f5303..68e33fb5a809 100644 --- a/tools/public_api_guard/material/menu.md +++ b/tools/public_api_guard/material/menu.md @@ -71,6 +71,7 @@ const MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER: { // @public export class MatMenu extends _MatMenuBase { + // @deprecated constructor(elementRef: ElementRef, ngZone: NgZone, defaultOptions: MatMenuDefaultOptions); // (undocumented) protected _baseElevation: number; @@ -90,7 +91,7 @@ export const matMenuAnimations: { // @public export class _MatMenuBase implements AfterContentInit, MatMenuPanel, OnInit, OnDestroy { - constructor(_elementRef: ElementRef, _ngZone: NgZone, _defaultOptions: MatMenuDefaultOptions); + constructor(_elementRef: ElementRef, _ngZone: NgZone, _defaultOptions: MatMenuDefaultOptions, _changeDetectorRef?: ChangeDetectorRef | undefined); // (undocumented) addItem(_item: MatMenuItem): void; _allItems: QueryList; @@ -110,23 +111,20 @@ export class _MatMenuBase implements AfterContentInit, MatMenuPanel // @deprecated readonly close: EventEmitter; readonly closed: EventEmitter; + _directDescendantItems: QueryList; direction: Direction; // (undocumented) protected _elevationPrefix: string; focusFirstItem(origin?: FocusOrigin): void; _handleKeydown(event: KeyboardEvent): void; get hasBackdrop(): boolean | undefined; - set hasBackdrop(value: boolean | undefined); + set hasBackdrop(value: BooleanInput); _hovered(): Observable; _isAnimating: boolean; // @deprecated items: QueryList; lazyContent: MatMenuContent; // (undocumented) - static ngAcceptInputType_hasBackdrop: BooleanInput; - // (undocumented) - static ngAcceptInputType_overlapTrigger: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnDestroy(): void; @@ -136,7 +134,7 @@ export class _MatMenuBase implements AfterContentInit, MatMenuPanel // (undocumented) _onAnimationStart(event: AnimationEvent_2): void; get overlapTrigger(): boolean; - set overlapTrigger(value: boolean); + set overlapTrigger(value: BooleanInput); overlayPanelClass: string | string[]; _panelAnimationState: 'void' | 'enter'; set panelClass(classes: string); @@ -171,7 +169,8 @@ export class MatMenuContent extends _MatMenuContentBase { // @public (undocumented) export abstract class _MatMenuContentBase implements OnDestroy { - constructor(_template: TemplateRef, _componentFactoryResolver: ComponentFactoryResolver, _appRef: ApplicationRef, _injector: Injector, _viewContainerRef: ViewContainerRef, _document: any, _changeDetectorRef?: ChangeDetectorRef | undefined); + // @deprecated + constructor(template: TemplateRef, componentFactoryResolver: ComponentFactoryResolver, appRef: ApplicationRef, injector: Injector, viewContainerRef: ViewContainerRef, document: any, changeDetectorRef?: ChangeDetectorRef); attach(context?: any): void; readonly _attached: Subject; detach(): void; @@ -195,9 +194,8 @@ export interface MatMenuDefaultOptions { // @public export class MatMenuItem extends _MatMenuItemBase implements FocusableOption, CanDisable, CanDisableRipple, AfterViewInit, OnDestroy { - constructor(_elementRef: ElementRef, - _document?: any, _focusMonitor?: FocusMonitor | undefined, _parentMenu?: MatMenuPanel | undefined, - _changeDetectorRef?: ChangeDetectorRef | undefined); + // @deprecated + constructor(elementRef: ElementRef, document?: any, focusMonitor?: FocusMonitor, parentMenu?: MatMenuPanel, changeDetectorRef?: ChangeDetectorRef); _checkDisabled(event: Event): void; focus(origin?: FocusOrigin, options?: FocusOptions): void; readonly _focused: Subject; @@ -205,13 +203,11 @@ export class MatMenuItem extends _MatMenuItemBase implements FocusableOption, Ca getLabel(): string; _getTabIndex(): string; _handleMouseEnter(): void; + // (undocumented) + _hasFocus(): boolean; _highlighted: boolean; readonly _hovered: Subject; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnDestroy(): void; @@ -287,24 +283,21 @@ export class MatMenuTrigger extends _MatMenuTriggerBase { // @public (undocumented) export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy { - constructor(_overlay: Overlay, _element: ElementRef, _viewContainerRef: ViewContainerRef, scrollStrategy: any, parentMenu: MatMenuPanel, _menuItemInstance: MatMenuItem, _dir: Directionality, _focusMonitor?: FocusMonitor | undefined); - // (undocumented) - get _ariaControl(): string | null | undefined; - // (undocumented) - get _ariaExpanded(): true | null; - // (undocumented) - _ariaHaspopup: boolean; + // @deprecated + constructor(overlay: Overlay, element: ElementRef, viewContainerRef: ViewContainerRef, scrollStrategy: any, parentMenu: MatMenuPanel, menuItemInstance: MatMenuItem, dir: Directionality, focusMonitor?: FocusMonitor | null); + // @deprecated + constructor(overlay: Overlay, element: ElementRef, viewContainerRef: ViewContainerRef, scrollStrategy: any, parentMenu: MatMenuPanel, menuItemInstance: MatMenuItem, dir: Directionality, focusMonitor: FocusMonitor); closeMenu(): void; // @deprecated (undocumented) - get _deprecatedMatMenuTriggerFor(): MatMenuPanel; - set _deprecatedMatMenuTriggerFor(v: MatMenuPanel); + get _deprecatedMatMenuTriggerFor(): MatMenuPanel | null; + set _deprecatedMatMenuTriggerFor(v: MatMenuPanel | null); get dir(): Direction; focus(origin?: FocusOrigin, options?: FocusOptions): void; _handleClick(event: MouseEvent): void; _handleKeydown(event: KeyboardEvent): void; _handleMousedown(event: MouseEvent): void; - get menu(): MatMenuPanel; - set menu(menu: MatMenuPanel); + get menu(): MatMenuPanel | null; + set menu(menu: MatMenuPanel | null); readonly menuClosed: EventEmitter; menuData: any; get menuOpen(): boolean; @@ -327,10 +320,10 @@ export abstract class _MatMenuTriggerBase implements AfterContentInit, OnDestroy // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration<_MatMenuTriggerBase, never, never, { "_deprecatedMatMenuTriggerFor": "mat-menu-trigger-for"; "menu": "matMenuTriggerFor"; "menuData": "matMenuTriggerData"; "restoreFocus": "matMenuTriggerRestoreFocus"; }, { "menuOpened": "menuOpened"; "onMenuOpen": "onMenuOpen"; "menuClosed": "menuClosed"; "onMenuClose": "onMenuClose"; }, never>; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration<_MatMenuTriggerBase, [null, null, null, null, { optional: true; }, { optional: true; self: true; }, { optional: true; }, null]>; + static ɵfac: i0.ɵɵFactoryDeclaration<_MatMenuTriggerBase, [null, null, null, null, { optional: true; }, { optional: true; self: true; }, { optional: true; }, null, null]>; } -// @public +// @public @deprecated const MENU_PANEL_TOP_PADDING = 8; // @public diff --git a/tools/public_api_guard/material/paginator.md b/tools/public_api_guard/material/paginator.md index dc4c11c3c4e0..070aefc07db5 100644 --- a/tools/public_api_guard/material/paginator.md +++ b/tools/public_api_guard/material/paginator.md @@ -65,43 +65,32 @@ export abstract class _MatPaginatorBase; get pageIndex(): number; - set pageIndex(value: number); + set pageIndex(value: NumberInput); get pageSize(): number; - set pageSize(value: number); + set pageSize(value: NumberInput); get pageSizeOptions(): number[]; - set pageSizeOptions(value: number[]); + set pageSizeOptions(value: number[] | readonly number[]); _previousButtonsDisabled(): boolean; previousPage(): void; + selectConfig: MatPaginatorSelectConfig; get showFirstLastButtons(): boolean; - set showFirstLastButtons(value: boolean); + set showFirstLastButtons(value: BooleanInput); // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration<_MatPaginatorBase, never, never, { "color": "color"; "pageIndex": "pageIndex"; "length": "length"; "pageSize": "pageSize"; "pageSizeOptions": "pageSizeOptions"; "hidePageSize": "hidePageSize"; "showFirstLastButtons": "showFirstLastButtons"; }, { "page": "page"; }, never>; + static ɵdir: i0.ɵɵDirectiveDeclaration<_MatPaginatorBase, never, never, { "color": "color"; "pageIndex": "pageIndex"; "length": "length"; "pageSize": "pageSize"; "pageSizeOptions": "pageSizeOptions"; "hidePageSize": "hidePageSize"; "showFirstLastButtons": "showFirstLastButtons"; "selectConfig": "selectConfig"; }, { "page": "page"; }, never>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration<_MatPaginatorBase, never>; } @@ -140,6 +129,14 @@ export class MatPaginatorModule { static ɵmod: i0.ɵɵNgModuleDeclaration; } +// @public +export interface MatPaginatorSelectConfig { + disableOptionCentering?: boolean; + panelClass?: string | string[] | Set | { + [key: string]: any; + }; +} + // @public export class PageEvent { length: number; diff --git a/tools/public_api_guard/material/progress-bar.md b/tools/public_api_guard/material/progress-bar.md index 20b5cd3e2071..5f66ada26733 100644 --- a/tools/public_api_guard/material/progress-bar.md +++ b/tools/public_api_guard/material/progress-bar.md @@ -7,6 +7,7 @@ import { _AbstractConstructor } from '@angular/material/core'; import { AfterViewInit } from '@angular/core'; import { CanColor } from '@angular/material/core'; +import { ChangeDetectorRef } from '@angular/core'; import { _Constructor } from '@angular/material/core'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; @@ -31,7 +32,8 @@ export function MAT_PROGRESS_BAR_LOCATION_FACTORY(): MatProgressBarLocation; // @public export class MatProgressBar extends _MatProgressBarBase implements CanColor, AfterViewInit, OnDestroy { constructor(elementRef: ElementRef, _ngZone: NgZone, _animationMode?: string | undefined, - location?: MatProgressBarLocation, defaults?: MatProgressBarDefaultOptions); + location?: MatProgressBarLocation, defaults?: MatProgressBarDefaultOptions, + _changeDetectorRef?: ChangeDetectorRef | undefined); readonly animationEnd: EventEmitter; // (undocumented) _animationMode?: string | undefined; @@ -43,8 +45,6 @@ export class MatProgressBar extends _MatProgressBarBase implements CanColor, Aft _isNoopAnimation: boolean; mode: ProgressBarMode; // (undocumented) - static ngAcceptInputType_value: NumberInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnDestroy(): void; @@ -56,11 +56,11 @@ export class MatProgressBar extends _MatProgressBarBase implements CanColor, Aft progressbarId: string; _rectangleFillValue: string; get value(): number; - set value(v: number); + set value(v: NumberInput); // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public diff --git a/tools/public_api_guard/material/progress-spinner.md b/tools/public_api_guard/material/progress-spinner.md index 327e269e9e9f..c2fefd4486d0 100644 --- a/tools/public_api_guard/material/progress-spinner.md +++ b/tools/public_api_guard/material/progress-spinner.md @@ -6,15 +6,20 @@ import { _AbstractConstructor } from '@angular/material/core'; import { CanColor } from '@angular/material/core'; +import { ChangeDetectorRef } from '@angular/core'; import { _Constructor } from '@angular/material/core'; import { ElementRef } from '@angular/core'; import * as i0 from '@angular/core'; import * as i2 from '@angular/material/core'; import * as i3 from '@angular/common'; import { InjectionToken } from '@angular/core'; +import { NgZone } from '@angular/core'; import { NumberInput } from '@angular/cdk/coercion'; +import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; import { Platform } from '@angular/cdk/platform'; +import { ThemePalette } from '@angular/material/core'; +import { ViewportRuler } from '@angular/cdk/scrolling'; // @public export const MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS: InjectionToken; @@ -23,39 +28,37 @@ export const MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS: InjectionToken, - _platform: Platform, _document: any, animationMode: string, defaults?: MatProgressSpinnerDefaultOptions); +export class MatProgressSpinner extends _MatProgressSpinnerBase implements OnInit, OnDestroy, CanColor { + constructor(elementRef: ElementRef, _platform: Platform, _document: any, animationMode: string, defaults?: MatProgressSpinnerDefaultOptions, + changeDetectorRef?: ChangeDetectorRef, viewportRuler?: ViewportRuler, ngZone?: NgZone); get diameter(): number; - set diameter(size: number); + set diameter(size: NumberInput); _getCircleRadius(): number; _getCircleStrokeWidth(): number; + _getCircleTransformOrigin(svg: HTMLElement): string; _getStrokeCircumference(): number; _getStrokeDashOffset(): number | null; _getViewBox(): string; mode: ProgressSpinnerMode; // (undocumented) - static ngAcceptInputType_diameter: NumberInput; - // (undocumented) - static ngAcceptInputType_strokeWidth: NumberInput; - // (undocumented) - static ngAcceptInputType_value: NumberInput; + ngOnDestroy(): void; // (undocumented) ngOnInit(): void; _noopAnimations: boolean; _spinnerAnimationLabel: string; get strokeWidth(): number; - set strokeWidth(value: number); + set strokeWidth(value: NumberInput); get value(): number; - set value(newValue: number); + set value(newValue: NumberInput); // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export interface MatProgressSpinnerDefaultOptions { + color?: ThemePalette; diameter?: number; _forceAnimations?: boolean; strokeWidth?: number; @@ -68,17 +71,11 @@ export class MatProgressSpinnerModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } -// @public -export class MatSpinner extends MatProgressSpinner { - constructor(elementRef: ElementRef, platform: Platform, document: any, animationMode: string, defaults?: MatProgressSpinnerDefaultOptions); - // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; - // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; -} +// @public @deprecated (undocumented) +export const MatSpinner: typeof MatProgressSpinner; // @public export type ProgressSpinnerMode = 'determinate' | 'indeterminate'; diff --git a/tools/public_api_guard/material/radio.md b/tools/public_api_guard/material/radio.md index 1dff11e3e984..c727b1ae98af 100644 --- a/tools/public_api_guard/material/radio.md +++ b/tools/public_api_guard/material/radio.md @@ -20,7 +20,6 @@ import { HasTabIndex } from '@angular/material/core'; import * as i0 from '@angular/core'; import * as i2 from '@angular/material/core'; import { InjectionToken } from '@angular/core'; -import { NumberInput } from '@angular/cdk/coercion'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; import { QueryList } from '@angular/core'; @@ -58,11 +57,11 @@ export abstract class _MatRadioButtonBase extends _MatRadioButtonMixinBase imple // (undocumented) protected _changeDetector: ChangeDetectorRef; get checked(): boolean; - set checked(value: boolean); + set checked(value: BooleanInput); get color(): ThemePalette; set color(newValue: ThemePalette); get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); focus(options?: FocusOptions, origin?: FocusOrigin): void; id: string; _inputElement: ElementRef; @@ -74,16 +73,6 @@ export abstract class _MatRadioButtonBase extends _MatRadioButtonMixinBase imple _markForCheck(): void; name: string; // (undocumented) - static ngAcceptInputType_checked: BooleanInput; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_required: BooleanInput; - // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnDestroy(): void; @@ -95,7 +84,7 @@ export abstract class _MatRadioButtonBase extends _MatRadioButtonMixinBase imple _onInputInteraction(event: Event): void; radioGroup: _MatRadioGroupBase<_MatRadioButtonBase>; get required(): boolean; - set required(value: boolean); + set required(value: BooleanInput); protected _setDisabled(value: boolean): void; get value(): any; set value(value: any); @@ -139,7 +128,7 @@ export abstract class _MatRadioGroupBase implemen color: ThemePalette; _controlValueAccessorChangeFn: (value: any) => void; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); _emitChangeEvent(): void; get labelPosition(): 'before' | 'after'; set labelPosition(v: 'before' | 'after'); @@ -147,17 +136,13 @@ export abstract class _MatRadioGroupBase implemen _markRadiosForCheck(): void; get name(): string; set name(value: string); - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_required: BooleanInput; ngAfterContentInit(): void; onTouched: () => any; abstract _radios: QueryList; registerOnChange(fn: (value: any) => void): void; registerOnTouched(fn: any): void; get required(): boolean; - set required(value: boolean); + set required(value: BooleanInput); get selected(): T | null; set selected(selected: T | null); setDisabledState(isDisabled: boolean): void; diff --git a/tools/public_api_guard/material/select.md b/tools/public_api_guard/material/select.md index 16493d054582..a21247cc2fc1 100644 --- a/tools/public_api_guard/material/select.md +++ b/tools/public_api_guard/material/select.md @@ -128,7 +128,7 @@ export abstract class _MatSelectBase extends _MatSelectMixinBase implements A abstract customTrigger: {}; protected readonly _destroy: Subject; get disableOptionCentering(): boolean; - set disableOptionCentering(value: boolean); + set disableOptionCentering(value: BooleanInput); get empty(): boolean; errorStateMatcher: ErrorStateMatcher; focus(options?: FocusOptions): void; @@ -143,21 +143,7 @@ export abstract class _MatSelectBase extends _MatSelectMixinBase implements A _isRtl(): boolean; _keyManager: ActiveDescendantKeyManager; get multiple(): boolean; - set multiple(value: boolean); - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableOptionCentering: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_multiple: BooleanInput; - // (undocumented) - static ngAcceptInputType_required: BooleanInput; - // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; - // (undocumented) - static ngAcceptInputType_typeaheadDebounceInterval: NumberInput; + set multiple(value: BooleanInput); // (undocumented) ngAfterContentInit(): void; // (undocumented) @@ -202,7 +188,7 @@ export abstract class _MatSelectBase extends _MatSelectMixinBase implements A registerOnChange(fn: (value: any) => void): void; registerOnTouched(fn: () => {}): void; get required(): boolean; - set required(value: boolean); + set required(value: BooleanInput); protected abstract _scrollOptionIntoView(index: number): void; _scrollStrategy: ScrollStrategy; get selected(): MatOption | MatOption[]; @@ -216,7 +202,7 @@ export abstract class _MatSelectBase extends _MatSelectMixinBase implements A trigger: ElementRef; get triggerValue(): string; get typeaheadDebounceInterval(): number; - set typeaheadDebounceInterval(value: number); + set typeaheadDebounceInterval(value: NumberInput); get value(): any; set value(newValue: any); readonly valueChange: EventEmitter; diff --git a/tools/public_api_guard/material/sidenav.md b/tools/public_api_guard/material/sidenav.md index b1cf9df053e6..6704e09ed7a4 100644 --- a/tools/public_api_guard/material/sidenav.md +++ b/tools/public_api_guard/material/sidenav.md @@ -6,6 +6,7 @@ import { AfterContentChecked } from '@angular/core'; import { AfterContentInit } from '@angular/core'; +import { AfterViewInit } from '@angular/core'; import { AnimationEvent as AnimationEvent_2 } from '@angular/animations'; import { AnimationTriggerMetadata } from '@angular/animations'; import { BooleanInput } from '@angular/cdk/coercion'; @@ -21,8 +22,7 @@ import { FocusTrapFactory } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i3 from '@angular/common'; import * as i4 from '@angular/material/core'; -import * as i5 from '@angular/cdk/platform'; -import * as i6 from '@angular/cdk/scrolling'; +import * as i5 from '@angular/cdk/scrolling'; import { InjectionToken } from '@angular/core'; import { InteractivityChecker } from '@angular/cdk/a11y'; import { NgZone } from '@angular/core'; @@ -48,46 +48,37 @@ export const MAT_DRAWER_DEFAULT_AUTOSIZE: InjectionToken; export function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean; // @public -export class MatDrawer implements AfterContentInit, AfterContentChecked, OnDestroy { +export class MatDrawer implements AfterViewInit, AfterContentChecked, OnDestroy { constructor(_elementRef: ElementRef, _focusTrapFactory: FocusTrapFactory, _focusMonitor: FocusMonitor, _platform: Platform, _ngZone: NgZone, _interactivityChecker: InteractivityChecker, _doc: any, _container?: MatDrawerContainer | undefined); - // (undocumented) - _animationDoneListener(event: AnimationEvent_2): void; readonly _animationEnd: Subject; readonly _animationStarted: Subject; - // (undocumented) - _animationStartListener(event: AnimationEvent_2): void; _animationState: 'open-instant' | 'open' | 'void'; get autoFocus(): AutoFocusTarget | string | boolean; - set autoFocus(value: AutoFocusTarget | string | boolean); + set autoFocus(value: AutoFocusTarget | string | BooleanInput); close(): Promise; readonly closedStart: Observable; readonly _closedStream: Observable; _closeViaBackdropClick(): Promise; // (undocumented) _container?: MatDrawerContainer | undefined; + _content: ElementRef; get disableClose(): boolean; - set disableClose(value: boolean); + set disableClose(value: BooleanInput); // (undocumented) _getWidth(): number; get mode(): MatDrawerMode; set mode(value: MatDrawerMode); readonly _modeChanged: Subject; // (undocumented) - static ngAcceptInputType_autoFocus: AutoFocusTarget | string | BooleanInput; - // (undocumented) - static ngAcceptInputType_disableClose: BooleanInput; - // (undocumented) - static ngAcceptInputType_opened: BooleanInput; - // (undocumented) ngAfterContentChecked(): void; // (undocumented) - ngAfterContentInit(): void; + ngAfterViewInit(): void; // (undocumented) ngOnDestroy(): void; readonly onPositionChanged: EventEmitter; open(openedVia?: FocusOrigin): Promise; get opened(): boolean; - set opened(value: boolean); + set opened(value: BooleanInput); readonly openedChange: EventEmitter; readonly openedStart: Observable; readonly _openedStream: Observable; @@ -110,7 +101,7 @@ export class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy constructor(_dir: Directionality, _element: ElementRef, _ngZone: NgZone, _changeDetectorRef: ChangeDetectorRef, viewportRuler: ViewportRuler, defaultAutosize?: boolean, _animationMode?: string | undefined); _allDrawers: QueryList; get autosize(): boolean; - set autosize(value: boolean); + set autosize(value: BooleanInput); readonly backdropClick: EventEmitter; // (undocumented) _backdropOverride: boolean | null; @@ -130,15 +121,11 @@ export class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy }; _drawers: QueryList; get end(): MatDrawer | null; - get hasBackdrop(): any; - set hasBackdrop(value: any); + get hasBackdrop(): boolean; + set hasBackdrop(value: BooleanInput); // (undocumented) _isShowingBackdrop(): boolean; // (undocumented) - static ngAcceptInputType_autosize: BooleanInput; - // (undocumented) - static ngAcceptInputType_hasBackdrop: BooleanInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngDoCheck(): void; @@ -180,17 +167,11 @@ export type MatDrawerToggleResult = 'open' | 'close'; // @public (undocumented) export class MatSidenav extends MatDrawer { get fixedBottomGap(): number; - set fixedBottomGap(value: number); + set fixedBottomGap(value: NumberInput); get fixedInViewport(): boolean; - set fixedInViewport(value: boolean); + set fixedInViewport(value: BooleanInput); get fixedTopGap(): number; - set fixedTopGap(value: number); - // (undocumented) - static ngAcceptInputType_fixedBottomGap: NumberInput; - // (undocumented) - static ngAcceptInputType_fixedInViewport: BooleanInput; - // (undocumented) - static ngAcceptInputType_fixedTopGap: NumberInput; + set fixedTopGap(value: NumberInput); // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) @@ -225,7 +206,7 @@ export class MatSidenavModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public diff --git a/tools/public_api_guard/material/slide-toggle.md b/tools/public_api_guard/material/slide-toggle.md index 84c00f99d096..8e95833bdc5d 100644 --- a/tools/public_api_guard/material/slide-toggle.md +++ b/tools/public_api_guard/material/slide-toggle.md @@ -23,7 +23,6 @@ import * as i0 from '@angular/core'; import * as i3 from '@angular/material/core'; import * as i4 from '@angular/cdk/observers'; import { InjectionToken } from '@angular/core'; -import { NumberInput } from '@angular/cdk/coercion'; import { OnDestroy } from '@angular/core'; import { Provider } from '@angular/core'; import { ThemePalette } from '@angular/material/core'; @@ -45,7 +44,7 @@ export class MatSlideToggle extends _MatSlideToggleBase implements OnDestroy, Af ariaLabelledby: string | null; readonly change: EventEmitter; get checked(): boolean; - set checked(value: boolean); + set checked(value: BooleanInput); // (undocumented) defaults: MatSlideToggleDefaultOptions; focus(options?: FocusOptions, origin?: FocusOrigin): void; @@ -55,16 +54,6 @@ export class MatSlideToggle extends _MatSlideToggleBase implements OnDestroy, Af labelPosition: 'before' | 'after'; name: string | null; // (undocumented) - static ngAcceptInputType_checked: BooleanInput; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_required: BooleanInput; - // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; - // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnDestroy(): void; @@ -75,7 +64,7 @@ export class MatSlideToggle extends _MatSlideToggleBase implements OnDestroy, Af registerOnChange(fn: any): void; registerOnTouched(fn: any): void; get required(): boolean; - set required(value: boolean); + set required(value: BooleanInput); setDisabledState(isDisabled: boolean): void; _thumbBarEl: ElementRef; _thumbEl: ElementRef; diff --git a/tools/public_api_guard/material/slider.md b/tools/public_api_guard/material/slider.md index 308d39aebb61..d9e6a7f53336 100644 --- a/tools/public_api_guard/material/slider.md +++ b/tools/public_api_guard/material/slider.md @@ -57,34 +57,14 @@ export class MatSlider extends _MatSliderBase implements ControlValueAccessor, O }; readonly input: EventEmitter; get invert(): boolean; - set invert(value: boolean); + set invert(value: BooleanInput); _isActive: boolean; _isMinValue(): boolean; _isSliding: 'keyboard' | 'pointer' | null; get max(): number; - set max(v: number); + set max(v: NumberInput); get min(): number; - set min(v: number); - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_invert: BooleanInput; - // (undocumented) - static ngAcceptInputType_max: NumberInput; - // (undocumented) - static ngAcceptInputType_min: NumberInput; - // (undocumented) - static ngAcceptInputType_step: NumberInput; - // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; - // (undocumented) - static ngAcceptInputType_thumbLabel: BooleanInput; - // (undocumented) - static ngAcceptInputType_tickInterval: NumberInput; - // (undocumented) - static ngAcceptInputType_value: NumberInput; - // (undocumented) - static ngAcceptInputType_vertical: BooleanInput; + set min(v: NumberInput); // (undocumented) ngAfterViewInit(): void; // (undocumented) @@ -107,17 +87,17 @@ export class MatSlider extends _MatSliderBase implements ControlValueAccessor, O _shouldInvertAxis(): boolean; _shouldInvertMouseCoords(): boolean; get step(): number; - set step(v: number); + set step(v: NumberInput); get thumbLabel(): boolean; - set thumbLabel(value: boolean); + set thumbLabel(value: BooleanInput); get tickInterval(): 'auto' | number; - set tickInterval(value: 'auto' | number); + set tickInterval(value: 'auto' | NumberInput); get value(): number; - set value(v: number); + set value(v: NumberInput); readonly valueChange: EventEmitter; valueText: string; get vertical(): boolean; - set vertical(value: boolean); + set vertical(value: BooleanInput); writeValue(value: any): void; // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; diff --git a/tools/public_api_guard/material/snack-bar.md b/tools/public_api_guard/material/snack-bar.md index 529298b2a100..ac5c120be17e 100644 --- a/tools/public_api_guard/material/snack-bar.md +++ b/tools/public_api_guard/material/snack-bar.md @@ -49,19 +49,14 @@ export const MAT_SNACK_BAR_DEFAULT_OPTIONS: InjectionToken; - get _openedSnackBarRef(): MatSnackBarRef | null; - set _openedSnackBarRef(value: MatSnackBarRef | null); - openFromComponent(component: ComponentType, config?: MatSnackBarConfig): MatSnackBarRef; - openFromTemplate(template: TemplateRef, config?: MatSnackBarConfig): MatSnackBarRef>; - protected simpleSnackBarComponent: Type; - protected snackBarContainerComponent: Type<_SnackBarContainer>; + protected simpleSnackBarComponent: typeof SimpleSnackBar; + // (undocumented) + protected snackBarContainerComponent: typeof MatSnackBarContainer; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) @@ -73,6 +68,26 @@ export const matSnackBarAnimations: { readonly snackBarState: AnimationTriggerMetadata; }; +// @public (undocumented) +export abstract class _MatSnackBarBase implements OnDestroy { + constructor(_overlay: Overlay, _live: LiveAnnouncer, _injector: Injector, _breakpointObserver: BreakpointObserver, _parentSnackBar: _MatSnackBarBase, _defaultConfig: MatSnackBarConfig); + dismiss(): void; + protected abstract handsetCssClass: string; + // (undocumented) + ngOnDestroy(): void; + open(message: string, action?: string, config?: MatSnackBarConfig): MatSnackBarRef; + get _openedSnackBarRef(): MatSnackBarRef | null; + set _openedSnackBarRef(value: MatSnackBarRef | null); + openFromComponent(component: ComponentType, config?: MatSnackBarConfig): MatSnackBarRef; + openFromTemplate(template: TemplateRef, config?: MatSnackBarConfig): MatSnackBarRef>; + protected abstract simpleSnackBarComponent: Type; + protected abstract snackBarContainerComponent: Type<_SnackBarContainer>; + // (undocumented) + static ɵfac: i0.ɵɵFactoryDeclaration<_MatSnackBarBase, [null, null, null, null, { optional: true; skipSelf: true; }, null]>; + // (undocumented) + static ɵprov: i0.ɵɵInjectableDeclaration<_MatSnackBarBase>; +} + // @public export class MatSnackBarConfig { announcementMessage?: string; diff --git a/tools/public_api_guard/material/sort.md b/tools/public_api_guard/material/sort.md index 5cf39bcdc7ed..cf9520aa453d 100644 --- a/tools/public_api_guard/material/sort.md +++ b/tools/public_api_guard/material/sort.md @@ -58,13 +58,9 @@ export class MatSort extends _MatSortBase implements CanDisable, HasInitialized, get direction(): SortDirection; set direction(direction: SortDirection); get disableClear(): boolean; - set disableClear(v: boolean); + set disableClear(v: BooleanInput); getNextSortDirection(sortable: MatSortable): SortDirection; // (undocumented) - static ngAcceptInputType_disableClear: BooleanInput; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngOnChanges(): void; // (undocumented) ngOnDestroy(): void; @@ -101,6 +97,7 @@ export const matSortAnimations: { // @public export interface MatSortDefaultOptions { + arrowPosition?: SortHeaderArrowPosition; disableClear?: boolean; } @@ -108,13 +105,13 @@ export interface MatSortDefaultOptions { export class MatSortHeader extends _MatSortHeaderBase implements CanDisable, MatSortable, OnDestroy, OnInit, AfterViewInit { constructor( _intl: MatSortHeaderIntl, _changeDetectorRef: ChangeDetectorRef, _sort: MatSort, _columnDef: MatSortHeaderColumnDef, _focusMonitor: FocusMonitor, _elementRef: ElementRef, - _ariaDescriber?: AriaDescriber | null | undefined); + _ariaDescriber?: AriaDescriber | null | undefined, defaultOptions?: MatSortDefaultOptions); _arrowDirection: SortDirection; - arrowPosition: 'before' | 'after'; + arrowPosition: SortHeaderArrowPosition; // (undocumented) _columnDef: MatSortHeaderColumnDef; get disableClear(): boolean; - set disableClear(v: boolean); + set disableClear(v: BooleanInput); _disableViewStateAnimation: boolean; _getAriaSortAttribute(): "none" | "ascending" | "descending"; _getArrowDirectionState(): string; @@ -130,10 +127,6 @@ export class MatSortHeader extends _MatSortHeaderBase implements CanDisable, Mat _isDisabled(): boolean; _isSorted(): boolean; // (undocumented) - static ngAcceptInputType_disableClear: BooleanInput; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) ngAfterViewInit(): void; // (undocumented) ngOnDestroy(): void; @@ -154,7 +147,7 @@ export class MatSortHeader extends _MatSortHeaderBase implements CanDisable, Mat // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public @@ -185,6 +178,9 @@ export interface Sort { // @public export type SortDirection = 'asc' | 'desc' | ''; +// @public +export type SortHeaderArrowPosition = 'before' | 'after'; + // (No @packageDocumentation comment for this package) ``` diff --git a/tools/public_api_guard/material/stepper.md b/tools/public_api_guard/material/stepper.md index 2b3e2ead66fb..9bd7ba21bae9 100644 --- a/tools/public_api_guard/material/stepper.md +++ b/tools/public_api_guard/material/stepper.md @@ -55,14 +55,6 @@ export const MAT_STEPPER_INTL_PROVIDER: { // @public export function MAT_STEPPER_INTL_PROVIDER_FACTORY(parentIntl: MatStepperIntl): MatStepperIntl; -// @public @deprecated (undocumented) -export class MatHorizontalStepper extends _MatProxyStepperBase { - // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration; - // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; -} - // @public (undocumented) export class MatStep extends CdkStep implements ErrorStateMatcher, AfterContentInit, OnDestroy { constructor(stepper: MatStepper, _errorStateMatcher: ErrorStateMatcher, _viewContainerRef: ViewContainerRef, stepperOptions?: StepperOptions); @@ -135,7 +127,7 @@ export class MatStepLabel extends CdkStepLabel { // @public (undocumented) export class MatStepper extends CdkStepper implements AfterContentInit { - constructor(dir: Directionality, changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef, _document: any); + constructor(dir: Directionality, changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef); readonly animationDone: EventEmitter; readonly _animationDone: Subject; color: ThemePalette; @@ -153,7 +145,7 @@ export class MatStepper extends CdkStepper implements AfterContentInit { // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public @@ -200,7 +192,7 @@ export class MatStepperModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public @@ -219,14 +211,6 @@ export class MatStepperPrevious extends CdkStepperPrevious { static ɵfac: i0.ɵɵFactoryDeclaration; } -// @public @deprecated (undocumented) -export class MatVerticalStepper extends _MatProxyStepperBase { - // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration; - // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; -} - export { StepperOrientation } export { StepState } diff --git a/tools/public_api_guard/material/table.md b/tools/public_api_guard/material/table.md index 7fc2eac4d0ea..90732fa69776 100644 --- a/tools/public_api_guard/material/table.md +++ b/tools/public_api_guard/material/table.md @@ -124,6 +124,8 @@ export class MatHeaderRowDef extends CdkHeaderRowDef { // @public export class MatNoDataRow extends CdkNoDataRow { + // (undocumented) + _contentClassName: string; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) diff --git a/tools/public_api_guard/material/tabs-testing.md b/tools/public_api_guard/material/tabs-testing.md index 8a5748d39d5c..839fe4afb2c5 100644 --- a/tools/public_api_guard/material/tabs-testing.md +++ b/tools/public_api_guard/material/tabs-testing.md @@ -49,6 +49,7 @@ export class MatTabNavBarHarness extends ComponentHarness { clickLink(filter?: TabLinkHarnessFilters): Promise; getActiveLink(): Promise; getLinks(filter?: TabLinkHarnessFilters): Promise; + getPanel(): Promise; static hostSelector: string; static with(options?: TabNavBarHarnessFilters): HarnessPredicate; } @@ -72,6 +73,10 @@ export interface TabLinkHarnessFilters extends BaseHarnessFilters { export interface TabNavBarHarnessFilters extends BaseHarnessFilters { } +// @public +export interface TabNavPanelHarnessFilters extends BaseHarnessFilters { +} + // (No @packageDocumentation comment for this package) ``` diff --git a/tools/public_api_guard/material/tabs.md b/tools/public_api_guard/material/tabs.md index 1091e5a76dc9..4b17c414793b 100644 --- a/tools/public_api_guard/material/tabs.md +++ b/tools/public_api_guard/material/tabs.md @@ -101,14 +101,14 @@ export class MatTab extends _MatTabBase implements OnInit, CanDisable, OnChanges constructor(_viewContainerRef: ViewContainerRef, _closestTabGroup: any); ariaLabel: string; ariaLabelledby: string; + bodyClass: string | string[]; // (undocumented) _closestTabGroup: any; get content(): TemplatePortal | null; _explicitContent: TemplateRef; _implicitContent: TemplateRef; isActive: boolean; - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; + labelClass: string | string[]; // (undocumented) ngOnChanges(changes: SimpleChanges): void; // (undocumented) @@ -125,7 +125,7 @@ export class MatTab extends _MatTabBase implements OnInit, CanDisable, OnChanges protected _templateLabel: MatTabLabel; textLabel: string; // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } @@ -161,9 +161,10 @@ export abstract class _MatTabBodyBase implements OnInit, OnDestroy { abstract _portalHost: CdkPortalOutlet; set position(position: number); _position: MatTabBodyPositionState; + preserveContent: boolean; readonly _translateTabComplete: Subject; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration<_MatTabBodyBase, never, never, { "_content": "content"; "origin": "origin"; "animationDuration": "animationDuration"; "position": "position"; }, { "_onCentering": "_onCentering"; "_beforeCentering": "_beforeCentering"; "_afterLeavingCenter": "_afterLeavingCenter"; "_onCentered": "_onCentered"; }, never>; + static ɵdir: i0.ɵɵDirectiveDeclaration<_MatTabBodyBase, never, never, { "_content": "content"; "origin": "origin"; "animationDuration": "animationDuration"; "preserveContent": "preserveContent"; "position": "position"; }, { "_onCentering": "_onCentering"; "_beforeCentering": "_beforeCentering"; "_afterLeavingCenter": "_afterLeavingCenter"; "_onCentered": "_onCentered"; }, never>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration<_MatTabBodyBase, [null, { optional: true; }, null]>; } @@ -223,7 +224,7 @@ export abstract class _MatTabGroupBase extends _MatTabGroupMixinBase implements abstract _allTabs: QueryList; readonly animationDone: EventEmitter; get animationDuration(): string; - set animationDuration(value: string); + set animationDuration(value: NumberInput); // (undocumented) _animationMode?: string | undefined; get backgroundColor(): ThemePalette; @@ -231,10 +232,11 @@ export abstract class _MatTabGroupBase extends _MatTabGroupMixinBase implements // (undocumented) protected _changeDetectorRef: ChangeDetectorRef; get contentTabIndex(): number | null; - set contentTabIndex(value: number | null); - disablePagination: boolean; + set contentTabIndex(value: NumberInput); + get disablePagination(): boolean; + set disablePagination(value: BooleanInput); get dynamicHeight(): boolean; - set dynamicHeight(value: boolean); + set dynamicHeight(value: BooleanInput); readonly focusChange: EventEmitter; // (undocumented) _focusChanged(index: number): void; @@ -244,25 +246,17 @@ export abstract class _MatTabGroupBase extends _MatTabGroupMixinBase implements _getTabLabelId(i: number): string; _handleClick(tab: MatTab, tabHeader: MatTabGroupBaseHeader, index: number): void; headerPosition: MatTabHeaderPosition; - // (undocumented) - static ngAcceptInputType_animationDuration: NumberInput; - // (undocumented) - static ngAcceptInputType_contentTabIndex: NumberInput; - // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) - static ngAcceptInputType_dynamicHeight: BooleanInput; - // (undocumented) - static ngAcceptInputType_selectedIndex: NumberInput; ngAfterContentChecked(): void; // (undocumented) ngAfterContentInit(): void; // (undocumented) ngOnDestroy(): void; + get preserveContent(): boolean; + set preserveContent(value: BooleanInput); realignInkBar(): void; _removeTabBodyWrapperHeight(): void; get selectedIndex(): number | null; - set selectedIndex(value: number | null); + set selectedIndex(value: NumberInput); readonly selectedIndexChange: EventEmitter; readonly selectedTabChange: EventEmitter; _setTabBodyWrapperHeight(tabHeight: number): void; @@ -272,8 +266,9 @@ export abstract class _MatTabGroupBase extends _MatTabGroupMixinBase implements // (undocumented) abstract _tabHeader: MatTabGroupBaseHeader; _tabs: QueryList; + updatePagination(): void; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration<_MatTabGroupBase, never, never, { "dynamicHeight": "dynamicHeight"; "selectedIndex": "selectedIndex"; "headerPosition": "headerPosition"; "animationDuration": "animationDuration"; "contentTabIndex": "contentTabIndex"; "disablePagination": "disablePagination"; "backgroundColor": "backgroundColor"; }, { "selectedIndexChange": "selectedIndexChange"; "focusChange": "focusChange"; "animationDone": "animationDone"; "selectedTabChange": "selectedTabChange"; }, never>; + static ɵdir: i0.ɵɵDirectiveDeclaration<_MatTabGroupBase, never, never, { "dynamicHeight": "dynamicHeight"; "selectedIndex": "selectedIndex"; "headerPosition": "headerPosition"; "animationDuration": "animationDuration"; "contentTabIndex": "contentTabIndex"; "disablePagination": "disablePagination"; "preserveContent": "preserveContent"; "backgroundColor": "backgroundColor"; }, { "selectedIndexChange": "selectedIndexChange"; "focusChange": "focusChange"; "animationDone": "animationDone"; "selectedTabChange": "selectedTabChange"; }, never>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration<_MatTabGroupBase, [null, null, { optional: true; }, { optional: true; }]>; } @@ -288,14 +283,14 @@ export class MatTabHeader extends _MatTabHeaderBase { // (undocumented) _nextPaginator: ElementRef; // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) _previousPaginator: ElementRef; // (undocumented) _tabList: ElementRef; // (undocumented) _tabListContainer: ElementRef; // (undocumented) + _tabListInner: ElementRef; + // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; @@ -304,8 +299,8 @@ export class MatTabHeader extends _MatTabHeaderBase { // @public export abstract class _MatTabHeaderBase extends MatPaginatedTabHeader implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy { constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, viewportRuler: ViewportRuler, dir: Directionality, ngZone: NgZone, platform: Platform, animationMode?: string); - get disableRipple(): any; - set disableRipple(value: any); + get disableRipple(): boolean; + set disableRipple(value: BooleanInput); // (undocumented) protected _itemSelected(event: KeyboardEvent): void; // (undocumented) @@ -339,8 +334,6 @@ export class MatTabLabelWrapper extends _MatTabLabelWrapperBase implements CanDi // (undocumented) getOffsetWidth(): number; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; @@ -362,20 +355,25 @@ export class _MatTabLinkBase extends _MatTabLinkMixinBase implements AfterViewIn constructor(_tabNavBar: _MatTabNavBase, elementRef: ElementRef, globalRippleOptions: RippleGlobalOptions | null, tabIndex: string, _focusMonitor: FocusMonitor, animationMode?: string); get active(): boolean; - set active(value: boolean); + set active(value: BooleanInput); elementRef: ElementRef; focus(): void; // (undocumented) - _handleFocus(): void; - protected _isActive: boolean; + _getAriaControls(): string | null; // (undocumented) - static ngAcceptInputType_active: BooleanInput; + _getAriaCurrent(): string | null; // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; + _getAriaSelected(): string | null; // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; + _getRole(): string | null; // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; + _getTabIndex(): number; + // (undocumented) + _handleFocus(): void; + // (undocumented) + _handleKeydown(event: KeyboardEvent): void; + id: string; + protected _isActive: boolean; // (undocumented) ngAfterViewInit(): void; // (undocumented) @@ -383,7 +381,7 @@ export class _MatTabLinkBase extends _MatTabLinkMixinBase implements AfterViewIn rippleConfig: RippleConfig & RippleGlobalOptions; get rippleDisabled(): boolean; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration<_MatTabLinkBase, never, never, { "active": "active"; }, {}, never>; + static ɵdir: i0.ɵɵDirectiveDeclaration<_MatTabLinkBase, never, never, { "active": "active"; "id": "id"; }, {}, never>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration<_MatTabLinkBase, [null, null, { optional: true; }, { attribute: "tabindex"; }, null, { optional: true; }]>; } @@ -398,14 +396,14 @@ export class MatTabNav extends _MatTabNavBase { // (undocumented) _nextPaginator: ElementRef; // (undocumented) - static ngAcceptInputType_disableRipple: BooleanInput; - // (undocumented) _previousPaginator: ElementRef; // (undocumented) _tabList: ElementRef; // (undocumented) _tabListContainer: ElementRef; // (undocumented) + _tabListInner: ElementRef; + // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; @@ -417,22 +415,36 @@ export abstract class _MatTabNavBase extends MatPaginatedTabHeader implements Af get backgroundColor(): ThemePalette; set backgroundColor(value: ThemePalette); color: ThemePalette; - get disableRipple(): any; - set disableRipple(value: any); + get disableRipple(): boolean; + set disableRipple(value: BooleanInput); + // (undocumented) + _getRole(): string | null; abstract _items: QueryList; // (undocumented) protected _itemSelected(): void; // (undocumented) ngAfterContentInit(): void; + tabPanel?: MatTabNavPanel; updateActiveLink(): void; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration<_MatTabNavBase, never, never, { "backgroundColor": "backgroundColor"; "disableRipple": "disableRipple"; "color": "color"; }, {}, never>; + static ɵdir: i0.ɵɵDirectiveDeclaration<_MatTabNavBase, never, never, { "backgroundColor": "backgroundColor"; "disableRipple": "disableRipple"; "color": "color"; "tabPanel": "tabPanel"; }, {}, never>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration<_MatTabNavBase, [null, { optional: true; }, null, null, null, null, { optional: true; }]>; } +// @public +export class MatTabNavPanel { + _activeTabId?: string; + id: string; + // (undocumented) + static ɵcmp: i0.ɵɵComponentDeclaration; + // (undocumented) + static ɵfac: i0.ɵɵFactoryDeclaration; +} + // @public export const matTabsAnimations: { readonly translateTab: AnimationTriggerMetadata; @@ -445,6 +457,7 @@ export interface MatTabsConfig { disablePagination?: boolean; dynamicHeight?: boolean; fitInkBarToContent?: boolean; + preserveContent?: boolean; } // @public (undocumented) @@ -454,7 +467,7 @@ export class MatTabsModule { // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public diff --git a/tools/public_api_guard/material/tooltip.md b/tools/public_api_guard/material/tooltip.md index bf87a52a729e..9b9dbcabe573 100644 --- a/tools/public_api_guard/material/tooltip.md +++ b/tools/public_api_guard/material/tooltip.md @@ -84,7 +84,7 @@ export abstract class _MatTooltipBase implement // (undocumented) protected _dir: Directionality; get disabled(): boolean; - set disabled(value: boolean); + set disabled(value: BooleanInput); _getOrigin(): { main: OriginConnectionPosition; fallback: OriginConnectionPosition; @@ -94,17 +94,12 @@ export abstract class _MatTooltipBase implement fallback: OverlayConnectionPosition; }; hide(delay?: number): void; - hideDelay: number; + get hideDelay(): number; + set hideDelay(value: NumberInput); _isTooltipVisible(): boolean; get message(): string; set message(value: string); // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_hideDelay: NumberInput; - // (undocumented) - static ngAcceptInputType_showDelay: NumberInput; - // (undocumented) ngAfterViewInit(): void; ngOnDestroy(): void; // (undocumented) @@ -112,7 +107,8 @@ export abstract class _MatTooltipBase implement get position(): TooltipPosition; set position(value: TooltipPosition); show(delay?: number): void; - showDelay: number; + get showDelay(): number; + set showDelay(value: NumberInput); toggle(): void; get tooltipClass(): string | string[] | Set | { [key: string]: any; @@ -135,15 +131,11 @@ export abstract class _MatTooltipBase implement // @public export interface MatTooltipDefaultOptions { - // (undocumented) + disableTooltipInteractivity?: boolean; hideDelay: number; - // (undocumented) position?: TooltipPosition; - // (undocumented) showDelay: number; - // (undocumented) touchendHideDelay: number; - // (undocumented) touchGestures?: TooltipTouchGestures; } @@ -182,19 +174,23 @@ export abstract class _TooltipComponentBase implements OnDestroy { // (undocumented) _animationStart(): void; _handleBodyInteraction(): void; + // (undocumented) + _handleMouseLeave({ relatedTarget }: MouseEvent): void; hide(delay: number): void; - _hideTimeoutId: any; + _hideTimeoutId: number | undefined; isVisible(): boolean; _markForCheck(): void; message: string; + _mouseLeaveHideDelay: number; // (undocumented) ngOnDestroy(): void; protected _onShow(): void; show(delay: number): void; - _showTimeoutId: any; + _showTimeoutId: number | undefined; tooltipClass: string | string[] | Set | { [key: string]: any; }; + _triggerElement: HTMLElement; _visibility: TooltipVisibility; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration<_TooltipComponentBase, never, never, {}, {}, never>; diff --git a/tools/public_api_guard/material/tree.md b/tools/public_api_guard/material/tree.md index 1f4149934c5e..4d2ca3a73087 100644 --- a/tools/public_api_guard/material/tree.md +++ b/tools/public_api_guard/material/tree.md @@ -18,7 +18,6 @@ import { CdkTreeNodeToggle } from '@angular/cdk/tree'; import { CollectionViewer } from '@angular/cdk/collections'; import { _Constructor } from '@angular/material/core'; import { DataSource } from '@angular/cdk/collections'; -import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { FlatTreeControl } from '@angular/cdk/tree'; import { HasTabIndex } from '@angular/material/core'; @@ -34,17 +33,13 @@ import { TreeControl } from '@angular/cdk/tree'; import { ViewContainerRef } from '@angular/core'; // @public -export class MatNestedTreeNode extends CdkNestedTreeNode implements AfterContentInit, DoCheck, OnDestroy, OnInit { +export class MatNestedTreeNode extends CdkNestedTreeNode implements AfterContentInit, OnDestroy, OnInit { constructor(elementRef: ElementRef, tree: CdkTree, differs: IterableDiffers, tabIndex: string); - get disabled(): any; - set disabled(value: any); - // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; + get disabled(): boolean; + set disabled(value: BooleanInput); // (undocumented) ngAfterContentInit(): void; // (undocumented) - ngDoCheck(): void; - // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; @@ -120,15 +115,9 @@ export class MatTreeNestedDataSource extends DataSource { } // @public -export class MatTreeNode extends _MatTreeNodeBase implements CanDisable, DoCheck, HasTabIndex, OnInit, OnDestroy { +export class MatTreeNode extends _MatTreeNodeBase implements CanDisable, HasTabIndex, OnInit, OnDestroy { constructor(elementRef: ElementRef, tree: CdkTree, tabIndex: string); // (undocumented) - static ngAcceptInputType_disabled: BooleanInput; - // (undocumented) - static ngAcceptInputType_tabIndex: NumberInput; - // (undocumented) - ngDoCheck(): void; - // (undocumented) ngOnDestroy(): void; // (undocumented) ngOnInit(): void; @@ -166,7 +155,7 @@ export class MatTreeNodePadding extends CdkTreeNodePadding { get indent(): number | string; set indent(indent: number | string); get level(): number; - set level(value: number); + set level(value: NumberInput); // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration, "[matTreeNodePadding]", never, { "level": "matTreeNodePadding"; "indent": "matTreeNodePaddingIndent"; }, {}, never>; // (undocumented) @@ -175,9 +164,6 @@ export class MatTreeNodePadding extends CdkTreeNodePadding { // @public export class MatTreeNodeToggle extends CdkTreeNodeToggle { - // (undocumented) - get recursive(): boolean; - set recursive(value: boolean); // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration, "[matTreeNodeToggle]", never, { "recursive": "matTreeNodeToggleRecursive"; }, {}, never>; // (undocumented) diff --git a/tools/release-checks/check-framework-peer-dependency.ts b/tools/release-checks/check-framework-peer-dependency.ts index f1ea1c4c1636..c48a7d12641e 100644 --- a/tools/release-checks/check-framework-peer-dependency.ts +++ b/tools/release-checks/check-framework-peer-dependency.ts @@ -3,7 +3,7 @@ import {error} from '@angular/dev-infra-private/ng-dev/utils/console'; import {SemVer} from 'semver'; import {join} from 'path'; import {existsSync, readFileSync} from 'fs'; -import * as chalk from 'chalk'; +import chalk from 'chalk'; /** Path to the Bazel file that configures the release output. */ const bzlConfigPath = join(__dirname, '../../packages.bzl'); @@ -11,16 +11,21 @@ const bzlConfigPath = join(__dirname, '../../packages.bzl'); /** * Ensures that the Angular version placeholder has been correctly updated to support * given Angular versions. The following rules apply: - * `N.x.x` requires Angular `^N.0.0 || (N+1).0.0-0` - * `N.0.0-x` requires Angular `^N.0.0-0 || (N+1).0.0-0` + * + * `N.x.x` requires Angular `^N.0.0 || (N+1).0.0` + * `N.0.0-x` requires Angular `^N.0.0-0 || (N+1).0.0` + * + * The rationale is that we want to satisfy peer dependencies if we are publishing + * pre-releases for a major while Angular framework cuts pre-releases as well. e.g. + * Angular CDK v14.0.0-rc.1 should also work with `@angular/core@v14.0.0-rc.1`. */ export async function assertValidFrameworkPeerDependency(newVersion: SemVer) { const currentVersionRange = _extractAngularVersionPlaceholderOrThrow(); const isMajorWithPrerelease = newVersion.minor === 0 && newVersion.patch === 0 && !!newVersion.prerelease[0]; const requiredRange = isMajorWithPrerelease - ? `^${newVersion.major}.0.0-0 || ^${newVersion.major + 1}.0.0-0` - : `^${newVersion.major}.0.0 || ^${newVersion.major + 1}.0.0-0`; + ? `^${newVersion.major}.0.0-0 || ^${newVersion.major + 1}.0.0` + : `^${newVersion.major}.0.0 || ^${newVersion.major + 1}.0.0`; if (requiredRange !== currentVersionRange) { error( diff --git a/tools/release-checks/check-migration-collections.ts b/tools/release-checks/check-migration-collections.ts index f0caeb0280de..2c54c1675dff 100644 --- a/tools/release-checks/check-migration-collections.ts +++ b/tools/release-checks/check-migration-collections.ts @@ -1,9 +1,9 @@ import {error} from '@angular/dev-infra-private/ng-dev/utils/console'; import {dirname, join} from 'path'; -import * as chalk from 'chalk'; +import chalk from 'chalk'; import {releasePackages} from '../../.ng-dev/release'; import {readFileSync} from 'fs'; -import * as semver from 'semver'; +import semver from 'semver'; /** Path to the directory containing all package sources. */ const packagesDir = join(__dirname, '../../src'); diff --git a/tools/release-checks/npm-package-output/check-package.ts b/tools/release-checks/npm-package-output/check-package.ts index 25fac73d0f0b..67a50cc6761e 100644 --- a/tools/release-checks/npm-package-output/check-package.ts +++ b/tools/release-checks/npm-package-output/check-package.ts @@ -1,5 +1,5 @@ import {error} from '@angular/dev-infra-private/ng-dev/utils/console'; -import * as chalk from 'chalk'; +import chalk from 'chalk'; import {existsSync} from 'fs'; import {sync as glob} from 'glob'; import {basename, dirname, join} from 'path'; diff --git a/tools/release-checks/npm-package-output/index.ts b/tools/release-checks/npm-package-output/index.ts index 2440407eb0d0..524632640789 100644 --- a/tools/release-checks/npm-package-output/index.ts +++ b/tools/release-checks/npm-package-output/index.ts @@ -2,7 +2,7 @@ import {SemVer} from 'semver'; import {checkReleasePackage} from './check-package'; import {BuiltPackage} from '@angular/dev-infra-private/ng-dev/release/config'; import {error} from '@angular/dev-infra-private/ng-dev/utils/console'; -import * as chalk from 'chalk'; +import chalk from 'chalk'; /** Asserts that the given built packages are valid for public consumption. */ export async function assertValidNpmPackageOutput( diff --git a/tools/release-checks/npm-package-output/output-validations.ts b/tools/release-checks/npm-package-output/output-validations.ts index be0188d64004..837fbce4b0b8 100644 --- a/tools/release-checks/npm-package-output/output-validations.ts +++ b/tools/release-checks/npm-package-output/output-validations.ts @@ -2,7 +2,8 @@ import {existsSync, readFileSync} from 'fs'; import {sync as glob} from 'glob'; import {basename, dirname, isAbsolute, join} from 'path'; import * as semver from 'semver'; -import * as ts from 'typescript'; + +import ts from 'typescript'; /** RegExp that matches Angular component inline styles that contain a sourcemap reference. */ const inlineStylesSourcemapRegex = /styles: ?\[["'].*sourceMappingURL=.*["']/; diff --git a/tools/spec-bundling/BUILD.bazel b/tools/spec-bundling/BUILD.bazel deleted file mode 100644 index 3db5a9f20ed0..000000000000 --- a/tools/spec-bundling/BUILD.bazel +++ /dev/null @@ -1,3 +0,0 @@ -package(default_visibility = ["//visibility:public"]) - -exports_files(["esbuild.config-tmpl.mjs"]) diff --git a/tools/spec-bundling/esbuild.config-tmpl.mjs b/tools/spec-bundling/esbuild.config-tmpl.mjs deleted file mode 100644 index 40b694be9547..000000000000 --- a/tools/spec-bundling/esbuild.config-tmpl.mjs +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -// Note: This needs to be a workspace manifest path as this ESBuild config -// is generated and can end up in arbitrary Bazel packages. -import { - createLinkerEsbuildPlugin -} from 'angular_material/tools/angular/create_linker_esbuild_plugin.mjs'; - -// Conditionally, based on whether partial compilation is enabled, we run the -// linker on all files part of the test. -const plugins = TMPL_PARTIAL_COMPILATION_ENABLED ? - [await createLinkerEsbuildPlugin(/.*/, /* ensureNoPartialDeclaration */ true)] : [] - -export default { - // `tslib` sets the `module` condition to resolve to ESM. - conditions: ['es2020', 'es2015', 'module'], - // This ensures that we prioritize ES2020. RxJS would otherwise use the ESM5 output. - mainFields: ['es2020', 'es2015', 'module', 'main'], - // Use the `iife` format for the test entry-point as tests should run immediately. - // For browser tests which are wrapped in an AMD header and footer, this works as well. - format: 'iife', - plugins, -}; diff --git a/tools/spec-bundling/index.bzl b/tools/spec-bundling/index.bzl deleted file mode 100644 index 3a4bba15f761..000000000000 --- a/tools/spec-bundling/index.bzl +++ /dev/null @@ -1,149 +0,0 @@ -load("@npm//@angular/dev-infra-private/bazel:expand_template.bzl", "expand_template") -load("//tools/esbuild:index.bzl", "esbuild", "esbuild_amd", "esbuild_config") -load("@build_bazel_rules_nodejs//:index.bzl", "js_library") -load("@build_bazel_rules_nodejs//:providers.bzl", "JSModuleInfo") -load("//tools/angular:index.bzl", "LINKER_PROCESSED_FW_PACKAGES") - -""" - Starlark file exposing a macro for bundling Bazel targets with spec files into - a single spec ESM/AMD file. Bundling is helpful as it avoids unnecessary complexity - with module resolution at runtime with loaders such as SystemJS or RequireJS. - - Additionally, given that Angular framework packages do no longer ship UMD bundles, - bundling simplifies the integration of those FW packages significantly. It also helps - with incorporating the Angular linker-processed output of FW ESM bundles. -""" - -def _is_spec_file(file): - """Gets whether the given file is a spec file.""" - basename = file.basename - - # External files (from other workspaces) should never run as specs. - if (file.short_path.startswith("../")): - return False - - # `spec.js` or `spec.mjs` files will be imported in the entry-point. - return basename.endswith("spec.js") or basename.endswith("spec.mjs") - -def _filter_spec_files(files): - """Filters the given list of files to only contain spec files.""" - result = [] - for file in files: - if _is_spec_file(file): - result.append(file) - return result - -def _create_entrypoint_file(base_package, spec_files): - """Creates the contents of the spec entry-point ESM file which imports - all individual spec files so that these are bundled and loaded by Node/Karma.""" - output = "" - for file in spec_files: - base_dir_segments = "/".join([".."] * len(base_package.split("/"))) - output += """import "%s/%s";\n""" % (base_dir_segments, file.short_path) - return output - -def _spec_entrypoint_impl(ctx): - output = ctx.actions.declare_file("%s.mjs" % ctx.attr.name) - spec_depsets = [] - - for dep in ctx.attr.deps: - if JSModuleInfo in dep: - spec_depsets.append(dep[JSModuleInfo].sources) - else: - spec_depsets.append(dep[DefaultInfo].files) - - spec_files = [] - - for spec_depset in spec_depsets: - # Note: `to_list()` is an expensive operation but we need to do this for every - # dependency here in order to be able to filter out spec files from depsets. - spec_files.extend(_filter_spec_files(spec_depset.to_list())) - - ctx.actions.write( - output = output, - content = _create_entrypoint_file(ctx.label.package, spec_files), - ) - - out_depset = depset([output]) - - return [ - DefaultInfo(files = out_depset), - JSModuleInfo( - direct_sources = out_depset, - sources = depset(transitive = [out_depset] + spec_depsets), - ), - ] - -_spec_entrypoint = rule( - implementation = _spec_entrypoint_impl, - attrs = { - "deps": attr.label_list(allow_files = False, mandatory = True), - }, -) - -def spec_bundle(name, platform, deps, **kwargs): - """ - Macro that will bundle all test files, with their respective transitive dependencies, - into a single bundle file that can be loaded within Karma or NodeJS directly. Test files - are bundled as Angular framework packages do not ship UMD files and to avoid overall - complexity with maintaining a runtime loader such as RequireJS or SystemJS. - """ - - is_browser_test = platform == "browser" - package_name = native.package_name() - workspace = "angular_material" - - _spec_entrypoint( - name = "%s_spec_entrypoint" % name, - deps = deps, - testonly = True, - ) - - expand_template( - name = "%s_config_file" % name, - testonly = True, - template = "//tools/spec-bundling:esbuild.config-tmpl.mjs", - output_name = "%s_config.mjs" % name, - substitutions = select({ - # Pass through whether partial compilation is enabled or not. This is helpful - # for our integration tests which run all tests in partial compilation mode. - "//tools:partial_compilation_enabled": {"TMPL_PARTIAL_COMPILATION_ENABLED": "true"}, - "//conditions:default": {"TMPL_PARTIAL_COMPILATION_ENABLED": "false"}, - }), - ) - - esbuild_config( - name = "%s_config" % name, - config_file = ":%s_config_file" % name, - testonly = True, - deps = ["//tools/angular:create_linker_esbuild_plugin"], - ) - - # Browser tests (Karma) need named AMD modules to load. - # TODO(devversion): consider updating `@bazel/concatjs` to support loading JS files directly. - esbuild_rule = esbuild_amd if is_browser_test else esbuild - amd_name = "%s/%s/%s" % (workspace, package_name, name + "_spec") if is_browser_test else None - - esbuild_rule( - name = "%s_bundle" % name, - testonly = True, - config = ":%s_config" % name, - entry_point = ":%s_spec_entrypoint" % name, - module_name = amd_name, - output = "%s_spec.js" % name, - # We cannot use `ES2017` or higher as that would result in `async/await` not being downleveled. - # ZoneJS needs to be able to intercept these as otherwise change detection would not work properly. - target = "es2016", - platform = platform, - # Note: We add all linker-processed FW packages as dependencies here so that ESBuild will - # map all framework packages to their linker-processed bundles from `tools/angular`. - deps = deps + LINKER_PROCESSED_FW_PACKAGES + [":%s_spec_entrypoint" % name], - link_workspace_root = True, - **kwargs - ) - - js_library( - name = name, - testonly = True, - named_module_srcs = [":%s_bundle" % name], - ) diff --git a/tools/stylelint/no-ampersand-beyond-selector-start.ts b/tools/stylelint/no-ampersand-beyond-selector-start.ts index cc4c88a6797a..6eb4945e0e6f 100644 --- a/tools/stylelint/no-ampersand-beyond-selector-start.ts +++ b/tools/stylelint/no-ampersand-beyond-selector-start.ts @@ -21,15 +21,14 @@ interface RuleOptions { * Based off the `selector-nested-pattern` Stylelint rule. * Source: https://github.com/stylelint/stylelint/blob/master/lib/rules/selector-nested-pattern/ */ -const plugin = createPlugin(ruleName, (isEnabled: boolean, _options?) => { +const plugin = createPlugin(ruleName, (isEnabled: boolean, options: RuleOptions) => { return (root, result) => { if (!isEnabled) { return; } - const options = _options as RuleOptions; const filePattern = new RegExp(options.filePattern); - const fileName = basename(root.source!.input.file!); + const fileName = basename(root.source.input.file); if (!filePattern.test(fileName)) { return; @@ -57,6 +56,4 @@ function hasInvalidAmpersandUsage(selector: string): boolean { return selector.split(',').some(part => part.trim().indexOf('&', 1) > -1); } -plugin.ruleName = ruleName; -plugin.messages = messages; export default plugin; diff --git a/tools/stylelint/no-concrete-rules.ts b/tools/stylelint/no-concrete-rules.ts index f5374dcf91ea..7b1d80457d90 100644 --- a/tools/stylelint/no-concrete-rules.ts +++ b/tools/stylelint/no-concrete-rules.ts @@ -15,15 +15,14 @@ interface RuleOptions { * Stylelint plugin that will log a warning for all top-level CSS rules. * Can be used in theme files to ensure that everything is inside a mixin. */ -const plugin = createPlugin(ruleName, (isEnabled: boolean, _options) => { +const plugin = createPlugin(ruleName, (isEnabled: boolean, options: RuleOptions) => { return (root, result) => { if (!isEnabled) { return; } - const options = _options as RuleOptions; const filePattern = new RegExp(options.filePattern); - const fileName = basename(root.source!.input.file!); + const fileName = basename(root.source.input.file); if (!filePattern.test(fileName) || !root.nodes) { return; @@ -45,6 +44,4 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, _options) => { }; }); -plugin.ruleName = ruleName; -plugin.messages = messages; export default plugin; diff --git a/tools/stylelint/no-import.ts b/tools/stylelint/no-import.ts index 85f1008b8252..aec56d3db229 100644 --- a/tools/stylelint/no-import.ts +++ b/tools/stylelint/no-import.ts @@ -15,7 +15,7 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, options?: {exclude?: const excludePattern = options?.exclude ? new RegExp(options.exclude) : null; - if (excludePattern?.test(basename(root.source!.input.file!))) { + if (excludePattern?.test(basename(root.source.input.file))) { return; } @@ -32,6 +32,4 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, options?: {exclude?: }; }); -plugin.ruleName = ruleName; -plugin.messages = messages; export default plugin; diff --git a/tools/stylelint/no-nested-mixin.ts b/tools/stylelint/no-nested-mixin.ts index b967bef6c0a8..758a09127036 100644 --- a/tools/stylelint/no-nested-mixin.ts +++ b/tools/stylelint/no-nested-mixin.ts @@ -35,6 +35,4 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean) => { }; }); -plugin.ruleName = ruleName; -plugin.messages = messages; export default plugin; diff --git a/tools/stylelint/no-prefixes/index.ts b/tools/stylelint/no-prefixes/index.ts index d2d7c97d461f..542125b7ee9d 100644 --- a/tools/stylelint/no-prefixes/index.ts +++ b/tools/stylelint/no-prefixes/index.ts @@ -5,8 +5,8 @@ import {NeedsPrefix} from './needs-prefix'; const parseSelector = require('stylelint/lib/utils/parseSelector'); const ruleName = 'material/no-prefixes'; const messages = utils.ruleMessages(ruleName, { - property: (property: string, browsers: string[]) => { - return `Unprefixed property "${property}" needs a prefix for browsers ${browsers.join(', ')}.`; + property: (property: string, browsers: string) => { + return `Unprefixed property "${property}" needs a prefix for browsers ${browsers}.`; }, value: (property, value) => `Unprefixed value in "${property}: ${value}".`, atRule: name => `Unprefixed @rule "${name}".`, @@ -15,7 +15,7 @@ const messages = utils.ruleMessages(ruleName, { }); /** Config options for the rule. */ -interface RuleOptions { +interface Options { browsers: string[]; filePattern: string; } @@ -23,16 +23,9 @@ interface RuleOptions { /** * Stylelint plugin that warns for unprefixed CSS. */ -const plugin = createPlugin(ruleName, (isEnabled: boolean, _options?) => { +const plugin = createPlugin(ruleName, (isEnabled: boolean, {filePattern, browsers}: Options) => { return (root, result) => { - if (!isEnabled) { - return; - } - - const options = _options as RuleOptions; - const {browsers, filePattern} = options; - - if (filePattern && !minimatch(root.source!.input.file!, filePattern)) { + if (!isEnabled || (filePattern && !minimatch(root.source.input.file, filePattern))) { return; } @@ -46,7 +39,7 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, _options?) => { utils.report({ result, ruleName, - message: messages.property(decl.prop, propertyPrefixes), + message: messages.property(decl.prop, propertyPrefixes.join(', ')), node: decl, index: (decl.raws.before || '').length, }); @@ -101,6 +94,4 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, _options?) => { }; }); -plugin.ruleName = ruleName; -plugin.messages = messages; export default plugin; diff --git a/tools/stylelint/no-top-level-ampersand-in-mixin.ts b/tools/stylelint/no-top-level-ampersand-in-mixin.ts index 2a952fc3bcc7..2474420a7cd1 100644 --- a/tools/stylelint/no-top-level-ampersand-in-mixin.ts +++ b/tools/stylelint/no-top-level-ampersand-in-mixin.ts @@ -24,7 +24,7 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, _options?) => { const options = _options as RuleOptions; const filePattern = new RegExp(options.filePattern); - const fileName = basename(root.source!.input.file!); + const fileName = basename(root.source.input.file); if (!filePattern.test(fileName)) { return; @@ -55,6 +55,4 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, _options?) => { }; }); -plugin.ruleName = ruleName; -plugin.messages = messages; export default plugin; diff --git a/tools/stylelint/no-unused-import.ts b/tools/stylelint/no-unused-import.ts index a518d2a29d78..c7bb1f33d463 100644 --- a/tools/stylelint/no-unused-import.ts +++ b/tools/stylelint/no-unused-import.ts @@ -1,6 +1,5 @@ -import {createPlugin, Plugin, utils} from 'stylelint'; +import {createPlugin, utils} from 'stylelint'; import {basename, join} from 'path'; -import {Result, Root} from 'postcss'; const ruleName = 'material/no-unused-import'; const messages = utils.ruleMessages(ruleName, { @@ -11,8 +10,8 @@ const messages = utils.ruleMessages(ruleName, { }); /** Stylelint plugin that flags unused `@use` statements. */ -const factory = (isEnabled: boolean, _options: never, context: {fix: boolean}) => { - return (root: Root, result: Result) => { +const plugin = createPlugin(ruleName, (isEnabled: boolean, _options, context) => { + return (root, result) => { if (!isEnabled) { return; } @@ -26,29 +25,27 @@ const factory = (isEnabled: boolean, _options: never, context: {fix: boolean}) = // Flag namespaces we didn't manage to parse so that we can fix the parsing logic. if (!namespace) { utils.report({ - // We need these `as any` casts, because Stylelint uses an older version - // of the postcss typings that don't match up with our anymore. - result: result as any, + result, ruleName, message: messages.invalid(rule.params), - node: rule as any, + node: rule, }); } else if (!fileContent.includes(namespace + '.')) { if (context.fix) { rule.remove(); } else { utils.report({ - result: result as any, + result, ruleName, message: messages.expected(namespace), - node: rule as any, + node: rule, }); } } } }); }; -}; +}); /** Extracts the namespace of an `@use` rule from its parameters. */ function extractNamespaceFromUseStatement(params: string): string | null { @@ -88,9 +85,4 @@ function extractNamespaceFromUseStatement(params: string): string | null { return null; } -// Note: We need to cast the value explicitly to `Plugin` because the stylelint types -// do not type the context parameter. https://stylelint.io/developer-guide/rules#add-autofix -const plugin = createPlugin(ruleName, factory as unknown as Plugin); -plugin.ruleName = ruleName; -plugin.messages = messages; -module.exports = plugin; +export default plugin; diff --git a/tools/stylelint/selector-no-deep.ts b/tools/stylelint/selector-no-deep.ts index c269cf73c3cc..7dff8848a470 100644 --- a/tools/stylelint/selector-no-deep.ts +++ b/tools/stylelint/selector-no-deep.ts @@ -35,6 +35,4 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean) => { }; }); -plugin.ruleName = ruleName; -plugin.messages = messages; export default plugin; diff --git a/tools/stylelint/single-line-comment-only.ts b/tools/stylelint/single-line-comment-only.ts index 1a0f203d2525..38192a03913e 100644 --- a/tools/stylelint/single-line-comment-only.ts +++ b/tools/stylelint/single-line-comment-only.ts @@ -19,7 +19,7 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, options?: {filePatter const filePattern = options?.filePattern ? new RegExp(options.filePattern) : null; - if (filePattern && !filePattern?.test(basename(root.source!.input.file!))) { + if (filePattern && !filePattern?.test(basename(root.source.input.file))) { return; } @@ -38,6 +38,4 @@ const plugin = createPlugin(ruleName, (isEnabled: boolean, options?: {filePatter }; }); -plugin.ruleName = ruleName; -plugin.messages = messages; export default plugin; diff --git a/tools/stylelint/theme-mixin-api.ts b/tools/stylelint/theme-mixin-api.ts index db3530ee98cb..7839bec50e1a 100644 --- a/tools/stylelint/theme-mixin-api.ts +++ b/tools/stylelint/theme-mixin-api.ts @@ -1,6 +1,6 @@ -import {createPlugin, Plugin, utils} from 'stylelint'; +import {createPlugin, utils} from 'stylelint'; import {basename} from 'path'; -import {AtRule, atRule, decl, Declaration, Node, Result, Root} from 'postcss'; +import {AtRule, atRule, decl, Declaration, Node} from 'postcss'; /** Name of this stylelint rule. */ const ruleName = 'material/theme-mixin-api'; @@ -21,9 +21,9 @@ const themeMixinRegex = /^(density|color|typography|theme)\((.*)\)$/; * consistently check for duplicative theme styles so that we can warn consumers. The * plugin ensures that style-generating statements are nested inside the duplication check. */ -const plugin = (isEnabled: boolean, _options: never, context: {fix: boolean}) => { - return (root: Root, result: Result) => { - const componentName = getComponentNameFromPath(root.source!.input.file!); +const plugin = createPlugin(ruleName, (isEnabled: boolean, _options, context) => { + return (root, result) => { + const componentName = getComponentNameFromPath(root.source.input.file); if (!componentName || !isEnabled) { return; @@ -209,7 +209,7 @@ const plugin = (isEnabled: boolean, _options: never, context: {fix: boolean}) => utils.report({result: result as any, ruleName, node: node as any, message}); } }; -}; +}); /** Figures out the name of the component from a file path. */ function getComponentNameFromPath(filePath: string): string | null { @@ -235,6 +235,4 @@ function stripNewlinesAndIndentation(value: string): string { return value.replace(/(\r|\n)\s+/g, ''); } -// Note: We need to cast the value explicitly to `Plugin` because the stylelint types -// do not type the context parameter. https://stylelint.io/developer-guide/rules#add-autofix -module.exports = createPlugin(ruleName, plugin as unknown as Plugin); +export default plugin; diff --git a/tools/tslint-rules/coercionTypesRule.ts b/tools/tslint-rules/coercionTypesRule.ts deleted file mode 100644 index e677b47c7b67..000000000000 --- a/tools/tslint-rules/coercionTypesRule.ts +++ /dev/null @@ -1,315 +0,0 @@ -import * as ts from 'typescript'; -import * as Lint from 'tslint'; -import * as tsutils from 'tsutils'; - -const TYPE_ACCEPT_MEMBER_PREFIX = 'ngAcceptInputType_'; - -/** - * Type that describes the TypeScript type checker with internal methods for - * the type relation API methods being exposed. - */ -// TODO: remove if https://github.com/microsoft/TypeScript/issues/9879 is resolved. -type TypeCheckerWithRelationApi = ts.TypeChecker & { - getNullType: () => ts.Type; - getUndefinedType: () => ts.Type; - isTypeAssignableTo: (a: ts.Type, b: ts.Type) => boolean; -}; - -/** - * TSLint rule that verifies that classes declare corresponding `ngAcceptInputType_*` - * static fields for inputs that use coercion inside of their setters. Also handles - * inherited class members and members that come from an interface. - */ -export class Rule extends Lint.Rules.TypedRule { - applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[] { - const walker = new Walker( - sourceFile, - this.getOptions(), - program.getTypeChecker() as TypeCheckerWithRelationApi, - ); - return this.applyWithWalker(walker); - } -} - -class Walker extends Lint.RuleWalker { - /** Names of the coercion functions that we should be looking for. */ - private _coercionFunctions: Set; - - /** Mapping of interfaces known to have coercion properties and the property names themselves. */ - private _coercionInterfaces: {[interfaceName: string]: string[]}; - - /** Type resolving to the TS internal `null` type. */ - private _nullType = this._typeChecker.getNullType(); - - /** Type resolving to the TS internal `undefined` type. */ - private _undefinedType = this._typeChecker.getUndefinedType(); - - constructor( - sourceFile: ts.SourceFile, - options: Lint.IOptions, - private _typeChecker: TypeCheckerWithRelationApi, - ) { - super(sourceFile, options); - this._coercionFunctions = new Set(options.ruleArguments[0] || []); - this._coercionInterfaces = options.ruleArguments[1] || {}; - } - - override visitPropertyDeclaration(node: ts.PropertyDeclaration) { - if (ts.isIdentifier(node.name) && node.name.text.startsWith(TYPE_ACCEPT_MEMBER_PREFIX)) { - this._lintCoercionMember(node); - } - super.visitPropertyDeclaration(node); - } - - override visitClassDeclaration(node: ts.ClassDeclaration) { - if (this._shouldLintClass(node)) { - this._lintClass(node, node, true); - this._lintSuperClasses(node); - this._lintInterfaces(node, node, true); - } - super.visitClassDeclaration(node); - } - - /** - * Checks if the given property declaration of a coercion member includes null and - * undefined in the type node. We enforce that all acceptance members accept these - * values since we want coercion inputs to work with the async pipe. - */ - private _lintCoercionMember(node: ts.PropertyDeclaration) { - if (!node.type) { - this.addFailureAtNode(node, 'Acceptance member needs to have an explicit type.'); - return; - } - - const type = this._typeChecker.getTypeFromTypeNode(node.type); - const hasUndefined = this._typeChecker.isTypeAssignableTo(this._undefinedType, type); - const hasNull = this._typeChecker.isTypeAssignableTo(this._nullType, type); - - if (!hasNull && !hasUndefined) { - this.addFailureAtNode( - node, - 'Acceptance member has to accept "null" and "undefined".', - this.appendText(node.type.getEnd(), ' | null | undefined'), - ); - } else if (!hasNull) { - this.addFailureAtNode( - node, - 'Acceptance member has to accept "null".', - this.appendText(node.type.getEnd(), ' | null'), - ); - } else if (!hasUndefined) { - this.addFailureAtNode( - node, - 'Acceptance member has to accept "undefined".', - this.appendText(node.type.getEnd(), ' | undefined'), - ); - } - } - - /** - * Goes through the own setters of a class declaration and checks whether they use coercion. - * @param node Class declaration to be checked. - * @param sourceClass Class declaration on which to look for static properties that declare the - * accepted values for the setter. - * @param expectDeclaredMembers Whether acceptance members should be expected or unexpected. - */ - private _lintClass( - node: ts.ClassDeclaration, - sourceClass: ts.ClassDeclaration, - expectDeclaredMembers: boolean, - ): void { - node.members.forEach(member => { - if ( - ts.isSetAccessor(member) && - usesCoercion(member, this._coercionFunctions) && - this._shouldCheckSetter(member) - ) { - this._checkStaticMember(sourceClass, member.name.getText(), expectDeclaredMembers); - } - }); - } - - /** - * Goes up the inheritance chain of a class declaration and - * checks whether it has any setters using coercion. - * @param node Class declaration to be checked. - */ - private _lintSuperClasses(node: ts.ClassDeclaration): void { - let currentClass: ts.ClassDeclaration | null = node; - - while (currentClass) { - const baseType = getBaseTypeIdentifier(currentClass); - - if (!baseType) { - break; - } - - const symbol = this._typeChecker.getTypeAtLocation(baseType).getSymbol(); - currentClass = - symbol?.valueDeclaration && ts.isClassDeclaration(symbol.valueDeclaration) - ? symbol.valueDeclaration - : null; - - if (currentClass) { - // Acceptance members should not be re-declared in the derived class. This - // is because acceptance members are inherited. - this._lintClass(currentClass, node, false); - this._lintInterfaces(currentClass, node, false); - } - } - } - - /** - * Checks whether the interfaces that a class implements contain any known coerced properties. - * @param node Class declaration to be checked. - * @param sourceClass Class declaration on which to look for static properties that declare the - * accepted values for the setter. - * @param expectDeclaredMembers Whether acceptance members should be expected or unexpected. - */ - private _lintInterfaces( - node: ts.ClassDeclaration, - sourceClass: ts.ClassDeclaration, - expectDeclaredMembers: boolean, - ): void { - if (!node.heritageClauses) { - return; - } - - node.heritageClauses.forEach(clause => { - if (clause.token === ts.SyntaxKind.ImplementsKeyword) { - clause.types.forEach(clauseType => { - if (ts.isIdentifier(clauseType.expression)) { - const propNames = this._coercionInterfaces[clauseType.expression.text]; - - if (propNames) { - propNames.forEach(propName => - this._checkStaticMember(sourceClass, propName, expectDeclaredMembers), - ); - } - } - }); - } - }); - } - - /** - * Based on whether the acceptance members are expected or not, this method checks whether - * the specified class declaration matches the condition. - */ - private _checkStaticMember( - node: ts.ClassDeclaration, - setterName: string, - expectDeclaredMembers: boolean, - ) { - const {memberName, memberNode} = this._lookupStaticMember(node, setterName); - if (expectDeclaredMembers && !memberNode) { - this.addFailureAtNode( - node.name || node, - `Class must declare static coercion ` + `property called ${memberName}.`, - ); - } else if (!expectDeclaredMembers && memberNode) { - this.addFailureAtNode( - node.name || node, - `Class should not declare static coercion ` + - `property called ${memberName}. Acceptance members are inherited.`, - Lint.Replacement.deleteText(memberNode.getFullStart(), memberNode.getFullWidth()), - ); - } - } - - /** Checks whether this rule should lint a class declaration. */ - private _shouldLintClass(node: ts.ClassDeclaration): boolean { - // We don't need to lint undecorated classes. - if (!node.decorators) { - return false; - } - // If the class is a component, we should lint it. - if (node.decorators.some(decorator => isDecoratorCalled(decorator, 'Component'))) { - return true; - } - // If the class is a directive, we should lint it. - return node.decorators.some(decorator => isDecoratorCalled(decorator, 'Directive')); - } - - /** Looks for a static member that corresponds to the given property. */ - private _lookupStaticMember( - node: ts.ClassDeclaration, - propName: string, - ): {memberName: string; memberNode?: ts.PropertyDeclaration} { - const coercionPropertyName = `${TYPE_ACCEPT_MEMBER_PREFIX}${propName}`; - const correspondingCoercionProperty = node.members.find( - (member): member is ts.PropertyDeclaration => { - return ( - ts.isPropertyDeclaration(member) && - tsutils.hasModifier(member.modifiers, ts.SyntaxKind.StaticKeyword) && - member.name.getText() === coercionPropertyName - ); - }, - ); - return {memberName: coercionPropertyName, memberNode: correspondingCoercionProperty}; - } - - /** Determines whether a setter node should be checked by the lint rule. */ - private _shouldCheckSetter(node: ts.SetAccessorDeclaration): boolean { - const param = node.parameters[0]; - const types = this._typeChecker - .typeToString(this._typeChecker.getTypeAtLocation(param)) - .split('|') - .map(name => name.trim()); - // We shouldn't check setters which accept `any` or a `string`. - return types.every(typeName => typeName !== 'any' && typeName !== 'string'); - } -} - -/** - * Checks whether a setter uses coercion. - * @param setter Setter node that should be checked. - * @param coercionFunctions Names of the coercion functions that we should be looking for. - */ -function usesCoercion(setter: ts.SetAccessorDeclaration, coercionFunctions: Set): boolean { - let coercionWasUsed = false; - - setter.forEachChild(function walk(node: ts.Node) { - if ( - ts.isCallExpression(node) && - ts.isIdentifier(node.expression) && - coercionFunctions.has(node.expression.text) - ) { - coercionWasUsed = true; - } - - // Don't check callback functions since coercion used - // inside them most-likely won't need to be declared. - if (!coercionWasUsed && !ts.isArrowFunction(node) && !ts.isFunctionExpression(node)) { - node.forEachChild(walk); - } - }); - - return coercionWasUsed; -} - -/** Gets the identifier node of the base type that a class is extending. */ -function getBaseTypeIdentifier(node: ts.ClassDeclaration): ts.Identifier | null { - if (node.heritageClauses) { - for (let clause of node.heritageClauses) { - if ( - clause.token === ts.SyntaxKind.ExtendsKeyword && - clause.types.length && - ts.isIdentifier(clause.types[0].expression) - ) { - return clause.types[0].expression; - } - } - } - - return null; -} - -/** Checks whether a node is a decorator with a particular name. */ -function isDecoratorCalled(node: ts.Decorator, name: string): boolean { - return ( - ts.isCallExpression(node.expression) && - ts.isIdentifier(node.expression.expression) && - node.expression.expression.text === name - ); -} diff --git a/tools/tslint-rules/lightweightTokensRule.ts b/tools/tslint-rules/lightweightTokensRule.ts index c590a1f9ea67..33ce16e06126 100644 --- a/tools/tslint-rules/lightweightTokensRule.ts +++ b/tools/tslint-rules/lightweightTokensRule.ts @@ -1,7 +1,8 @@ +import ts from 'typescript'; import minimatch from 'minimatch'; + import * as path from 'path'; import * as Lint from 'tslint'; -import * as ts from 'typescript'; /** Arguments this rule supports. */ type RuleArguments = [ diff --git a/tools/tslint-rules/memberNamingRule.ts b/tools/tslint-rules/memberNamingRule.ts index 95fc2ae79e35..c1122597626f 100644 --- a/tools/tslint-rules/memberNamingRule.ts +++ b/tools/tslint-rules/memberNamingRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as tsutils from 'tsutils'; import * as Lint from 'tslint'; diff --git a/tools/tslint-rules/ngOnChangesPropertyAccessRule.ts b/tools/tslint-rules/ngOnChangesPropertyAccessRule.ts index 2fe0c24aa458..aec9aed19787 100644 --- a/tools/tslint-rules/ngOnChangesPropertyAccessRule.ts +++ b/tools/tslint-rules/ngOnChangesPropertyAccessRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as Lint from 'tslint'; /** diff --git a/tools/tslint-rules/noCoercionMembersRule.ts b/tools/tslint-rules/noCoercionMembersRule.ts new file mode 100644 index 000000000000..12c68638cacd --- /dev/null +++ b/tools/tslint-rules/noCoercionMembersRule.ts @@ -0,0 +1,28 @@ +import ts from 'typescript'; +import * as Lint from 'tslint'; + +/** Lint rule that disallows coercion class members. */ +export class Rule extends Lint.Rules.AbstractRule { + apply(sourceFile: ts.SourceFile) { + return this.applyWithFunction( + sourceFile, + (context: Lint.WalkContext) => { + (function visitNode(node: ts.Node) { + if (ts.isClassDeclaration(node)) { + node.members.forEach(member => { + if (member.name?.getText().startsWith('ngAcceptInputType_')) { + context.addFailureAtNode( + member, + 'Coercion members are not allowed. Add the type to the input setter instead.', + ); + } + }); + } + + ts.forEachChild(node, visitNode); + })(context.sourceFile); + }, + this.getOptions().ruleArguments, + ); + } +} diff --git a/tools/tslint-rules/noCrossEntryPointRelativeImportsRule.ts b/tools/tslint-rules/noCrossEntryPointRelativeImportsRule.ts index 35caa08e87bf..5d8fa2d0f731 100644 --- a/tools/tslint-rules/noCrossEntryPointRelativeImportsRule.ts +++ b/tools/tslint-rules/noCrossEntryPointRelativeImportsRule.ts @@ -1,8 +1,9 @@ -import {existsSync} from 'fs'; +import ts from 'typescript'; import minimatch from 'minimatch'; + +import {existsSync} from 'fs'; import {dirname, join, normalize, relative, resolve} from 'path'; import * as Lint from 'tslint'; -import * as ts from 'typescript'; const BUILD_BAZEL_FILE = 'BUILD.bazel'; diff --git a/tools/tslint-rules/noHostDecoratorInConcreteRule.ts b/tools/tslint-rules/noHostDecoratorInConcreteRule.ts index ea80b005f4f3..04ba046aa621 100644 --- a/tools/tslint-rules/noHostDecoratorInConcreteRule.ts +++ b/tools/tslint-rules/noHostDecoratorInConcreteRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as Lint from 'tslint'; export class Rule extends Lint.Rules.AbstractRule { diff --git a/tools/tslint-rules/noLifecycleInvocationRule.ts b/tools/tslint-rules/noLifecycleInvocationRule.ts index 3a8a2d55bfd0..e97d712a6add 100644 --- a/tools/tslint-rules/noLifecycleInvocationRule.ts +++ b/tools/tslint-rules/noLifecycleInvocationRule.ts @@ -1,6 +1,6 @@ import * as path from 'path'; import * as Lint from 'tslint'; -import * as ts from 'typescript'; +import ts from 'typescript'; import minimatch from 'minimatch'; const hooks = new Set([ diff --git a/tools/tslint-rules/noNestedTernaryRule.ts b/tools/tslint-rules/noNestedTernaryRule.ts index d7e686a59f90..2ac8f13087ac 100644 --- a/tools/tslint-rules/noNestedTernaryRule.ts +++ b/tools/tslint-rules/noNestedTernaryRule.ts @@ -1,5 +1,5 @@ import * as Lint from 'tslint'; -import * as ts from 'typescript'; +import ts from 'typescript'; /** Rule that enforces that ternary expressions aren't being nested. */ export class Rule extends Lint.Rules.AbstractRule { diff --git a/tools/tslint-rules/noPrivateGettersRule.ts b/tools/tslint-rules/noPrivateGettersRule.ts index 02649cde7b9b..b5505891cbd3 100644 --- a/tools/tslint-rules/noPrivateGettersRule.ts +++ b/tools/tslint-rules/noPrivateGettersRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as Lint from 'tslint'; import * as tsutils from 'tsutils'; diff --git a/tools/tslint-rules/noUndecoratedBaseClassDiRule.ts b/tools/tslint-rules/noUndecoratedBaseClassDiRule.ts index 80d06cc6dc8e..06c329884d9a 100644 --- a/tools/tslint-rules/noUndecoratedBaseClassDiRule.ts +++ b/tools/tslint-rules/noUndecoratedBaseClassDiRule.ts @@ -1,5 +1,5 @@ import * as Lint from 'tslint'; -import * as ts from 'typescript'; +import ts from 'typescript'; const RULE_FAILURE = `Class inherits constructor using dependency injection from ` + diff --git a/tools/tslint-rules/noUndecoratedClassWithAngularFeaturesRule.ts b/tools/tslint-rules/noUndecoratedClassWithAngularFeaturesRule.ts index 4c3f8071aff3..4a598334abc2 100644 --- a/tools/tslint-rules/noUndecoratedClassWithAngularFeaturesRule.ts +++ b/tools/tslint-rules/noUndecoratedClassWithAngularFeaturesRule.ts @@ -1,5 +1,5 @@ import * as Lint from 'tslint'; -import * as ts from 'typescript'; +import ts from 'typescript'; const RULE_FAILURE = `Undecorated class uses Angular features. Undecorated ` + diff --git a/tools/tslint-rules/noUnescapedHtmlTagRule.ts b/tools/tslint-rules/noUnescapedHtmlTagRule.ts index 0dce18dbf138..437648905daf 100644 --- a/tools/tslint-rules/noUnescapedHtmlTagRule.ts +++ b/tools/tslint-rules/noUnescapedHtmlTagRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as Lint from 'tslint'; import * as utils from 'tsutils'; diff --git a/tools/tslint-rules/preferConstEnumRule.ts b/tools/tslint-rules/preferConstEnumRule.ts index 5f100d630df1..0d3322f06b8d 100644 --- a/tools/tslint-rules/preferConstEnumRule.ts +++ b/tools/tslint-rules/preferConstEnumRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as Lint from 'tslint'; import * as tsutils from 'tsutils'; diff --git a/tools/tslint-rules/requireBreakingChangeVersionRule.ts b/tools/tslint-rules/requireBreakingChangeVersionRule.ts index cfffcc0bd1e3..477890b65936 100644 --- a/tools/tslint-rules/requireBreakingChangeVersionRule.ts +++ b/tools/tslint-rules/requireBreakingChangeVersionRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as Lint from 'tslint'; import * as utils from 'tsutils'; diff --git a/tools/tslint-rules/requireLicenseBannerRule.ts b/tools/tslint-rules/requireLicenseBannerRule.ts index 501ed6021084..17275f217686 100644 --- a/tools/tslint-rules/requireLicenseBannerRule.ts +++ b/tools/tslint-rules/requireLicenseBannerRule.ts @@ -1,12 +1,16 @@ import * as path from 'path'; -import * as ts from 'typescript'; import * as Lint from 'tslint'; import minimatch from 'minimatch'; - -const buildConfig = require('../../build-config'); +import ts from 'typescript'; /** License banner that is placed at the top of every public TypeScript file. */ -const licenseBanner = buildConfig.licenseBanner; +const licenseBanner = `/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */`; /** Failure message that will be shown if a license banner is missing. */ const ERROR_MESSAGE = diff --git a/tools/tslint-rules/settersAfterGettersRule.ts b/tools/tslint-rules/settersAfterGettersRule.ts index 0f8b04a7eacf..44df9693c34f 100644 --- a/tools/tslint-rules/settersAfterGettersRule.ts +++ b/tools/tslint-rules/settersAfterGettersRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as Lint from 'tslint'; import * as tsutils from 'tsutils'; diff --git a/tools/tslint-rules/symbolNamingRule.ts b/tools/tslint-rules/symbolNamingRule.ts index f05362c27a97..3e6bea9bc8c9 100644 --- a/tools/tslint-rules/symbolNamingRule.ts +++ b/tools/tslint-rules/symbolNamingRule.ts @@ -1,4 +1,4 @@ -import * as ts from 'typescript'; +import ts from 'typescript'; import * as Lint from 'tslint'; /** Lint rule that checks the names of classes and interfaces against a pattern. */ diff --git a/tools/tslint-rules/validateDecoratorsRule.ts b/tools/tslint-rules/validateDecoratorsRule.ts index c2cce4d88bca..bc1d66091ab5 100644 --- a/tools/tslint-rules/validateDecoratorsRule.ts +++ b/tools/tslint-rules/validateDecoratorsRule.ts @@ -1,6 +1,6 @@ import * as path from 'path'; -import * as ts from 'typescript'; import * as Lint from 'tslint'; +import ts from 'typescript'; import minimatch from 'minimatch'; /** diff --git a/tsconfig.json b/tsconfig.json index eb16993b1d3c..444cf8724da0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ "noFallthroughCasesInSwitch": true, "noUnusedLocals": false, "strictNullChecks": true, + "useUnknownInCatchVariables": true, "noImplicitOverride": true, "noImplicitReturns": true, "strictFunctionTypes": true, @@ -37,6 +38,9 @@ "@angular/components-examples/*": ["./src/components-examples/*"] } }, + "angularCompilerOptions": { + "strictTemplates": true + }, "include": [ "src/**/*.ts", "e2e/**/*.ts", diff --git a/tslint.json b/tslint.json index 99fd9c7a7bdf..b8ab009b44db 100644 --- a/tslint.json +++ b/tslint.json @@ -1,28 +1,17 @@ { - "extends": [ - "rxjs-tslint-rules" - ], + "extends": ["rxjs-tslint-rules"], "rulesDirectory": [ "./tools/tslint-rules/", "node_modules/vrsource-tslint-rules/rules", "node_modules/codelyzer" ], "rules": { - "ban-types": [ - true, - [ - "ReadonlyArray<.+>", - "Use 'readonly T[]' instead." - ] - ], + "ban-types": [true, ["ReadonlyArray<.+>", "Use 'readonly T[]' instead."]], // Disable this flag because of SHA tslint#48b0c597f9257712c7d1f04b55ed0aa60e333f6a // TSLint now shows warnings if types for properties are inferred. This rule needs to be // disabled because all properties need to have explicit types set to work for Dgeni. "no-inferrable-types": false, - "comment-format": [ - true, - "check-space" - ], + "comment-format": [true, "check-space"], "eofline": true, "no-construct": true, "prefer-literal": [true, "object"], @@ -56,7 +45,10 @@ {"name": ["Object", "assign"], "message": "Use the spread operator instead."}, {"name": ["*", "asObservable"], "message": "Cast to Observable type instead."}, {"name": ["*", "removeChild"], "message": "Use `remove` instead instead."}, - {"name": ["isDevMode"], "message": "Use `typeof ngDevMode === 'undefined' || ngDevMode` instead"} + { + "name": ["isDevMode"], + "message": "Use `typeof ngDevMode === 'undefined' || ngDevMode` instead" + } ], // Avoids inconsistent linebreak styles in source files. Forces developers to use LF linebreaks. "linebreak-style": [true, "LF"], @@ -100,55 +92,51 @@ // need a dedicated token. ["Directionality", "DateAdapter"] ], - "coercion-types": [true, - ["coerceBooleanProperty", "coerceCssPixelValue", "coerceNumberProperty"], + "no-coercion-members": true, + "no-host-decorator-in-concrete": [true, "HostBinding", "HostListener"], + "member-naming": [ + true, { - "CanDisable": ["disabled"], - "CanDisableRipple": ["disableRipple"], - "HasTabIndex": ["tabIndex"] + "private": "^_" } ], - "no-host-decorator-in-concrete": [ - true, - "HostBinding", - "HostListener" - ], - "member-naming": [true, { - "private": "^_" - }], "symbol-naming": [true, "^_?[A-Z][a-zA-Z0-9]*$"], - "validate-decorators": [true, { - "Component": { - "argument": 0, - "properties": { - "!host": "\\[class\\]", - "!preserveWhitespaces": ".*", - "!styles": ".*", - "!moduleId": ".*", - "changeDetection": "\\.OnPush$", - "encapsulation": "\\.None$" - } - }, - "Directive": { - "argument": 0, - "properties": { - "!host": "\\[class\\]" - } - }, - "NgModule": { - "argument": 0, - "properties": { - "*": "^(?!\\s*$).+" + "validate-decorators": [ + true, + { + "Component": { + "argument": 0, + "properties": { + "!host": "\\[class\\]", + "!preserveWhitespaces": ".*", + "!styles": ".*", + "!moduleId": ".*", + "changeDetection": "\\.OnPush$", + "encapsulation": "\\.None$" + } + }, + "Directive": { + "argument": 0, + "properties": { + "!host": "\\[class\\]" + } + }, + "NgModule": { + "argument": 0, + "properties": { + "*": "^(?!\\s*$).+" + } + }, + "ContentChildren": { + "argument": 1, + "required": true, + "properties": { + "descendants": "^(true|false)$" + } } }, - "ContentChildren": { - "argument": 1, - "required": true, - "properties": { - "descendants": "^(true|false)$" - } - } - }, "src/!(e2e-app|components-examples|universal-app|dev-app)/**/!(*.spec).ts"], + "src/!(e2e-app|components-examples|universal-app|dev-app)/**/!(*.spec).ts" + ], "require-license-banner": [ true, "src/!(e2e-app|components-examples|universal-app)/**/!(*.spec).ts", @@ -161,12 +149,15 @@ "!src/cdk/testing/+(private|tests)/**/*", "!src/google-maps/testing/**/*" ], - "file-name-casing": [true, { - // Exclude custom lint rule files since they have to always be camel-cased and end - // with "Rule". - "\\w+Rule.ts": "camel-case", - ".*": "kebab-case" - }], + "file-name-casing": [ + true, + { + // Exclude custom lint rule files since they have to always be camel-cased and end + // with "Rule". + "\\w+Rule.ts": "camel-case", + ".*": "kebab-case" + } + ], "no-unescaped-html-tag": true, // Ensures that all rxjs imports come only from `rxjs` and `rxjs/operators`. Also ensures // that no AST utils from `@schematics/angular` are imported. These should be vendored. diff --git a/yarn.lock b/yarn.lock index 9ea8ce92c8ff..a6d248d41709 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,11 @@ "@actions/core@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.4.0.tgz#cf2e6ee317e314b03886adfeb20e448d50d6e524" - integrity sha512-CGx2ilGq5i7zSLgiiGUtBCxhRRxibJYU6Fim0Q1Wg2aQL2LTnF27zbqZOrxfvFQ55eSBW0L8uVStgtKMpa0Qlg== + version "1.6.0" + resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.6.0.tgz#0568e47039bfb6a9170393a73f3b7eb3b22462cb" + integrity sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw== + dependencies: + "@actions/http-client" "^1.0.11" "@actions/github@^5.0.0": version "5.0.0" @@ -24,208 +26,285 @@ dependencies: tunnel "0.0.6" -"@ampproject/remapping@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.1.tgz#1398e73e567c2a7992df6554c15bb94a89b68ba2" - integrity sha512-Ta9bMA3EtUHDaZJXqUoT5cn/EecwOp+SXpKJqxDbDuMbLvEMu6YTyDDuvTWeStODfdmXyfMo7LymQyPkN3BicA== +"@ampproject/remapping@2.1.2", "@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + +"@angular-devkit/architect@0.1400.0-next.2": + version "0.1400.0-next.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1400.0-next.2.tgz#869453cb16649fb7758c1dd50803bf63b64eaaca" + integrity sha512-Y2eByOLnEbaR9mECgDrRxjc8fwV8+HtI+8jY9RvaJZvP/Tshgj93LjJQm00mLVHljxTyiu1cg97STKdgJygaBw== dependencies: - "@jridgewell/resolve-uri" "1.0.0" - sourcemap-codec "1.4.8" + "@angular-devkit/core" "14.0.0-next.2" + rxjs "6.6.7" -"@angular-devkit/architect@0.1300.0-next.7": - version "0.1300.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1300.0-next.7.tgz#b5f6e845ee2b484d5b57bc36bd7b581f46b66832" - integrity sha512-IqtGVsMjcGTgPlYcrWP5PQlc9Y9ESUn0WsIpNHgKUcQa+isimCALNn4KVW8MOhGWeaRw+vrnoN6fMAUQz063xA== +"@angular-devkit/architect@0.1400.0-next.3": + version "0.1400.0-next.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1400.0-next.3.tgz#5ed4bc74b44c8b08b668499b0f56cfeb735815e5" + integrity sha512-80ibgReUoIwT/Cvc9fc6Kq8pcVp6BVIneYlx0SMV1g6yw0nuSLpCCn5AuUW7kzpFSpSXTOPmt6QctzgWRgGUNQ== dependencies: - "@angular-devkit/core" "13.0.0-next.7" + "@angular-devkit/core" "14.0.0-next.3" rxjs "6.6.7" -"@angular-devkit/build-angular@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-13.0.0-next.7.tgz#343aeedb4d809e1a030a6f0a2581ac64a5da055f" - integrity sha512-6KsMwtg41nqUlkEKWMYGIUipB1nShtUXwcQThoU1bGXtxi/XEhzZp3BjY6MzDZLrPN7AV/WjRC2zJpP8T/2fMA== - dependencies: - "@ampproject/remapping" "1.0.1" - "@angular-devkit/architect" "0.1300.0-next.7" - "@angular-devkit/build-webpack" "0.1300.0-next.7" - "@angular-devkit/core" "13.0.0-next.7" - "@babel/core" "7.15.5" - "@babel/generator" "7.15.4" - "@babel/helper-annotate-as-pure" "7.15.4" - "@babel/plugin-proposal-async-generator-functions" "7.15.4" - "@babel/plugin-transform-async-to-generator" "7.14.5" - "@babel/plugin-transform-runtime" "7.15.0" - "@babel/preset-env" "7.15.6" - "@babel/runtime" "7.15.4" - "@babel/template" "7.15.4" - "@discoveryjs/json-ext" "0.5.5" - "@jsdevtools/coverage-istanbul-loader" "3.0.5" - "@ngtools/webpack" "13.0.0-next.7" +"@angular-devkit/build-angular@14.0.0-next.2": + version "14.0.0-next.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-14.0.0-next.2.tgz#d52e8e8ef34c88fe8d3c81d4b1bb60475fb0005f" + integrity sha512-10r7EXeq6Ch4/zKj5nUcRTKuVU7unXM+WBAEhdO0z4ONY7qXGP076Unmggkos0roCZvzwX0I8Ec9Rcc19f5OYQ== + dependencies: + "@ampproject/remapping" "2.1.2" + "@angular-devkit/architect" "0.1400.0-next.2" + "@angular-devkit/build-webpack" "0.1400.0-next.2" + "@angular-devkit/core" "14.0.0-next.2" + "@babel/core" "7.17.5" + "@babel/generator" "7.17.3" + "@babel/helper-annotate-as-pure" "7.16.7" + "@babel/plugin-proposal-async-generator-functions" "7.16.8" + "@babel/plugin-transform-async-to-generator" "7.16.8" + "@babel/plugin-transform-runtime" "7.17.0" + "@babel/preset-env" "7.16.11" + "@babel/runtime" "7.17.2" + "@babel/template" "7.16.7" + "@discoveryjs/json-ext" "0.5.6" + "@ngtools/webpack" "14.0.0-next.2" ansi-colors "4.1.1" - babel-loader "8.2.2" + babel-loader "8.2.3" + babel-plugin-istanbul "6.1.1" browserslist "^4.9.1" cacache "15.3.0" - caniuse-lite "^1.0.30001032" - circular-dependency-plugin "5.2.2" - copy-webpack-plugin "9.0.1" - core-js "3.18.1" - critters "0.0.10" - css-loader "6.3.0" - esbuild-wasm "0.13.3" - find-cache-dir "3.3.2" + copy-webpack-plugin "10.2.4" + core-js "3.21.1" + critters "0.0.16" + css-loader "6.6.0" + esbuild-wasm "0.14.22" glob "7.2.0" https-proxy-agent "5.0.0" - inquirer "8.1.5" + inquirer "8.2.0" + jsonc-parser "3.0.0" karma-source-map-support "1.4.0" - less "4.1.1" - less-loader "10.0.1" - license-webpack-plugin "2.3.21" - loader-utils "2.0.0" - mini-css-extract-plugin "2.3.0" - minimatch "3.0.4" - open "8.2.1" + less "4.1.2" + less-loader "10.2.0" + license-webpack-plugin "4.0.2" + loader-utils "3.2.0" + mini-css-extract-plugin "2.5.3" + minimatch "5.0.0" + open "8.4.0" ora "5.4.1" parse5-html-rewriting-stream "6.0.1" - piscina "3.1.0" - postcss "8.3.8" + piscina "3.2.0" + postcss "8.4.6" postcss-import "14.0.2" - postcss-loader "6.1.1" - postcss-preset-env "6.7.0" + postcss-loader "6.2.1" + postcss-preset-env "7.4.1" regenerator-runtime "0.13.9" - resolve-url-loader "4.0.0" + resolve-url-loader "5.0.0" rxjs "6.6.7" - sass "1.42.1" - sass-loader "12.1.0" + sass "1.49.7" + sass-loader "12.6.0" semver "7.3.5" - source-map-loader "3.0.0" - source-map-support "0.5.20" - stylus "0.55.0" - stylus-loader "6.1.0" - terser "5.9.0" + source-map-loader "3.0.1" + source-map-support "0.5.21" + stylus "0.56.0" + stylus-loader "6.2.0" + terser "5.10.0" text-table "0.2.0" tree-kill "1.2.2" tslib "2.3.1" - webpack "5.55.1" - webpack-dev-middleware "5.2.1" - webpack-dev-server "4.3.0" + webpack "5.69.1" + webpack-dev-middleware "5.3.1" + webpack-dev-server "4.7.4" webpack-merge "5.8.0" - webpack-subresource-integrity "5.0.0" + webpack-subresource-integrity "5.1.0" optionalDependencies: - esbuild "0.13.3" + esbuild "0.14.22" + +"@angular-devkit/build-angular@14.0.0-next.3": + version "14.0.0-next.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-14.0.0-next.3.tgz#3c7effb2ce3f5774c8a52d39379ea58478335edb" + integrity sha512-ksAwJDc1LEAu+Ekt3rEovSNcbIzsyGJZ1mqE8FokLy3Bz4sRrBVFxQ/Uzg8aj3dpeV9QQyNzj8D+ASWueBpdZw== + dependencies: + "@ampproject/remapping" "2.1.2" + "@angular-devkit/architect" "0.1400.0-next.3" + "@angular-devkit/build-webpack" "0.1400.0-next.3" + "@angular-devkit/core" "14.0.0-next.3" + "@babel/core" "7.17.5" + "@babel/generator" "7.17.3" + "@babel/helper-annotate-as-pure" "7.16.7" + "@babel/plugin-proposal-async-generator-functions" "7.16.8" + "@babel/plugin-transform-async-to-generator" "7.16.8" + "@babel/plugin-transform-runtime" "7.17.0" + "@babel/preset-env" "7.16.11" + "@babel/runtime" "7.17.2" + "@babel/template" "7.16.7" + "@discoveryjs/json-ext" "0.5.6" + "@ngtools/webpack" "14.0.0-next.3" + ansi-colors "4.1.1" + babel-loader "8.2.3" + babel-plugin-istanbul "6.1.1" + browserslist "^4.9.1" + cacache "15.3.0" + copy-webpack-plugin "10.2.4" + core-js "3.21.1" + critters "0.0.16" + css-loader "6.6.0" + esbuild-wasm "0.14.23" + glob "7.2.0" + https-proxy-agent "5.0.0" + inquirer "8.2.0" + jsonc-parser "3.0.0" + karma-source-map-support "1.4.0" + less "4.1.2" + less-loader "10.2.0" + license-webpack-plugin "4.0.2" + loader-utils "3.2.0" + mini-css-extract-plugin "2.5.3" + minimatch "5.0.0" + open "8.4.0" + ora "5.4.1" + parse5-html-rewriting-stream "6.0.1" + piscina "3.2.0" + postcss "8.4.6" + postcss-import "14.0.2" + postcss-loader "6.2.1" + postcss-preset-env "7.4.1" + regenerator-runtime "0.13.9" + resolve-url-loader "5.0.0" + rxjs "6.6.7" + sass "1.49.8" + sass-loader "12.6.0" + semver "7.3.5" + source-map-loader "3.0.1" + source-map-support "0.5.21" + stylus "0.56.0" + stylus-loader "6.2.0" + terser "5.11.0" + text-table "0.2.0" + tree-kill "1.2.2" + tslib "2.3.1" + webpack "5.69.1" + webpack-dev-middleware "5.3.1" + webpack-dev-server "4.7.4" + webpack-merge "5.8.0" + webpack-subresource-integrity "5.1.0" + optionalDependencies: + esbuild "0.14.23" -"@angular-devkit/build-optimizer@0.1300.0-next.7": - version "0.1300.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1300.0-next.7.tgz#f4ad41fbdb89fc6f29cb49cc7cf97ea2a05962ef" - integrity sha512-S1p9AxITIV0Op59TAe1DY/Y66bYaJXTdP9YippOfEbPA6CFw2KfabOGeDHWZf/X8jhb+6Uj2PGTiUd8C4StBrw== +"@angular-devkit/build-webpack@0.1400.0-next.2": + version "0.1400.0-next.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1400.0-next.2.tgz#2f22597f2cb26e912860218cb0112d8496e89dab" + integrity sha512-IsySfJoOouAcWB4F/hTWVoycYpYWAL6q87qqwLBPvoyheoADvqY6tG+fKHdGlG5PbN89j60LRTwORerwWWpmcw== dependencies: - source-map "0.7.3" - tslib "2.3.1" - typescript "4.4.3" + "@angular-devkit/architect" "0.1400.0-next.2" + rxjs "6.6.7" -"@angular-devkit/build-optimizer@^0.1202.0": - version "0.1202.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.1.tgz#96ce0d33d438f724866c1f171ac3886a95422dde" - integrity sha512-eMyPdfudKek4buv5b2lBRKrv8r2P/soPOsLVcyt2pgrA6V1I8UaJKEDmBwxQ//RwwrvMdD/OWfRxxJm7YvD8kQ== +"@angular-devkit/build-webpack@0.1400.0-next.3": + version "0.1400.0-next.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1400.0-next.3.tgz#0ee3729ae2f9adb6186752d0793b25a7996ec145" + integrity sha512-4h/LxjdrM1kt2rZJGlX6wdAryUlg3gpuXc7egQaohb9oEAp3wALCl1MwTAyurCFU5lP8CrGYuWJoiKUkYhUqFg== dependencies: - source-map "0.7.3" - tslib "2.3.0" - typescript "4.3.5" + "@angular-devkit/architect" "0.1400.0-next.3" + rxjs "6.6.7" -"@angular-devkit/build-webpack@0.1300.0-next.7": - version "0.1300.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1300.0-next.7.tgz#a28e616385dc67b8dcf4cb016ed9f2db3288ded0" - integrity sha512-SgXjfupXcMW0PbTdMvFXrFDNDloPSZ7LAwLadJob5D1Co6Rr7Nzo9uOER31lKA5jbS52ZkhylWINTSgk6YMTJg== +"@angular-devkit/core@14.0.0-next.2": + version "14.0.0-next.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-14.0.0-next.2.tgz#482b3784301fe53b60de97a91c742fe6c3dfb336" + integrity sha512-y0eaKwukSd/cYNvq+f/qQL/gqxQFsj1is2xWPMfkptb3s7bYjcah4hOV6IHtvmTv6F90bxM7rSmH9XcxWV4Mtg== dependencies: - "@angular-devkit/architect" "0.1300.0-next.7" + ajv "8.10.0" + ajv-formats "2.1.1" + fast-json-stable-stringify "2.1.0" + magic-string "0.25.7" rxjs "6.6.7" + source-map "0.7.3" -"@angular-devkit/core@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.0.0-next.7.tgz#0a76419dd62827db2fe0af955348fe3f8fba8270" - integrity sha512-UQhdiE4whWiYQTSIHvRvLTAZEG1VOAPNAX4wU9vh3l1VsF9a8ilRExeo9h8pEHaSj6fXpDinM3axhE7M9FA8DQ== +"@angular-devkit/core@14.0.0-next.3": + version "14.0.0-next.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-14.0.0-next.3.tgz#2e4fad0f7b09c5604c50ae88bd177f8c21d81341" + integrity sha512-WmvlBb9N3xL5dvrTBMIkIOcrjMPhCBOEuqmaX3BJRrWDfniKPSs5Op+myG04/3JuM2kMXTsibp1Fmo8V12tlcg== dependencies: - ajv "8.6.3" + ajv "8.10.0" ajv-formats "2.1.1" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/schematics@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.0.0-next.7.tgz#c53dd063946add9c2bcd66e886b7865fb9a11677" - integrity sha512-OGQdXJPnmISJFP91KV/y8I5PMtpuXu+26ZLYcVsjhMHY682wqRWUqWUVZRQbeY2K3ky96w3jqQmQKAW2iuRTTA== +"@angular-devkit/schematics@14.0.0-next.3": + version "14.0.0-next.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-14.0.0-next.3.tgz#cc9bebf4b005f170bb7051e5095cba40f6dfd58d" + integrity sha512-C3Rke+TKlPvNOQnRyB85/3Fnct6yZ0DawDZjPv6DXzgfTHuu5aDlZXJThdlxzJm0dcJ3lZ+jGc5GBsrJS7cugQ== dependencies: - "@angular-devkit/core" "13.0.0-next.7" + "@angular-devkit/core" "14.0.0-next.3" jsonc-parser "3.0.0" magic-string "0.25.7" ora "5.4.1" rxjs "6.6.7" -"@angular/animations@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-13.0.0-next.15.tgz#28a716223439e136b03f1944d0c407fcf1847b4a" - integrity sha512-MZUlSyMSdW5eqpvDy5nGWg3hUQnoQwbYIqiDigFLyjaWcaQ0mkXA1M4Kidmo6D/aT0YInRBugSnGUS4RJ4la+w== +"@angular/animations@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-14.0.0-next.4.tgz#0f7724a3e083491eceb46f2a7eccd471bed737a1" + integrity sha512-/mvugM6oDBOKFyZbB4eCL8kabxwib3p4O6m5kP9lCjisEfH205+bqFb8rVlXsaOM5ZMRyi6oZ0J8wk3RS3xTGg== dependencies: tslib "^2.3.0" -"@angular/bazel@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/bazel/-/bazel-13.0.0-next.15.tgz#fe35f7728c71687f52e51f2d6d258bc1c8db133b" - integrity sha512-hR1X42UmM2L3FSaj0cIlLSDopkqgMvw7nAREeDSaoMr2qk3BqfvpUx4P71KXMSKSJ1h+moKyPas07mRoLBGGyw== +"@angular/bazel@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/bazel/-/bazel-14.0.0-next.4.tgz#32def8c60b49551d6bcfcda6ecb49d6cce1d9380" + integrity sha512-9B99H05wqZqavbDviZVvmBtRE7UYX/mJlVbBdreyo2KBR4fALb0nGh2KI7y0aRArfY6kFOJuSAalRLpfrrR7dw== dependencies: - "@microsoft/api-extractor" "7.18.11" - shelljs "0.8.4" + "@microsoft/api-extractor" "7.19.4" + shelljs "^0.8.5" tsickle "^0.38.0" tslib "^2.3.0" -"@angular/benchpress@0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@angular/benchpress/-/benchpress-0.2.1.tgz#f8b58d9acfda0d29959b87dcb8082b1c33735db5" - integrity sha512-ojHCP96ZunHBZpt08USSEdLJsuXnEEdJtfzl+9oTdMXbooKkzSVO7N6bVdjefbGRNAleAuSAo3gVrdPqumLznA== +"@angular/benchpress@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@angular/benchpress/-/benchpress-0.3.0.tgz#0adf14156ff31dfee3ef607c0088e9ee6fb08777" + integrity sha512-ApxoY5lTj1S0QFLdq5ZdTfdkIds1m3tma9EJOZpNVHRU9eCj2D/5+VFb5tlWsv9NHQ2S0XXkJjauFOAdfzT8uw== dependencies: - "@angular/core" "^10.0.0-0 || ^11.0.0" + "@angular/core" "^13.0.0 || ^14.0.0-0" reflect-metadata "^0.1.13" -"@angular/cli@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-13.0.0-next.7.tgz#01cd3d5c8ef2bf281a69b8b6820d5a08f0d55b63" - integrity sha512-pmAwmJNz2XvTCKBswwdThp2oasWbPHdGEFJnJEoOlE55fHwba155SSzKbWIOTavKmkeVLc5Z24MqUffaSa7LJA== +"@angular/cli@14.0.0-next.3": + version "14.0.0-next.3" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-14.0.0-next.3.tgz#958e70fd38470fa11eaf95cc6cfec00765840af4" + integrity sha512-TcL0OEjQ2OYu2+IeIIgO8m7rfBHTxLOQkvuJWxd5dzw/T9STunGVk3RmrfBYMSuz4F14iXvDZoKhWj+LxNIA4w== dependencies: - "@angular-devkit/architect" "0.1300.0-next.7" - "@angular-devkit/core" "13.0.0-next.7" - "@angular-devkit/schematics" "13.0.0-next.7" - "@schematics/angular" "13.0.0-next.7" + "@angular-devkit/architect" "0.1400.0-next.3" + "@angular-devkit/core" "14.0.0-next.3" + "@angular-devkit/schematics" "14.0.0-next.3" + "@schematics/angular" "14.0.0-next.3" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" - debug "4.3.2" + debug "4.3.3" ini "2.0.0" - inquirer "8.1.5" + inquirer "8.2.0" jsonc-parser "3.0.0" - npm-package-arg "8.1.5" - npm-pick-manifest "6.1.1" - open "8.2.1" + npm-package-arg "9.0.0" + npm-pick-manifest "7.0.0" + open "8.4.0" ora "5.4.1" - pacote "11.3.5" - resolve "1.20.0" + pacote "13.0.2" + resolve "1.22.0" semver "7.3.5" symbol-observable "4.0.0" uuid "8.3.2" -"@angular/common@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-13.0.0-next.15.tgz#9d55f51fbda235bea9510ca30a2f6389b22a19c2" - integrity sha512-T0LPfZ4kKbcoT0QVluyT1Jo7J5ZK3vVSKSYMEHxqE21pFqlI5MMGdqn9X+SDlIEvEikARXG4w10Q3uJuAaaS5Q== +"@angular/common@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-14.0.0-next.4.tgz#9c8d5aa4090cb203e63b2b09091eba5e07f52bbe" + integrity sha512-dGPe0OebisPt2IppTX1J70eD2ioUr4ZYS6Mc3UXKaCtnXBYFwL9hwfeaLdWIkoK79h0NRZHYCCF48OyZer8Qeg== dependencies: tslib "^2.3.0" -"@angular/compiler-cli@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-13.0.0-next.15.tgz#4f25b6d3feb1dbb0a6dd0f7d5445f24d20b49709" - integrity sha512-15w0fFrqFfHNbQ7nrzTB4rrObsIpmsbGAlrKoFPdWN2LbAYUEauUhRIPi1Et+4A1eh9beIUHpofwb+VRrUhuLw== +"@angular/compiler-cli@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-14.0.0-next.4.tgz#4cf62252dd79efebcad82f557729555715c69bdf" + integrity sha512-VYR7sTrP1eodiZCibnZc/emd2WM8gRQXvByzrTGs8mQbQK3xDDWP4hyK0XrHJjoboEWcMsHQcHWXgbxqeSAJzQ== dependencies: "@babel/core" "^7.8.6" - canonical-path "1.0.0" chokidar "^3.0.0" convert-source-map "^1.5.1" dependency-graph "^0.11.0" @@ -236,10 +315,10 @@ tslib "^2.3.0" yargs "^17.2.1" -"@angular/compiler@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-13.0.0-next.15.tgz#bd9eaf5edc017112cf0c43de584f4167c6a3008f" - integrity sha512-R2rKkSvONDuSW7D7WsN4nBH1fmZ9YagSiAb4F7cch5408DOMT6OlEgJDWAp69eWXiVDagd8R3e6K8j8StoZ6PQ== +"@angular/compiler@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-14.0.0-next.4.tgz#295cc337dedc95cb8f945e2960aa3bfa230400b7" + integrity sha512-+z5EWKoEIgmq/VoBJ7iEmDu/GrfiER+bL0cgpdrIe/HvZBcCs76b+lMPBuZRvHB0/ckpcTfVpyd/qutYaDyyHA== dependencies: tslib "^2.3.0" @@ -248,10 +327,10 @@ resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.0.0.tgz#87e0bef4c369b6cadae07e3a4295778fc93799d5" integrity sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ== -"@angular/core@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-13.0.0-next.15.tgz#0d6083c7154bedf9a825e6270f41b83bacb325b3" - integrity sha512-lBjH+dUWCj+Ki4najMRF4yoXq0p6MF+4hEQEwimlvUo3BFRMRTl9CMv82oSBeSYJkZlov1w5zhaA1PQO6zjyKQ== +"@angular/core@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-14.0.0-next.4.tgz#05b9aada82dbdfd6b8b97d6720d552bf888cb483" + integrity sha512-bHNvmiS8xW/V0ZSM3/fYlrMnTb4xhT3rr4FsBG2Vt0rY4LHw+vfH4cBQv2e2n/OoRctBJaTiwCF5nU5vCsIDcw== dependencies: tslib "^2.3.0" @@ -260,29 +339,32 @@ resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.0.0.tgz#227dc53e1ac81824f998c6e76000b7efc522641e" integrity sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w== -"@angular/core@^10.0.0-0 || ^11.0.0": - version "11.2.14" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-11.2.14.tgz#3ebe298c79d5413dc670d56b7f503bd4d788d4a8" - integrity sha512-vpR4XqBGitk1Faph37CSpemwIYTmJ3pdIVNoHKP6jLonpWu+0azkchf0f7oD8/2ivj2F81opcIw0tcsy/D/5Vg== +"@angular/core@^13.0.0 || ^14.0.0-0": + version "13.2.3" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-13.2.3.tgz#bc1127fe2d53f0f01f58a0c26728efaa5a953145" + integrity sha512-81QtWR+UQgCo5xJwExzKaRUd9aXJoOGbWfh3MZSUkiv+PTMXwmfU3lZxpz9S/y2uwvaVqZdW5MN/RzpKv6tHxA== dependencies: - tslib "^2.0.0" + tslib "^2.3.0" -"@angular/dev-infra-private@https://github.com/angular/dev-infra-private-builds.git#26d2e72c0311590097861c87319ba8acbd898f63": - version "0.0.0" - resolved "https://github.com/angular/dev-infra-private-builds.git#26d2e72c0311590097861c87319ba8acbd898f63" +"@angular/dev-infra-private@https://github.com/angular/dev-infra-private-builds.git#3dda1f7073b1fda030268f83f436370fe349b23f": + version "0.0.0-0bd2bee03a032325cada4c75f0a1388bb2661fb8" + resolved "https://github.com/angular/dev-infra-private-builds.git#3dda1f7073b1fda030268f83f436370fe349b23f" dependencies: "@actions/core" "^1.4.0" "@actions/github" "^5.0.0" - "@angular-devkit/build-optimizer" "^0.1202.0" - "@angular/benchpress" "0.2.1" + "@angular-devkit/build-angular" "14.0.0-next.2" + "@angular/benchpress" "0.3.0" + "@babel/core" "^7.16.0" "@bazel/bazelisk" "^1.10.1" "@bazel/buildifier" "^4.0.1" - "@bazel/esbuild" "4.3.0" - "@bazel/jasmine" "4.3.0" - "@bazel/protractor" "4.3.0" - "@bazel/runfiles" "4.3.0" - "@bazel/typescript" "4.3.0" - "@microsoft/api-extractor" "7.18.14" + "@bazel/concatjs" "4.6.0" + "@bazel/esbuild" "4.6.0" + "@bazel/jasmine" "4.6.0" + "@bazel/protractor" "4.6.0" + "@bazel/runfiles" "4.6.0" + "@bazel/terser" "4.6.0" + "@bazel/typescript" "4.6.0" + "@microsoft/api-extractor" "7.19.4" "@octokit/auth-app" "^3.6.0" "@octokit/core" "^3.5.1" "@octokit/graphql" "^4.8.0" @@ -291,9 +373,11 @@ "@octokit/request-error" "^2.1.0" "@octokit/rest" "^18.7.0" "@octokit/types" "^6.16.6" - "@rollup/plugin-commonjs" "^21.0.0" - "@rollup/plugin-node-resolve" "^13.0.4" + "@types/browser-sync" "^2.26.3" + "@types/send" "^0.17.1" "@types/tmp" "^0.2.1" + "@yarnpkg/lockfile" "^1.1.0" + browser-sync "^2.27.7" chalk "^4.1.0" clang-format "^1.4.0" cli-progress "^3.7.0" @@ -304,69 +388,70 @@ husky "^7.0.1" inquirer "^8.0.0" jasmine "^3.7.0" - minimatch "^3.0.4" + minimatch "^5.0.0" multimatch "^5.0.0" nock "^13.0.3" node-fetch "^2.6.1" prettier "^2.3.2" protractor "^7.0.0" - rollup "2.58.0" - rollup-plugin-sourcemaps "^0.6.3" - selenium-webdriver "3.5.0" + selenium-webdriver "4.1.1" semver "^7.3.5" + send "^0.17.2" tmp "^0.2.1" + "true-case-path" "^2.2.1" ts-node "^10.2.1" tslib "^2.3.0" tslint "^6.1.3" typed-graphqlify "^3.1.1" - typescript "~4.4.0" + typescript "~4.5.0" uuid "^8.3.2" + which "^2.0.2" yaml "^1.10.0" yargs "^17.0.0" -"@angular/forms@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-13.0.0-next.15.tgz#2959885bfe32b146b9065ae155fd1b52c73e51bf" - integrity sha512-SvO818CJnxxiNSEGtWyJ+kpEtQoWtyIWXWHNkXUmjob6glGQatSDUlrkjx8oHNkqHnYyy7FMQXwRpzk/PWjBKw== +"@angular/forms@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-14.0.0-next.4.tgz#329156b6f41e46c0bcba510a576d380bde0d5282" + integrity sha512-JlTwwlZwtdVZ5VBRy0s6UK5ysPYfUBdtIr5fnut5mL3dxLDUi8tk/689glqTcuFD1HXIou+pRFBBeHtFz3TRHA== dependencies: tslib "^2.3.0" -"@angular/localize@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-13.0.0-next.15.tgz#28cadbddaf09986441d8bda091e23486d6fa6633" - integrity sha512-FABnmk1QQ3oEdIeTF/pXaNQ6sWMo99imTBigIV8o6xrHymAy/qKMFSlbDDYFbYJTcqUFlVwt2CShHNfjXJkv5Q== +"@angular/localize@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-14.0.0-next.4.tgz#faa553536b2913d441a3d2de583ee498c4e09c61" + integrity sha512-cUSFClDhEExVNln7OI06jtgpn9hnRN7QSxmrwL7zKXXtq8Wq9xbp6DhAX0d5L/M4/WvcvlLvF29RKAiTzS4F0w== dependencies: "@babel/core" "7.8.6" glob "7.2.0" yargs "^17.2.1" -"@angular/platform-browser-dynamic@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.0.0-next.15.tgz#f65308bb815a777134b5dcc89c2bb3ad09b3e563" - integrity sha512-RanfSIIQBDy4QIK4hlCdlQUPch4BGW5J7uf1sgCUdOIQFkrkteEQ6wak1Bz6DL3ZXS5rz6XDepzI7aPuKkycMQ== +"@angular/platform-browser-dynamic@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.0-next.4.tgz#00fd1a09bfab0133a305954c8e6d8271d53f98b9" + integrity sha512-+4WJ0qxop/ibWS2ec4qPAP88kkUi5QbfX7S4dG896UBcGUBXsAeSvzdxbI1aTKSfsegUVBti8RLDCPx/Sz2UTg== dependencies: tslib "^2.3.0" -"@angular/platform-browser@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-13.0.0-next.15.tgz#188c4c10f89f327fa4c759c4761246849dc5c1ea" - integrity sha512-eVReO/qM7VpOW6mT3OB7LvVK0Fyd4yRmab2IOKYbrxXSkw4gzMmCrBbZqmE5nmR0mWEFP+swejrBGcp6A9duVg== +"@angular/platform-browser@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-14.0.0-next.4.tgz#cc9b4f5790d8e0b3040234d3f86350c830d1b814" + integrity sha512-6xxdzfWBIKhJvXyb1MCLgyvViT8vL82Kzd2ecL6UVhHXYav+w1d1TEYNm+Teoya+bcYuVfTPRD05JCGA+k8j8A== dependencies: tslib "^2.3.0" -"@angular/platform-server@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-13.0.0-next.15.tgz#a734183f48856cb19c6170bf4519912d3c2c1085" - integrity sha512-5hObrIfGGVLKBENTcrhMzb7cAXsljViElvTrD6PVMeWJV15yMOUtYUVBNUF3s+T8An/hxEWFTNay2P+E+mFRAA== +"@angular/platform-server@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-14.0.0-next.4.tgz#250d91e70becc2d11a102038c3151299f153111d" + integrity sha512-+wBAwros1brykrxrHJd9zHKPOkG5EeYiO1xoJGDQ4Ca6fqXSHoqHj0/Npa4USHF8/ifX1C0aYbjkJUbi1S19fQ== dependencies: domino "^2.1.2" tslib "^2.3.0" xhr2 "^0.2.0" -"@angular/router@13.0.0-next.15": - version "13.0.0-next.15" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-13.0.0-next.15.tgz#056f4adbed9ca6ccb98d19660421eadb5f6c22a4" - integrity sha512-sYcSKnVv+/Sh9IivyUYmbPCACFVsoBLv/ZxhaRWR5dcjCunTsO65fhxtP3W75AOTkteyzVAmze3wXh3wM4TbrA== +"@angular/router@14.0.0-next.4": + version "14.0.0-next.4" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-14.0.0-next.4.tgz#f7b0955fdeedb2aff07f20fd02ad79540394958d" + integrity sha512-2jc7GfCZzqAuN/6n0jHZhZz4CmP9BUXxPTBArW4j2QXW6uEQ9bTMRI/hAcBkRR/4ZJdBVgTwtcybDionMLi/aQ== dependencies: tslib "^2.3.0" @@ -385,57 +470,52 @@ resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06" integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg== -"@axe-core/webdriverjs@^4.1.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@axe-core/webdriverjs/-/webdriverjs-4.2.2.tgz#430a3caf365e4dfa4314fe4ea644543fd5f868f3" - integrity sha512-h3VrFXAHAIinoHQU/u9bmLUET/gAfab3y7VpUt6HOHe4NKsk9wi+6zoM3L8yCZSWriItmK3nuVrn6byeC+/Pcw== - dependencies: - axe-core "^4.2.3" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/code-frame@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" - integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== - -"@babel/compat-data@^7.14.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" - integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== - -"@babel/core@7.15.5": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" +"@axe-core/webdriverjs@^4.3.2": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@axe-core/webdriverjs/-/webdriverjs-4.4.0.tgz#5a36916af60760f57e8c5739c190d12ce61b432c" + integrity sha512-bds2rUNl3mkUBvX+WoLQl7Vm7ctGAS/8Mz/2ADYAUD7Kf7go5ZijyqUynBvAQTtDld1DVQ3HIlo2VTPrNp8pRw== + dependencies: + axe-core "^4.4.1" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" + integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== + +"@babel/core@7.17.5", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.16.12", "@babel/core@^7.8.6": + version "7.17.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" + integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.17.2" + "@babel/parser" "^7.17.3" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@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" semver "^6.3.0" - source-map "^0.5.0" "@babel/core@7.8.6": version "7.8.6" @@ -458,134 +538,65 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@>=7.9.0", "@babel/core@^7.13.10", "@babel/core@^7.8.6": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" - integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.8" - "@babel/helpers" "^7.14.8" - "@babel/parser" "^7.14.8" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/core@^7.7.5": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.8.tgz#195b9f2bffe995d2c6c159e72fe525b4114e8c10" - integrity sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og== - dependencies: - "@babel/code-frame" "^7.15.8" - "@babel/generator" "^7.15.8" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.8" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.8" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@7.15.4", "@babel/generator@^7.15.4", "@babel/generator@^7.8.6": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== - dependencies: - "@babel/types" "^7.15.4" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.10.5", "@babel/generator@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" - integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== - dependencies: - "@babel/types" "^7.14.8" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1" - integrity sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g== +"@babel/generator@7.17.3", "@babel/generator@^7.17.3", "@babel/generator@^7.8.6": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" + integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== dependencies: - "@babel/types" "^7.15.6" + "@babel/types" "^7.17.0" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@7.15.4", "@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" - integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz#21ad815f609b84ee0e3058676c33cf6d1670525f" - integrity sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q== +"@babel/helper-annotate-as-pure@7.16.7", "@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" - integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" + integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" + "@babel/compat-data" "^7.16.4" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" + integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== +"@babel/helper-create-regexp-features-plugin@^7.16.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -596,415 +607,310 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-explode-assignable-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c" - integrity sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-function-name@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== + "@babel/types" "^7.16.7" + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.7" -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== dependencies: - "@babel/types" "^7.14.5" + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-get-function-arity@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" - integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== dependencies: - "@babel/types" "^7.15.4" + "@babel/types" "^7.16.7" -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-hoist-variables@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" - integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-member-expression-to-functions@^7.14.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" - integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.14.5", "@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" - integrity sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg== - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - -"@babel/helper-module-transforms@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" - integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.8" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.8" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f" - integrity sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-wrap-function" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" - integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== - dependencies: - "@babel/types" "^7.14.8" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" - integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== - -"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-wrap-function@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7" - integrity sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw== - dependencies: - "@babel/helper-function-name" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helpers@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" - integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== - dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.8" - "@babel/types" "^7.14.8" - -"@babel/helpers@^7.15.4", "@babel/helpers@^7.8.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" + integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" + integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== + +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" + integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.17.2", "@babel/helpers@^7.8.4": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" + integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.10.5", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" - integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== - -"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.8.6": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" - integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== - -"@babel/parser@^7.15.5", "@babel/parser@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" - integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.3", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.8.6": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" + integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== -"@babel/parser@~7.10.3": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" - integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e" - integrity sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" + integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-async-generator-functions@7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz#f82aabe96c135d2ceaa917feb9f5fca31635277e" - integrity sha512-2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" + integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" -"@babel/plugin-proposal-async-generator-functions@^7.15.4": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz#a3100f785fab4357987c4223ab1b02b599048403" - integrity sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA== +"@babel/plugin-proposal-async-generator-functions@7.16.8", "@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.15.4" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== +"@babel/plugin-proposal-class-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" + integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-class-static-block@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz#3e7ca6128453c089e8b477a99f970c63fc1cb8d7" - integrity sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA== +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" + integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" + integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" + integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" + integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" + integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== +"@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" + integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" + "@babel/plugin-transform-parameters" "^7.16.7" -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +"@babel/plugin-proposal-optional-chaining@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" + integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +"@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.16.10" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-proposal-private-property-in-object@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz#55c5e3b4d0261fd44fe637e3f624cfb0f484e3e5" - integrity sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA== +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" + integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-create-class-features-plugin" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" + integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -1104,291 +1010,294 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +"@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" + integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-async-to-generator@7.14.5", "@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +"@babel/plugin-transform-async-to-generator@7.16.8", "@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.15.3": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== +"@babel/plugin-transform-block-scoping@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" + integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-classes@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== +"@babel/plugin-transform-classes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" + integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +"@babel/plugin-transform-computed-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" + integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-destructuring@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== +"@babel/plugin-transform-destructuring@^7.16.7": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" + integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" + integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== +"@babel/plugin-transform-for-of@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" + integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" + integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" + integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== +"@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" + integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== dependencies: - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz#b42890c7349a78c827719f1d2d0cd38c7d268132" - integrity sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw== +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" + integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== dependencies: - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" + integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz#c68f5c5d12d2ebaba3762e57c2c4f6347a46e7b2" - integrity sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.16.7" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-new-target@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" + integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== +"@babel/plugin-transform-parameters@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" + integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" + integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" + integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz#d3aa650d11678ca76ce294071fda53d7804183b3" - integrity sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw== +"@babel/plugin-transform-runtime@7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" + integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-spread@^7.14.6": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz#79d5aa27f68d700449b2da07691dfa32d2f6d468" - integrity sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/preset-env@7.15.6": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.15.6.tgz#0f3898db9d63d320f21b17380d8462779de57659" - integrity sha512-L+6jcGn7EWu7zqaO2uoTDjjMBW+88FXzV8KvrBl2z6MtRNxlsmUNRlZPaNNPUTgqhyC5DHNFk/2Jmra+ublZWw== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.15.4" - "@babel/plugin-proposal-async-generator-functions" "^7.15.4" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.15.4" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.15.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.15.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" + integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" + integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" + integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== + dependencies: + "@babel/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -1403,50 +1312,50 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.15.3" - "@babel/plugin-transform-classes" "^7.15.4" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.7" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.15.4" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.15.4" - "@babel/plugin-transform-modules-systemjs" "^7.15.4" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.9" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.15.4" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.6" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.15.6" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.16.0" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.8" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.20.2" semver "^6.3.0" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1454,188 +1363,175 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@7.15.4", "@babel/runtime@^7.8.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== +"@babel/runtime@7.17.2", "@babel/runtime@^7.8.4": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@7.15.4", "@babel/template@^7.15.4", "@babel/template@^7.8.6": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/template@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" - integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.8" - "@babel/types" "^7.14.8" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.15.4", "@babel/traverse@^7.8.6": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" +"@babel/template@7.16.7", "@babel/template@^7.16.7", "@babel/template@^7.8.6": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.10.3", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.8.6": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@~7.10.3": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" - integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.5" - "@babel/types" "^7.10.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@^7.0.0", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.4.4": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== +"@babel/types@^7.0.0", "@babel/types@^7.10.3", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.8.6": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== dependencies: - "@babel/helper-validator-identifier" "^7.14.9" + "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@babel/types@^7.10.5", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.8.6": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" - integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== - dependencies: - "@babel/helper-validator-identifier" "^7.14.8" - to-fast-properties "^2.0.0" - -"@babel/types@~7.10.3": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" - integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@bazel/bazelisk@1.10.1", "@bazel/bazelisk@^1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.10.1.tgz#46236a43ad58e310c55247f866da0dc6083c3d8b" - integrity sha512-IHszNzBO2UrUy6YtsSAsZtnU6I6qpzXGkWdEvGoMxLgJnDsEnsIYniDCUjvjU1KAP+A03eepmCHlyFcRHMSxRA== +"@bazel/bazelisk@1.11.0", "@bazel/bazelisk@^1.10.1": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.11.0.tgz#f98d8438b4c14e3328126618b96775d271caa5f8" + integrity sha512-lxiQzVqSGDG0PIDQGJdVDjp7T+50p5NnM4EnRJa76mkZp6u5ul19GJNKhPKi81TZQALZEZDxAgxVqQKkWTUOxA== -"@bazel/buildifier@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-4.2.1.tgz#2ea4c0d5015a1f36174a139e8953c4eec509564e" - integrity sha512-eMBw//leW3xIbDrylsFKC7ejOMKAja2Z3BmQ5Zan/h7s/C+F2cMz3UFJhSVZRl4AaN3bXVvTNMz385abaTK/tA== +"@bazel/buildifier@4.2.5", "@bazel/buildifier@^4.0.1": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-4.2.5.tgz#de51339613e2ca1f39dda6ade8b0062e6575b3e1" + integrity sha512-lTg3YEuCO1e7dCc/fLUWu5R7KOHmpPDSkoSeT+rPrszFfxqrWGJTSxZbtk/4AJZnuC3p704po8RUJinPtmxTmQ== -"@bazel/buildifier@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@bazel/buildifier/-/buildifier-4.0.1.tgz#52cfbad5cbb86e9183a29dde2370cd465730ea0d" - integrity sha512-BTmtvJbeeEVrqRApI1gr5hvPgYcHLpdGJ5EXNXEWO692ztMPSj5fB/dH0xUlaW45jn6LimYx8ymqTMhj3538og== +"@bazel/concatjs@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/concatjs/-/concatjs-4.4.5.tgz#105a156f412da5a43b37724b50d29ee5ee4ff678" + integrity sha512-pmoRJFaQZn70Q/c4uIPYxCg7ovoju2P6yut9Wl5SfnhBkAJofb1z7YRe6ccfV25EK0PdSjjRP71kuBnCMaH5yA== + dependencies: + protobufjs "6.8.8" + source-map-support "0.5.9" + tsutils "3.21.0" -"@bazel/concatjs@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/concatjs/-/concatjs-4.3.0.tgz#cf5be6aec1c6902e10051bba860cd9179048fe71" - integrity sha512-rhPMEMebdY/AVlbohaV2jJvVE3S3hNlJFZ4Be2rIgaBY7+l2u2FR24aYbFwwtzhpBS2wgqc9SfQPPXSDd0NWag== +"@bazel/concatjs@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@bazel/concatjs/-/concatjs-4.6.0.tgz#7ed6ea8e1065057544fba351ca22bc2143d8a3a9" + integrity sha512-KtPpQxN/JcRHM8Miof8kDpgHczPycDlOl6mggKdbhMppBh64FKIIyNAKnngKswaFU+2WJiJs17YwDEJBB+Yqrg== dependencies: protobufjs "6.8.8" source-map-support "0.5.9" tsutils "3.21.0" -"@bazel/esbuild@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/esbuild/-/esbuild-4.3.0.tgz#a511d2090c4fccf865b7f6eafc95673f0486450b" - integrity sha512-AUyyCYO17Uk/vaG9VSyDgLbQuW0ZY2ciDDp9frgHWPv55SdZolzAK0lA36QVJuz6/7I4EQBvox6KEpMPBR2f/A== +"@bazel/esbuild@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/esbuild/-/esbuild-4.4.5.tgz#17331868ac42f2d2c03afc776847dea2d0e650d4" + integrity sha512-CImfEr+1ecouGFVGgfCV6Zvx0I3Lw0abxkI8R3BmMleyQcLj8FejCGSFhxIJLKLuxGh/OJXjxoE+PAMTON4O9Q== + +"@bazel/esbuild@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@bazel/esbuild/-/esbuild-4.6.0.tgz#68bf9506c104ed4076a0227c4066e3f5df847ee3" + integrity sha512-pu4wSBNokYKLisHlXdHxu3UX19vFL4wNQJ45cyekfiWF2szWjWR8x/ZP15a49ChmvP6aelwrURahuhhgzfluOQ== "@bazel/ibazel@0.15.10": version "0.15.10" resolved "https://registry.yarnpkg.com/@bazel/ibazel/-/ibazel-0.15.10.tgz#cf0cff1aec6d8e7bb23e1fc618d09fbd39b7a13f" integrity sha512-0v+OwCQ6fsGFa50r6MXWbUkSGuWOoZ22K4pMSdtWiL5LKFIE4kfmMmtQS+M7/ICNwk2EIYob+NRreyi/DGUz5A== -"@bazel/jasmine@4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-4.2.0.tgz#1150e6fd8cbaf0805253bcd7a38562b11f728f56" - integrity sha512-XpGt96Ydl2tMlqLY3xv3oHUTKUL+mSoFQG+u9hqsqqHL8MY2LJjp3zodo9KtsM8zfu8/MYrUyYh8i9kjsk43sw== +"@bazel/jasmine@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-4.4.5.tgz#e9540f0bffe286f23ce47ab59e6e015cc14c21af" + integrity sha512-BDWKtDmfux89TtWOhSMSuA01cdaNmdU9/8zrMNQopkTGDBmaDyPYvaxyhBAvQQLMiloOUBcS2eMO/fcSKRyg/A== dependencies: c8 "~7.5.0" jasmine-reporters "~2.4.0" -"@bazel/jasmine@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-4.3.0.tgz#d2dd29deb56cffae2b3bd7be706fb1b3dd532fc7" - integrity sha512-lROo6iAdyqmqVNe8M5or6Vkzcn5wyBSI4MJBqqLJVjejhlhU6Mg27j1xC+VJPlnQkiEyeHLV5WNndp50ROivSw== +"@bazel/jasmine@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-4.6.0.tgz#017f5efe329200cc1dd1c599294e14f3faace05e" + integrity sha512-GE6duEIyNm7PUnG3ZU8SmFgfsmR7z5BHFPX4mWlNEb2KtvtIwYo77dacoc6t20AZgV6vU6dT4G0oK8AwJdj4uw== dependencies: c8 "~7.5.0" - jasmine-reporters "~2.4.0" + jasmine-reporters "~2.5.0" -"@bazel/protractor@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-4.3.0.tgz#8dd36e1e4ed3b6512951f48fa3dad89867853cc3" - integrity sha512-Ncd9Se9NYn2UUHSPQv6uUZnzWBQjXaLGWj0MFxqXC3fVGyyvPNSxlOzloiIWFhy/NYz9r49haeHaM5pd1tamtQ== +"@bazel/protractor@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-4.4.5.tgz#b406e85c3d59015e0895c00700396ddd0d58d755" + integrity sha512-pW4hwkpLpBYHGFp7CO+vHfUXkOoFJBh11+2zFUjEXPaCYAol78Zt2SUzWRYD14CVEDWhxJlI6kCRg7IxW7/S2w== -"@bazel/rollup@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-4.3.0.tgz#fbf52eba47d2c7458415d378e59329aa99983723" - integrity sha512-eY9b5NQSk/qSELrA30Ye9ICl2uxuppqLssypF/m0GqRrBhu0CEJHyaAuU4pek0wPT8BAVK70oEAhL22KYl7puA== +"@bazel/protractor@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@bazel/protractor/-/protractor-4.6.0.tgz#03f52ef8426b8fda5a23d42cda51a7c866d26d31" + integrity sha512-bBDbg3cP07PNDIt7QhG9aS3NlImbRnV7+9Udnbs9jYBmUHCjnvUkgZZAoedeKl2+ae/Xo0ca/isiRP/rbnoOLw== + +"@bazel/rollup@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-4.4.5.tgz#3a2aded5fcc130624e5242a0574424033e90ddb4" + integrity sha512-zt3HZXq4Zfgnxr/ASirzv2YKCcQhvKvbAXC9NKvzzo352Uw3CfdfR9V9FuN8OsiBYYAsONSBKvmWMq0LeDC8ZQ== dependencies: - "@bazel/worker" "4.3.0" + "@bazel/worker" "4.4.5" -"@bazel/runfiles@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/runfiles/-/runfiles-4.3.0.tgz#068c4f2816cedff131801c6865c9e216c882931b" - integrity sha512-T1BURxP6OPF4Q1LZElhpOJR0VM1J9Tfk4L8se0bhZfBH72MtYDfI7MmhS/wh74/XSVK7SK7YerEkolcyZajRKw== +"@bazel/runfiles@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/runfiles/-/runfiles-4.4.5.tgz#bbf112e882ea37d88f02009bb7cb661ac8908742" + integrity sha512-tFua24Ra/AI/K2di3sD03gzqG1uf9ziL+gSyc9dwjx9De1z4Fgafnqul9zXf1gqjEdWdJhZYXbntYmyj76BZNw== -"@bazel/terser@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-4.3.0.tgz#3824546f37e21e3681b78000aa1b54cc9b6abd2a" - integrity sha512-62XbM8dLY2/NYpwIy+Y8m7mI0+KT+7byaZclu47MBYCZN0UNnegCxGLMxUctjeOtxXVntOsQXEw0HrFYNOtw4A== +"@bazel/runfiles@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@bazel/runfiles/-/runfiles-4.6.0.tgz#e6b7620b61e65d2f85ed823bda1529838a54af0b" + integrity sha512-Zl3Y+BrsrYaEKvRQCmhqSAdVcyjzBrdCxgpzi5/lj5X9H9RxXrO/oOlrQf6yJeWYRKmA8voyF7haES0Ao50uKQ== -"@bazel/typescript@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-4.3.0.tgz#c4131ba7980f8e72885f5ec19c265ad9431e1a71" - integrity sha512-ddPw0Xetl+a5UeZVHzpWsyMrUcAyhpGXknmfymx8vrWL+Y3yyquC7ZcYoYbkoCwIMBz7xhadm8NKIUYCrsEgaA== +"@bazel/terser@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-4.4.5.tgz#510cc63c365cbf83ef708d83b4a2c3f044911488" + integrity sha512-kZowInZEsmjQq9NibRqsppEtqzLZxbclDUxwqSO6mHSPuIxThVDLgKB/WuiRJg8ludi+ToCg3cfwbQXO4bLVXQ== + +"@bazel/terser@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-4.6.0.tgz#03d41d6e7f79645154ef30eee15db00ea2c212ba" + integrity sha512-kgmegDNLgh8xADYDe7K06STeQ7utJL5eExy0gx+3f9JnPisWIgT9seXh4+ACc4CjTh1gQiQAHOYVCzXo0gp0fQ== + +"@bazel/typescript@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-4.4.5.tgz#0b323a292910dbfdc5f90312377e9282c73035f0" + integrity sha512-Cgq7ZXGkFPAAOn2t9C9JWIDkSjDKB7AkwNgXEwrPwpchKgdoCcD1uMieiErfwBB0FWgJF1xvwwLGOnWA6E/G0A== dependencies: - "@bazel/worker" "4.3.0" + "@bazel/worker" "4.4.5" protobufjs "6.8.8" semver "5.6.0" source-map-support "0.5.9" tsutils "3.21.0" -"@bazel/worker@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-4.3.0.tgz#5ba7da1efa772f5dade5dfd4b662dcaa60ed7c1c" - integrity sha512-K34/g/4aUAX8TOQ1MgBaZ+YeZkiIlwETwA50gheCAsasz0SWjvgcpIbwNkaL9fmXOVhDj2o55J20khsl5ItBIw== +"@bazel/typescript@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-4.6.0.tgz#cd1fe24214581af72622dbc9e025c9af21e2ebda" + integrity sha512-TLysIpJuMxZXAjZEFHkmLg71Ec3RRQTpbZsUtobBnIG5rRwbb2fgdFVfBx3Wvjg4oR+gj5Yj8yCRa4Ad+UhoYg== + dependencies: + "@bazel/worker" "4.6.0" + protobufjs "6.8.8" + semver "5.6.0" + source-map-support "0.5.9" + tsutils "3.21.0" + +"@bazel/worker@4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-4.4.5.tgz#1f9292c31615dff8a7297960f7f520bf9febf428" + integrity sha512-PoBMiN0SGSb1Qn/SabiM9HWC5nqwyWn0yTJgz6Vq2GMHo1UG7olVHuIfDb2ScFx9jY+mJ3wSyxQ4htlTGldedA== + dependencies: + google-protobuf "^3.6.1" + +"@bazel/worker@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-4.6.0.tgz#0a4332be547fcd94fa5da1dfa200a28a6bf5fc5b" + integrity sha512-X6LIvvsMxhjIXp4G6zBYBYduDkphRC3Tj/6Es0+mJUWjWlK1pH0vRbONf9mDNCsABeoQ2iCcWVn5ABQV7wfwUw== dependencies: google-protobuf "^3.6.1" @@ -1644,855 +1540,942 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== -"@cspotcode/source-map-support@0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz#118511f316e2e87ee4294761868e254d3da47960" - integrity sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg== +"@cspotcode/source-map-support@0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" + integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== dependencies: "@cspotcode/source-map-consumer" "0.8.0" -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@csstools/postcss-color-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.0.2.tgz#0843fe19be08eeb22e5d2242a6ac06f8b87b9ed2" + integrity sha512-uayvFqfa0hITPwVduxRYNL9YBD/anTqula0tu2llalaxblEd7QPuETSN3gB5PvTYxSfd0d8kS4Fypgo5JaUJ6A== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz#7e7df948a83a0dfb7eb150a96e2390ac642356a1" + integrity sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz#d6785c1c5ba8152d1d392c66f3a6a446c6034f6d" + integrity sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz#f484db59fc94f35a21b6d680d23b0ec69b286b7f" + integrity sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.0.tgz#219a1c1d84de7d9e9b7e662a57fdc194eac38ea7" + integrity sha512-WnfZlyuh/CW4oS530HBbrKq0G8BKl/bsNr5NMFoubBFzJfvFRGJhplCgIJYWUidLuL3WJ/zhMtDIyNFTqhx63Q== + dependencies: + postcss-selector-parser "^6.0.9" + +"@csstools/postcss-normalize-display-values@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz#ce698f688c28517447aedf15a9037987e3d2dc97" + integrity sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.0.1.tgz#a12348eae202d4ded908a06aa92cf19a946b6cec" + integrity sha512-Bnly2FWWSTZX20hDJLYHpurhp1ot+ZGvojLOsrHa9frzOVruOv4oPYMZ6wQomi9KsbZZ+Af/CuRYaGReTyGtEg== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.2.0.tgz#7d53b773de50874c3885918dcb10cac97bf66ed5" + integrity sha512-YLpFPK5OaLIRKZhUfnrZPT9s9cmtqltIOg7W6jPcxmiDpnZ4lk+odfufZttOAgcg6IHWvNLgcITSLpJxIQB/qQ== + dependencies: + postcss-value-parser "^4.2.0" "@dabh/diagnostics@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" - integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== dependencies: colorspace "1.1.x" enabled "2.0.x" kuler "^2.0.0" -"@discoveryjs/json-ext@0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" - integrity sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA== +"@discoveryjs/json-ext@0.5.6": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" + integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== -"@firebase/app-types@^0.6.1": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.3.tgz#3f10514786aad846d74cd63cb693556309918f4b" - integrity sha512-/M13DPPati7FQHEQ9Minjk1HGLm/4K4gs9bR4rzLCWJg64yGtVC0zNg9gDpkw9yc2cvol/mNFxqTtd4geGrwdw== +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@firebase/app-types@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.7.0.tgz#c9e16d1b8bed1a991840b8d2a725fb58d0b5899f" + integrity sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg== "@gar/promisify@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" - integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== -"@google-cloud/paginator@^3.0.0": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c" - integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw== +"@google-cloud/paginator@^3.0.6": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.7.tgz#fb6f8e24ec841f99defaebf62c75c2e744dd419b" + integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ== dependencies: arrify "^2.0.0" extend "^3.0.2" "@google-cloud/precise-date@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-2.0.3.tgz#14f6f28ce35dabf3882e7aeab1c9d51bd473faed" - integrity sha512-+SDJ3ZvGkF7hzo6BGa8ZqeK3F6Z4+S+KviC9oOK+XCs3tfMyJCh/4j93XIWINgMMDIh9BgEvlw4306VxlXIlYA== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-2.0.4.tgz#930b0cbf557ef3a4bfeeb121cfc6da341212a2cb" + integrity sha512-nOB+mZdevI/1Si0QAfxWfzzIqFdc7wrO+DYePFvgbOoMtvX+XfFTINNt7e9Zg66AbDbWCPRnikU+6f5LTm9Wyg== "@google-cloud/projectify@^2.0.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.1.0.tgz#3df145c932e244cdeb87a30d93adce615bc69e6d" - integrity sha512-qbpidP/fOvQNz3nyabaVnZqcED1NNzf7qfeOlgtAZd9knTwY+KtsGRkYpiQzcATABy4gnGP2lousM3S0nuWVzA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.1.1.tgz#ae6af4fee02d78d044ae434699a630f8df0084ef" + integrity sha512-+rssMZHnlh0twl122gXY4/aCrk0G1acBqkHFfYddtsqpYXGxA29nj9V5V9SfC+GyOG00l650f6lG9KL+EpFEWQ== "@google-cloud/promisify@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8" - integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" + integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== "@google-cloud/pubsub@^2.7.0": - version "2.16.1" - resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-2.16.1.tgz#e003d3a041c5f746f6565f7de2dbc9e26545c360" - integrity sha512-+uO7r9uRfD/x0BzBI67clbIu0VIdqYLZ5NINuGEsMiAXIGWQWmceuLMixMEb/JOxeaqKygH1mL2rshkDisUmGg== + version "2.19.0" + resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-2.19.0.tgz#45541e66db9fbe9faa4f00e89a44f41954c6fc86" + integrity sha512-aNgaS7zI6MkE4hrhmxrGiyFZHPvb0BW1djk0D5RoKDwPb8GTuYBfu8w/3twTvaf+HiM7NchvPtdFRbiETIaadw== dependencies: - "@google-cloud/paginator" "^3.0.0" + "@google-cloud/paginator" "^3.0.6" "@google-cloud/precise-date" "^2.0.0" "@google-cloud/projectify" "^2.0.0" "@google-cloud/promisify" "^2.0.0" "@opentelemetry/api" "^1.0.0" - "@opentelemetry/semantic-conventions" "^0.22.0" + "@opentelemetry/semantic-conventions" "^1.0.0" "@types/duplexify" "^3.6.0" "@types/long" "^4.0.0" arrify "^2.0.0" extend "^3.0.2" google-auth-library "^7.0.0" - google-gax "^2.17.1" + google-gax "2.29.6" is-stream-ended "^0.1.4" lodash.snakecase "^4.1.1" p-defer "^3.0.0" -"@grpc/grpc-js@~1.3.0": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.6.tgz#6e2d17610c2c8df0f6ceab0e1968f563df74b173" - integrity sha512-v7+LQFbqZKmd/Tvf5/j1Xlbq6jXL/4d+gUtm2TNX4QiEC3ELWADmGr2dGlUyLl6aKTuYfsN72vAsO5zmavYkEg== +"@grpc/grpc-js@~1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.5.5.tgz#f850a1bb7de8a1d0bb4821aabd3655d1c928d4c6" + integrity sha512-FTd27ItHlsSG/7hp62xgI9YnqSwRbHRSVmDVR8DwOoC+6t8JhHRXe2JL0U8N9GLc0jS0HrtEbO/KP5+G0ebjLQ== dependencies: + "@grpc/proto-loader" "^0.6.4" "@types/node" ">=12.12.47" -"@grpc/proto-loader@^0.6.1": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.4.tgz#5438c0d771e92274e77e631babdc14456441cbdc" - integrity sha512-7xvDvW/vJEcmLUltCUGOgWRPM8Oofv0eCFSVMuKqaqWJaXSzmB+m9hiyqe34QofAl4WAzIKUZZlinIF9FOHyTQ== +"@grpc/proto-loader@^0.6.1", "@grpc/proto-loader@^0.6.4": + version "0.6.9" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.9.tgz#4014eef366da733f8e04a9ddd7376fe8a58547b7" + integrity sha512-UlcCS8VbsU9d3XTXGiEVFonN7hXk+oMXZtoHHG2oSA1/GcDP1q6OUgs20PzHDGizzyi8ufGSUDlk3O2NyY7leg== dependencies: "@types/long" "^4.0.1" lodash.camelcase "^4.3.0" long "^4.0.0" protobufjs "^6.10.0" - yargs "^16.1.1" + yargs "^16.2.0" -"@hutson/parse-repository-url@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" - integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jridgewell/resolve-uri@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz#3fdf5798f0b49e90155896f6291df186eac06c83" - integrity sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA== - -"@jsdevtools/coverage-istanbul-loader@3.0.5": +"@jridgewell/resolve-uri@^3.0.3": version "3.0.5" - resolved "https://registry.yarnpkg.com/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz#2a4bc65d0271df8d4435982db4af35d81754ee26" - integrity sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA== + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== dependencies: - convert-source-map "^1.7.0" - istanbul-lib-instrument "^4.0.3" - loader-utils "^2.0.0" - merge-source-map "^1.1.0" - schema-utils "^2.7.0" + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== -"@material/animation@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/animation/-/animation-14.0.0-canary.c78ff0429.0.tgz#2374577bc7f2cc9eb0d098c40dc01c87c3e6c87d" - integrity sha512-dbj2aeZID9JFQNfxcxdHz1wCOik7ZGKQ+ShHu7oMlGLKU2evQXZ8jTog9X7cWyj6RF+QsjK/PXJHnZD5u7V8Fw== +"@material/animation@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/animation/-/animation-14.0.0-canary.9736ddce9.0.tgz#ab3726329bacf3e47e1958599e850e2c618a8a9f" + integrity sha512-30ROq5iS6ZWp5llmpsqX/rDcOZ0renzziP98svDIE51hrcptmXx5FPpR6MCOmhaPvs97BoeE22LFS7i279FXmw== dependencies: tslib "^2.1.0" -"@material/auto-init@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/auto-init/-/auto-init-14.0.0-canary.c78ff0429.0.tgz#a2e141b992354cc6f76c73eedf3a59713942cf99" - integrity sha512-kBnCwZ+B3PnvQ/Ic9iCqDX7oGF6qXiZBMjFI+AGJ9w2fBhTeO0r3nbHzsnJ2kn8lIBeVrkTA4hklKn07Nhn3zg== +"@material/auto-init@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/auto-init/-/auto-init-14.0.0-canary.9736ddce9.0.tgz#7d54bb16de1f238ef72a6fdb240f23b096b35c59" + integrity sha512-u/sZojj4KwXsIFROh8RKov/52wMVPBK8Ag7UgykfQV7pbeta0MqGa3rtSZF41CVMcYCHx4nmyyfdSt5evLX90g== dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" + "@material/base" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/banner@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/banner/-/banner-14.0.0-canary.c78ff0429.0.tgz#158ad66425c5d51fba07dc082fc3cd1a5ac3b371" - integrity sha512-aZbJyJtxQcCC1e3Vyed7as1kSKNVkdEW+Hal2lzHeczw3f08Qlw9pQlOiqAIxvQQAJ4PysfOeKd/+fLQLTIhpA== - dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/button" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/tokens" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/banner@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/banner/-/banner-14.0.0-canary.9736ddce9.0.tgz#888948accc13c1d5b24372052403ac5bde6fc2db" + integrity sha512-A0vdLqIfZugM3sEUh9j7GMSWIwTum7wkleYCdf/jAWOUXzE7dVrKsNj3MG6GTcfjKnFmxCSrhuRHYm+gX/PriA== + dependencies: + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/button" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/tokens" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/base@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/base/-/base-14.0.0-canary.c78ff0429.0.tgz#928f83eb9652e8cecf861f0e60d6dff304232674" - integrity sha512-Uxcj11+cM2urNlIOJm6Gae0hYLKkQoK5fjYn41gCplAAKQLFiOS975T7d9urZ7emXoJd4EAkXFxKnwRXdf9rEQ== +"@material/base@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/base/-/base-14.0.0-canary.9736ddce9.0.tgz#ec9f43e6081a3fa9c138ab196038d4cf79173c73" + integrity sha512-XDOo/LUTGYQJprcVKoQW3UpAjqzqFZsHR0KTyDA5KIaSyNsd2kuwqNg0FoXNY9SJiMmrANVQGo9Qefy+G9iQZA== dependencies: tslib "^2.1.0" -"@material/button@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/button/-/button-14.0.0-canary.c78ff0429.0.tgz#01aeb1bf164f2405a6efcc46a55429a6b444722f" - integrity sha512-hkqFYzac+qsRWxwh3/N0zvew5wI3m5cvRA+wWJKXg0JVZ2bxhI/XZmI/aATgWayizh7vQdY28QamJO2VY7R2fQ== - dependencies: - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/tokens" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/button@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/button/-/button-14.0.0-canary.9736ddce9.0.tgz#1e683b31f9c7bc96f3cd4a0ea6fae9289a27b0f6" + integrity sha512-dPY2eq/5pZxguycdGI3Nd9ZtQ3diMwQzll8UoZ//5GQYaSUcCMU1LEKAoXqfoTZdQWsYvFj4FiJZUq1wRISfIw== + dependencies: + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/focus-ring" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/tokens" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/card@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/card/-/card-14.0.0-canary.c78ff0429.0.tgz#061baba9a9b507dc9a207f1e577fab98fee49fe8" - integrity sha512-XyAUjraBgOs5SgN1prPcpeaNEAs9tQeQjAPAkma/A0ZDvj7o1D2hPUG/EJfRG5JUFwsDd8Xe7VBy90Ix+al17Q== - dependencies: - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" +"@material/card@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/card/-/card-14.0.0-canary.9736ddce9.0.tgz#ce564a6688b11ec4553d95e48cb2bb54779f4d53" + integrity sha512-PLHPn700986aFpomOFOPbItiZJEnTjOhtHIZs0vhRiu6uHV5qce8S/MIroPUYHMA7ZrMdoo3M027W3r4SyEGiQ== + dependencies: + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/checkbox@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/checkbox/-/checkbox-14.0.0-canary.c78ff0429.0.tgz#d343277321f761f63980af6332f47489b1999c39" - integrity sha512-Z3UwvQeCXEW0jDNwtS/1DsXwysPLpiWxm1fjKxDTO8EwQ/GWQi1JqFFNBAfCv1A+wiLrW8xHw5kOgaXNX6aeFw== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" +"@material/checkbox@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/checkbox/-/checkbox-14.0.0-canary.9736ddce9.0.tgz#35b4a2830aea6cd091e4b7e23e08750af65ff892" + integrity sha512-sTu9an2He5R+VvURT/xP1ZH7AGMEA9tHK0MWt/yiwZxGGT3bzg8L/k55FmvOXmDMW+TgAaKmaybxnmZzx/tLRg== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/focus-ring" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/chips@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/chips/-/chips-14.0.0-canary.c78ff0429.0.tgz#2be34bd62a172c48ac88284d83114217c76dc79d" - integrity sha512-IrsOkp+BPoByPp+fEYllRoOK4yUvZvHs0lLdQnURBhOESMuNFbaaEjAaHLtcRn0K4c5KaVgnmtRk516grp9/mg== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/checkbox" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/tokens" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/chips@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/chips/-/chips-14.0.0-canary.9736ddce9.0.tgz#51edfed81426acdeb514dbcdba6dce4b98deec99" + integrity sha512-qejHpoAcZAKKuCesTZQrlzzu2i0RH5lPseb0w82cLGZkMaa2k5grGlc9MDR/qKka2AcpL7SDqtpkjv5m0chfXg== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/checkbox" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/focus-ring" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/tokens" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/circular-progress@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/circular-progress/-/circular-progress-14.0.0-canary.c78ff0429.0.tgz#91f33c6edfd38965742ad3cccfb24dd640b4a9fb" - integrity sha512-SU9OP9H6L+mOHYIDXbJnRqdR96zakUnwyoIl+EYbmDTQT62bShvJWygXQbUIW3JPxx+7xfPfTQLwg4mP8sbiNA== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/progress-indicator" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" +"@material/circular-progress@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/circular-progress/-/circular-progress-14.0.0-canary.9736ddce9.0.tgz#6d1162e064ce87f1aede82a684c9c4128cc1bf77" + integrity sha512-KAdaBRQDPn1JZTaQ7nk5GTqUsAICJxRtq8Ed3A3DxrY2R+7kMGtE7kSfZdICQcvXWftAlVDYAlVI3YNgSk0wdw== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/progress-indicator" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/data-table@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/data-table/-/data-table-14.0.0-canary.c78ff0429.0.tgz#de80eae3a7cfadc999b74d9326b5b77bd8fdaa50" - integrity sha512-Ou7UoStHt8x3cvLjw937wW/vT/OJ4kRF4bsB1dWFdt4jeo5Qmwe8h3p6iJRFgsdr2kHWjwrFvgzVWCHDg8FDtA== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/checkbox" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/icon-button" "14.0.0-canary.c78ff0429.0" - "@material/linear-progress" "14.0.0-canary.c78ff0429.0" - "@material/list" "14.0.0-canary.c78ff0429.0" - "@material/menu" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/select" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/data-table@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/data-table/-/data-table-14.0.0-canary.9736ddce9.0.tgz#d35de82c65ae84ad1dadccf4ebd85a2f2f7f9136" + integrity sha512-Fn8a8WqRIBOzeEQPuCnybtSCPdHTkLKSt7Hxy3JDwzi7UuRZfroHRBul0n/k0wzBvk+Pd9Kqa+hw39TwWs4LHQ== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/checkbox" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/icon-button" "14.0.0-canary.9736ddce9.0" + "@material/linear-progress" "14.0.0-canary.9736ddce9.0" + "@material/list" "14.0.0-canary.9736ddce9.0" + "@material/menu" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/select" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/density@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/density/-/density-14.0.0-canary.c78ff0429.0.tgz#f8e9e1e6cdfef479fce71de7c1072356311966ba" - integrity sha512-PkEtiDu8DP9D46Z2e9REDFi+LUOc7UftHindrsJRWWx/GtFzbVp1paX6E4hFeb/liDp5tJMw4Fd6EKUGxih8Cg== +"@material/density@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/density/-/density-14.0.0-canary.9736ddce9.0.tgz#720cd346720329b798f554cb4a8cbf233fc764bf" + integrity sha512-odh31BIWBagfGTwYOFMGwN+fvlV1d5VdZXauMK+kHbczMFSQXbZedI1mJP23YtYolKh0x+/iJUpT7VI2RG9VWw== dependencies: tslib "^2.1.0" -"@material/dialog@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/dialog/-/dialog-14.0.0-canary.c78ff0429.0.tgz#ef2909aa321333b983cf930c6bc7ba86d7e99260" - integrity sha512-scF04SWC/tkk/HGT0450+iz0cPSuL9cnNFU5gofnU0z8rikwJEavLcEdUETKUEd1ValoMjcevX+icAxYcvUPyA== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/button" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/icon-button" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/tokens" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/dialog@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/dialog/-/dialog-14.0.0-canary.9736ddce9.0.tgz#12e7ea70fac3ab48bb4587cf5e1aee90728660f7" + integrity sha512-l8TpF8J5Chjfjz14ZtugL3ljU+C/sjkGlEaAXDxhnlq9pGprzVZ8mfM7aOzMwgvdTd+L12P1mqpur9wSGxG8VQ== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/button" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/icon-button" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/tokens" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/dom@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/dom/-/dom-14.0.0-canary.c78ff0429.0.tgz#28ab7a21d6be3b9870a5f4a9291c0fd60187b19e" - integrity sha512-YbtomD+HjzrjCRfsAnPcopzMazJl8m9ulywl4b7bAlB6MKNjRAmNkWzRzkQ+2X4uKLmh/mKvafCH0X6zliHc+g== +"@material/dom@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/dom/-/dom-14.0.0-canary.9736ddce9.0.tgz#e394327fa9c0e7e1b51595d16f1d330a02cc74dc" + integrity sha512-Ljfa8LN6IX7cDDmKhB+DPX1E7RVRoDrIJJTCUUYV/nBx2IY/7FOEKUYKIYPRFI3v3fPCHhI01ZTZCmc5nV8AFg== dependencies: - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/drawer@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/drawer/-/drawer-14.0.0-canary.c78ff0429.0.tgz#319785611541eefe058eef8c25e618082c7296c2" - integrity sha512-a8RSZYRl1do22PBk4G0S6n567bx+yTwDA5rWM9h8FCiKzg3+SW0cZJZVNVntn1+gpoGc3dj46IEUB6bVek4Eiw== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/list" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/drawer@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/drawer/-/drawer-14.0.0-canary.9736ddce9.0.tgz#de49e263b1a07ee9bdfca4a6fd9708e4689c8476" + integrity sha512-1WmtUq90LGo3f3t5/ehlnUGNDD5NGR9Yk0hVNdaUwIvtX7mWklLPPoQ2faJbHmeh7Eh1IW6dyQNO9syOnqg9hQ== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/list" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/elevation@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/elevation/-/elevation-14.0.0-canary.c78ff0429.0.tgz#70e4ce37cb4486526cb0c8632fe8ee3bf68f9828" - integrity sha512-1Wb2K45CRGdMACo16WW52/UHYHmvc9gCqMC9EMKpsg43C1TyFJY/ATt9Ikrvc3SpCBPdg1u1keD250KJPUXVMA== +"@material/elevation@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/elevation/-/elevation-14.0.0-canary.9736ddce9.0.tgz#21f0328d27f116d455defe259bfd096b4d56714f" + integrity sha512-1pcF6PsZdGg2rApySkp7Jftg2tO/Q+mOyOolYwrx8MeVG3lvS4hSSd7tU6Qt8qHEdlB7tHp9kGzZZF9/Cy93CA== dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/fab@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/fab/-/fab-14.0.0-canary.c78ff0429.0.tgz#774412fe62cea30bc811523ed81f42014fc2440a" - integrity sha512-r5UiehjHuf+Q30YLiBeinymWCzUV8QmbhGi6vB+Dm6QsOEIqsfBhezZnxdGJ4VROk+uhNZbjJnfYJ1/cxW49yA== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/tokens" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/fab@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/fab/-/fab-14.0.0-canary.9736ddce9.0.tgz#7938561263505fb3a50707f292111f925c1e511d" + integrity sha512-vI+vSS5HEUakOGus3lTvZUcsfXJNSsqWxCPVWc6OJ9I/7FiTsf+3O9wvPZDF+mAN7qMsSOM+yYdIWnZUyF6Z0w== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/focus-ring" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/tokens" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/feature-targeting@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/feature-targeting/-/feature-targeting-14.0.0-canary.c78ff0429.0.tgz#42bcf8edaf0e2678966b76296699a1de759f0187" - integrity sha512-6cFV+UjmJ1TaHRMc4Un2GK2IupbzZKwKWTeRsAW/tbGqnsAxixXcVUQmhVU5vLbRgx8yNplDVaeo8x1jhZIxVA== +"@material/feature-targeting@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/feature-targeting/-/feature-targeting-14.0.0-canary.9736ddce9.0.tgz#2573985cb4203c128e6146055e8467a0ca5f6781" + integrity sha512-9Cr0uYdw3UelWMvE0W6uGf5OF2uQDRaafogGKCAshUyA3Mc7TisRsLtq98z7hQ3J88CCLmzjk7zPQT+xd0+JmQ== dependencies: tslib "^2.1.0" -"@material/floating-label@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/floating-label/-/floating-label-14.0.0-canary.c78ff0429.0.tgz#84c2d40f6f242758a6dfb616ba2160fdbd52f8d7" - integrity sha512-4IYo7qO/QCKyaZqeI2bt1QhO2u//bRC5c7HkYhreD8KYEceo2VCBw1Xdh9xhU3qtyhDDxutyNCjCqil5vBxvvA== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/floating-label@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/floating-label/-/floating-label-14.0.0-canary.9736ddce9.0.tgz#79ab074e17481d8d32ac3b92426695959567b357" + integrity sha512-ubrZx2P6VSzfbm+rtMXLbrpyWQqD8EteOHPyOySv5IaxNI75fK0KvNBNF1DFn8+yIoMGzxf3V3bBNy4Oo/oC/Q== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/form-field@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/form-field/-/form-field-14.0.0-canary.c78ff0429.0.tgz#03afc2047e3ef4ed09eec35e5e8eacf6db2d544c" - integrity sha512-8khbIQI1Q9pGGMWBqDIRZ5WARde8SwxjSEeW4Gk0oUfJsLu8Bh7huOAg1Gz2TcCLnQzaAJoUhJtYifC7inmQ4g== - dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/focus-ring@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/focus-ring/-/focus-ring-14.0.0-canary.9736ddce9.0.tgz#488b7529ce7a26ce30247cd0eb5a91fce1ff2cc7" + integrity sha512-XxOPnU32Gc6PufOx6Pxx8oZuvo5Ihz5/sMdQ7lJ+wNE/XcXlJwhqqiJVTmPZkC8Y5Cabhtx07cUWkFa7nue2Gg== + dependencies: + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + +"@material/form-field@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/form-field/-/form-field-14.0.0-canary.9736ddce9.0.tgz#4255dc9723c5f1e5bb49ebe1e6efcd85c5cc410a" + integrity sha512-s3blVtvcOvN1dNVT6PT/45o3pPMC0AINXKQ0dL+3c8kbpF2UtzTYIx4P7aLKnJuq12Jmw8LxmuMVT4Tv9N4THQ== + dependencies: + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/icon-button@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/icon-button/-/icon-button-14.0.0-canary.c78ff0429.0.tgz#233c5eae4949901db40f477c9f47f98bc5a267e1" - integrity sha512-4MTgqbyR3RhLIZk/RF5ZgaA9clDULDkQhIngpnCTiOvP8JLPnkMVrXgs447n0fAv7K8U2UP3uNpY1vwpEcACUg== - dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" +"@material/icon-button@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/icon-button/-/icon-button-14.0.0-canary.9736ddce9.0.tgz#790f6f9fd45f710d2887137c5d306d232c565f4a" + integrity sha512-UdpxKxd9kv5402TT5zwu78HoBLF9+BpavYRRCEf5hZSH2nFJtm2hurNb+VQ1RVdb2QJYMTtgywXE0als+jK5/w== + dependencies: + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/focus-ring" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/image-list@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/image-list/-/image-list-14.0.0-canary.c78ff0429.0.tgz#46acba28adb69082d31a78054a0e561d742a6998" - integrity sha512-FdtWDsX/48bgX+sPpcwdY7F8ximrUqZoLigSqVaCQOMwineq69+OODH6zxY1fgpqu2LRAtSM4/xQK6E5EQhQGg== +"@material/image-list@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/image-list/-/image-list-14.0.0-canary.9736ddce9.0.tgz#c5493ec41c08816c4ffb0362480fbc3c14ac719f" + integrity sha512-DDrwCAkSdt83YeHXaZjYhzy0to2MOjFs9WgucZiDTf8RXtRVNQzBuNrNyZPJwJPoV8iwjgm+sLMS2a1Cc8nYwg== dependencies: - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/layout-grid@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/layout-grid/-/layout-grid-14.0.0-canary.c78ff0429.0.tgz#7ef723f19f33a46dfed406cf8e178623cbc3400d" - integrity sha512-pPYjwnGZEStvImgi04ZQzs7X87MDNWXc/GdtjBleJRBH98F9XF98glu2Clh3fiag/Ik0WbL3xnZKYLIrcz3VNQ== +"@material/layout-grid@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/layout-grid/-/layout-grid-14.0.0-canary.9736ddce9.0.tgz#9745415a2839e0d4427997647cb6b93fccd2b123" + integrity sha512-0Agze9hPRNAR8ITao6CQvaLXPb4ETYgxadNOLANqCXmgo6P1XGve/FwqrRfAlncuoo1Aasab9abq9RxkOcEZNQ== dependencies: tslib "^2.1.0" -"@material/line-ripple@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/line-ripple/-/line-ripple-14.0.0-canary.c78ff0429.0.tgz#ca2ab6e3bf05d274d0195b26a24a587fbb67062b" - integrity sha512-1XqroaCU7a9JZokvqXLP7q6RQIUdazXFf9rfEVK48ZXgUGhrC6h6y9Jf2FzZjYpzkxb6Oe9cdcU4Z15rpbcwYg== +"@material/line-ripple@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/line-ripple/-/line-ripple-14.0.0-canary.9736ddce9.0.tgz#d837d533d2cd501f4be9851a96bcc874273ceb44" + integrity sha512-cSPsOZCi/P+ePUCV6RpiUcZouBhlBE7I6xjnMHlnNI8NYsl/naJCYCVnQYr7OOc07vxZo1wUiMXhXoy2tlfsiQ== dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/linear-progress@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/linear-progress/-/linear-progress-14.0.0-canary.c78ff0429.0.tgz#6d9ab4d5ea4cde537fc1370cd88c880563001eb0" - integrity sha512-XX1cQrVQ5OHGKxzu85CRLwfJ+KvZTwj3b1f0xRuT26McTDJ2F6ABukzaJTuUteJEpdmD8eKKORYR6I4HaDCKUg== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/progress-indicator" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" +"@material/linear-progress@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/linear-progress/-/linear-progress-14.0.0-canary.9736ddce9.0.tgz#7d8d7ceee26abc9041bf4f20a63d3736e4c756a0" + integrity sha512-HywGAEHXiYxiAeetS7jbq1Iy9zJ9hep5CmPYHG1yWb2z3WG+Kz87lHiSRcbA8m8kFC9cg6ouVTCv78ci+4St4A== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/progress-indicator" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/list@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/list/-/list-14.0.0-canary.c78ff0429.0.tgz#5467df28d604bbe42dd67b966190b179299e1ed0" - integrity sha512-hjNB5/zGqG+1nhV266qQ3oD+P3gULuAPxOrhvDzLZT5wDhF/cSGD0jKKxDMLu+n5UlHHJuEtctDHBWluo4bagg== - dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/list@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/list/-/list-14.0.0-canary.9736ddce9.0.tgz#6a1370e67b8eaf252b061ff32de35d5d60734d61" + integrity sha512-c/Y4QjIv60qJ+cb9OrUU2r46qNu3q9+0TJ0b75PEFeZec1T0pmBlW2Ro1UqcZ38UOgSsM9R9BzX6NSbIOjhm0Q== + dependencies: + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/menu-surface@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/menu-surface/-/menu-surface-14.0.0-canary.c78ff0429.0.tgz#084349a9b9c20cbf61534b9a529af67129345bd9" - integrity sha512-5j0vKwMJeaLQ1Khlkxw3TsVxCnxdEk7R2Y7ZnV1pEgHdqsSQUDGsW5kSWIBfzXIzTi1MvjkRzBJD2Q2T6mglhQ== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" +"@material/menu-surface@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/menu-surface/-/menu-surface-14.0.0-canary.9736ddce9.0.tgz#23c92612e92ce11425f69bfca093e62869162a39" + integrity sha512-oxqcoHbdOjDRmaY7TaUO1baM15xw8Q5rNMTzg461P/RQcpRVgsyw7KTkoavr8+0PvIB5P2dZcuixWZDdg/864A== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/menu@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/menu/-/menu-14.0.0-canary.c78ff0429.0.tgz#f361f98f45d66e8e03d5ce7ec89be649d7edb2ce" - integrity sha512-tY68s5TiMCkgYb2NUCzU0S76J83dMXXWoogYC5nuwCweZW6tGyMFgggxLfWICNxoAuD11eOIln4BO1+jEWRh3g== - dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/list" "14.0.0-canary.c78ff0429.0" - "@material/menu-surface" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" +"@material/menu@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/menu/-/menu-14.0.0-canary.9736ddce9.0.tgz#277a42c1a8fd93dff4674729d065bee409544550" + integrity sha512-t1xQipXHzz7HDgtzEdZilDUgsOddsn2GE+23jbI7167+fsbMxZBPMoBHVSRC0z7POQSFtb4vKrGJGvrD9/v+JA== + dependencies: + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/list" "14.0.0-canary.9736ddce9.0" + "@material/menu-surface" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/notched-outline@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/notched-outline/-/notched-outline-14.0.0-canary.c78ff0429.0.tgz#18727dc5020fd613ea02484380c12ce23cec5c62" - integrity sha512-f4Nx8KwqaqmR4n3h3H/kEOTMh74UYyc1yxtI/MQfrDiU2/+29ooZor1yRASWGg8lVG0VUy93vCLDRjNzVzoN0A== - dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/floating-label" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" +"@material/notched-outline@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/notched-outline/-/notched-outline-14.0.0-canary.9736ddce9.0.tgz#1e87ea03366fd6eb51b71c4c4a40c6dbab54dc86" + integrity sha512-JmMjEY018FX5atL5kSroDJN3zav7BOWLVai44tRPwUEn/MJn0YFoXRmESnnTfHOgfljMUhDBhCnOwLXbjVczZQ== + dependencies: + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/floating-label" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/progress-indicator@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/progress-indicator/-/progress-indicator-14.0.0-canary.c78ff0429.0.tgz#98fa20a1b1752819e9903f98a2f789a8b441158c" - integrity sha512-zES1nWFlgDshZuju2rrK0ofymL/jwTszqUAtzdHUcZBiBEWis6LOJue9hXBZLyG28CjYmKe3Dkvrl1mVcUQ2hg== +"@material/progress-indicator@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/progress-indicator/-/progress-indicator-14.0.0-canary.9736ddce9.0.tgz#9aedf5e783a256442822ab3fd1fd3d6667ca3a82" + integrity sha512-tBkLdGW3seNeAt/l/QidvdbGI6yFKQCmZq6sT3SR0ewyvMD70FpGLLBjK6cGdIbeO/HAxOL7i6KqZVjl1hobQw== dependencies: tslib "^2.1.0" -"@material/radio@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/radio/-/radio-14.0.0-canary.c78ff0429.0.tgz#9f104d7ef087a02a65cd1672ca0fd18a1bd1de16" - integrity sha512-ZANWUYlmyDBQYEk/zA7uIul7n2PR47yio+V13Vg0ZRBqEPOOCrQ3KsKA/pfNyGcUVZscfvcWwquS/YNxzEtxxQ== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" +"@material/radio@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/radio/-/radio-14.0.0-canary.9736ddce9.0.tgz#7e982275e93473af26f564d4b6ab0625487bae4d" + integrity sha512-bQGncFvNHMpVeoizw/tUWp8KKLzVHy3GKl6hGzNFcemzwOoBw3g+k686k5zmmvPl0rLOxXkMgy9gsyIUlXeKxQ== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/focus-ring" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/ripple@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/ripple/-/ripple-14.0.0-canary.c78ff0429.0.tgz#4b2c21343fbb758de1cc4196f9de1890a64dafa4" - integrity sha512-e8iL5ATHkz7jDCjV5BCIMSf7gmuRw5IhOF8jiU5OEYTW4//MdWoXafLelPEDq2jGqFbEF1kM0tjZWBAK2o1jAw== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" +"@material/ripple@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/ripple/-/ripple-14.0.0-canary.9736ddce9.0.tgz#4c87aa6adbc2d28e0b797dc47e921a3157aac867" + integrity sha512-7+pIwBg9MoHYZS0TuzKigZD1+OoQCoEFHltxC+d1GTWuPy3zSQwzIcRce05c+cG/R9JHdKGoR4vm0grU6GiXVw== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/rtl@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/rtl/-/rtl-14.0.0-canary.c78ff0429.0.tgz#e69f7a68fd91c925a41871fbe25d905cdb0963e3" - integrity sha512-mOyqd/XnDgBtWWcBR/aVFKYx6dxVjgT4qkzMbDvp62v86C3LtetDtPRd7+qlPiapZdoYMWFeDIuMEet1t+Gq4g== +"@material/rtl@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/rtl/-/rtl-14.0.0-canary.9736ddce9.0.tgz#53d7458302f3fdcf15411dc200ba7f1607e43cc4" + integrity sha512-xKn6CJ3CnvYhpFN61RmWejAf5nnj6ft0XR+L8FUESoqHEYjMuHnAfOquKC9Xrbg52CFij78XC6wUd4clfy48vA== dependencies: - "@material/theme" "14.0.0-canary.c78ff0429.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/segmented-button@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/segmented-button/-/segmented-button-14.0.0-canary.c78ff0429.0.tgz#065d80c8a6b33f716b12fb5a62a4f4112a4d304d" - integrity sha512-UeOIVmWCfNyOSlfHjeWbI5/Rd6XVo4Hnh85t5aaoAiBnID7vbExEgwyz87pQ5tgSROehcTgcy1lz1Of8J2vvCg== - dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/segmented-button@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/segmented-button/-/segmented-button-14.0.0-canary.9736ddce9.0.tgz#82890d9e8b643b1c10d666b862fffdbcffc6b058" + integrity sha512-QfQ46zCyM/aLUpYJ0AiOUHE3RoUCNPyg8IlObBrktbxPKUOhM4N6PdFOMid/lk0QKQxLCsphVORuA2qovUVIKA== + dependencies: + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/select@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/select/-/select-14.0.0-canary.c78ff0429.0.tgz#d942725a2d729423cc1f0ba54de1b2268444c8d0" - integrity sha512-vGJl7ehD8A/1CjaX4/uwN46VfGNBsNjOpyyW71WwWscuaR2+WI4+W6aDf+Oy7aFnTyqmLyRsLlIE8VdnEgoH2A== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/floating-label" "14.0.0-canary.c78ff0429.0" - "@material/line-ripple" "14.0.0-canary.c78ff0429.0" - "@material/list" "14.0.0-canary.c78ff0429.0" - "@material/menu" "14.0.0-canary.c78ff0429.0" - "@material/menu-surface" "14.0.0-canary.c78ff0429.0" - "@material/notched-outline" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/select@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/select/-/select-14.0.0-canary.9736ddce9.0.tgz#21f7a658d90516f6e0ff3788220ddc03a2676935" + integrity sha512-HjStGz6deTqGeV+jY0vKRGG/01u0MsRY01nb93keKEiISxi8PmKJyPrBfCC/IvTGCFWD9ugPwfV03YLrb3ieqg== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/floating-label" "14.0.0-canary.9736ddce9.0" + "@material/line-ripple" "14.0.0-canary.9736ddce9.0" + "@material/list" "14.0.0-canary.9736ddce9.0" + "@material/menu" "14.0.0-canary.9736ddce9.0" + "@material/menu-surface" "14.0.0-canary.9736ddce9.0" + "@material/notched-outline" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/shape@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/shape/-/shape-14.0.0-canary.c78ff0429.0.tgz#27bbcef72ff231f15948047d30e12cf95c934802" - integrity sha512-0JSV3+rEl4oKH2JMIlG0yvp+60rYD0ahdVjq+6jgU9CprSaegI1EFRI8o2HFEy0jN0MkSQ4wx88wC8XqWYb4aQ== +"@material/shape@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/shape/-/shape-14.0.0-canary.9736ddce9.0.tgz#129981d77db3823942caa5dbb8feebec1821d072" + integrity sha512-/qhnzfUqjtm48cdDykpw4q13V7NrE1kcIF/v9E0yG3y6uqOne3dzgB+2RT7HD8ECFot8F3sHPadVFx1f1gQXfg== dependencies: - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/slider@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/slider/-/slider-14.0.0-canary.c78ff0429.0.tgz#31d8d4d04abb46284742ec0a1ce3a006d0cfe0d2" - integrity sha512-sajgvrPfa0AoVqi5Oz8h0H7+iaIMoNH4I4K2FL1z7abZ0V9n8VrN8M3RDTjdGaDAci7dDNLYsnlGlgTUHEaqpg== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/slider@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/slider/-/slider-14.0.0-canary.9736ddce9.0.tgz#035ed6d2961dbb138a814a88699b57cf26c9ab21" + integrity sha512-ysv9zpmamcgjNpuAOqjNvS1wm+ZrlOKiskR5KR6UQ7W5l0YOh4AARu2/fa5apEi6PDdBAz1yq0ot/JN6MoizHQ== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/snackbar@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/snackbar/-/snackbar-14.0.0-canary.c78ff0429.0.tgz#a52a197e0168b17b437f0026357df082b5138909" - integrity sha512-fjVoKLcvwjr0QlHGXJ/Mv/vnP8xlSXcfm51SnWI+zYj8CIN3w7fmas68UAREBQJj1VI4w/4Bbm/OISPEWt4LqA== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/button" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/icon-button" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/snackbar@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/snackbar/-/snackbar-14.0.0-canary.9736ddce9.0.tgz#6eb52ddba56e5bb792a766e0fb0f777f344e037f" + integrity sha512-Rcs7gItX5CWxNfz/58utw2AH0Wh3WvGuI7+cvxLMQch7tud3B4jjScOaPX5vxjPbRtAq0XrClyeIR/BT/p3OTg== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/button" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/icon-button" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/switch@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/switch/-/switch-14.0.0-canary.c78ff0429.0.tgz#839b54ca48bbf95ab4fadc7fb3d2e8c0942f256d" - integrity sha512-IoN9BxXHsMtRmFK6GOGiku9/vbxGTAZ/KEgWVCndR5C6/5P82TRQBtjFJqCPWjCpM86Hex/xjeg4t5tBxqHYqg== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/tokens" "14.0.0-canary.c78ff0429.0" +"@material/switch@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/switch/-/switch-14.0.0-canary.9736ddce9.0.tgz#9d28a686c7eaf29ea92350be7f541dbc093e4c93" + integrity sha512-WCm/XAwkO7pX6EmjHaI8vJr0n6lYr/bYYMkKd7xqsFPtdyxPLfG5X/Rf1De0zDqxtZyNtgp3BIfZnDTI86SscQ== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/tokens" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/tab-bar@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/tab-bar/-/tab-bar-14.0.0-canary.c78ff0429.0.tgz#5ee83494f8cfc356d8fc161614fec652cf6d5ffa" - integrity sha512-YOGOuPwwbA/huCmMYVC2b8cdzlGXQEyGigQyPMpQuVvdKwrbdDPHaa70fPYqLy9q25yBxoP0no5l6ZiFjSUQNw== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/tab" "14.0.0-canary.c78ff0429.0" - "@material/tab-indicator" "14.0.0-canary.c78ff0429.0" - "@material/tab-scroller" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/tab-bar@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/tab-bar/-/tab-bar-14.0.0-canary.9736ddce9.0.tgz#864863174a62ff8ee6ddf927026a76bf55a0311b" + integrity sha512-InBSLmcp2k0iqzSZ3Uo4AMSEmZicGKTg19AZ05QHhWV3IKpZIAKaxNG1LW+VEs1/a+WVMHaWdeey7XV8u36YLg== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/tab" "14.0.0-canary.9736ddce9.0" + "@material/tab-indicator" "14.0.0-canary.9736ddce9.0" + "@material/tab-scroller" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/tab-indicator@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/tab-indicator/-/tab-indicator-14.0.0-canary.c78ff0429.0.tgz#07a33f9d17333512085a5df6ce44e3417454b900" - integrity sha512-3UHnPMSm+39rvoB5I5BIOpAdHzbxZqjZrk1980hJiW6Q2iLsnvYa4Di8lb19Qqx8Qg2ruptlg8XQa4zKPW3s5Q== +"@material/tab-indicator@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/tab-indicator/-/tab-indicator-14.0.0-canary.9736ddce9.0.tgz#4f4a2b90a69986464d63ff651c6b6ec321782190" + integrity sha512-H31+lm3kGKfCN5nkY69bHUE5Y44rQju6Xa+PIj1qjrWziQS+ew3CUOI8rWwZXVGtp3eCsJaV0BEMhgmNUgahYw== dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/tab-scroller@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/tab-scroller/-/tab-scroller-14.0.0-canary.c78ff0429.0.tgz#0b650f6140eb335ce9f2494e95cbfe16525eb090" - integrity sha512-pu9SXllMJs30Xk+D+9jJEb84cWK0wXgoLfgQ5dqiljcXp3rmFF8DA0i4RnooKY1o6yXFXR7gctVuYZU3Y+VOAw== +"@material/tab-scroller@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/tab-scroller/-/tab-scroller-14.0.0-canary.9736ddce9.0.tgz#6adc3af6bc7f3e1cb3310020571fc4181b6b7478" + integrity sha512-LglNwm/oBq0PHo18UHceOXtDE7eswJlNLJiy/W3+ku+I6C0q2ftku1bo2k5m3hJDjGz0dR+fOXi9uE2HDIwpXg== dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/tab" "14.0.0-canary.c78ff0429.0" + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/tab" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/tab@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/tab/-/tab-14.0.0-canary.c78ff0429.0.tgz#f72ea5dee3f664672923863d747a3ec27200f313" - integrity sha512-4J5C2vwn7blnt6vDM+60RzfGbkxTQRVhBIfiTpumXn5DwaE+oYrs/0SOC2EL8Hdwh5gCtRF+2B9NbvTzSkMrNQ== - dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/tab-indicator" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/tab@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/tab/-/tab-14.0.0-canary.9736ddce9.0.tgz#5afdea3cf4eba8194e00a1d189d9bb857e07cb3d" + integrity sha512-GzTSrZ1Sge/t2A+n58ZV7brXY34eWxIwLHaLEqCLOffgqSWZnI4066CkVSFbwF+1oFfd2HVm1nonarOdUg8cFg== + dependencies: + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/focus-ring" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/tab-indicator" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/textfield@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/textfield/-/textfield-14.0.0-canary.c78ff0429.0.tgz#b26c2393001ed29447a1428c3e3e429f52f33d81" - integrity sha512-d7LwFcQPiM7uDpd1gZrh2DvHWfY2N50JmYSPRezgPego1Q5LP6FZglnOIFPI9chLk4byAJT6bJ5GKf9NASOSRw== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/floating-label" "14.0.0-canary.c78ff0429.0" - "@material/line-ripple" "14.0.0-canary.c78ff0429.0" - "@material/notched-outline" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/textfield@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/textfield/-/textfield-14.0.0-canary.9736ddce9.0.tgz#3a501fa94cacd5388b5eceb2eea076307934dc4c" + integrity sha512-cfePHlxDVGCvFJrRsoGi3FqgICpw3TNhCr+DInUlc5TI2yOrxUL2+ERir8HdMxgLh5/vyTu3HoP4SZ37LJpMgA== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/floating-label" "14.0.0-canary.9736ddce9.0" + "@material/line-ripple" "14.0.0-canary.9736ddce9.0" + "@material/notched-outline" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/theme@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/theme/-/theme-14.0.0-canary.c78ff0429.0.tgz#eb0b6147f39aefb530c14e80054a68b9f0f6faef" - integrity sha512-/OgDoLvlsrBVHePIr0jM8Th8g2dAaqwe4zgiqM4Dvs8YQOcIt7przqOYquIeHSUkX9eBVdXKLnKJBAEiwEFZUg== +"@material/theme@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/theme/-/theme-14.0.0-canary.9736ddce9.0.tgz#6932babd14631349cb05e9cadd92dfb3bc8c5183" + integrity sha512-poN+tU+AJkqCrpZhIgqV8LhegKxKOM1sKD7THMSwNldnd+RlvBMFd1t2Lr3tdoLRl6XxM9fUAr+8GRLM+Ep61A== dependencies: - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/tokens@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/tokens/-/tokens-14.0.0-canary.c78ff0429.0.tgz#6b97852714015660ee156edae11179e29ea8a29d" - integrity sha512-ndoyWFaAm2zMfyhsSUQsIqZrnWlvAmrq1U4ryxjvWt74cnbgOSaqjQ9rA/TUgQhVnN4UzBxCb3gvKpIlzEmZCQ== - dependencies: - "@material/elevation" "14.0.0-canary.c78ff0429.0" - -"@material/tooltip@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/tooltip/-/tooltip-14.0.0-canary.c78ff0429.0.tgz#31155ffe7df17fc23bae861e7ed1991c6e023be6" - integrity sha512-wLIfDOzAKD+aXH0qf+mJt/40Ly6LX8HTmZ0bgSVUDMkSyMmJC5ScqbUsND5Lbkw5s7C8qjeJHcKbefDm2j0/hg== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/tokens@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/tokens/-/tokens-14.0.0-canary.9736ddce9.0.tgz#40d90349b76a02217555b364a1c2d7a6690c3f0c" + integrity sha512-g4AtDiJN/1Fa683j1HkvzyctlpPdbJP33uc3kNMi9d0TISck/6TiKXLQiKg5lV1G7xx7owCJjfnnoGD8rZtfsw== + dependencies: + "@material/elevation" "14.0.0-canary.9736ddce9.0" + +"@material/tooltip@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/tooltip/-/tooltip-14.0.0-canary.9736ddce9.0.tgz#59e5080c6f0599cc787c150d0851cc765b25689e" + integrity sha512-EE9CzmIq9TJDUEaSpDFr9OYe4ZWMxamgp5qwyXjdXnMZS4Icqxo7fReygC9zoskWfwb9Y4k3s/8ks1weNZ+nXw== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/top-app-bar@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/top-app-bar/-/top-app-bar-14.0.0-canary.c78ff0429.0.tgz#c00335c4c364259be601440b5721d20b60746fb7" - integrity sha512-pHEksbjDyltoqpyOuryb3k2quh3mDnzOjcys7MWqas5Le6IF4nVcdc/TAoH1VpNwYeTqmatOXO0/WZdOK43eIw== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +"@material/top-app-bar@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/top-app-bar/-/top-app-bar-14.0.0-canary.9736ddce9.0.tgz#a80708d684b462d076db955179842648855e03cb" + integrity sha512-LohYHHv80W+LWa7Lc4bKgLWOpOFRA7uscflrQZQyS/1LSgT2rmsPABWj6r+3UD5vCHCMNgYGcD/tNLzxMf7pvA== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/touch-target@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/touch-target/-/touch-target-14.0.0-canary.c78ff0429.0.tgz#59eeab90dedf5498b783fea913215af199120740" - integrity sha512-gs30aDfi+HLeyB86QGvfiLEHJ6Ypun1mPtI+6meSKUGjj+kxDwWIRRgEWIEjIzlxdkfKrBs1vH6xMsbNmKuDXQ== +"@material/touch-target@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/touch-target/-/touch-target-14.0.0-canary.9736ddce9.0.tgz#9d23a8ec416881838b8db882b2d46155052177b1" + integrity sha512-735LFnR5eMdj+K7xefcrDZgN/On0KbmpLOD0ollw3X9Dq1PoonQHtAi+IY77atiAyqClcteDNTjVPFqgl8RSmQ== dependencies: - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@material/typography@14.0.0-canary.c78ff0429.0": - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/@material/typography/-/typography-14.0.0-canary.c78ff0429.0.tgz#294a41b804d357f4b27371ee1b2a4cba1e8448e2" - integrity sha512-wGehXTuV7tA7eE+C72VkIooQcEhZlO29pdP4adYFowH1EIGp3uB/gSCUBXVdBog/wkX/1Vs7QnVwDjWXs05UPA== +"@material/typography@14.0.0-canary.9736ddce9.0": + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/@material/typography/-/typography-14.0.0-canary.9736ddce9.0.tgz#10123d326759c507d147b14ee0b7464bf943797a" + integrity sha512-qMpHFDTSwFE5z/OZKk7JIQCdgL1jGHqGuwP/IomvBQjx/yt3u5BPvcfnGZZteyJPLzxOlY5/+8qQ2O5djHcpTQ== dependencies: - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" tslib "^2.1.0" -"@microsoft/api-extractor-model@7.13.11": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.13.11.tgz#36e17b4b43b0260144ad1348a8140e52c9aacc0d" - integrity sha512-l38PC3TUaSu77jW8ry8Fxbhab+msUMRQq16gLNl3yu+jvM5dTJ8jxT/Yp/Zrv+T9e161bbOt4buD+nNjeLkeUQ== - dependencies: - "@microsoft/tsdoc" "0.13.2" - "@microsoft/tsdoc-config" "~0.15.2" - "@rushstack/node-core-library" "3.42.1" - -"@microsoft/api-extractor-model@7.13.9": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.13.9.tgz#018fb37ac0147595832e13db17509f6adafbad9c" - integrity sha512-t/XKTr8MlHRWgDr1fkyCzTQRR5XICf/WzIFs8yw1JLU8Olw99M3by4/dtpOZNskfqoW+J8NwOxovduU2csi4Ww== - dependencies: - "@microsoft/tsdoc" "0.13.2" - "@microsoft/tsdoc-config" "~0.15.2" - "@rushstack/node-core-library" "3.41.0" - -"@microsoft/api-extractor@7.18.11": - version "7.18.11" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.18.11.tgz#24910c2432362b09900b493a0713919b662cdb0f" - integrity sha512-WfN5MZry4TrF60OOcGadFDsGECF9JNKNT+8P/8crYAumAYQRitI2cUiQRlCWrgmFgCWNezsNZeI/2BggdnUqcg== +"@microsoft/api-extractor-model@7.15.3": + version "7.15.3" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.15.3.tgz#cf76deeeb2733d974da678f530c2dbaceb18a065" + integrity sha512-NkSjolmSI7NGvbdz0Y7kjQfdpD+j9E5CwXTxEyjDqxd10MI7GXV8DnAsQ57GFJcgHKgTjf2aUnYfMJ9w3aMicw== dependencies: - "@microsoft/api-extractor-model" "7.13.9" "@microsoft/tsdoc" "0.13.2" "@microsoft/tsdoc-config" "~0.15.2" - "@rushstack/node-core-library" "3.41.0" - "@rushstack/rig-package" "0.3.1" - "@rushstack/ts-command-line" "4.9.1" - colors "~1.2.1" - lodash "~4.17.15" - resolve "~1.17.0" - semver "~7.3.0" - source-map "~0.6.1" - typescript "~4.4.2" + "@rushstack/node-core-library" "3.45.0" -"@microsoft/api-extractor@7.18.14": - version "7.18.14" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.18.14.tgz#a12a8ccfdf51894768a33d5a67563bb97a769b2f" - integrity sha512-MLO3WVYkIWkMDz9LMgwIgOQEVDLOyLjngZ72HvqtALoWV/Gf3ftYtl5dIche2Q15ZKpLFF2WpNuW8pBFqt2NFg== +"@microsoft/api-extractor@7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.19.4.tgz#95d43d410a1dfb28a02062c4693bcb9c52afe9eb" + integrity sha512-iehC6YA3DGJvxTUaK7HUtQmP6hAQU07+Q/OR8TG4dVR6KpqCi9UPEVk8AgCvQkiK+6FbVEFQTx0qLuYk4EeuHg== dependencies: - "@microsoft/api-extractor-model" "7.13.11" + "@microsoft/api-extractor-model" "7.15.3" "@microsoft/tsdoc" "0.13.2" "@microsoft/tsdoc-config" "~0.15.2" - "@rushstack/node-core-library" "3.42.1" - "@rushstack/rig-package" "0.3.2" - "@rushstack/ts-command-line" "4.10.1" + "@rushstack/node-core-library" "3.45.0" + "@rushstack/rig-package" "0.3.7" + "@rushstack/ts-command-line" "4.10.6" colors "~1.2.1" lodash "~4.17.15" resolve "~1.17.0" semver "~7.3.0" source-map "~0.6.1" - typescript "~4.4.2" + typescript "~4.5.2" "@microsoft/tsdoc-config@~0.15.2": version "0.15.2" @@ -2509,10 +2492,15 @@ resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.13.2.tgz#3b0efb6d3903bd49edb073696f60e90df08efb26" integrity sha512-WrHvO8PDL8wd8T2+zBGKrMwVL5IyzR3ryWUsl0PXgEV0QHup4mTLi0QcATefGI6Gx9Anu7vthPyyyLpY0EpiQg== -"@ngtools/webpack@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.0.0-next.7.tgz#260a5f1b50090bf3b6b7391b5480a9b85e771e6a" - integrity sha512-8qgeRMbLlcLpk8qZS2gUtUmPvGRBVOYWlhVc4qBRqccAoDqPgFMCldR8GQupJxeIr1wgk7vWt0g6A0oEuxSIKA== +"@ngtools/webpack@14.0.0-next.2": + version "14.0.0-next.2" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-14.0.0-next.2.tgz#9a4f1d69069e2fa23ef106388e1e978b3d6b7eff" + integrity sha512-7mDTu9r+rb6h3/cFLj8Ot0hqZICvNtzXeD2bfOYilRyl6yeVCDRsE9K0JJtk9nTn9pSG5fvWsu2sPhOEFFaAgQ== + +"@ngtools/webpack@14.0.0-next.3": + version "14.0.0-next.3" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-14.0.0-next.3.tgz#17ee2806b5d2e8fb6e9208b1549f9979a0841d2c" + integrity sha512-UZGdXguWqdTILA5rVrEP/C1ZN84273ZwUuD6ECmMlijnWDQHYBYIO97znOciFx/rfrneZYlQt5OynbCyZO0eVg== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -2536,28 +2524,29 @@ fastq "^1.6.0" "@npmcli/fs@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.0.0.tgz#589612cfad3a6ea0feafcb901d29c63fd52db09f" - integrity sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/git@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" - integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== +"@npmcli/git@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.0.tgz#466a18980da6b646a8112a7676688ae5347deba3" + integrity sha512-xfSBJ+KBMZWWqRHFbEgIaXG/LtELHrQZMJ72Gkb3yWdHysu/7+VGOs8ME0c3td7QNQX57Ggo3kYL6ylcd70/kA== dependencies: "@npmcli/promise-spawn" "^1.3.2" - lru-cache "^6.0.0" + lru-cache "^7.3.1" mkdirp "^1.0.4" - npm-pick-manifest "^6.1.1" + npm-pick-manifest "^7.0.0" + proc-log "^2.0.0" promise-inflight "^1.0.1" promise-retry "^2.0.1" semver "^7.3.5" which "^2.0.2" -"@npmcli/installed-package-contents@^1.0.6": +"@npmcli/installed-package-contents@^1.0.7": version "1.0.7" resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== @@ -2585,20 +2574,20 @@ dependencies: infer-owner "^1.0.4" -"@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== +"@npmcli/run-script@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-2.0.0.tgz#9949c0cab415b17aaac279646db4f027d6f1e743" + integrity sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig== dependencies: "@npmcli/node-gyp" "^1.0.2" "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^7.1.0" + node-gyp "^8.2.0" read-package-json-fast "^2.0.1" "@octokit/auth-app@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-3.6.0.tgz#79fc6f652d2362ce0bd3122f6f764a87cc813dea" - integrity sha512-A+tLuHEMXw+Xz9dmKO7Ho9i4EmMr4tThrwYTlmMNu8y93JxvvRjKFFElpCTS+Z0NlbfuyNdaTlJnAinFbVKm7g== + version "3.6.1" + resolved "https://registry.yarnpkg.com/@octokit/auth-app/-/auth-app-3.6.1.tgz#aa5b02cc211175cbc28ce6c03c73373c1206d632" + integrity sha512-6oa6CFphIYI7NxxHrdVOzhG7hkcKyGyYocg7lNDSJVauVOLtylg8hNJzoUyPAYKKK0yUeoZamE/lMs2tG+S+JA== dependencies: "@octokit/auth-oauth-app" "^4.3.0" "@octokit/auth-oauth-user" "^1.2.3" @@ -2647,13 +2636,13 @@ universal-user-agent "^6.0.0" "@octokit/auth-token@^2.4.4": - version "2.4.5" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" - integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: "@octokit/types" "^6.0.3" -"@octokit/core@^3.2.3", "@octokit/core@^3.4.0", "@octokit/core@^3.5.0", "@octokit/core@^3.5.1": +"@octokit/core@^3.2.3", "@octokit/core@^3.4.0", "@octokit/core@^3.5.1": version "3.5.1" resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== @@ -2690,9 +2679,9 @@ integrity sha512-lhP/t0i8EwTmayHG4dqLXgU+uPVys4WD/qUNvC+HfB1S1dyqULm5Yx9uKc1x79aP66U1Cb4OZeW8QU/RA9A4XA== "@octokit/oauth-methods@^1.1.0": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@octokit/oauth-methods/-/oauth-methods-1.2.4.tgz#5f2706b29f09d309233aee61c99b66aedec0511a" - integrity sha512-85hen2Dkpnmy2PGfVFe7Ke9rUo//nlqUcHE4GiQBHJ7D95rAm19GcRO49LlH6NOXOMdEFj7i/Ay5GVDRrAk38w== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@octokit/oauth-methods/-/oauth-methods-1.2.6.tgz#b9ac65e374b2cc55ee9dd8dcdd16558550438ea7" + integrity sha512-nImHQoOtKnSNn05uk2o76om1tJWiAo4lOu2xMAHYsNr0fwopP+Dv+2MlGvaMMlFjoqVd3fF3X5ZDTKCsqgmUaQ== dependencies: "@octokit/oauth-authorization-url" "^4.3.1" "@octokit/request" "^5.4.14" @@ -2700,19 +2689,19 @@ "@octokit/types" "^6.12.2" btoa-lite "^1.0.0" -"@octokit/openapi-types@^9.5.0": - version "9.7.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-9.7.0.tgz#9897cdefd629cd88af67b8dbe2e5fb19c63426b2" - integrity sha512-TUJ16DJU8mekne6+KVcMV5g6g/rJlrnIKn7aALG9QrNpnEipFc1xjoarh0PKaAWf2Hf+HwthRKYt+9mCm5RsRg== +"@octokit/openapi-types@^11.2.0": + version "11.2.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" + integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== -"@octokit/plugin-paginate-rest@^2.13.3", "@octokit/plugin-paginate-rest@^2.13.5", "@octokit/plugin-paginate-rest@^2.6.2": - version "2.15.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.15.0.tgz#9c956c3710b2bd786eb3814eaf5a2b17392c150d" - integrity sha512-/vjcb0w6ggVRtsb8OJBcRR9oEm+fpdo8RJk45khaWw/W0c8rlB2TLCLyZt/knmC17NkX7T9XdyQeEY7OHLSV1g== +"@octokit/plugin-paginate-rest@^2.13.3", "@octokit/plugin-paginate-rest@^2.13.5", "@octokit/plugin-paginate-rest@^2.16.8", "@octokit/plugin-paginate-rest@^2.6.2": + version "2.17.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz#32e9c7cab2a374421d3d0de239102287d791bce7" + integrity sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw== dependencies: - "@octokit/types" "^6.23.0" + "@octokit/types" "^6.34.0" -"@octokit/plugin-request-log@^1.0.2": +"@octokit/plugin-request-log@^1.0.2", "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== @@ -2725,12 +2714,12 @@ "@octokit/types" "^6.12.2" deprecation "^2.3.1" -"@octokit/plugin-rest-endpoint-methods@5.7.0", "@octokit/plugin-rest-endpoint-methods@^5.1.1", "@octokit/plugin-rest-endpoint-methods@^5.3.3": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.7.0.tgz#80b69452c17597738d4692c79829b72d9e72ccec" - integrity sha512-G7sgccWRYQMwcHJXkDY/sDxbXeKiZkFQqUtzBCwmrzCNj2GQf3VygQ4T/BFL2crLVpIbenkE/c0ErhYOte2MPw== +"@octokit/plugin-rest-endpoint-methods@^5.1.1", "@octokit/plugin-rest-endpoint-methods@^5.12.0", "@octokit/plugin-rest-endpoint-methods@^5.3.3": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" + integrity sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA== dependencies: - "@octokit/types" "^6.24.0" + "@octokit/types" "^6.34.0" deprecation "^2.3.1" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": @@ -2743,15 +2732,15 @@ once "^1.4.0" "@octokit/request@^5.3.0", "@octokit/request@^5.4.14", "@octokit/request@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.1.tgz#f97aff075c37ab1d427c49082fefeef0dba2d8ce" - integrity sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ== + version "5.6.3" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" + integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.16.1" is-plain-object "^5.0.0" - node-fetch "^2.6.1" + node-fetch "^2.6.7" universal-user-agent "^6.0.0" "@octokit/rest@18.3.5": @@ -2765,36 +2754,36 @@ "@octokit/plugin-rest-endpoint-methods" "4.13.5" "@octokit/rest@^18.7.0": - version "18.9.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.9.0.tgz#e5cc23fa199a2bdeea9efbe6096f81d7d6156fe9" - integrity sha512-VrmrE8gjpuOoDAGjrQq2j9ZhOE6LxaqxaQg0yMrrEnnQZy2ZcAnr5qbVfKsMF0up/48PRV/VFS/2GSMhA7nTdA== + version "18.12.0" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" + integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== dependencies: - "@octokit/core" "^3.5.0" - "@octokit/plugin-paginate-rest" "^2.6.2" - "@octokit/plugin-request-log" "^1.0.2" - "@octokit/plugin-rest-endpoint-methods" "5.7.0" + "@octokit/core" "^3.5.1" + "@octokit/plugin-paginate-rest" "^2.16.8" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^5.12.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.16.1", "@octokit/types@^6.16.6", "@octokit/types@^6.23.0", "@octokit/types@^6.24.0": - version "6.25.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.25.0.tgz#c8e37e69dbe7ce55ed98ee63f75054e7e808bf1a" - integrity sha512-bNvyQKfngvAd/08COlYIN54nRgxskmejgywodizQNyiKoXmWRAjKup2/LYwm+T9V0gsKH6tuld1gM0PzmOiB4Q== +"@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.12.2", "@octokit/types@^6.16.1", "@octokit/types@^6.16.6", "@octokit/types@^6.34.0": + version "6.34.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" + integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== dependencies: - "@octokit/openapi-types" "^9.5.0" + "@octokit/openapi-types" "^11.2.0" "@opentelemetry/api@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.2.tgz#921e1f2b2484b762d77225a8a25074482d93fccf" - integrity sha512-DCF9oC89ao8/EJUqrp/beBlDR8Bp2R43jqtzayqCoomIvkwTuPfLcHdVhIGRR69GFlkykFjcDW+V92t0AS7Tww== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.0.4.tgz#a167e46c10d05a07ab299fc518793b0cff8f6924" + integrity sha512-BuJuXRSJNQ3QoKA6GWWDyuLpOUck+9hAXNMCnrloc1aWVoy6Xq6t9PUV08aBZ4Lutqq2LEHM486bpZqoViScog== -"@opentelemetry/semantic-conventions@^0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-0.22.0.tgz#e91751bd2eb4f49344172bac62ba87c9390f93e9" - integrity sha512-t4fKikazahwNKmwD+CE/icHyuZldWvNMupJhjxdk9T/KxHFx3zCGjHT3MKavwYP6abzgAAm5WwzD1oHlmj7dyg== +"@opentelemetry/semantic-conventions@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.0.1.tgz#9349c3860a53468fa2108b5df09aa843f22dbf94" + integrity sha512-7XU1sfQ8uCVcXLxtAHA8r3qaLJ2oq7sKtEwzZhzuEXqYmjW+n+J4yM3kNo0HQo3Xp1eUe47UM6Wy6yuAvIyllg== "@phenomnomnominal/tsquery@^4.0.0": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" - integrity sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-4.2.0.tgz#7742ff4af12ce673b0b601ba5515c934f1876b14" + integrity sha512-hR2U3uVcrrdkuG30ItQ+uFDs4ncZAybxWG0OjTE8ptPzVoU7GVeXpy+vMU8zX9EbmjGeITPw/su5HjYQyAH8bA== dependencies: esquery "^1.0.1" @@ -2851,31 +2840,10 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@rollup/plugin-babel@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz#9cb1c5146ddd6a4968ad96f209c50c62f92f9879" - integrity sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-commonjs@^20.0.0": - version "20.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz#3246872dcbcb18a54aaa6277a8c7d7f1b155b745" - integrity sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - "@rollup/plugin-commonjs@^21.0.0": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.0.tgz#b9e4342855ea20b5528f4587b9a90f642196a502" - integrity sha512-XDQimjHl0kNotAV5lLo34XoygaI0teqiKGJ100B3iCU8+15YscJPeqk2KqkqD3NIe1H8ZTUo5lYjUFZyEgASTw== + version "21.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz#1e57c81ae1518e4df0954d681c642e7d94588fee" + integrity sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg== dependencies: "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" @@ -2885,10 +2853,10 @@ magic-string "^0.25.7" resolve "^1.17.0" -"@rollup/plugin-node-resolve@^13.0.4", "@rollup/plugin-node-resolve@^13.0.5": - version "13.0.5" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz#016abe58796a4ff544d6beac7818921e3d3777fc" - integrity sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ== +"@rollup/plugin-node-resolve@^13.1.3": + version "13.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.3.tgz#2ed277fb3ad98745424c1d2ba152484508a92d79" + integrity sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" @@ -2906,25 +2874,10 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rushstack/node-core-library@3.41.0": - version "3.41.0" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.41.0.tgz#36f79ecf1a3c9b417690d95bbfcdf40390bf5f51" - integrity sha512-JxdmqR+SHU04jTDaZhltMZL3/XTz2ZZM47DTN+FSPUGUVp6WmxLlvJnT5FoHrOZWUjL/FoIlZUdUPTSXjTjIcg== - dependencies: - "@types/node" "12.20.24" - colors "~1.2.1" - fs-extra "~7.0.1" - import-lazy "~4.0.0" - jju "~1.4.0" - resolve "~1.17.0" - semver "~7.3.0" - timsort "~0.3.0" - z-schema "~3.18.3" - -"@rushstack/node-core-library@3.42.1": - version "3.42.1" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.42.1.tgz#b076cd9af03ab678df35f3172386804677991fc7" - integrity sha512-XwCM9UwvWxxA5usz5Qk/qnO5ilIJNBdGTntLbXI3bZW+LR1I9a9iG1BSJWB7dNij2eFs2I2kPm8E6ttOd8ODiw== +"@rushstack/node-core-library@3.45.0": + version "3.45.0" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.0.tgz#8c86b39271b6d84260b1e70db87e1e265b54f620" + integrity sha512-YMuIJl19vQT1+g/OU9mLY6T5ZBT9uDlmeXExDQACpGuxTJW+LHNbk/lRX+eCApQI2eLBlaL4U68r3kZlqwbdmw== dependencies: "@types/node" "12.20.24" colors "~1.2.1" @@ -2934,51 +2887,33 @@ resolve "~1.17.0" semver "~7.3.0" timsort "~0.3.0" - z-schema "~3.18.3" + z-schema "~5.0.2" -"@rushstack/rig-package@0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.1.tgz#b70ab9ffe3b6347eb799f5c6c5b6f5882039a60f" - integrity sha512-DXQmrPWOCNoE2zPzHCShE1y47FlgbAg48wpaY058Qo/yKDzL0GlEGf5Ra2NIt22pMcp0R/HHh+kZGbqTnF4CrA== +"@rushstack/rig-package@0.3.7": + version "0.3.7" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.7.tgz#3fa564b1d129d28689dd4309502792b15e84bf81" + integrity sha512-pzMsTSeTC8IiZ6EJLr53gGMvhT4oLWH+hxD7907cHyWuIUlEXFtu/2pK25vUQT13nKp5DJCWxXyYoGRk/h6rtA== dependencies: resolve "~1.17.0" strip-json-comments "~3.1.1" -"@rushstack/rig-package@0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.2.tgz#128afc04647471b3abf341dc3d03fc1530cf37ed" - integrity sha512-lJbud9zBY8+OOjkeQ+4zIVCvt2I8y1C3WcVx3g6NJgjf0pi6IYfbAWXXG+mVzevQmqanNCLyhyXSNP3E6u5OvQ== - dependencies: - resolve "~1.17.0" - strip-json-comments "~3.1.1" - -"@rushstack/ts-command-line@4.10.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.10.1.tgz#ec2532c4d0ff9fb76f4aabdff96321d95be92324" - integrity sha512-FhWnQCjHtxmZr5sVEgoV1VHTFaPfJXQbVwujAaZUzuFfgqX+v2P9o0AXmUi/LED4tmPJp7A1nVgPx0ClyGUbWA== +"@rushstack/ts-command-line@4.10.6": + version "4.10.6" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.10.6.tgz#5669e481e4339ceb4e1428183eb0937d3bc3841b" + integrity sha512-Y3GkUag39sTIlukDg9mUp8MCHrrlJ27POrBNRQGc/uF+VVgX8M7zMzHch5zP6O1QVquWgD7Engdpn2piPYaS/g== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" colors "~1.2.1" string-argv "~0.3.1" -"@rushstack/ts-command-line@4.9.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.9.1.tgz#9fe594a408c7ef1b67f57b41ba931ecd3f420e92" - integrity sha512-zzoWB6OqVbMjnxlxbAUqbZqDWITUSHqwFCx7JbH5CVrjR9kcsB4NeWkN1I8GcR92beiOGvO3yPlB2NRo5Ugh+A== +"@schematics/angular@14.0.0-next.3": + version "14.0.0-next.3" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-14.0.0-next.3.tgz#213e240e6b4b2ce5f1cc0dc768463420f588659e" + integrity sha512-EoCJI0dHLwGqW/VvmViFtNiOF1LMOO8PmO3cAB+TbZ86ti0Mg/kG8B5kN5IO4SxEW/W2QU7lX4kE286aYjjzuw== dependencies: - "@types/argparse" "1.0.38" - argparse "~1.0.9" - colors "~1.2.1" - string-argv "~0.3.1" - -"@schematics/angular@13.0.0-next.7": - version "13.0.0-next.7" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.0.0-next.7.tgz#b8d3ee053d23d49f75db5ea375cdf82df0800695" - integrity sha512-CvpWN4h7Vo4ynu3WfxLr2Ev3ziVl/xKLmyKrUNlXKUK4yl9J2jIyYCs5oA+tXV7BT/sVIJe4+MSRKVUc+XV/+Q== - dependencies: - "@angular-devkit/core" "13.0.0-next.7" - "@angular-devkit/schematics" "13.0.0-next.7" + "@angular-devkit/core" "14.0.0-next.3" + "@angular-devkit/schematics" "14.0.0-next.3" jsonc-parser "3.0.0" "@sindresorhus/is@^0.14.0": @@ -2992,24 +2927,14 @@ integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== "@sindresorhus/is@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.1.tgz#d26729db850fa327b7cacc5522252194404226f5" - integrity sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g== - -"@stylelint/postcss-css-in-js@^0.37.2": - version "0.37.2" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2" - integrity sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA== - dependencies: - "@babel/core" ">=7.9.0" + version "4.4.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.4.0.tgz#e277e5bdbdf7cb1e20d320f02f5e2ed113cd3185" + integrity sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ== -"@stylelint/postcss-markdown@^0.36.2": - version "0.36.2" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391" - integrity sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ== - dependencies: - remark "^13.0.0" - unist-util-find-all-after "^3.0.2" +"@socket.io/base64-arraybuffer@~1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#568d9beae00b0d835f4f8c53fd55714986492e61" + integrity sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ== "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -3030,6 +2955,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@tsconfig/node10@^1.0.7": version "1.0.8" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" @@ -3051,9 +2981,9 @@ integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== "@types/archiver@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/archiver/-/archiver-5.1.1.tgz#d6d7610de4386b293abd5c1cb1875e0a4f4e1c30" - integrity sha512-heuaCk0YH5m274NOLSi66H1zX6GtZoMsdE6TYFcpFFjBjg0FoU4i4/M/a/kNlgNg26Xk3g364mNOYe1JaiEPOQ== + version "5.3.1" + resolved "https://registry.yarnpkg.com/@types/archiver/-/archiver-5.3.1.tgz#02991e940a03dd1a32678fead4b4ca03d0e387ca" + integrity sha512-wKYZaSXaDvTZuInAWjCeGG7BEAgTWG2zZW0/f7IYFcoHB2X2d9lkVFnrOlXl3W6NrvO6Ml3FLLu8Uksyymcpnw== dependencies: "@types/glob" "*" @@ -3062,10 +2992,10 @@ resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== -"@types/babel__core@^7.1.16": - version "7.1.16" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702" - integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ== +"@types/babel__core@^7.1.18": + version "7.1.18" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" + integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -3074,9 +3004,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.3" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5" - integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA== + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" @@ -3095,15 +3025,30 @@ dependencies: "@babel/types" "^7.3.0" -"@types/browser-sync@^2.26.1": - version "2.26.2" - resolved "https://registry.yarnpkg.com/@types/browser-sync/-/browser-sync-2.26.2.tgz#0a58bf50d26c009aaff8826f2a6d16d5d97581ba" - integrity sha512-IG8hyEIoK+lWLcXFiTo8m9RuN5/nWQVYNdSTtD/V2pxsVuP4XvmL4dcwufYrzw2IqRH+QEmCeCyyq4StJ8PpLw== +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" + +"@types/browser-sync@^2.26.3": + version "2.26.3" + resolved "https://registry.yarnpkg.com/@types/browser-sync/-/browser-sync-2.26.3.tgz#d8a2c316144b55d5cb11328b7cb63dc1778de524" + integrity sha512-HIiI438D8q/DXFhdc2JELRMPtuHmR+0q+QNwP/mQoItHvPi7LK+bkZC7amKrSpnB2t4ct8BRd32LtOfd6TMNIw== dependencies: "@types/micromatch" "^2" "@types/node" "*" "@types/serve-static" "*" - chokidar "^2.1.2" + chokidar "^3.0.0" "@types/btoa-lite@^1.0.0": version "1.0.0" @@ -3120,115 +3065,151 @@ "@types/node" "*" "@types/responselike" "*" +"@types/component-emitter@^1.2.10": + version "1.2.11" + resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506" + integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ== + +"@types/connect-history-api-fallback@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/cookie@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" + integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + +"@types/cors@^2.8.12": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + "@types/duplexify@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.0.tgz#dfc82b64bd3a2168f5bd26444af165bf0237dcd8" - integrity sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A== + version "3.6.1" + resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.1.tgz#5685721cf7dc4a21b6f0e8a8efbec6b4d2fbafad" + integrity sha512-n0zoEj/fMdMOvqbHxmqnza/kXyoGgJmEpsXjpP+gEqE1Ye4yNqc7xWipKnUoMpWhMuzJQSfK2gMrwlElly7OGQ== dependencies: "@types/node" "*" -"@types/eslint-scope@^3.7.0": - version "3.7.1" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e" - integrity sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g== +"@types/eslint-scope@^3.7.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.1.tgz#50b07747f1f84c2ba8cd394cf0fe0ba07afce320" - integrity sha512-XhZKznR3i/W5dXqUhgU9fFdJekufbeBd5DALmkuXoeFcjbQcPk+2cL+WLHf6Q81HWAnM2vrslIHpGVyCAviRwg== + version "8.4.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" + integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.50": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== +"@types/estree@*", "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/fs-extra@^9.0.5": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.12.tgz#9b8f27973df8a7a3920e8461517ebf8a7d4fdfaf" - integrity sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.28" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" + integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== dependencies: "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" -"@types/glob@*", "@types/glob@^7.1.3": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== +"@types/fs-extra@^9.0.13": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + +"@types/glob@*", "@types/glob@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" -"@types/google.maps@^3.45.6": - version "3.45.6" - resolved "https://registry.yarnpkg.com/@types/google.maps/-/google.maps-3.45.6.tgz#441a7bc76424243b307596fc8d282a435a979ebd" - integrity sha512-BzGzxs8UXFxeP8uN/0nRgGbsbpYQxSCKsv/7S8OitU7wwhfFcqQSm5aAcL1nbwueMiJ/VVmIZKPq69s0kX5W+Q== +"@types/google.maps@^3.47.3": + version "3.47.4" + resolved "https://registry.yarnpkg.com/@types/google.maps/-/google.maps-3.47.4.tgz#3316cdf048706f03838431e7c394eecc02de2157" + integrity sha512-wgNs0Cb0SpWMBmD5WV560bQ++sdtAOqR6V6qQIA5jZFORLsxat4kVkXOOg7KDFqHwNgYpg36Vai2zXUCTmbtnQ== "@types/http-cache-semantics@*": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== -"@types/http-proxy@^1.17.5": - version "1.17.7" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.7.tgz#30ea85cc2c868368352a37f0d0d3581e24834c6f" - integrity sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w== +"@types/http-proxy@^1.17.8": + version "1.17.8" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" + integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== dependencies: "@types/node" "*" -"@types/inquirer@^7.3.1": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-7.3.3.tgz#92e6676efb67fa6925c69a2ee638f67a822952ac" - integrity sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ== - dependencies: - "@types/through" "*" - rxjs "^6.4.0" - "@types/is-windows@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/is-windows/-/is-windows-1.0.0.tgz#1011fa129d87091e2f6faf9042d6704cdf2e7be0" integrity sha512-tJ1rq04tGKuIJoWIH0Gyuwv4RQ3+tIu7wQrC0MV47raQ44kIzXSSFKfrxFUOWVRvesoF7mrTqigXmqoZJsXwTg== "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== -"@types/jasmine@^3.6.0": - version "3.8.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.8.2.tgz#27ab0aaac29581bcbde5774e1843f90df977078e" - integrity sha512-u5h7dqzy2XpXTzhOzSNQUQpKGFvROF8ElNX9P/TJvsHnTg/JvsAseVsGWQAQQldqanYaM+5kwxW909BBFAUYsg== +"@types/jasmine@^3.10.3": + version "3.10.3" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.10.3.tgz#a89798b3d5a8bd23ca56e855a9aee3e5a93bdaaa" + integrity sha512-SWyMrjgdAUHNQmutvDcKablrJhkDLy4wunTme8oYLjKp41GnHGxMRXr2MQMvy/qy8H3LdzwQk9gH4hZ6T++H8g== -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8": +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.9" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== -"@types/json-schema@^7.0.6": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" - integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== - "@types/jsonwebtoken@^8.3.3": - version "8.5.4" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz#50ccaf0aa6f5d7b9956e70fe323b76e582991913" - integrity sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg== + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44" + integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A== dependencies: "@types/node" "*" "@types/keyv@*": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.2.tgz#5d97bb65526c20b6e0845f6b0d2ade4f28604ee5" - integrity sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" + integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== dependencies: "@types/node" "*" @@ -3247,24 +3228,10 @@ resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.1.tgz#aceeb2d5be8fccf541237e184e37ecff5faa9096" integrity sha512-cPiXpOvPFDr2edMnOXlz3UBDApwUfR+cpizvxCy0n3vp9bz/qe8BWzHPIEFcy+ogUOyjKuCISgyq77ELZPmkkg== -"@types/marked@^2.0.0": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/marked/-/marked-2.0.4.tgz#34a0ea548afe6e0c01095229d47b48b2af650613" - integrity sha512-L9VRSe0Id8xbPL99mUo/4aKgD7ZoRwFZqUQScNKHi2pFjF9ZYSMNShUHD6VlMT6J/prQq0T1mxuU25m3R7dFzg== - -"@types/mdast@^3.0.0": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.7.tgz#cba63d0cc11eb1605cea5c0ad76e02684394166b" - integrity sha512-YwR7OK8aPmaBvMMUi+pZXBNoW2unbVbfok4YRqGMJBe1dpDlzpRkJrYEYmvjxgs5JhuQmKfDexrN98u941Zasg== - dependencies: - "@types/unist" "*" - -"@types/merge2@^0.3.30": - version "0.3.30" - resolved "https://registry.yarnpkg.com/@types/merge2/-/merge2-0.3.30.tgz#9e39d04f6fe4f36fa7477566cad1faf80b2a671f" - integrity sha1-njnQT2/k82+nR3VmytH6+AsqZx8= - dependencies: - "@types/node" "*" +"@types/marked@^2.0.0": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/marked/-/marked-2.0.5.tgz#453e27f1e97199d45bb25297b0dd2b9bbc1e05ea" + integrity sha512-shRZ7XnYFD/8n8zSjKvFdto1QNSf4tONZIlNEZGrJe8GsOE8DL/hG1Hbl8gZlfLnjS7+f5tZGIaTgfpyW38h4w== "@types/micromatch@^2": version "2.3.31" @@ -3289,17 +3256,17 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node-fetch@^2.5.5": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== + version "2.6.1" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" + integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== dependencies: "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "16.4.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.8.tgz#ef4974f47524448428542365db2fe7b638f928e5" - integrity sha512-VL7RZyCpfYEmbyd3/Eq5RNYhZt7yoL1JThZQ3KzimzhLya2Qa86U1ZZmioNWAAjiz99z1ED1xF9NUV2srvfVrA== +"@types/node@*", "@types/node@>=10.0.0", "@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "17.0.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.19.tgz#726171367f404bfbe8512ba608a09ebad810c7e6" + integrity sha512-PfeQhvcMR4cPFVuYfBN4ifG7p9c+Dlh3yUZR6k+5yQK7wX3gDgVxBly4/WkBRs9x4dmcy1TVl08SY67wwtEvmA== "@types/node@12.20.24": version "12.20.24" @@ -3311,10 +3278,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== -"@types/node@^14.14.22": - version "14.17.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.6.tgz#cc61c8361c89e70c468cda464d1fa3dd7e5ebd62" - integrity sha512-iBxsxU7eswQDGhlr3AiamBxOssaYxbM+NKXVil8jg9yFXvrfEFbDumLD/2dMTB+zYyg7w+Xjt8yuxfdbUHAtcQ== +"@types/node@^16.10.9": + version "16.11.25" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.25.tgz#bb812b58bacbd060ce85921250d8b4ca553cd4a2" + integrity sha512-NrTwfD7L1RTc2qrHQD4RTTy4p0CO2LatKBEKEds3CaVuhoM/+DJzmWZl5f+ikR8cm8F5mfJxK+9rQq07gRiSjQ== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3331,10 +3298,10 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/parse5@^6.0.0": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.1.tgz#f8ae4fbcd2b9ba4ff934698e28778961f9cb22ca" - integrity sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA== +"@types/parse5@^6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== "@types/puppeteer-core@^5.4.0": version "5.4.0" @@ -3355,6 +3322,16 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -3374,10 +3351,10 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== -"@types/sass@^1.16.0": - version "1.16.1" - resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.16.1.tgz#cf465bd1fea486d0331f760db023de14daf4980d" - integrity sha512-iZUcRrGuz/Tbg3loODpW7vrQJkUtpY2fFSf4ELqqkApcS2TkZ1msk7ie8iZPB86lDOP8QOTTmuvWjc5S0R9OjQ== +"@types/sass@^1.43.1": + version "1.43.1" + resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68" + integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g== dependencies: "@types/node" "*" @@ -3386,19 +3363,26 @@ resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.19.tgz#28ecede76f15b13553b4e86074d4cf9a0bbe49c4" integrity sha512-OFUilxQg+rWL2FMxtmIgCkUDlJB6pskkpvmew7yeXfzzsOBb5rc+y2+DjHm+r3r1ZPPcJefK3DveNSYWGiy68g== -"@types/semver@^7.3.4": - version "7.3.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.8.tgz#508a27995498d7586dcecd77c25e289bfaf90c59" - integrity sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now== +"@types/semver@^7.3.9": + version "7.3.9" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc" + integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ== -"@types/send@^0.14.5": - version "0.14.7" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.14.7.tgz#ee6224edd5a593d7f553235f350569accb56a4af" - integrity sha512-WCUMbzWW1sTEZX31cRMcBxflUXX/JmAYejhjxXtrLGn+vd/yyFjHh/F9FIigAEjE2LauhfH94BT7NJj9Ru2Wlg== +"@types/send@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== dependencies: "@types/mime" "^1" "@types/node" "*" +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" + "@types/serve-static@*": version "1.13.10" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" @@ -3407,40 +3391,27 @@ "@types/mime" "^1" "@types/node" "*" -"@types/shelljs@^0.8.9": - version "0.8.9" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.9.tgz#45dd8501aa9882976ca3610517dac3831c2fbbf4" - integrity sha512-flVe1dvlrCyQJN/SGrnBxqHG+RzXrVKsmjD8WS/qYHpq5UPjfq7UWFBENP0ZuOl0g6OpAlL6iBoLSvKYUUmyQw== +"@types/shelljs@^0.8.11": + version "0.8.11" + resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.11.tgz#17a5696c825974e96828e96e89585d685646fcb8" + integrity sha512-x9yaMvEh5BEaZKeVQC4vp3l+QoFj3BXcd4aYfuKSzIIyihjdVARAadYy3SMNIz0WCCdS2vB9JL/U6GQk5PaxQw== dependencies: "@types/glob" "*" "@types/node" "*" -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/stylelint@^13.13.2": - version "13.13.2" - resolved "https://registry.yarnpkg.com/@types/stylelint/-/stylelint-13.13.2.tgz#7a8a99bdbe19187b973a290dd3f821cfe5caff6e" - integrity sha512-5Yt1LQenR7uk+efCydQmN7ubOtO2qJ8Z9K/qqnlW87X1zkIQ8RkMCZbaOgZj/aBrR/h5Q738mJU6CYhXOj9sEg== - dependencies: - globby "11.x.x" - postcss "7.x.x" - -"@types/through@*": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" - integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== dependencies: "@types/node" "*" "@types/tmp@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.1.tgz#83ecf4ec22a8c218c71db25f316619fe5b986011" - integrity sha512-7cTXwKP/HLOPVgjg+YhBdQ7bMiobGMuoBmrGmqwIWJv8elC6t1DfVc/mn4fD9UE1IjhwmhaQ5pGVXkmXbH0rhg== + version "0.2.3" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.3.tgz#908bfb113419fd6a42273674c00994d40902c165" + integrity sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA== -"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": +"@types/unist@*", "@types/unist@^2.0.0": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== @@ -3461,20 +3432,18 @@ "@types/unist" "*" "@types/vfile-message" "*" -"@types/webpack-sources@^0.1.5": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.9.tgz#da69b06eb34f6432e6658acb5a6893c55d983920" - integrity sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.6.1" - "@types/which@^1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@types/which/-/which-1.3.2.tgz#9c246fc0c93ded311c8512df2891fb41f6227fdf" integrity sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA== +"@types/ws@^8.2.2": + version "8.2.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.2.3.tgz#0bca6b03ba2f41e0fab782d4a573fe284aa907ae" + integrity sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ== + dependencies: + "@types/node" "*" + "@types/yaml@^1.9.7": version "1.9.7" resolved "https://registry.yarnpkg.com/@types/yaml/-/yaml-1.9.7.tgz#2331f36e0aac91311a63d33eb026c21687729679" @@ -3487,10 +3456,10 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== -"@types/yargs@^17.0.0": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.2.tgz#8fb2e0f4cdc7ab2a1a570106e56533f31225b584" - integrity sha512-JhZ+pNdKMfB0rXauaDlrIvm+U7V4m03PPOSVoPS66z8gf+G4Z/UW8UlrVIj2MRQOBzuoEvYtjS0bqYwnpZaS9Q== +"@types/yargs@^17.0.0", "@types/yargs@^17.0.8": + version "17.0.8" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.8.tgz#d23a3476fd3da8a0ea44b5494ca7fa677b9dad4c" + integrity sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw== dependencies: "@types/yargs-parser" "*" @@ -3501,35 +3470,35 @@ dependencies: "@types/node" "*" -"@types/youtube@^0.0.42": - version "0.0.42" - resolved "https://registry.yarnpkg.com/@types/youtube/-/youtube-0.0.42.tgz#c3568e3e82e04cbd00cac3b66564ebcd21fd9d90" - integrity sha512-Nqo3HMPFPcNyZ7HNFZJjpH+N4yXqpxBItG+41e7nL9zednovMRZMXWj36CctSznbBcbj6ucvkJDo5iZ8SKqLIw== +"@types/youtube@^0.0.46": + version "0.0.46" + resolved "https://registry.yarnpkg.com/@types/youtube/-/youtube-0.0.46.tgz#925afdf741f35279114da7c58c98013868a949f5" + integrity sha512-Yf1Y4bDj/QIn8v+zdy0l7+OW6s1uoUvzVn5cGqPNCsL4iUW4gYUlIdQIRtH9NOHVgwZNLbVeeRDEn6N4RMq6Nw== -"@typescript-eslint/types@4.28.5": - version "4.28.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.5.tgz#d33edf8e429f0c0930a7c3d44e9b010354c422e9" - integrity sha512-MruOu4ZaDOLOhw4f/6iudyks/obuvvZUAHBDSW80Trnc5+ovmViLT2ZMDXhUV66ozcl6z0LJfKs1Usldgi/WCA== +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/typescript-estree@^4.8.2": - version "4.28.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.5.tgz#4906d343de693cf3d8dcc301383ed638e0441cd1" - integrity sha512-FzJUKsBX8poCCdve7iV7ShirP8V+ys2t1fvamVeD1rWpiAnIm550a+BX/fmTHrjEpQJ7ZAn+Z7ZZwJjytk9rZw== +"@typescript-eslint/typescript-estree@^4.33.0", "@typescript-eslint/typescript-estree@^4.8.2": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== dependencies: - "@typescript-eslint/types" "4.28.5" - "@typescript-eslint/visitor-keys" "4.28.5" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" debug "^4.3.1" globby "^11.0.3" is-glob "^4.0.1" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.28.5": - version "4.28.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.5.tgz#ffee2c602762ed6893405ee7c1144d9cc0a29675" - integrity sha512-dva/7Rr+EkxNWdJWau26xU/0slnFlkh88v3TsyTgRS/IIYFi5iIfpCFM4ikw0vQTFUR9FYSSyqgK4w64gsgxhg== +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== dependencies: - "@typescript-eslint/types" "4.28.5" + "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" "@wdio/config@6.12.1": @@ -3691,6 +3660,11 @@ "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" +"@xmldom/xmldom@^0.7.3": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d" + integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A== + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -3701,7 +3675,7 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -"@yarnpkg/lockfile@1.1.0": +"@yarnpkg/lockfile@1.1.0", "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== @@ -3741,33 +3715,38 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-import-assertions@^1.7.6: version "1.8.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-walk@^8.1.1: +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.4.1: - version "8.5.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" - integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= +acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== adjust-sourcemap-loader@^4.0.0: version "4.0.0" @@ -3794,10 +3773,10 @@ agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: dependencies: debug "4" -agentkeepalive@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b" - integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ== +agentkeepalive@^4.1.3, agentkeepalive@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== dependencies: debug "^4.1.0" depd "^1.1.2" @@ -3811,7 +3790,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-formats@2.1.1: +ajv-formats@2.1.1, ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== @@ -3823,17 +3802,24 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@8.6.3: - version "8.6.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" - integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@8.10.0, ajv@^8.0.0, ajv@^8.0.1, ajv@^8.8.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" + integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6, ajv@~6.12.6: +ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6, ajv@~6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3843,29 +3829,19 @@ ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6, ajv@~6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.0.1: - version "8.6.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.2.tgz#2fb45e0e5fcbc0813326c1c3da535d1881bb0571" - integrity sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - string-width "^3.0.0" + string-width "^4.1.0" -ansi-colors@4.1.1: +ansi-colors@4.1.1, ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== @@ -3902,10 +3878,10 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.0.1" @@ -3936,14 +3912,6 @@ ansicolors@~0.3.2: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -3962,10 +3930,10 @@ app-root-path@^3.0.0: resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.0.0.tgz#210b6f43873227e18a4b810a032283311555d5ad" integrity sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw== -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== arch@^2.1.0: version "2.2.0" @@ -4008,13 +3976,13 @@ archiver@^5.0.0: tar-stream "^2.2.0" zip-stream "^4.1.0" -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== +are-we-there-yet@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" + integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== dependencies: delegates "^1.0.0" - readable-stream "^2.0.6" + readable-stream "^3.6.0" arg@^4.1.0: version "4.1.3" @@ -4041,21 +4009,6 @@ aria-query@^3.0.0: ast-types-flow "0.0.7" commander "^2.11.0" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -4076,11 +4029,6 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -4093,16 +4041,16 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +array-union@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - arraybuffer.slice@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" @@ -4138,9 +4086,9 @@ asap@^2.0.3: integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" @@ -4149,12 +4097,7 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-module-types@^2.3.2, ast-module-types@^2.4.0, ast-module-types@^2.7.0, ast-module-types@^2.7.1: +ast-module-types@^2.3.2, ast-module-types@^2.4.0, ast-module-types@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-2.7.1.tgz#3f7989ef8dfa1fdb82dfe0ab02bdfc7c77a57dd3" integrity sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw== @@ -4181,11 +4124,6 @@ async-each-series@0.1.1: resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" integrity sha1-dhfBkXQB/Yykooqtzj266Yr+tDI= -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -4208,10 +4146,10 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -async@^3.1.0, async@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== +async@^3.2.0, async@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" + integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== async@~1.0.0: version "1.0.0" @@ -4233,43 +4171,17 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.2.5: - version "10.3.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.3.1.tgz#954214821d3aa06692406c6a0a9e9d401eafbed2" - integrity sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A== - dependencies: - browserslist "^4.16.6" - caniuse-lite "^1.0.30001243" - colorette "^1.2.2" - fraction.js "^4.1.1" - normalize-range "^0.1.2" - postcss-value-parser "^4.1.0" - -autoprefixer@^9.6.1: - version "9.8.8" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" - integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - picocolors "^0.2.1" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -autoprefixer@^9.8.6: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== +autoprefixer@^10.4.2: + version "10.4.2" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" + integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - colorette "^1.2.1" + browserslist "^4.19.1" + caniuse-lite "^1.0.30001297" + fraction.js "^4.1.2" normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" aws-sign2@~0.7.0: version "0.7.0" @@ -4281,17 +4193,17 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axe-core@^4.2.3: - version "4.3.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.2.tgz#fcf8777b82c62cfc69c7e9f32c0d2226287680e7" - integrity sha512-5LMaDRWm8ZFPAEdzTYmgjjEdj1YnQcpfrVajO/sn/LhbpGp0Y0H64c2hLZI1gRMxfA+w1S71Uc/nHaOXgcCvGg== +axe-core@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" + integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== -axios@0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== +axios@0.21.4: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.0" axobject-query@2.0.2: version "2.0.2" @@ -4300,10 +4212,10 @@ axobject-query@2.0.2: dependencies: ast-types-flow "0.0.7" -babel-loader@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== +babel-loader@8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" + integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== dependencies: find-cache-dir "^3.3.1" loader-utils "^1.4.0" @@ -4317,29 +4229,40 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +babel-plugin-istanbul@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz#2779846a16a1652244ae268b1e906ada107faf92" - integrity sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw== +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.16.2" + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.3.1" backo2@1.0.2: version "1.0.2" @@ -4381,18 +4304,10 @@ base64id@1.0.0: resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY= -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== basic-auth-connect@^1.0.0: version "1.0.0" @@ -4440,9 +4355,9 @@ better-assert@~1.0.0: callsite "1.0.0" big-integer@^1.6.17: - version "1.6.48" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" - integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== big.js@^5.2.2: version "5.2.2" @@ -4450,9 +4365,9 @@ big.js@^5.2.2: integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== bignumber.js@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" - integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== + version "9.0.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== bin-check@^4.1.0: version "4.1.0" @@ -4491,11 +4406,6 @@ bin-wrapper@^4.1.0: os-filter-obj "^2.0.0" pify "^4.0.1" -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -4509,13 +4419,6 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bl@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" @@ -4550,31 +4453,26 @@ blocking-proxy@^1.0.0: dependencies: minimist "^1.2.0" -bluebird@^3.3.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - bluebird@~3.4.1: version "3.4.7" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= -body-parser@1.19.0, body-parser@^1.16.1, body-parser@^1.18.3, body-parser@^1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +body-parser@1.19.2, body-parser@^1.18.3, body-parser@^1.19.0: + version "1.19.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "1.7.2" + http-errors "1.8.1" iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + qs "6.9.7" + raw-body "2.4.3" + type-is "~1.6.18" bonjour@^3.5.0: version "3.5.0" @@ -4588,10 +4486,15 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + boolean@^3.0.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.1.2.tgz#e30f210a26b02458482a8cc353ab06f262a780c2" - integrity sha512-YN6UmV0FfLlBVvRvNPx3pz5W/mUoYB24J4WSXOKP/OOJpi+Oq6WYqPaNTHzjI0QzwWtnvEd5CGYyQPgp1jFxnw== + version "3.2.0" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== boxen@^4.2.0: version "4.2.0" @@ -4608,15 +4511,15 @@ boxen@^4.2.0: widest-line "^3.1.0" boxen@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" - integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" camelcase "^6.2.0" chalk "^4.1.0" cli-boxes "^2.2.1" - string-width "^4.2.0" + string-width "^4.2.2" type-fest "^0.20.2" widest-line "^3.1.0" wrap-ansi "^7.0.0" @@ -4629,21 +4532,12 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" + balanced-match "^1.0.0" braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" @@ -4652,7 +4546,7 @@ braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browser-sync-client@2.26.13, browser-sync-client@^2.26.13: +browser-sync-client@2.26.13, browser-sync-client@^2.26.13, browser-sync-client@^2.27.7: version "2.26.13" resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.26.13.tgz#ee5fa3ec36fe2a03f9887553cac6846751c8232d" integrity sha512-p2VbZoYrpuDhkreq+/Sv1MkToHklh7T1OaIntDwpG6Iy2q/XkBcgwPcWjX+WwRNiZjN8MEehxIjEUh12LweLmQ== @@ -4662,10 +4556,10 @@ browser-sync-client@2.26.13, browser-sync-client@^2.26.13: mitt "^1.1.3" rxjs "^5.5.6" -browser-sync-ui@^2.26.13: - version "2.27.5" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.27.5.tgz#fe016377edaff7d4a9cb1e8a449cc0807e814884" - integrity sha512-KxBJhQ6XNbQ8w8UlkPa9/J5R0nBHgHuJUtDpEXQx1jBapDy32WGzD0NENDozP4zGNvJUgZk3N80hqB7YCieC3g== +browser-sync-ui@^2.26.13, browser-sync-ui@^2.27.7: + version "2.27.7" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-2.27.7.tgz#38cd65f7ba058544310591ad8ac2e7fdf29934f2" + integrity sha512-Bt4OQpx9p18OIzk0KKyu7jqlvmjacasUlk8ARY3uuIyiFWSBiRgr2i6XY8dEMF14DtbooaEBOpHEu9VCYvMcCw== dependencies: async-each-series "0.1.1" connect-history-api-fallback "^1" @@ -4710,27 +4604,52 @@ browser-sync@2.26.13: ua-parser-js "^0.7.18" yargs "^15.4.1" -browserslist@^4.12.0, browserslist@^4.16.6: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== +browser-sync@^2.27.7: + version "2.27.7" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.27.7.tgz#65ec55d6c6e33283e505e06e5113bc32d9d0a8f0" + integrity sha512-9ElnnA/u+s2Jd+IgY+2SImB+sAEIteHsMG0NR96m7Ph/wztpvJCUpyC2on1KqmG9iAp941j+5jfmd34tEguGbg== dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" + browser-sync-client "^2.27.7" + browser-sync-ui "^2.27.7" + bs-recipes "1.3.4" + bs-snippet-injector "^2.0.1" + chokidar "^3.5.1" + connect "3.6.6" + connect-history-api-fallback "^1" + dev-ip "^1.0.1" + easy-extender "^2.3.4" + eazy-logger "3.1.0" + etag "^1.8.1" + fresh "^0.5.2" + fs-extra "3.0.1" + http-proxy "^1.18.1" + immutable "^3" + localtunnel "^2.0.1" + micromatch "^4.0.2" + opn "5.3.0" + portscanner "2.1.1" + qs "6.2.3" + raw-body "^2.3.2" + resp-modifier "6.0.2" + rx "4.1.0" + send "0.16.2" + serve-index "1.9.1" + serve-static "1.13.2" + server-destroy "1.0.1" + socket.io "2.4.0" + ua-parser-js "1.0.2" + yargs "^15.4.1" -browserslist@^4.14.5, browserslist@^4.17.3, browserslist@^4.6.4, browserslist@^4.9.1: - version "4.17.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.3.tgz#2844cd6eebe14d12384b0122d217550160d2d624" - integrity sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ== +browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.9.1: + version "4.19.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383" + integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg== dependencies: - caniuse-lite "^1.0.30001264" - electron-to-chromium "^1.3.857" + caniuse-lite "^1.0.30001312" + electron-to-chromium "^1.4.71" escalade "^3.1.1" - node-releases "^1.1.77" - picocolors "^0.2.1" + node-releases "^2.0.2" + picocolors "^1.0.0" browserstack-local@^1.3.7: version "1.4.8" @@ -4847,10 +4766,10 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== bytesish@^0.4.1: version "0.4.4" @@ -4876,7 +4795,7 @@ c8@~7.5.0: yargs "^16.0.0" yargs-parser "^20.0.0" -cacache@15.3.0, cacache@^15.2.0: +cacache@15.3.0, cacache@^15.2.0, cacache@^15.3.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -4900,44 +4819,6 @@ cacache@15.3.0, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cacache@^15.0.5: - version "15.2.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.2.0.tgz#73af75f77c58e72d8c630a7a2858cb18ef523389" - integrity sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.0.2" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - cacheable-lookup@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" @@ -4969,7 +4850,7 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -cacheable-request@^7.0.1: +cacheable-request@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== @@ -5036,21 +4917,16 @@ camelcase@^5.0.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001264: - version "1.0.30001265" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz#0613c9e6c922e422792e6fcefdf9a3afeee4f8c3" - integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001243: - version "1.0.30001248" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz#26ab45e340f155ea5da2920dadb76a533cb8ebce" - integrity sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw== +caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001312: + version "1.0.30001312" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" + integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== -canonical-path@1.0.0, canonical-path@^1.0.0: +canonical-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg== @@ -5199,25 +5075,15 @@ character-entities-legacy@^1.0.0: resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== -character-entities@^1.0.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" - integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== - -character-reference-invalid@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" - integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.0.2, chokidar@^3.4.1, chokidar@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.0.2, chokidar@^3.4.1, chokidar@^3.5.1, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -5229,26 +5095,7 @@ chardet@^0.7.0: optionalDependencies: fsevents "~2.3.2" -chokidar@^2.1.2: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1: +chownr@^1.1.1, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -5280,11 +5127,6 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -circular-dependency-plugin@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz#39e836079db1d3cf2f988dc48c5188a44058b600" - integrity sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ== - cjson@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/cjson/-/cjson-0.3.3.tgz#a92d9c786e5bf9b930806329ee05d5d3261b4afa" @@ -5293,24 +5135,14 @@ cjson@^0.3.1: json-parse-helpfulerror "^1.0.3" clang-format@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.5.0.tgz#1bd4c47b66a1a02556b192b93f5505e7ccec84fb" - integrity sha512-C1LucFX7E+ABVYcPEbBHM4PYQ2+WInXsqsLpFlQ9cmRfSbk7A7b1I06h/nE4bQ3MsyEkb31jY2gC0Dtc76b4IA== + version "1.6.0" + resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.6.0.tgz#48fac4387712aeeae0f47b5d72f639f3fd95f4b6" + integrity sha512-W3/L7fWkA8DoLkz9UGjrRnNi+J5a5TuS2HDLqk6WsicpOzb66MBu4eY/EcXhicHriVnAXWQVyk5/VeHWY6w4ow== dependencies: async "^1.5.2" glob "^7.0.0" resolve "^1.1.6" -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -5348,22 +5180,21 @@ cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-progress@^3.7.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.9.0.tgz#25db83447deb812e62d05bac1af9aec5387ef3d4" - integrity sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA== + version "3.10.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.10.0.tgz#63fd9d6343c598c93542fdfa3563a8b59887d78a" + integrity sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw== dependencies: - colors "^1.1.2" string-width "^4.2.0" cli-spinners@^2.0.0, cli-spinners@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" - integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-table@^0.3.1: - version "0.3.6" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" - integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== +cli-table@0.3.11, cli-table@^0.3.1: + version "0.3.11" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" + integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== dependencies: colors "1.0.3" @@ -5428,11 +5259,6 @@ clonedeep@^2.0.0: resolved "https://registry.yarnpkg.com/clonedeep/-/clonedeep-2.0.0.tgz#8ceca0777f477bbf31fe8c871aaf63a390bbc272" integrity sha1-jOygd39He78x/oyHGq9jo5C7wnI= -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - codelyzer@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-6.0.2.tgz#25d72eae641e8ff13ffd7d99b27c9c7ad5d7e135" @@ -5453,15 +5279,7 @@ codelyzer@^6.0.2: tslib "^1.10.0" zone.js "~0.10.3" -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -5485,26 +5303,31 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" - integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== +color-string@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" + integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" - integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" + color-convert "^1.9.3" + color-string "^1.6.0" -colorette@^1.2.1, colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +colord@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== colorette@^2.0.10: version "2.0.16" @@ -5516,7 +5339,7 @@ colors@1.0.3, colors@1.0.x: resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= -colors@^1.1.0, colors@^1.1.2, colors@^1.2.1: +colors@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -5527,11 +5350,11 @@ colors@~1.2.1: integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== colorspace@1.1.x: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" - integrity sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== dependencies: - color "3.0.x" + color "^3.1.3" text-hex "1.0.x" combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: @@ -5571,14 +5394,6 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - compare-semver@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/compare-semver/-/compare-semver-1.1.0.tgz#7c0a79a27bb80b6c6994445f82958259d3d02153" @@ -5596,7 +5411,7 @@ component-emitter@1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= -component-emitter@^1.2.1, component-emitter@~1.3.0: +component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -5676,7 +5491,7 @@ connect@3.6.6: parseurl "~1.3.2" utils-merge "1.0.1" -connect@^3.6.0, connect@^3.6.2: +connect@^3.6.2, connect@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== @@ -5686,7 +5501,7 @@ connect@^3.6.0, connect@^3.6.2: parseurl "~1.3.3" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -5706,156 +5521,24 @@ constant-case@^3.0.4: dependencies: no-case "^3.0.4" tslib "^2.0.3" - upper-case "^2.0.2" - -content-disposition@0.5.3, content-disposition@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@^1.0.4, content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -conventional-changelog-angular@^5.0.12: - version "5.0.12" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" - integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-atom@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz#a759ec61c22d1c1196925fca88fe3ae89fd7d8de" - integrity sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw== - dependencies: - q "^1.5.1" - -conventional-changelog-codemirror@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz#398e9530f08ce34ec4640af98eeaf3022eb1f7dc" - integrity sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw== - dependencies: - q "^1.5.1" - -conventional-changelog-conventionalcommits@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz#7fc17211dbca160acf24687bd2fdd5fd767750eb" - integrity sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A== - dependencies: - compare-func "^2.0.0" - lodash "^4.17.15" - q "^1.5.1" - -conventional-changelog-core@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.3.tgz#ce44d4bbba4032e3dc14c00fcd5b53fc00b66433" - integrity sha512-MwnZjIoMRL3jtPH5GywVNqetGILC7g6RQFvdb8LRU/fA/338JbeWAku3PZ8yQ+mtVRViiISqJlb0sOz0htBZig== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^5.0.0" - conventional-commits-parser "^3.2.0" - dateformat "^3.0.0" - get-pkg-repo "^4.0.0" - git-raw-commits "^2.0.8" - git-remote-origin-url "^2.0.0" - git-semver-tags "^4.1.1" - lodash "^4.17.15" - normalize-package-data "^3.0.0" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^4.0.0" - -conventional-changelog-ember@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz#619b37ec708be9e74a220f4dcf79212ae1c92962" - integrity sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A== - dependencies: - q "^1.5.1" - -conventional-changelog-eslint@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz#689bd0a470e02f7baafe21a495880deea18b7cdb" - integrity sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA== - dependencies: - q "^1.5.1" - -conventional-changelog-express@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz#420c9d92a347b72a91544750bffa9387665a6ee8" - integrity sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ== - dependencies: - q "^1.5.1" - -conventional-changelog-jquery@^3.0.11: - version "3.0.11" - resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz#d142207400f51c9e5bb588596598e24bba8994bf" - integrity sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw== - dependencies: - q "^1.5.1" - -conventional-changelog-jshint@^2.0.9: - version "2.0.9" - resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz#f2d7f23e6acd4927a238555d92c09b50fe3852ff" - integrity sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-preset-loader@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + upper-case "^2.0.2" -conventional-changelog-writer@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.0.tgz#c4042f3f1542f2f41d7d2e0d6cad23aba8df8eec" - integrity sha512-HnDh9QHLNWfL6E1uHz6krZEQOgm8hN7z/m7tT16xwd802fwgMN0Wqd7AQYVkhpsjDUx/99oo+nGgvKF657XP5g== +content-disposition@0.5.4, content-disposition@^0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.6" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" + safe-buffer "5.2.1" -conventional-changelog@^3.0.5: - version "3.1.24" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-3.1.24.tgz#ebd180b0fd1b2e1f0095c4b04fd088698348a464" - integrity sha512-ed6k8PO00UVvhExYohroVPXcOJ/K1N0/drJHx/faTH37OIZthlecuLIRX/T6uOp682CAoVoFpu+sSEaeuH6Asg== - dependencies: - conventional-changelog-angular "^5.0.12" - conventional-changelog-atom "^2.0.8" - conventional-changelog-codemirror "^2.0.8" - conventional-changelog-conventionalcommits "^4.5.0" - conventional-changelog-core "^4.2.1" - conventional-changelog-ember "^2.0.9" - conventional-changelog-eslint "^3.0.9" - conventional-changelog-express "^2.0.6" - conventional-changelog-jquery "^3.0.11" - conventional-changelog-jshint "^2.0.9" - conventional-changelog-preset-loader "^2.3.4" - -conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" +content-type@^1.0.4, content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -conventional-commits-parser@^3.2.0, conventional-commits-parser@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" - integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== +conventional-commits-parser@^3.2.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" @@ -5863,7 +5546,6 @@ conventional-commits-parser@^3.2.0, conventional-commits-parser@^3.2.1: meow "^8.0.0" split2 "^3.0.0" through2 "^4.0.0" - trim-off-newlines "^1.0.0" convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" @@ -5882,65 +5564,54 @@ cookie@0.3.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@0.4.2, cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== copy-anything@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" - integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== dependencies: - is-what "^3.12.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + is-what "^3.14.1" -copy-webpack-plugin@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz#b71d21991599f61a4ee00ba79087b8ba279bbb59" - integrity sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw== +copy-webpack-plugin@10.2.4: + version "10.2.4" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" + integrity sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== dependencies: - fast-glob "^3.2.5" - glob-parent "^6.0.0" - globby "^11.0.3" + fast-glob "^3.2.7" + glob-parent "^6.0.1" + globby "^12.0.2" normalize-path "^3.0.0" - p-limit "^3.1.0" - schema-utils "^3.0.0" + schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-bundle@^3.8.2: - version "3.16.0" - resolved "https://registry.yarnpkg.com/core-js-bundle/-/core-js-bundle-3.16.0.tgz#d017dd1411e06cb534e5bcf048999bbd681364e9" - integrity sha512-AC5Rw9NehcBgC+B8Rg5Hf6b2YwX6mCU9KQyXJMLxR1CEhQ/vZpiAfSUxOkNSS1GxTO/1XxnGsOEwyDBvnhNFYg== - -core-js-compat@^3.16.0, core-js-compat@^3.16.2: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.18.2.tgz#e40c266fbd613948dd8d2d2156345da8ac03c142" - integrity sha512-25VJYCJtGjZwLguj7d66oiHfmnVw3TMOZ0zV8DyMJp/aeQ3OjR519iOOeck08HMyVVRAqXxafc2Hl+5QstJrsQ== +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" + integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== dependencies: - browserslist "^4.17.3" + browserslist "^4.19.1" semver "7.0.0" -core-js@3.18.1: - version "3.18.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.1.tgz#289d4be2ce0085d40fc1244c0b1a54c00454622f" - integrity sha512-vJlUi/7YdlCZeL6fXvWNaLUPh/id12WXj3MbkMw5uOyF0PfWPBNOCNbs53YqgrvtujLNlt9JQpruyIKkUZ+PKA== - -core-js@^3.6.5: - version "3.16.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.16.0.tgz#1d46fb33720bc1fa7f90d20431f36a5540858986" - integrity sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g== +core-js@3.21.1, core-js@^3.6.5: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" + integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cors@^2.8.5: +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@^2.8.5, cors@~2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== @@ -5948,10 +5619,10 @@ cors@^2.8.5: object-assign "^4" vary "^1" -cosmiconfig@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" - integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -5960,12 +5631,12 @@ cosmiconfig@^7.0.0: yaml "^1.10.0" crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" - integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.1.tgz#436d2bcaad27bcb6bd073a2587139d3024a16460" + integrity sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w== dependencies: exit-on-epipe "~1.0.1" - printj "~1.1.0" + printj "~1.3.1" crc32-stream@^4.0.2: version "4.0.2" @@ -5980,15 +5651,16 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -critters@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.10.tgz#edd0e962fc5af6c4adb6dbf1a71bae2d3f917000" - integrity sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw== +critters@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.16.tgz#ffa2c5561a65b43c53b940036237ce72dcebfe93" + integrity sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A== dependencies: chalk "^4.1.0" - css "^3.0.0" + css-select "^4.2.0" parse5 "^6.0.1" parse5-htmlparser2-tree-adapter "^6.0.1" + postcss "^8.3.7" pretty-bytes "^5.3.0" cross-env@^5.1.3: @@ -6018,7 +5690,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -6032,41 +5704,54 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== dependencies: - postcss "^7.0.5" + postcss-selector-parser "^6.0.9" -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== +css-functions-list@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.0.1.tgz#1460df7fb584d1692c30b105151dbb988c8094f9" + integrity sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw== + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" + postcss-selector-parser "^6.0.9" -css-loader@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.3.0.tgz#334d3500ff0a0c14cfbd4b0670088dbb5b5c1530" - integrity sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg== +css-loader@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" + integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== dependencies: icss-utils "^5.1.0" - postcss "^8.2.15" + postcss "^8.4.5" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" - postcss-value-parser "^4.1.0" + postcss-value-parser "^4.2.0" semver "^7.3.5" -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" + integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== dependencies: - postcss "^7.0.5" + boolbase "^1.0.0" + css-what "^5.1.0" + domhandler "^4.3.0" + domutils "^2.8.0" + nth-check "^2.0.1" css-selector-tokenizer@^0.7.1: version "0.7.3" @@ -6086,6 +5771,11 @@ css-value@^0.0.1: resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea" integrity sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo= +css-what@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" + integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== + css@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" @@ -6102,15 +5792,10 @@ cssauron@^1.4.0: dependencies: through X.X.X -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== +cssdb@^6.3.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-6.4.0.tgz#54899b9042e302be3090b8510ea71fefd08c9e6b" + integrity sha512-8NMWrur/ewSNrRNZndbtOTXc2Xb2b+NCTPHj8VErFYvJUlgsMAiBGaFaxG6hjy9zbCjj2ZLwSQrMM+tormO8qA== cssesc@^3.0.0: version "3.0.0" @@ -6143,9 +5828,9 @@ d@1, d@^1.0.1: type "^1.0.1" damerau-levenshtein@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz#64368003512a1a6992593741a09a9d31a836f55d" - integrity sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw== + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== dargs@^7.0.0: version "7.0.0" @@ -6164,32 +5849,27 @@ data-uri-to-buffer@3: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== -date-fns@^2.23.0: - version "2.23.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.23.0.tgz#4e886c941659af0cf7b30fafdd1eaa37e88788a9" - integrity sha512-5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA== - -date-format@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" - integrity sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA== +date-fns@^2.28.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== +date-format@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.3.tgz#f63de5dc08dc02efd8ef32bf2a6918e486f35873" + integrity sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@4.3.2, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +debug@4, debug@4.3.3, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@~4.3.1, debug@~4.3.2: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" @@ -6200,6 +5880,13 @@ debug@4.3.1: dependencies: ms "2.1.2" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@^3.1.1, debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -6214,6 +5901,13 @@ debug@~3.1.0: dependencies: ms "2.0.0" +debug@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -6237,13 +5931,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decomment@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/decomment/-/decomment-0.9.4.tgz#fa40335bd90e3826d5c1984276e390525ff856d5" - integrity sha512-8eNlhyI5cSU4UbBlrtagWpR03dqXcE5IR9zpe7PnO6UzReXDskucsD8usgrzUmQ6qJ3N82aws/p/mu/jqbURWw== - dependencies: - esprima "4.0.1" - decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" @@ -6334,16 +6021,16 @@ deep-freeze@0.0.1: integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.0.0, deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-gateway@^6.0.0: +default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== @@ -6379,36 +6066,15 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -degenerator@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-2.2.0.tgz#49e98c11fa0293c5b26edfbb52f15729afcdb254" - integrity sha512-aiQcQowF01RxFI4ZLFMpzyotbQonhNpBao6dkI8JPk5a+hmSjR5ErHp2CQySmQe8os3VBqLCIh87nDBgZXvsmg== +degenerator@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.2.tgz#6a61fcc42a702d6e50ff6023fe17bff435f68235" + integrity sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ== dependencies: ast-types "^0.13.2" escodegen "^1.8.1" esprima "^4.0.0" + vm2 "^3.9.8" del@^2.2.0: version "2.2.2" @@ -6447,16 +6113,16 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +depd@2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - dependency-graph@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" @@ -6468,13 +6134,13 @@ dependency-graph@^0.7.0: integrity sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ== dependency-tree@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-8.1.1.tgz#1a309f5a860b3285f7b1638c98ce48c8906ae6e6" - integrity sha512-bl5U16VQpaYxD0xvcnCH/dTctCiWnsVWymh9dNjbm4T00Hm21flu1VLnNueKCj7+3uusbcJhKKKtiWrpU0I+Nw== + version "8.1.2" + resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-8.1.2.tgz#c9e652984f53bd0239bc8a3e50cbd52f05b2e770" + integrity sha512-c4CL1IKxkKng0oT5xrg4uNiiMVFqTGOXqHSFx7XEFdgSsp6nw3AGGruICppzJUrfad/r7GLqt26rmWU4h4j39A== dependencies: commander "^2.20.3" debug "^4.3.1" - filing-cabinet "^3.0.0" + filing-cabinet "^3.0.1" precinct "^8.0.0" typescript "^3.9.7" @@ -6483,7 +6149,12 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -destroy@^1.0.4, destroy@~1.0.4: +destroy@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.1.0.tgz#b77ae22e472d85437141319d32ae40b344dff38a" + integrity sha512-R5QZrOXxSs0JDUIU/VANvRJlQVMts9C0L76HToQdPdlftfZCE7W6dyH0G4GZ5UW9fRqUOhAoCE2aGekuu+3HjQ== + +destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= @@ -6493,28 +6164,28 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detective-amd@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-3.1.0.tgz#92daee3214a0ca4522646cf333cac90a3fca6373" - integrity sha512-G7wGWT6f0VErjUkE2utCm7IUshT7nBh7aBBH2VBOiY9Dqy2DMens5iiOvYCuhstoIxRKLrnOvVAz4/EyPIAjnw== +detective-amd@^3.0.1, detective-amd@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-3.1.1.tgz#8ff0b354ce89157a5ee4c1a8c04d74e333b3ae97" + integrity sha512-B/4T8tGIXEuLLBqrKc04qnSLPe5iW/ZubRSbPYAM/6ly/FDh0032iTekFFHycz02EiUfFv0GqV4yhg6A0UMd4g== dependencies: - ast-module-types "^2.7.0" + ast-module-types "^2.7.1" escodegen "^2.0.0" get-amd-module-type "^3.0.0" - node-source-walk "^4.0.0" + node-source-walk "^4.2.0" detective-cjs@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/detective-cjs/-/detective-cjs-3.1.1.tgz#18da3e39a002d2098a1123d45ce1de1b0d9045a0" - integrity sha512-JQtNTBgFY6h8uT6pgph5QpV3IyxDv+z3qPk/FZRDT9TlFfm5dnRtpH39WtQEr1khqsUxVqXzKjZHpdoQvQbllg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/detective-cjs/-/detective-cjs-3.1.2.tgz#b6b7ce647946cdefe136a0fff6973ead2f0f5d0d" + integrity sha512-lEw/irudK033uwdrH7mX5L/knHXps4YtC6OlwN8fZ8j4mPFP6QRkRBHEPgWqk/wVxDdikNGPNBIeI3WRytD+yQ== dependencies: ast-module-types "^2.4.0" node-source-walk "^4.0.0" -detective-es6@^2.1.0, detective-es6@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-2.2.0.tgz#8f2baba3f8cd90a5cfd748f5ac436f0158ed2585" - integrity sha512-fSpNY0SLER7/sVgQZ1NxJPwmc9uCTzNgdkQDhAaj8NPYwr7Qji9QBcmbNvtMCnuuOGMuKn3O7jv0An+/WRWJZQ== +detective-es6@^2.1.0, detective-es6@^2.2.0, detective-es6@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-2.2.1.tgz#090c874e2cdcda677389cc2ae36f0b37faced187" + integrity sha512-22z7MblxkhsIQGuALeGwCKEfqNy4WmgDGmfJCwdXbfDkVYIiIDmY513hiIWBvX3kCmzvvWE7RR7kAYxs01wwKQ== dependencies: node-source-walk "^4.0.0" @@ -6556,9 +6227,9 @@ detective-scss@^2.0.1: node-source-walk "^4.0.0" detective-stylus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-1.0.0.tgz#50aee7db8babb990381f010c63fabba5b58e54cd" - integrity sha1-UK7n24uruZA4HwEMY/q7pbWOVM0= + version "1.0.3" + resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-1.0.3.tgz#20a702936c9fd7d4203fd7a903314b5dd43ac713" + integrity sha512-4/bfIU5kqjwugymoxLXXLltzQNeQfxGoLm2eIaqtnkWxqbhap9puDVpJPVDx96hnptdERzS5Cy6p9N8/08A69Q== detective-typescript@^6.0.0: version "6.0.0" @@ -6571,14 +6242,14 @@ detective-typescript@^6.0.0: typescript "^3.9.7" detective-typescript@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-7.0.0.tgz#8c8917f2e51d9e4ee49821abf759ff512dd897f2" - integrity sha512-y/Ev98AleGvl43YKTNcA2Q+lyFmsmCfTTNWy4cjEJxoLkbobcXtRS0Kvx06daCgr2GdtlwLfNzL553BkktfJoA== + version "7.0.2" + resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-7.0.2.tgz#c6e00b4c28764741ef719662250e6b014a5f3c8e" + integrity sha512-unqovnhxzvkCz3m1/W4QW4qGsvXCU06aU2BAm8tkza+xLnp9SOFnob2QsTxUv5PdnQKfDvWcv9YeOeFckWejwA== dependencies: - "@typescript-eslint/typescript-estree" "^4.8.2" + "@typescript-eslint/typescript-estree" "^4.33.0" ast-module-types "^2.7.1" node-source-walk "^4.2.0" - typescript "^3.9.7" + typescript "^3.9.10" dev-ip@^1.0.1: version "1.0.1" @@ -6605,34 +6276,35 @@ devtools@6.12.1: ua-parser-js "^0.7.21" uuid "^8.0.0" -dgeni-packages@^0.28.4: - version "0.28.4" - resolved "https://registry.yarnpkg.com/dgeni-packages/-/dgeni-packages-0.28.4.tgz#53a3e6700b8d8f6be168cadcc9fdb36e1d7011d3" - integrity sha512-7AUG3pKpWtn69c3v2Mzgh+i5gd+L0AxFfYGWGzBdlJqMlQfaQPQjaS54iYCvnOlK9rXBn9j39yO6EU70gDZuFw== +dgeni-packages@^0.29.3: + version "0.29.3" + resolved "https://registry.yarnpkg.com/dgeni-packages/-/dgeni-packages-0.29.3.tgz#02bb3bc9ba86d54f2c2310cbbb6d528ee6f34dce" + integrity sha512-642D3colBTvUynV1QHb0fHbNMVf0drnAgIYCJjHigGhoy+o1gYxGY5o318CqF4DqH6G9XZ5QB4bq3ou0ugUCtg== dependencies: canonical-path "^1.0.0" catharsis "^0.8.1" change-case "3.0.0" - dgeni "^0.4.9" - espree "^2.2.3" + dgeni "^0.4.14" + eslint "^7.17.0" + espree "^7.3.1" estraverse "^4.1.0" glob "^7.0.5" htmlencode "^0.0.4" htmlparser2 "^3.7.3" - lodash "^4.17.13" + lodash.difference "^4.5.0" + lodash.template "^4.5.0" marked "^0.7.0" minimatch "^3.0.2" mkdirp "^1.0.3" - nunjucks "^3.1.6" + nunjucks "^3.2.2" rehype "^8.0.0" semver "^5.2.0" source-map-support "^0.4.15" spdx-license-list "^2.1.0" - stringmap "^0.2.2" - typescript "^3.2.2" + typescript "~4.5.4" urlencode "^1.1.0" -dgeni@^0.4.11, dgeni@^0.4.9: +dgeni@^0.4.14: version "0.4.14" resolved "https://registry.yarnpkg.com/dgeni/-/dgeni-0.4.14.tgz#d4e2da2eef9fb0bc447c10c3742e641cfdd7ce16" integrity sha512-/zUB1tLlu0/E5Pr/cl2fyKJqmPQoiO1KwahN4QmqS8QAYaHDT6X5ld/vYeO6dpqNlR7TZWXWzpfAnwR3R9scyQ== @@ -6657,11 +6329,6 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -6694,7 +6361,14 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -dom-serialize@^2.2.0: +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serialize@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= @@ -6712,12 +6386,21 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + domelementtype@1, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== @@ -6729,6 +6412,13 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +domhandler@^4.2.0, domhandler@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" + integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== + dependencies: + domelementtype "^2.2.0" + domino@^2.1.2: version "2.1.6" resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" @@ -6742,6 +6432,15 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + dot-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" @@ -6757,7 +6456,7 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dot-prop@^5.1.0, dot-prop@^5.2.0: +dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== @@ -6863,20 +6562,10 @@ ejs@^3.1.6: dependencies: jake "^10.6.1" -electron-to-chromium@^1.3.723: - version "1.3.792" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.792.tgz#791b0d8fcf7411885d086193fb49aaef0c1594ca" - integrity sha512-RM2O2xrNarM7Cs+XF/OE2qX/aBROyOZqqgP+8FXMXSuWuUqCfUUzg7NytQrzZU3aSqk1Qq6zqnVkJsbfMkIatg== - -electron-to-chromium@^1.3.857: - version "1.3.866" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.866.tgz#d446338f5ad6948b27a50739760e7b0b5cc5032f" - integrity sha512-iYze6TpDXWxk+sfcpUUdTs6Pv/3kG45Pnjer2DxEeFw0N08bZeNLuz97s2lMgy8yObon48o0WHY2Bkg3xuAPOA== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +electron-to-chromium@^1.4.71: + version "1.4.71" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" + integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== emoji-regex@^8.0.0: version "8.0.0" @@ -6968,6 +6657,13 @@ engine.io-parser@~2.2.0: blob "0.0.5" has-binary2 "~1.0.2" +engine.io-parser@~5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.3.tgz#ca1f0d7b11e290b4bfda251803baea765ed89c09" + integrity sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg== + dependencies: + "@socket.io/base64-arraybuffer" "~1.0.2" + engine.io@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" @@ -6980,22 +6676,49 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" -enhanced-resolve@^5.3.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz#15ddc779345cbb73e97c611cd00c01c1e7bf4d8b" - integrity sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA== +engine.io@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.5.0.tgz#9d6b985c8a39b1fe87cd91eb014de0552259821b" + integrity sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA== dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" + ws "~7.4.2" + +engine.io@~6.1.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.1.2.tgz#e7b9d546d90c62246ffcba4d88594be980d3855a" + integrity sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ== + dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.0.0" + ws "~8.2.3" enhanced-resolve@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" - integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== + version "5.9.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz#49ac24953ac8452ed8fed2ef1340fc8e043667ee" + integrity sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" @@ -7081,112 +6804,255 @@ es6-weak-map@^2.0.3: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -esbuild-android-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.3.tgz#ef734c76eeff42e8c53acdffe901da090164a890" - integrity sha512-jc9E8vGTHkzb0Vwl74H8liANV9BWsqtzLHaKvcsRgf1M+aVCBSF0gUheduAKfDsbDMT0judeMLhwBP34EUesTA== - -esbuild-darwin-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.3.tgz#35f29376b7451add79f0640980683ef923365385" - integrity sha512-8bG3Zq+ZNuLlIJebOO2+weI7P2LVf33sOzaUfHj8MuJ+1Ixe4KtQxfYp7qhFnP6xP2ToJaYHxGUfLeiUCEz9hw== - -esbuild-darwin-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.3.tgz#530a1326e7d18d62c9a54b6dce70f2b77ed50eec" - integrity sha512-5E81eImYtTgh8pY7Gq4WQHhWkR/LvYadUXmuYeZBiP+3ADZJZcG60UFceZrjqNPaFOWKr/xmh4aNocwagEubcA== - -esbuild-freebsd-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.3.tgz#ce2896ac362e06eb82ca5dec06b2568901eb5afc" - integrity sha512-ou+f91KkTGexi8HvF/BdtsITL6plbciQfZGys7QX6/QEwyE96PmL5KnU6ZQwoU7E99Ts6Sc9bUDq8HXJubKtBA== - -esbuild-freebsd-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.3.tgz#a20454f99e060bea4e465d131556a9f0533f403f" - integrity sha512-F1zV7nySjHswJuvIgjkiG5liZ63MeazDGXGKViTCeegjZ71sAhOChcaGhKcu6vq9+vqZxlfEi1fmXlx6Pc3coQ== - -esbuild-linux-32@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.3.tgz#ad56f18208ecf007cd9ab16cd39626ca0312b8ee" - integrity sha512-mHHc2v6uLrHH4zaaq5RB/5IWzgimEJ1HGldzf1qtGI513KZWfH0HRRQ8p1di4notJgBn7tDzWQ1f34ZHy69viQ== - -esbuild-linux-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.3.tgz#be1eabadf68d153897ed887678f7496d3949810f" - integrity sha512-FJ1De2O89mrOuqtaEXu41qIYJU6R41F+OA6vheNwcAQcX8fu0aiA13FJeLABq29BYJuTVgRj3cyC8q+tz19/dQ== - -esbuild-linux-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.3.tgz#329348bb4a19cfb5e9046cc5d97ba5017d8f74ad" - integrity sha512-Cauhr45KSo+wRUojs+1qfycQqQCAXTOvsWvkZ6xmEMAXLAm+f8RQGDQeP8CAf8Yeelnegcn6UNdvzdzLHhWDFg== - -esbuild-linux-arm@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.3.tgz#b3b3167c9d5d3038894fbc75b194a4fbe93eaf09" - integrity sha512-9BJNRtLwBh3OP22cln9g3AJdbAQUcjRHqA4BScx9k4RZpGqPokFr548zpeplxWhcwrIjT8qPebwH9CrRVy8Bsw== - -esbuild-linux-mips64le@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.3.tgz#ea1687f28ea2c85399ecc2fe23a48ab343b7b35d" - integrity sha512-YVzJUGCncuuLm2boYyVeuMFsak4ZAhdiBwi0xNDZCC8sy+tS6Boe2mzcrD2uubv5JKAUOrpN186S1DtU4WgBgw== - -esbuild-linux-ppc64le@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.3.tgz#a462cf42eae3d7fc29a9f277679f5adee70afa67" - integrity sha512-GU6CqqKtJEoyxC2QWHiJtmuOz9wc/jMv8ZloK2WwiGY5yMvAmM3PI103Dj7xcjebNTHBqITTUw/aigY1wx5A3w== - -esbuild-openbsd-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.3.tgz#0cb15bd86d20eb19cb548b530f1a533197532cf9" - integrity sha512-HVpkgpn4BQt4BPDAjTOpeMub6mzNWw6Y3gaLQJrpbO24pws6ZwYkY24OI3/Uo3LDCbH6856MM81JxECt92OWjA== - -esbuild-sunos-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.3.tgz#53a941241f881010969cc8f1acb1ada49c4cd3c2" - integrity sha512-XncBVOtnEfUbPV4CaiFBxh38ychnBfwCxuTm9iAqcHzIwkmeNRN5qMzDyfE1jyfJje+Bbt6AvIfz6SdYt8/UEQ== - -esbuild-wasm@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.13.3.tgz#241b261b5cc0d0bf18e205b7d625675f31be78d8" - integrity sha512-kkTvRzVeE8U2oewyeEyrMJAv53zsYLNF4xLsXWZt8yvV9+HEM0TlaLAszvRBdHpqoxDSliLJIvU1TatQn33gXQ== - -esbuild-windows-32@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.3.tgz#265dc0d0cdb5374685a851c584857055e12865a4" - integrity sha512-ZlgDz7d1nk8wQACi+z8IDzNZVUlN9iprAme+1YSTsfFDlkyI8jeaGWPk9EQFNY7rJzsLVYm6eZ2mhPioc7uT5A== - -esbuild-windows-64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.3.tgz#ae710c0629ec8c39c5ef1f69e86ed5592bb4128f" - integrity sha512-YX7KvRez3TR+GudlQm9tND/ssj2FsF9vb8ZWzAoZOLxpPzE3y+3SFJNrfDzzQKPzJ0Pnh9KBP4gsaMwJjKHDhw== - -esbuild-windows-arm64@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.3.tgz#a236199a26b1205573dcb571f966189326a4c953" - integrity sha512-nP7H0Y2a6OJd3Qi1Q8sehhyP4x4JoXK4S5y6FzH2vgaJgiyEurzFxjUufGdMaw+RxtxiwD/uRndUgwaZ2JD8lg== - -esbuild@0.13.3, esbuild@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.3.tgz#cc9fc347fc81ff6440cdd1fdb9fe65c02eddcc97" - integrity sha512-98xovMLKnyhv3gcReUuAEi5Ig1rK6SIgvsJuBIcfwzqGSEHsV8UJjMlmkhHoHMf9XZybMpE9Zax8AA8f7i2hlQ== +esbuild-android-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303" + integrity sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ== + +esbuild-android-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz#c89b3c50b4f47668dcbeb0b34ee4615258818e71" + integrity sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw== + +esbuild-darwin-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz#615ea0a9de67b57a293a7128d7ac83ee307a856d" + integrity sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw== + +esbuild-darwin-64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz#1c131e8cb133ed935ca32f824349a117c896a15b" + integrity sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug== + +esbuild-darwin-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz#82054dcfcecb15ccfd237093b8008e7745a99ad9" + integrity sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw== + +esbuild-darwin-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz#3c6245a50109dd84953f53d7833bd3b4f0e8c6fa" + integrity sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw== + +esbuild-freebsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz#778a818c5b078d5cdd6bb6c0e0797217d196999b" + integrity sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A== + +esbuild-freebsd-64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz#0cdc54e72d3dd9cd992f9c2960055e68a7f8650c" + integrity sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA== + +esbuild-freebsd-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz#18da93b9f3db2e036f72383bfe73b28b73bb332c" + integrity sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ== + +esbuild-freebsd-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz#1d11faed3a0c429e99b7dddef84103eb509788b2" + integrity sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg== + +esbuild-linux-32@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz#d0d5d9f5bb3536e17ac097e9512019c65b7c0234" + integrity sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg== + +esbuild-linux-32@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz#fd9f033fc27dcab61100cb1eb1c936893a68c841" + integrity sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ== + +esbuild-linux-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz#2773d540971999ea7f38107ef92fca753f6a8c30" + integrity sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg== + +esbuild-linux-64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz#c04c438514f1359ecb1529205d0c836d4165f198" + integrity sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ== + +esbuild-linux-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz#5d4480ce6d6bffab1dd76a23158f5a5ab33e7ba4" + integrity sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A== + +esbuild-linux-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz#d1b3ab2988ab0734886eb9e811726f7db099ab96" + integrity sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g== + +esbuild-linux-arm@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz#c6391b3f7c8fa6d3b99a7e893ce0f45f3a921eef" + integrity sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g== + +esbuild-linux-arm@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz#df7558b6a5076f5eb9fd387c8704f768b61d97fb" + integrity sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw== + +esbuild-linux-mips64le@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz#2c8dabac355c502e86c38f9f292b3517d8e181f3" + integrity sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ== + +esbuild-linux-mips64le@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz#bb4c47fccc9493d460ffeb1f88e8a97a98a14f8b" + integrity sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw== + +esbuild-linux-ppc64le@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz#69d71b2820d5c94306072dac6094bae38e77d1c0" + integrity sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng== + +esbuild-linux-ppc64le@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz#a332dbc8a1b4e30cfe1261bfaa5cef57c9c8c02a" + integrity sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag== + +esbuild-linux-riscv64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz#c0ec0fc3a23624deebf657781550d2329cec4213" + integrity sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ== + +esbuild-linux-riscv64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz#85675f3f931f5cd7cfb238fd82f77a62ffcb6d86" + integrity sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg== + +esbuild-linux-s390x@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz#ec2af4572d63336cfb27f5a5c851fb1b6617dd91" + integrity sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw== + +esbuild-linux-s390x@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz#a526282a696e6d846f4c628f5315475518c0c0f0" + integrity sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA== + +esbuild-netbsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz#0e283278e9fdbaa7f0930f93ee113d7759cd865e" + integrity sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA== + +esbuild-netbsd-64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz#8e456605694719aa1be4be266d6cd569c06dfaf5" + integrity sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g== + +esbuild-openbsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz#2a73bba04e16d8ef278fbe2be85248e12a2f2cc2" + integrity sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA== + +esbuild-openbsd-64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz#f2fc51714b4ddabc86e4eb30ca101dd325db2f7d" + integrity sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA== + +esbuild-sunos-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz#8fe03513b8b2e682a6d79d5e3ca5849651a3c1d8" + integrity sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g== + +esbuild-sunos-64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz#a408f33ea20e215909e20173a0fd78b1aaad1f8e" + integrity sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g== + +esbuild-wasm@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz#9671d1355473b6688d00fe8ef6fa50274eff5465" + integrity sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw== + +esbuild-wasm@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.23.tgz#b1e9fed66362ad9f82fcf897265ee005778b9fa2" + integrity sha512-w1qhGLvUaPXiigGWIEGcnMmN/FxQ6VDLnHQIOpf29Qh9z6x4qe4gmsQyUbFBW6UsWsw/E8OJDE0XRtiV/0siYQ== + +esbuild-windows-32@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz#a75df61e3e49df292a1842be8e877a3153ee644f" + integrity sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg== + +esbuild-windows-32@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz#b9005bbff54dac3975ff355d5de2b5e37165d128" + integrity sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA== + +esbuild-windows-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz#d06cf8bbe4945b8bf95a730d871e54a22f635941" + integrity sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw== + +esbuild-windows-64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz#2b5a99befeaca6aefdad32d738b945730a60a060" + integrity sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g== + +esbuild-windows-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz#f8b1b05c548073be8413a5ecb12d7c2f6e717227" + integrity sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg== + +esbuild-windows-arm64@0.14.23: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz#edc560bbadb097eb45fc235aeacb942cb94a38c0" + integrity sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw== + +esbuild@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.22.tgz#2b55fde89d7aa5aaaad791816d58ff9dfc5ed085" + integrity sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA== optionalDependencies: - esbuild-android-arm64 "0.13.3" - esbuild-darwin-64 "0.13.3" - esbuild-darwin-arm64 "0.13.3" - esbuild-freebsd-64 "0.13.3" - esbuild-freebsd-arm64 "0.13.3" - esbuild-linux-32 "0.13.3" - esbuild-linux-64 "0.13.3" - esbuild-linux-arm "0.13.3" - esbuild-linux-arm64 "0.13.3" - esbuild-linux-mips64le "0.13.3" - esbuild-linux-ppc64le "0.13.3" - esbuild-openbsd-64 "0.13.3" - esbuild-sunos-64 "0.13.3" - esbuild-windows-32 "0.13.3" - esbuild-windows-64 "0.13.3" - esbuild-windows-arm64 "0.13.3" + esbuild-android-arm64 "0.14.22" + esbuild-darwin-64 "0.14.22" + esbuild-darwin-arm64 "0.14.22" + esbuild-freebsd-64 "0.14.22" + esbuild-freebsd-arm64 "0.14.22" + esbuild-linux-32 "0.14.22" + esbuild-linux-64 "0.14.22" + esbuild-linux-arm "0.14.22" + esbuild-linux-arm64 "0.14.22" + esbuild-linux-mips64le "0.14.22" + esbuild-linux-ppc64le "0.14.22" + esbuild-linux-riscv64 "0.14.22" + esbuild-linux-s390x "0.14.22" + esbuild-netbsd-64 "0.14.22" + esbuild-openbsd-64 "0.14.22" + esbuild-sunos-64 "0.14.22" + esbuild-windows-32 "0.14.22" + esbuild-windows-64 "0.14.22" + esbuild-windows-arm64 "0.14.22" + +esbuild@0.14.23, esbuild@^0.14.14: + version "0.14.23" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.23.tgz#95e842cb22bc0c7d82c140adc16788aac91469fe" + integrity sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig== + optionalDependencies: + esbuild-android-arm64 "0.14.23" + esbuild-darwin-64 "0.14.23" + esbuild-darwin-arm64 "0.14.23" + esbuild-freebsd-64 "0.14.23" + esbuild-freebsd-arm64 "0.14.23" + esbuild-linux-32 "0.14.23" + esbuild-linux-64 "0.14.23" + esbuild-linux-arm "0.14.23" + esbuild-linux-arm64 "0.14.23" + esbuild-linux-mips64le "0.14.23" + esbuild-linux-ppc64le "0.14.23" + esbuild-linux-riscv64 "0.14.23" + esbuild-linux-s390x "0.14.23" + esbuild-netbsd-64 "0.14.23" + esbuild-openbsd-64 "0.14.23" + esbuild-sunos-64 "0.14.23" + esbuild-windows-32 "0.14.23" + esbuild-windows-64 "0.14.23" + esbuild-windows-arm64 "0.14.23" escalade@^3.1.1: version "3.1.1" @@ -7249,7 +7115,7 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-scope@5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -7257,27 +7123,89 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + eslint-visitor-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -espree@^2.2.3: - version "2.2.5" - resolved "https://registry.yarnpkg.com/espree/-/espree-2.2.5.tgz#df691b9310889402aeb29cc066708c56690b854b" - integrity sha1-32kbkxCIlAKuspzAZnCMVmkLhUs= +eslint@^7.17.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= -esprima@4.0.1, esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.0.1, esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -7302,9 +7230,9 @@ estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^1.0.1: version "1.0.1" @@ -7471,30 +7399,17 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - express@^4.16.4, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + version "4.17.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.19.2" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.4.2" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" @@ -7508,13 +7423,13 @@ express@^4.16.4, express@^4.17.1: on-finished "~2.3.0" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.9.7" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" statuses "~1.5.0" type-is "~1.6.18" utils-merge "1.0.1" @@ -7536,26 +7451,11 @@ ext-name@^5.0.0: sort-keys-length "^1.0.0" ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" + type "^2.5.0" extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: version "3.0.2" @@ -7571,20 +7471,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - extract-zip@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" @@ -7602,9 +7488,9 @@ extsprintf@1.3.0: integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== eyes@0.1.x: version "0.1.8" @@ -7621,10 +7507,10 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.5: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -7637,16 +7523,11 @@ fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-safe-stringify@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" - integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== - fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53" @@ -7670,9 +7551,9 @@ fastparse@^1.1.2: integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== fastq@^1.6.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" - integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" @@ -7741,11 +7622,6 @@ file-type@^8.1.0: resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - file-uri-to-path@2: version "2.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" @@ -7777,35 +7653,24 @@ filesize@^6.1.0: resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== -filing-cabinet@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-3.0.0.tgz#08f9ceec5134f4a662926dd45b8a26eca1b5f622" - integrity sha512-o8Qac5qxZ1uVidR4Sd7ZQbbqObFZlqXU4xu1suAYg9PQPcQFNTzOmxQa/MehIDMgIvXHTb42mWPNV9l3eHBPSw== +filing-cabinet@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-3.1.0.tgz#3f2a347f0392faad772744de099e25b6dd6f86fd" + integrity sha512-ZFutWTo14Z1xmog76UoQzDKEza1fSpqc+HvUN6K6GILrfhIn6NbR8fHQktltygF+wbt7PZ/EvfLK6yJnebd40A== dependencies: app-module-path "^2.2.0" commander "^2.20.3" - debug "^4.3.1" - decomment "^0.9.3" - enhanced-resolve "^5.3.2" + debug "^4.3.3" + enhanced-resolve "^5.8.3" is-relative-path "^1.0.2" module-definition "^3.3.1" - module-lookup-amd "^7.0.0" - resolve "^1.19.0" + module-lookup-amd "^7.0.1" + resolve "^1.21.0" resolve-dependency-path "^2.0.0" sass-lookup "^3.0.0" stylus-lookup "^3.0.1" typescript "^3.9.7" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -7839,7 +7704,7 @@ finalhandler@1.1.2, finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@3.3.2, find-cache-dir@^3.3.1: +find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -7848,13 +7713,6 @@ find-cache-dir@3.3.2, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -7879,9 +7737,9 @@ find-versions@^3.0.0: semver-regex "^2.0.0" firebase-tools@^9.2.1: - version "9.16.0" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-9.16.0.tgz#e6a1f5bf5efeb8fd940612815bb3b28810fe63bc" - integrity sha512-H/zyDDrQuZKM6ZFyI8t2kDEC+/Ewhk771sM8NLZyEXIQnX5qKAwhi3sJUB+5yrXt+SJQYqUYksBLK6/gqxe9Eg== + version "9.23.3" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-9.23.3.tgz#a20d0b17bbac07a220faafe8ee37cf36ea07c358" + integrity sha512-J1S/T96rL3vKObDtTuBkop9JtW3vYnfwyU83NopiuOy9oPBRxFkitgzk034qGrpGyZvDA6Do6ZHI50taB3hrEg== dependencies: "@google-cloud/pubsub" "^2.7.0" "@types/archiver" "^5.1.0" @@ -7893,7 +7751,7 @@ firebase-tools@^9.2.1: chokidar "^3.0.2" cjson "^0.3.1" cli-color "^1.2.0" - cli-table "^0.3.1" + cli-table "0.3.11" commander "^4.0.1" configstore "^5.0.1" cors "^2.8.5" @@ -7924,7 +7782,7 @@ firebase-tools@^9.2.1: ora "^3.4.0" portfinder "^1.0.23" progress "^2.0.3" - proxy-agent "^4.0.0" + proxy-agent "^5.0.0" request "^2.87.0" rimraf "^3.0.0" semver "^5.7.1" @@ -7937,7 +7795,7 @@ firebase-tools@^9.2.1: universal-analytics "^0.4.16" unzipper "^0.10.10" update-notifier "^5.1.0" - uuid "^3.0.0" + uuid "^8.3.2" winston "^3.0.0" winston-transport "^4.4.0" ws "^7.2.3" @@ -7960,15 +7818,10 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatted@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" - integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== +flatted@^3.1.0, flatted@^3.2.4: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== flatten@^1.0.2: version "1.0.3" @@ -7980,15 +7833,10 @@ fn.name@1.x.x: resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -follow-redirects@^1.0.0, follow-redirects@^1.10.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +follow-redirects@^1.0.0, follow-redirects@^1.14.0: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== foreground-child@^2.0.0: version "2.0.0" @@ -8026,17 +7874,10 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.1.tgz#ac4e520473dae67012d618aab91eda09bcb400ff" - integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" +fraction.js@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.3.tgz#be65b0f20762ef27e1e793860bc2dfb716e99e65" + integrity sha512-pUHWWt6vHzZZiQJcM6S/0PXfS+g6FM4BF5rj9wZyreivhQPdsh5PpE25VtSNxq80wHS5RfY51Ii+8Z0Zl/pmzg== fresh@0.5.2, fresh@^0.5.2: version "0.5.2" @@ -8070,6 +7911,15 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" @@ -8079,15 +7929,6 @@ fs-extra@^5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^7.0.1, fs-extra@~7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -8107,7 +7948,16 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^1.2.5: +fs-extra@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== @@ -8131,14 +7981,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -8167,6 +8009,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + furi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/furi/-/furi-2.0.0.tgz#13d85826a1af21acc691da6254b3888fc39f0b4a" @@ -8175,35 +8022,36 @@ furi@^2.0.0: "@types/is-windows" "^1.0.0" is-windows "^1.0.2" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= +gauge@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.1.tgz#82984bc08c90357d60b0a46c03a296beb1affec4" + integrity sha512-zJ4jePUHR8cceduZ53b6temRalyGpkC2Kc2r3ecNphmL+uWNoJ3YcOcUjpbG6WwoE/Ef6/+aEZz63neI2WIa1Q== dependencies: - aproba "^1.0.3" + ansi-regex "^5.0.1" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" + has-unicode "^2.0.1" signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" gaxios@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.3.0.tgz#ad4814d89061f85b97ef52aed888c5dbec32f774" - integrity sha512-pHplNbslpwCLMyII/lHPWFQbJWOX0B3R1hwBEOvzYi1GmdKZruuEHK4N9V6f7tf1EaPYyF80mui1+344p6SmLg== + version "4.3.2" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.3.2.tgz#845827c2dc25a0213c8ab4155c7a28910f5be83f" + integrity sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q== dependencies: abort-controller "^3.0.0" extend "^3.0.2" https-proxy-agent "^5.0.0" is-stream "^2.0.0" - node-fetch "^2.3.0" + node-fetch "^2.6.1" gcp-metadata@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.0.tgz#0423d06becdbfb9cbb8762eaacf14d5324997900" - integrity sha512-L9XQUpvKJCM76YRSmcxrR4mFPzPGsgZUH+GgHMxAET8qc6+BhRJq63RLhWakgEO2KKVgeSDVfyiNjkGSADwNTA== + version "4.3.1" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" + integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== dependencies: gaxios "^4.0.0" json-bigint "^1.0.0" @@ -8240,15 +8088,10 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-pkg-repo@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.1.2.tgz#c4ffd60015cf091be666a0212753fc158f01a4c0" - integrity sha512-/FjamZL9cBYllEbReZkxF2IMh80d8TJoC4e3bmLNif8ibHw95aj0N/tzqK0kZz9eU/3w3dL6lF4fnnX/sDdW3A== - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - hosted-git-info "^4.0.0" - meow "^7.0.0" - through2 "^2.0.0" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-port@^5.1.1: version "5.1.1" @@ -8311,11 +8154,6 @@ get-uri@3: fs-extra "^8.1.0" ftp "^0.3.10" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -8323,10 +8161,10 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -git-raw-commits@^2.0.10, git-raw-commits@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" - integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== +git-raw-commits@^2.0.10: + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== dependencies: dargs "^7.0.0" lodash "^4.17.15" @@ -8334,37 +8172,6 @@ git-raw-commits@^2.0.10, git-raw-commits@^2.0.8: split2 "^3.0.0" through2 "^4.0.0" -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" - integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== - dependencies: - meow "^8.0.0" - semver "^6.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= - dependencies: - ini "^1.3.2" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -8372,7 +8179,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.0: +glob-parent@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -8398,7 +8205,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.2.0: +glob@7.2.0, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0, glob@~7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -8421,18 +8228,6 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-agent@^2.1.12: version "2.2.0" resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.2.0.tgz#566331b0646e6bf79429a16877685c4a1fbf76dc" @@ -8481,6 +8276,13 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^13.6.0, globals@^13.9.0: + version "13.12.1" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" + integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== + dependencies: + type-fest "^0.20.2" + globalthis@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" @@ -8488,18 +8290,30 @@ globalthis@^1.0.1: dependencies: define-properties "^1.1.3" -globby@11.x.x, globby@^11.0.1, globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== +globby@^11.0.1, globby@^11.0.3, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" +globby@^12.0.2: + version "12.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" + integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== + dependencies: + array-union "^3.0.1" + dir-glob "^3.0.1" + fast-glob "^3.2.7" + ignore "^5.1.9" + merge2 "^1.4.1" + slash "^4.0.0" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -8517,7 +8331,7 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= -gonzales-pe@^4.2.3, gonzales-pe@^4.3.0: +gonzales-pe@^4.2.3: version "4.3.0" resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== @@ -8539,10 +8353,10 @@ google-auth-library@^6.1.3: jws "^4.0.0" lru-cache "^6.0.0" -google-auth-library@^7.0.0, google-auth-library@^7.3.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.4.1.tgz#1565d6a4f11171e4f7a54bf8b5eaa664d99fe0fe" - integrity sha512-TNLFbGKZZKIzOLHKaSXCo1pSZQ1ZOaAZZPkVKQa4MM7vrRNfHGzRTwE2WDxWAow/35kJP1710ZTMY4Qf3jH3Gw== +google-auth-library@^7.0.0, google-auth-library@^7.6.1: + version "7.12.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.12.0.tgz#7965db6bc20cb31f2df05a08a296bbed6af69426" + integrity sha512-RS/whvFPMoF1hQNxnoVET3DWKPBt1Xgqe2rY0k+Jn7TNhoHlwdnSe7Rlcbo2Nub3Mt2lUVz26X65aDQrWp6x8w== dependencies: arrify "^2.0.0" base64-js "^1.3.0" @@ -8554,47 +8368,48 @@ google-auth-library@^7.0.0, google-auth-library@^7.3.0: jws "^4.0.0" lru-cache "^6.0.0" -google-gax@^2.17.1: - version "2.20.0" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.20.0.tgz#559c2d8d990ccc0f0bdc6708626f8f22f99bbb9b" - integrity sha512-V5aaN8cvnE77atybA7CaQTa0tGV6ZqncRGvpObEGpadSps2NIzTPXCtngxgPz7cGz1KhABl1VmSLUlRXGgjX+g== +google-gax@2.29.6: + version "2.29.6" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.29.6.tgz#ba049cf8cbe6d543908286b58648ac98bb1351e6" + integrity sha512-NsuGBpxOzvBS4rbaeicIpgZ1caU3vNcG04kJWb51rlcYJvzXwHgPof9w4UplR2WVqlFzLkDtEStQOKhS/QcLmA== dependencies: - "@grpc/grpc-js" "~1.3.0" + "@grpc/grpc-js" "~1.5.0" "@grpc/proto-loader" "^0.6.1" "@types/long" "^4.0.0" abort-controller "^3.0.0" duplexify "^4.0.0" fast-text-encoding "^1.0.3" - google-auth-library "^7.3.0" + google-auth-library "^7.6.1" is-stream-ended "^0.1.4" node-fetch "^2.6.1" object-hash "^2.1.1" - protobufjs "^6.10.2" + proto3-json-serializer "^0.1.8" + protobufjs "6.11.2" retry-request "^4.0.0" -google-p12-pem@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.1.tgz#98fb717b722d12196a3e5b550c44517562269859" - integrity sha512-e9CwdD2QYkpvJsktki3Bm8P8FSGIneF+/42a9F9QHcQvJ73C2RoYZdrwRl6BhwksWtzl65gT4OnBROhUIFw95Q== +google-p12-pem@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.3.tgz#5497998798ee86c2fc1f4bb1f92b7729baf37537" + integrity sha512-MC0jISvzymxePDVembypNefkAQp+DRP7dBE+zNUPaIjEspIlYg0++OrsNr248V9tPbz6iqtZ7rX1hxWA5B8qBQ== dependencies: - node-forge "^0.10.0" + node-forge "^1.0.0" google-protobuf@^3.6.1: - version "3.17.3" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.17.3.tgz#f87595073545a77946c8f0b67c302c5f7646d700" - integrity sha512-OVPzcSWIAJ+d5yiHyeaLrdufQtrvaBrF4JQg+z8ynTkbO3uFcujqXszTumqg1cGsAsjkWnI+M5B1xZ19yR4Wyg== + version "3.19.4" + resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.4.tgz#8d32c3e34be9250956f28c0fb90955d13f311888" + integrity sha512-OIPNCxsG2lkIvf+P5FNfJ/Km95CsXOBecS9ZcAU6m2Rq3svc0Apl9nB3GMDNKfQ9asNv4KjyAqGwPQFrVle3Yg== got@^11.0.2, got@^11.7.0: - version "11.8.2" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" - integrity sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ== + version "11.8.3" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.3.tgz#f496c8fdda5d729a90b4905d2b07dbd148170770" + integrity sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" cacheable-lookup "^5.0.3" - cacheable-request "^7.0.1" + cacheable-request "^7.0.2" decompress-response "^6.0.0" http2-wrapper "^1.0.0-beta.5.2" lowercase-keys "^2.0.0" @@ -8641,15 +8456,10 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -graceful-fs@^4.2.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== +graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== grapheme-splitter@^1.0.2: version "1.0.4" @@ -8664,12 +8474,12 @@ graphviz@0.0.9: temp "~0.4.0" gtoken@^5.0.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.0.tgz#6536eb2880d9829f0b9d78f756795d4d9064b217" - integrity sha512-mCcISYiaRZrJpfqOs0QWa6lfEM/C1V9ASkzFmuz43XBb5s1Vynh+CZy1ECeeJXVGx2PRByjYzb4Y4/zr1byr0w== + version "5.3.2" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" + integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== dependencies: gaxios "^4.0.0" - google-p12-pem "^3.0.3" + google-p12-pem "^3.1.3" jws "^4.0.0" handle-thing@^2.0.0: @@ -8677,7 +8487,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.0.1, handlebars@^4.7.6: +handlebars@^4.0.1: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== @@ -8770,42 +8580,11 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.0: +has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - has-yarn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" @@ -8879,9 +8658,9 @@ hastscript@^5.0.0: space-separated-tokens "^1.0.0" hdr-histogram-js@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.1.tgz#ecb1ff2bcb6181c3e93ff4af9472c28c7e97284e" - integrity sha512-uPZxl1dAFnjUFHWLZmt93vUUvtHeaBay9nVNHu38SdOjMSF/4KqJUqa1Seuj08ptU1rEb6AHvB41X8n/zFZ74Q== + version "2.0.3" + resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5" + integrity sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g== dependencies: "@assemblyscript/loader" "^0.10.1" base64-js "^1.2.0" @@ -8923,10 +8702,10 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" - integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== +hosted-git-info@^4.0.1, hosted-git-info@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" @@ -8965,7 +8744,7 @@ htmlencode@^0.0.4: resolved "https://registry.yarnpkg.com/htmlencode/-/htmlencode-0.0.4.tgz#f7e2d6afbe18a87a78e63ba3308e753766740e3f" integrity sha1-9+LWr74YqHp45jujMI51N2Z0Dj8= -htmlparser2@^3.10.0, htmlparser2@^3.7.3: +htmlparser2@^3.7.3: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -8992,27 +8771,27 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== dependencies: depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" + inherits "2.0.4" + setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + toidentifier "1.0.1" -http-errors@1.7.3, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" http-errors@~1.6.2: version "1.6.3" @@ -9025,9 +8804,9 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + version "0.5.5" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5" + integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA== http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: version "4.0.1" @@ -9038,18 +8817,27 @@ http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-proxy-middleware@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz#7ef3417a479fb7666a571e09966c66a39bd2c15f" - integrity sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz#5df04f69a89f530c2284cd71eeaa51ba52243289" + integrity sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA== dependencies: - "@types/http-proxy" "^1.17.5" + "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" is-glob "^4.0.1" is-plain-obj "^3.0.0" micromatch "^4.0.2" -http-proxy@^1.13.0, http-proxy@^1.18.1: +http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -9095,10 +8883,10 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.1.tgz#579f4180b5da4520263e8713cc832942b48e1f1c" - integrity sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA== +husky@^7.0.1, husky@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" + integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.11: version "0.4.24" @@ -9107,7 +8895,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.11: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: +iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -9124,17 +8912,22 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== +ignore-walk@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3" + integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw== dependencies: minimatch "^3.0.4" -ignore@^5.1.4, ignore@^5.1.8: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.9, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== image-size@~0.5.0: version "0.5.5" @@ -9151,7 +8944,12 @@ immutable@^3: resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= -import-fresh@^3.2.1: +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -9227,15 +9025,15 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@8.1.5: - version "8.1.5" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.5.tgz#2dc5159203c826d654915b5fe6990fd17f54a150" - integrity sha512-G6/9xUqmt/r+UvufSyrPpt84NYwhKZ9jLsgMbQzlx804XErNupor8WQdBnBRrXmBfTPpuwf1sV+ss2ovjgdXIg== +inquirer@8.2.0, inquirer@^8.0.0, inquirer@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" + integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.1" @@ -9252,26 +9050,6 @@ inquirer@8.1.5: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^8.0.0: - version "8.1.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.2.tgz#65b204d2cd7fb63400edd925dfe428bafd422e3d" - integrity sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.3.0" - run-async "^2.4.0" - rxjs "^7.2.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - inquirer@~6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" @@ -9291,20 +9069,10 @@ inquirer@~6.3.1: strip-ansi "^5.1.0" through "^2.3.6" -install-artifact-from-github@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.2.0.tgz#adcbd123c16a4337ec44ea76d0ebf253cc16b074" - integrity sha512-3OxCPcY55XlVM3kkfIpeCgmoSKnMsz2A3Dbhsq0RXpIknKQmrX1YiznCeW9cD2ItFmDxziA3w6Eg8d80AoL3oA== - -internal-ip@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" - integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== - dependencies: - default-gateway "^6.0.0" - ipaddr.js "^1.9.1" - is-ip "^3.1.0" - p-event "^4.2.0" +install-artifact-from-github@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/install-artifact-from-github/-/install-artifact-from-github-1.3.0.tgz#cab6ff821976b8a35b0c079da19a727c90381a40" + integrity sha512-iT8v1GwOAX0pPXifF/5ihnMhHOCo3OeK7z3TQa4CtSNCIg8k0UxqBEk9jRwz8OP68hHXvJ2gxRa89KYHtBkqGA== interpret@^1.0.0: version "1.4.0" @@ -9319,7 +9087,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -ip-regex@^4.0.0, ip-regex@^4.1.0: +ip-regex@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== @@ -9329,7 +9097,7 @@ ip@^1.1.0, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.1, ipaddr.js@^1.9.1: +ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -9339,20 +9107,6 @@ ipaddr.js@^2.0.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" @@ -9384,13 +9138,6 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -9398,11 +9145,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -9415,27 +9157,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.1.0, is-core-module@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" - integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== +is-core-module@^2.1.0, is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -9448,53 +9176,16 @@ is-decimal@^1.0.0, is-decimal@^1.0.2: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -9505,21 +9196,7 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -9552,13 +9229,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" @@ -9598,13 +9268,6 @@ is-number-like@^1.0.3: dependencies: lodash.isfinite "^3.3.2" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -9659,17 +9322,12 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-obj@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-plain-obj@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -9770,7 +9428,7 @@ is-url@^1.2.2, is-url@^1.2.4: resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-what@^3.12.0: +is-what@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== @@ -9811,36 +9469,27 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - isarray@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= -isbinaryfile@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isbinaryfile@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" + integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= @@ -9850,19 +9499,20 @@ isstream@0.1.x, isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-instrument@^5.0.4: + version "5.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" + integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== dependencies: - "@babel/core" "^7.7.5" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" semver "^6.3.0" istanbul-lib-report@^3.0.0: @@ -9875,9 +9525,9 @@ istanbul-lib-report@^3.0.0: supports-color "^7.1.0" istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -9920,10 +9570,10 @@ jake@^10.6.1: filelist "^1.0.1" minimatch "^3.0.4" -jasmine-core@^3.6.0, jasmine-core@~3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.8.0.tgz#815399aae5aa5d9beeb1262805f981b99ffc9bf0" - integrity sha512-zl0nZWDrmbCiKns0NcjkFGYkVTGCPUgoHypTaj+G2AzaWus7QGoXARSlYsSle2VRpSdfJmM+hzmFKzQNhF2kHg== +jasmine-core@^3.6.0, jasmine-core@~3.99.0: + version "3.99.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.99.0.tgz#99a3da0d38ba2de82614d9198b7b1bc1c32a5960" + integrity sha512-+ZDaJlEfRopINQqgE+hvzRyDIQDeKfqqTvF8RzXsvU1yE3pBDRud2+Qfh9WvGgRpuzqxyQJVI6Amy5XQ11r/3w== jasmine-core@~2.8.0: version "2.8.0" @@ -9938,6 +9588,14 @@ jasmine-reporters@~2.4.0: mkdirp "^0.5.1" xmldom "^0.5.0" +jasmine-reporters@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/jasmine-reporters/-/jasmine-reporters-2.5.0.tgz#f9e2e0f82aaa2e07e8d553be56457efe0fd8b39e" + integrity sha512-J69peyTR8j6SzvIPP6aO1Y00wwCqXuIvhwTYvE/di14roCf6X3wDZ4/cKGZ2fGgufjhP2FKjpgrUIKjwau4e/Q== + dependencies: + "@xmldom/xmldom" "^0.7.3" + mkdirp "^1.0.4" + jasmine@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" @@ -9948,22 +9606,22 @@ jasmine@2.8.0: jasmine-core "~2.8.0" jasmine@^3.6.0, jasmine@^3.7.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.8.0.tgz#4497bc797eede7ca9de18179aedd4cf50245d8dc" - integrity sha512-kdQ3SfcNpMbbMdgJPLyFe9IksixdnrgYaCJapP9sS0aLgdWdIZADNXEr+11Zafxm1VDfRSC5ZL4fzXT0bexzXw== + version "3.99.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.99.0.tgz#7cc7aeda7ade2d57694fc818a374f778cbb4ea62" + integrity sha512-YIThBuHzaIIcjxeuLmPD40SjxkEcc8i//sGMDKCgkRMVgIwRJf5qyExtlJpQeh7pkeoBSOe6lQEdg+/9uKg9mw== dependencies: glob "^7.1.6" - jasmine-core "~3.8.0" + jasmine-core "~3.99.0" jasminewd2@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= -jest-worker@^27.0.6: - version "27.2.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.5.tgz#ed42865661959488aa020e8a325df010597c36d4" - integrity sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw== +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -10035,7 +9693,7 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -10069,10 +9727,15 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" @@ -10143,19 +9806,19 @@ jsonwebtoken@^8.5.1: semver "^5.6.0" jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" -jszip@^3.1.3: - version "3.7.0" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.0.tgz#9b8b995a4e7c9024653ce743e902076a82fdf4e6" - integrity sha512-Y2OlFIzrDOPWUnpU0LORIcDn2xN7rC9yKffFM/7pGhQuhO+SUhfm2trkJ/S5amjFvem0Y+1EALz/MEPkvHXVNw== +jszip@^3.1.3, jszip@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9" + integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg== dependencies: lie "~3.3.0" pako "~1.0.2" @@ -10217,10 +9880,10 @@ karma-chrome-launcher@^3.1.0: dependencies: which "^1.2.1" -karma-firefox-launcher@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-2.1.1.tgz#6457226f8e4f091b664cef79bb5d39bf1e008765" - integrity sha512-VzDMgPseXak9DtfyE1O5bB2BwsMy1zzO1kUxVW1rP0yhC4tDNJ0p3JoFdzvrK4QqVzdqUMa9Rx9YzkdFp8hz3Q== +karma-firefox-launcher@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz#9a38cc783c579a50f3ed2a82b7386186385cfc2d" + integrity sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA== dependencies: is-wsl "^2.2.0" which "^2.0.1" @@ -10232,7 +9895,7 @@ karma-jasmine@^4.0.1: dependencies: jasmine-core "^3.6.0" -karma-parallel@^0.3.0: +karma-parallel@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/karma-parallel/-/karma-parallel-0.3.1.tgz#781876e5992b2781619e762f3e04dcbf85f47fa1" integrity sha512-64jxNYamYi/9Y67h4+FfViSYhwDgod3rLuq+ZdZ0c3XeZFp/3q3v3HVkd8b5Czp3hCB+LLF8DIv4zlR4xFqbRw== @@ -10261,44 +9924,42 @@ karma-source-map-support@1.4.0: dependencies: source-map-support "^0.5.5" -karma-sourcemap-loader@^0.3.7: +karma-sourcemap-loader@^0.3.8: version "0.3.8" resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz#d4bae72fb7a8397328a62b75013d2df937bdcf9c" integrity sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g== dependencies: graceful-fs "^4.1.2" -karma@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/karma/-/karma-4.4.1.tgz#6d9aaab037a31136dc074002620ee11e8c2e32ab" - integrity sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A== +karma@^6.3.12: + version "6.3.16" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.16.tgz#76d1a705fd1cf864ee5ed85270b572641e0958ef" + integrity sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ== dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" + body-parser "^1.19.0" braces "^3.0.2" - chokidar "^3.0.0" - colors "^1.1.0" - connect "^3.6.0" + chokidar "^3.5.1" + colors "1.4.0" + connect "^3.7.0" di "^0.0.1" - dom-serialize "^2.2.0" - flatted "^2.0.0" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^4.17.14" - log4js "^4.0.0" - mime "^2.3.1" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "2.1.1" + dom-serialize "^2.2.1" + glob "^7.1.7" + graceful-fs "^4.2.6" + http-proxy "^1.18.1" + isbinaryfile "^4.0.8" + lodash "^4.17.21" + log4js "^6.4.1" + mime "^2.5.2" + minimatch "^3.0.4" + mkdirp "^0.5.5" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^4.2.0" source-map "^0.6.1" - tmp "0.0.33" - useragent "2.3.0" + tmp "^0.2.1" + ua-parser-js "^0.7.30" + yargs "^16.1.1" keyv@3.0.0: version "3.0.0" @@ -10315,32 +9976,13 @@ keyv@^3.0.0: json-buffer "3.0.0" keyv@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" - integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== + version "4.1.1" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.1.1.tgz#02c538bfdbd2a9308cc932d4096f05ae42bfa06a" + integrity sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ== dependencies: json-buffer "3.0.1" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -10350,15 +9992,15 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" - integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== +klona@^2.0.4, klona@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== -known-css-properties@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.21.0.tgz#15fbd0bbb83447f3ce09d8af247ed47c68ede80d" - integrity sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw== +known-css-properties@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.24.0.tgz#19aefd85003ae5698a5560d2b55135bf5432155c" + integrity sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA== kuler@^2.0.0: version "2.0.0" @@ -10373,27 +10015,27 @@ latest-version@^5.0.0, latest-version@^5.1.0: package-json "^6.3.0" lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== dependencies: readable-stream "^2.0.5" -less-loader@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.0.1.tgz#c05aaba68d00400820275f21c2ad87cb9fa9923f" - integrity sha512-Crln//HpW9M5CbtdfWm3IO66Cvx1WhZQvNybXgfB2dD/6Sav9ppw+IWqs/FQKPBFO4B6X0X28Z0WNznshgwUzA== +less-loader@10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.2.0.tgz#97286d8797dc3dc05b1d16b0ecec5f968bdd4e32" + integrity sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg== dependencies: klona "^2.0.4" -less@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/less/-/less-4.1.1.tgz#15bf253a9939791dc690888c3ff424f3e6c7edba" - integrity sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw== +less@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" + integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== dependencies: copy-anything "^2.0.1" parse-node-version "^1.0.1" - tslib "^1.10.0" + tslib "^2.3.0" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" @@ -10408,6 +10050,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -10416,13 +10066,12 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -license-webpack-plugin@2.3.21: - version "2.3.21" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.21.tgz#152f5e82d5f51f8bab78905731f2b8042aa5691b" - integrity sha512-rVaYU9TddZN3ao8M/0PrRSCdTp2EW6VQymlgsuScld1vef0Ou7fALx3ePe83KLP3xAEDcPK5fkqUVqGBnbz1zQ== +license-webpack-plugin@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz#1e18442ed20b754b82f1adeff42249b81d11aec6" + integrity sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== dependencies: - "@types/webpack-sources" "^0.1.5" - webpack-sources "^1.2.0" + webpack-sources "^3.0.0" lie@~3.3.0: version "3.3.0" @@ -10445,38 +10094,24 @@ limiter@^1.0.5: integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== listenercount@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - loader-runner@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@2.0.0, loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" +loader-utils@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" + integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== loader-utils@^1.4.0: version "1.4.0" @@ -10487,23 +10122,24 @@ loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" -localtunnel@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.1.tgz#8f7c593f3005647f7675e6e69af9bf746571a631" - integrity sha512-LiaI5wZdz0xFkIQpXbNI62ZnNn8IMsVhwxHmhA+h4vj8R9JG/07bQHWwQlyy7b95/5fVOCHJfIHv+a5XnkvaJA== +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== dependencies: - axios "0.21.1" - debug "4.3.1" - openurl "1.1.1" - yargs "16.2.0" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= +localtunnel@^2.0.0, localtunnel@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-2.0.2.tgz#528d50087151c4790f89c2db374fe7b0a48501f0" + integrity sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug== dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" + axios "0.21.4" + debug "4.3.2" + openurl "1.1.1" + yargs "17.1.1" locate-path@^5.0.0: version "5.0.0" @@ -10529,6 +10165,11 @@ lodash._objecttypes@~2.4.1: resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" integrity sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE= +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + lodash._shimkeys@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" @@ -10566,7 +10207,7 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= -lodash.get@^4.0.0: +lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= @@ -10591,7 +10232,7 @@ lodash.isboolean@^3.0.3: resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= -lodash.isequal@^4.0.0: +lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= @@ -10606,11 +10247,6 @@ lodash.isinteger@^4.0.4: resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= - lodash.isnumber@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" @@ -10647,7 +10283,7 @@ lodash.keys@~2.4.1: lodash._shimkeys "~2.4.1" lodash.isobject "~2.4.1" -lodash.merge@^4.6.1: +lodash.merge@^4.6.1, lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== @@ -10667,10 +10303,20 @@ lodash.snakecase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" lodash.truncate@^4.4.2: version "4.4.2" @@ -10714,26 +10360,26 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log4js@^4.0.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-4.5.1.tgz#e543625e97d9e6f3e6e7c9fc196dd6ab2cae30b5" - integrity sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw== +log4js@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.4.1.tgz#9d3a8bf2c31c1e213fe3fc398a6053f7a2bc53e8" + integrity sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg== dependencies: - date-format "^2.0.0" - debug "^4.1.1" - flatted "^2.0.0" - rfdc "^1.1.4" - streamroller "^1.0.6" + date-format "^4.0.3" + debug "^4.3.3" + flatted "^3.2.4" + rfdc "^1.3.0" + streamroller "^3.0.2" -logform@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2" - integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg== +logform@^2.3.2, logform@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe" + integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw== dependencies: - colors "^1.2.1" - fast-safe-stringify "^2.0.4" + "@colors/colors" "1.5.0" fecha "^4.2.0" ms "^2.1.1" + safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" loglevel-plugin-prefix@^0.8.4: @@ -10742,20 +10388,15 @@ loglevel-plugin-prefix@^0.8.4: integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== loglevel@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + version "1.8.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" + integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== long@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -longest-streak@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" - integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== - lower-case-first@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" @@ -10790,7 +10431,7 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@4.1.x, lru-cache@^4.0.1: +lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -10812,6 +10453,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.3.1.tgz#7702e80694ec2bf19865567a469f2b081fcf53f5" + integrity sha512-nX1x4qUrKqwbIAhv4s9et4FIUVzNOpeY07bsjGUy8gwJrXH/wScImSQqXErmo/b2jZY2r0mohbLA9zVj7u1cNw== + lru-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -10819,10 +10465,10 @@ lru-queue@^0.1.0: dependencies: es5-ext "~0.10.2" -luxon@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.0.1.tgz#b41ca2f1f5ad8099c18603ae6c36a7794039daf0" - integrity sha512-8Eawf81c9ZlQj62W3eq4mp+C7SAIAnmaS7ZuEAiX503YMcn+0C1JnMQRtfaQj6B5qTZLgHv0F4H5WabBCvi1fw== +luxon@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.3.0.tgz#bf16a7e642513c2a20a6230a6a41b0ab446d0045" + integrity sha512-gv6jZCV+gGIrVKhO90yrsn8qXPKD8HYZJtrUDSfEbow8Tkw84T9OnCyJhWvnJIaIF/tBuiAjZuQHUt1LddX2mg== madge@^4.0.0: version "4.0.2" @@ -10886,28 +10532,29 @@ make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^8.0.14: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== +make-fetch-happen@^10.0.2: + version "10.0.3" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.0.3.tgz#94bbe675cf62a811dbab59668052388a078beaf2" + integrity sha512-CzarPHynPpHjhF5in/YapnO44rSZeYX5VCMfdXa99+gLwpbfFLh20CWa6dP/taV9Net9PWJwXNKtp/4ZTCQnag== dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" + agentkeepalive "^4.2.0" + cacache "^15.3.0" http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" + lru-cache "^7.3.1" + minipass "^3.1.6" minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" + minipass-fetch "^1.4.1" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" + negotiator "^0.6.3" promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" + socks-proxy-agent "^6.1.1" + ssri "^8.0.1" -make-fetch-happen@^9.0.1: +make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -10929,33 +10576,21 @@ make-fetch-happen@^9.0.1: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-obj@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" - integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - marked-terminal@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" @@ -10979,9 +10614,9 @@ marked@^2.0.0: integrity sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA== marky@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.2.tgz#4456765b4de307a13d263a69b0c79bf226e68323" - integrity sha512-k1dB2HNeaNyORco8ulVEhctyEGkKHb2YWAhDsxeFlW2nROIirsctBYzKwwS3Vza+sKTS1zO4Z+n9/+9WbGLIxQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.4.tgz#d02bb4c08be2366687c778ecd2a328971ce23d7f" + integrity sha512-zd2/GiSn6U3/jeFVZ0J9CA1LzQ8RfIVvXkb/U0swFHF/zT+dVohTAWjmo2DcIuofmIIIROlwTbd+shSeXmxr0w== matcher@^3.0.0: version "3.0.0" @@ -10990,102 +10625,75 @@ matcher@^3.0.0: dependencies: escape-string-regexp "^4.0.0" -material-components-web@14.0.0-canary.c78ff0429.0: - version "14.0.0-canary.c78ff0429.0" - resolved "https://registry.yarnpkg.com/material-components-web/-/material-components-web-14.0.0-canary.c78ff0429.0.tgz#fea8cd6e4979bfeb5e79e5a2b386b17792b0dbd9" - integrity sha512-uowe50uULbHDdiVZhAzFToh6iqKHmVZVzvelNVV9YVJQhiUTDO9iUGcM3sRQu4tg9hknNgqMpBL/IO4JvXekqw== - dependencies: - "@material/animation" "14.0.0-canary.c78ff0429.0" - "@material/auto-init" "14.0.0-canary.c78ff0429.0" - "@material/banner" "14.0.0-canary.c78ff0429.0" - "@material/base" "14.0.0-canary.c78ff0429.0" - "@material/button" "14.0.0-canary.c78ff0429.0" - "@material/card" "14.0.0-canary.c78ff0429.0" - "@material/checkbox" "14.0.0-canary.c78ff0429.0" - "@material/chips" "14.0.0-canary.c78ff0429.0" - "@material/circular-progress" "14.0.0-canary.c78ff0429.0" - "@material/data-table" "14.0.0-canary.c78ff0429.0" - "@material/density" "14.0.0-canary.c78ff0429.0" - "@material/dialog" "14.0.0-canary.c78ff0429.0" - "@material/dom" "14.0.0-canary.c78ff0429.0" - "@material/drawer" "14.0.0-canary.c78ff0429.0" - "@material/elevation" "14.0.0-canary.c78ff0429.0" - "@material/fab" "14.0.0-canary.c78ff0429.0" - "@material/feature-targeting" "14.0.0-canary.c78ff0429.0" - "@material/floating-label" "14.0.0-canary.c78ff0429.0" - "@material/form-field" "14.0.0-canary.c78ff0429.0" - "@material/icon-button" "14.0.0-canary.c78ff0429.0" - "@material/image-list" "14.0.0-canary.c78ff0429.0" - "@material/layout-grid" "14.0.0-canary.c78ff0429.0" - "@material/line-ripple" "14.0.0-canary.c78ff0429.0" - "@material/linear-progress" "14.0.0-canary.c78ff0429.0" - "@material/list" "14.0.0-canary.c78ff0429.0" - "@material/menu" "14.0.0-canary.c78ff0429.0" - "@material/menu-surface" "14.0.0-canary.c78ff0429.0" - "@material/notched-outline" "14.0.0-canary.c78ff0429.0" - "@material/radio" "14.0.0-canary.c78ff0429.0" - "@material/ripple" "14.0.0-canary.c78ff0429.0" - "@material/rtl" "14.0.0-canary.c78ff0429.0" - "@material/segmented-button" "14.0.0-canary.c78ff0429.0" - "@material/select" "14.0.0-canary.c78ff0429.0" - "@material/shape" "14.0.0-canary.c78ff0429.0" - "@material/slider" "14.0.0-canary.c78ff0429.0" - "@material/snackbar" "14.0.0-canary.c78ff0429.0" - "@material/switch" "14.0.0-canary.c78ff0429.0" - "@material/tab" "14.0.0-canary.c78ff0429.0" - "@material/tab-bar" "14.0.0-canary.c78ff0429.0" - "@material/tab-indicator" "14.0.0-canary.c78ff0429.0" - "@material/tab-scroller" "14.0.0-canary.c78ff0429.0" - "@material/textfield" "14.0.0-canary.c78ff0429.0" - "@material/theme" "14.0.0-canary.c78ff0429.0" - "@material/tokens" "14.0.0-canary.c78ff0429.0" - "@material/tooltip" "14.0.0-canary.c78ff0429.0" - "@material/top-app-bar" "14.0.0-canary.c78ff0429.0" - "@material/touch-target" "14.0.0-canary.c78ff0429.0" - "@material/typography" "14.0.0-canary.c78ff0429.0" +material-components-web@14.0.0-canary.9736ddce9.0: + version "14.0.0-canary.9736ddce9.0" + resolved "https://registry.yarnpkg.com/material-components-web/-/material-components-web-14.0.0-canary.9736ddce9.0.tgz#be540acbd99780b7ead5d465cdd09211f30179e9" + integrity sha512-SusNQB9gh2eB6cPe0ZLNJ98pxtNVNKHw+EZdfYRhgLbGsLWzogxjwzkmGpRsUD4q5DGgqHRT37H+P0QteJrTqw== + dependencies: + "@material/animation" "14.0.0-canary.9736ddce9.0" + "@material/auto-init" "14.0.0-canary.9736ddce9.0" + "@material/banner" "14.0.0-canary.9736ddce9.0" + "@material/base" "14.0.0-canary.9736ddce9.0" + "@material/button" "14.0.0-canary.9736ddce9.0" + "@material/card" "14.0.0-canary.9736ddce9.0" + "@material/checkbox" "14.0.0-canary.9736ddce9.0" + "@material/chips" "14.0.0-canary.9736ddce9.0" + "@material/circular-progress" "14.0.0-canary.9736ddce9.0" + "@material/data-table" "14.0.0-canary.9736ddce9.0" + "@material/density" "14.0.0-canary.9736ddce9.0" + "@material/dialog" "14.0.0-canary.9736ddce9.0" + "@material/dom" "14.0.0-canary.9736ddce9.0" + "@material/drawer" "14.0.0-canary.9736ddce9.0" + "@material/elevation" "14.0.0-canary.9736ddce9.0" + "@material/fab" "14.0.0-canary.9736ddce9.0" + "@material/feature-targeting" "14.0.0-canary.9736ddce9.0" + "@material/floating-label" "14.0.0-canary.9736ddce9.0" + "@material/focus-ring" "14.0.0-canary.9736ddce9.0" + "@material/form-field" "14.0.0-canary.9736ddce9.0" + "@material/icon-button" "14.0.0-canary.9736ddce9.0" + "@material/image-list" "14.0.0-canary.9736ddce9.0" + "@material/layout-grid" "14.0.0-canary.9736ddce9.0" + "@material/line-ripple" "14.0.0-canary.9736ddce9.0" + "@material/linear-progress" "14.0.0-canary.9736ddce9.0" + "@material/list" "14.0.0-canary.9736ddce9.0" + "@material/menu" "14.0.0-canary.9736ddce9.0" + "@material/menu-surface" "14.0.0-canary.9736ddce9.0" + "@material/notched-outline" "14.0.0-canary.9736ddce9.0" + "@material/radio" "14.0.0-canary.9736ddce9.0" + "@material/ripple" "14.0.0-canary.9736ddce9.0" + "@material/rtl" "14.0.0-canary.9736ddce9.0" + "@material/segmented-button" "14.0.0-canary.9736ddce9.0" + "@material/select" "14.0.0-canary.9736ddce9.0" + "@material/shape" "14.0.0-canary.9736ddce9.0" + "@material/slider" "14.0.0-canary.9736ddce9.0" + "@material/snackbar" "14.0.0-canary.9736ddce9.0" + "@material/switch" "14.0.0-canary.9736ddce9.0" + "@material/tab" "14.0.0-canary.9736ddce9.0" + "@material/tab-bar" "14.0.0-canary.9736ddce9.0" + "@material/tab-indicator" "14.0.0-canary.9736ddce9.0" + "@material/tab-scroller" "14.0.0-canary.9736ddce9.0" + "@material/textfield" "14.0.0-canary.9736ddce9.0" + "@material/theme" "14.0.0-canary.9736ddce9.0" + "@material/tokens" "14.0.0-canary.9736ddce9.0" + "@material/tooltip" "14.0.0-canary.9736ddce9.0" + "@material/top-app-bar" "14.0.0-canary.9736ddce9.0" + "@material/touch-target" "14.0.0-canary.9736ddce9.0" + "@material/typography" "14.0.0-canary.9736ddce9.0" mathml-tag-names@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -mdast-util-from-markdown@^0.8.0: - version "0.8.5" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" - integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== - dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-string "^2.0.0" - micromark "~2.11.0" - parse-entities "^2.0.0" - unist-util-stringify-position "^2.0.0" - -mdast-util-to-markdown@^0.6.0: - version "0.6.5" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" - integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== - dependencies: - "@types/unist" "^2.0.0" - longest-streak "^2.0.0" - mdast-util-to-string "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.0.0" - zwitch "^1.0.0" - -mdast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" - integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -memfs@^3.2.2: - version "3.3.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.3.0.tgz#4da2d1fc40a04b170a56622c7164c6be2c4cbef2" - integrity sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg== +memfs@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" + integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== dependencies: fs-monkey "1.0.3" @@ -11103,23 +10711,6 @@ memoizee@^0.4.14: next-tick "^1.1.0" timers-ext "^0.1.7" -meow@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" - integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^2.5.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.13.1" - yargs-parser "^18.1.3" - meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -11160,19 +10751,12 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge-source-map@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" - integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== - dependencies: - source-map "^0.6.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -11182,33 +10766,6 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromark@~2.11.0: - version "2.11.4" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" - integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== - dependencies: - debug "^4.0.0" - parse-entities "^2.0.0" - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" @@ -11217,29 +10774,22 @@ micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" -mime-db@1.49.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== - -mime-db@1.50.0: - version "1.50.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" - integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.32" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== - dependencies: - mime-db "1.49.0" +"mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.27, mime-types@^2.1.31: - version "2.1.33" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" - integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.34" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== dependencies: - mime-db "1.50.0" + mime-db "1.51.0" mime@1.4.1: version "1.4.1" @@ -11251,10 +10801,10 @@ mime@1.6.0, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.3.1, mime@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^1.0.0: version "1.2.0" @@ -11281,25 +10831,32 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-css-extract-plugin@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.3.0.tgz#87515f185533752944d753ac7216fc876779dafe" - integrity sha512-uzWaOwC+gJrnKbr23J1ZRWx/Wd9W9Ce1mKPlsBGBV/r8zG7/G7oKMxGmxbI65pVGbae2cR7CUx9Ulk0HQt8BfQ== +mini-css-extract-plugin@2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz#c5c79f9b22ce9b4f164e9492267358dbe35376d9" + integrity sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw== dependencies: - schema-utils "^3.1.0" + schema-utils "^4.0.0" minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@5.0.0, minimatch@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.0.tgz#281d8402aaaeed18a9e8406ad99c46a19206c6ef" + integrity sha512-EU+GCVjXD00yOUf1TwAHVP7v3fBD3A8RkkPYsWWKGWesxM/572sL53wJQnHxquHlRhYUV36wHkqrN8cdikKc2g== + dependencies: + brace-expansion "^2.0.1" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -11314,11 +10871,6 @@ minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -11326,7 +10878,7 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.0: +minipass-fetch@^1.3.2, minipass-fetch@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== @@ -11337,17 +10889,6 @@ minipass-fetch@^1.3.0: optionalDependencies: encoding "^0.1.12" -minipass-fetch@^1.3.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.4.tgz#63f5af868a38746ca7b33b03393ddf8c291244fe" - integrity sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -11377,7 +10918,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: +minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== @@ -11385,21 +10926,21 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== dependencies: yallist "^4.0.0" -minizlib@^1.2.1: +minizlib@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: minipass "^2.9.0" -minizlib@^2.0.0, minizlib@^2.1.1: +minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -11412,36 +10953,23 @@ mitt@^1.1.3: resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mkdirp-classic@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - module-definition@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-3.3.1.tgz#fedef71667713e36988b93d0626a4fe7b35aebfc" @@ -11450,7 +10978,7 @@ module-definition@^3.3.1: ast-module-types "^2.7.1" node-source-walk "^4.0.0" -module-lookup-amd@^7.0.0: +module-lookup-amd@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/module-lookup-amd/-/module-lookup-amd-7.0.1.tgz#d67c1a93f2ff8e38b8774b99a638e9a4395774b2" integrity sha512-w9mCNlj0S8qviuHzpakaLVc+/7q50jl9a/kmJ/n8bmXQZgDPkQHnPBb8MUOYh3WpAYkXuNc2c+khsozhIp/amQ== @@ -11461,7 +10989,7 @@ module-lookup-amd@^7.0.0: requirejs "^2.3.5" requirejs-config-file "^4.0.0" -moment@^2.18.1: +moment@^2.29.1: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -11482,17 +11010,12 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.1: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -11531,42 +11054,15 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1, nan@^2.14.2: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== +nan@^2.15.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== -nanocolors@^0.2.2: - version "0.2.13" - resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.13.tgz#dfd1ed0bfab05e9fe540eb6874525f0a1684099b" - integrity sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA== - -nanoid@^3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== - -nanoid@^3.1.25, nanoid@^3.1.28: - version "3.1.29" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.29.tgz#214fb2d7a33e1a5bef4757b779dfaeb6a4e5aeb4" - integrity sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" +nanoid@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== nash@^3.0.0: version "3.0.0" @@ -11578,6 +11074,11 @@ nash@^3.0.0: lodash "^4.17.5" minimist "^1.1.0" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + needle@^2.5.2: version "2.9.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" @@ -11587,10 +11088,10 @@ needle@^2.5.2: iconv-lite "^0.4.4" sax "^1.2.4" -negotiator@0.6.2, negotiator@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.6.0, neo-async@^2.6.2: version "2.6.2" @@ -11641,9 +11142,9 @@ no-case@^3.0.4: tslib "^2.0.3" nock@^13.0.3: - version "13.1.1" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.1.1.tgz#3c830129d4560957f59b6f480a41ddbaf9cf57af" - integrity sha512-YKTR9MjfK3kS9/l4nuTxyYm30cgOExRHzkLNhL8nhEUyU4f8Za/dRxOqjhVT1vGs0svWo3dDnJTUX1qxYeWy5w== + version "13.2.4" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.2.4.tgz#43a309d93143ee5cdcca91358614e7bde56d20e1" + integrity sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug== dependencies: debug "^4.1.0" json-stringify-safe "^5.0.1" @@ -11656,73 +11157,54 @@ node-addon-api@^3.0.0: integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== node-emoji@^1.4.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== dependencies: - lodash.toarray "^4.4.0" + lodash "^4.17.21" -node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-forge@^1.0.0, node-forge@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c" + integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== node-gyp-build@^4.2.2: version "4.3.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" - rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" - which "^2.0.2" - -node-gyp@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.1.0.tgz#81f43283e922d285c886fb0e0f520a7fd431d8c2" - integrity sha512-o2elh1qt7YUp3lkMwY3/l4KF3j/A3fI/Qt4NH+CQQgPJdqGE9y7qnP84cjIWN27Q0jJkrSAhCVDg+wBVNBYdBg== +node-gyp@^8.2.0, node-gyp@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== dependencies: env-paths "^2.2.0" glob "^7.1.4" graceful-fs "^4.2.6" - make-fetch-happen "^8.0.14" + make-fetch-happen "^9.1.0" nopt "^5.0.0" - npmlog "^4.1.2" + npmlog "^6.0.0" rimraf "^3.0.2" semver "^7.3.5" - tar "^6.1.0" + tar "^6.1.2" which "^2.0.2" -node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== - -node-releases@^1.1.77: - version "1.1.77" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" - integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== +node-releases@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== node-source-walk@^4.0.0, node-source-walk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-4.2.0.tgz#c2efe731ea8ba9c03c562aa0a9d984e54f27bc2c" - integrity sha512-hPs/QMe6zS94f5+jG3kk9E7TNm4P2SulrKiLWMzKszBfNZvL/V6wseHlTd7IvfW0NZWqPtK3+9yYNr+3USGteA== + version "4.2.2" + resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-4.2.2.tgz#9cf317af833b346d43445344e6e6fefe7df40bde" + integrity sha512-5JkDqb9eNv37OSovtghcN1/CxTFW5AMNrERwkTA+EsgaujwDvpWJXOHU49ZoZ2lTyzdww5Y2zHEEFYiFcAhvBA== dependencies: "@babel/parser" "^7.0.0" @@ -11740,7 +11222,7 @@ nopt@^5.0.0: dependencies: abbrev "1" -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: +normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -11751,22 +11233,15 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: validate-npm-package-license "^3.0.1" normalize-package-data@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.2.tgz#cae5c410ae2434f9a6c1baa65d5bc3b9366c8699" - integrity sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== dependencies: hosted-git-info "^4.0.1" - resolve "^1.20.0" + is-core-module "^2.5.0" semver "^7.3.4" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -11823,51 +11298,52 @@ npm-install-checks@^4.0.0: dependencies: semver "^7.1.1" -npm-normalize-package-bin@^1.0.1: +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@8.1.5, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2: - version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== +npm-package-arg@9.0.0, npm-package-arg@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.0.0.tgz#955a5e4735298fc23f71cb72da3574daa134340c" + integrity sha512-yhzXxeor+Zfhe5MGwPdDumz6HtNlj2pMekWB95IX3CC6uDNgde0oPKHDCLDPoJqQfd0HqAWt+y4Hs5m7CK1+9Q== dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" + hosted-git-info "^4.1.0" + semver "^7.3.5" validate-npm-package-name "^3.0.0" -npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== +npm-packlist@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" + integrity sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ== dependencies: glob "^7.1.6" - ignore-walk "^3.0.3" + ignore-walk "^4.0.1" npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@6.1.1, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" - integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== +npm-pick-manifest@7.0.0, npm-pick-manifest@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.0.tgz#e3b18b09678a47e894f90941bef8204ea5d96c3b" + integrity sha512-njM1AcdioFaKd0JSGtLO09YA1WRwctjGQJbnHGmKS+u+uwP8oFvtZtOQWPYdxrnY5eJud3wn8OpH4sEIx6+GEQ== dependencies: npm-install-checks "^4.0.0" npm-normalize-package-bin "^1.0.1" - npm-package-arg "^8.1.2" - semver "^7.3.4" + npm-package-arg "^9.0.0" + semver "^7.3.5" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== +npm-registry-fetch@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.0.0.tgz#f0cf807f661184217651e0465668e4fd255fd6a8" + integrity sha512-MmiMuV9DU5gRuAU0jia952Qq+E4h7ZoUaeltCXivhClcqfOVKqNLZEQsRUOb6a8WQY+um8x97JcUuaWFoPoBBw== dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" + make-fetch-happen "^10.0.2" + minipass "^3.1.6" + minipass-fetch "^1.4.1" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + minizlib "^2.1.2" + npm-package-arg "^9.0.0" + proc-log "^2.0.0" npm-run-path@^2.0.0: version "2.0.2" @@ -11883,27 +11359,24 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +npmlog@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17" + integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.0" + set-blocking "^2.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" -nunjucks@^3.1.6: +nunjucks@^3.2.2: version "3.2.3" resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.2.3.tgz#1b33615247290e94e28263b5d855ece765648a31" integrity sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ== @@ -11927,24 +11400,15 @@ object-component@0.0.3: resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - object-hash@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== object-is@^1.0.1: version "1.1.5" @@ -11959,13 +11423,6 @@ object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - object.assign@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" @@ -11976,13 +11433,6 @@ object.assign@^4.1.0: has-symbols "^1.0.1" object-keys "^1.1.1" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - objectdiff@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/objectdiff/-/objectdiff-1.1.0.tgz#8d7a15be6cb8670df8a490cc6be12a4f05ea82f4" @@ -11993,7 +11443,14 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@^2.2.0, on-finished@~2.3.0: +on-finished@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.0.tgz#115776bd5bdfaa1e7c7a2f1db4e2f9d6a4e4c95c" + integrity sha512-SLhghll9XN3OK9DGGmXDaxw6rq7Eza7HfuwdAy1w5S/YWieJ7Jtuv2NfFqnOtu8whIMP81QkEESy8y9/CMccbg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= @@ -12033,10 +11490,10 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" - integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== +open@8.4.0, open@^8.0.9: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: define-lazy-prop "^2.0.0" is-docker "^2.1.1" @@ -12049,21 +11506,12 @@ open@^6.3.0: dependencies: is-wsl "^1.1.0" -open@^8.0.9: - version "8.3.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.3.0.tgz#fdef1cdfe405e60dec8ebd18889e7e812f39c59f" - integrity sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - openapi3-ts@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-2.0.1.tgz#b270aecea09e924f1886bc02a72608fca5a98d85" - integrity sha512-v6X3iwddhi276siej96jHGIqTx3wzVfMTmpGJEQDt7GPI7pI6sywItURLzpEci21SBRpPN/aOWSF5mVfFVNmcg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/openapi3-ts/-/openapi3-ts-2.0.2.tgz#a200dd838bf24c9086c8eedcfeb380b7eb31e82a" + integrity sha512-TxhYBMoqx9frXyOgnRHufjQfPXomTIHYKhSKJ6jHfj13kS8OEIhvmE8CTuQyKtjjWttAjX5DPxM1vmalEpo8Qw== dependencies: - yaml "^1.10.0" + yaml "^1.10.2" openurl@1.1.1: version "1.1.1" @@ -12077,14 +11525,6 @@ opn@5.3.0: dependencies: is-wsl "^1.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -12097,7 +11537,19 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -ora@5.4.1, ora@^5.1.0, ora@^5.3.0, ora@^5.4.1: +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +ora@5.4.1, ora@^5.1.0, ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== @@ -12163,13 +11615,6 @@ p-event@^2.1.0: dependencies: p-timeout "^2.0.1" -p-event@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== - dependencies: - p-timeout "^3.1.0" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -12180,13 +11625,6 @@ p-is-promise@^1.1.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -12194,20 +11632,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -12244,27 +11675,15 @@ p-timeout@^2.0.1: dependencies: p-finally "^1.0.0" -p-timeout@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pac-proxy-agent@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-4.1.0.tgz#66883eeabadc915fc5e95457324cb0f0ac78defb" - integrity sha512-ejNgYm2HTXSIYX9eFlkvqFp8hyJ374uDf0Zq5YUAifiSh1D6fo+iBivQZirGvVv8dCYUsLhmLBRhlAYvBKI5+Q== +pac-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" + integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== dependencies: "@tootallnate/once" "1" agent-base "6" @@ -12272,16 +11691,16 @@ pac-proxy-agent@^4.1.0: get-uri "3" http-proxy-agent "^4.0.1" https-proxy-agent "5" - pac-resolver "^4.1.0" + pac-resolver "^5.0.0" raw-body "^2.2.0" socks-proxy-agent "5" -pac-resolver@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-4.2.0.tgz#b82bcb9992d48166920bc83c7542abb454bd9bdd" - integrity sha512-rPACZdUyuxT5Io/gFKUeeZFfE5T7ve7cAkE5TUZRRfuKP0u5Hocwe48X7ZEm6mYB+bTB0Qf+xlVlA/RM/i6RCQ== +pac-resolver@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.0.tgz#1d717a127b3d7a9407a16d6e1b012b13b9ba8dc0" + integrity sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA== dependencies: - degenerator "^2.2.0" + degenerator "^3.0.1" ip "^1.1.5" netmask "^2.0.1" @@ -12295,30 +11714,32 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pacote@11.3.5: - version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== +pacote@13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.0.2.tgz#3389b8338cdbec3a1fa433848cf00860f7c08ea6" + integrity sha512-3LyfvDk2BSJNFQZIcDqnLNa7IsYb6KwX3H9uZPwaHJFIX6Gv5N9QHU+s7mEs/RbN4/ta6KUT39LAi2l6EkBi5A== dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" + "@npmcli/git" "^3.0.0" + "@npmcli/installed-package-contents" "^1.0.7" "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" - cacache "^15.0.5" + "@npmcli/run-script" "^2.0.0" + cacache "^15.3.0" chownr "^2.0.0" fs-minipass "^2.1.0" infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" + minipass "^3.1.6" + mkdirp "^1.0.4" + npm-package-arg "^9.0.0" + npm-packlist "^3.0.0" + npm-pick-manifest "^7.0.0" + npm-registry-fetch "^13.0.0" + proc-log "^2.0.0" promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" + read-package-json "^4.1.1" + read-package-json-fast "^2.0.3" rimraf "^3.0.2" ssri "^8.0.1" - tar "^6.1.0" + tar "^6.1.11" pako@^1.0.3, pako@~1.0.2: version "1.0.11" @@ -12347,26 +11768,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" - integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -12464,11 +11865,6 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - path-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" @@ -12484,16 +11880,6 @@ path-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -12519,7 +11905,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -12536,13 +11922,6 @@ path-to-regexp@^1.8.0: dependencies: isarray "0.0.1" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -12565,15 +11944,15 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" @@ -12602,10 +11981,10 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -piscina@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.1.0.tgz#2333636865b6cb69c5a370bbc499a98cabcf3e04" - integrity sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg== +piscina@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.2.0.tgz#f5a1dde0c05567775690cccefe59d9223924d154" + integrity sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA== dependencies: eventemitter-asyncresource "^1.0.0" hdr-histogram-js "^2.0.1" @@ -12642,150 +12021,112 @@ portscanner@2.1.1: async "1.5.2" is-number-like "^1.0.3" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" - -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-gray@^5.0.0: +postcss-attribute-case-insensitive@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" - -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz#39cbf6babf3ded1e4abf37d09d6eda21c644105c" + integrity sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ== dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + postcss-selector-parser "^6.0.2" -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== +postcss-clamp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.0.0.tgz#766d3dbaa2dc56e8bea1b690291b632c0c5bf728" + integrity sha512-FsMmeBZtymFN7Jtlnw9is8I4nB+qEEb/qS0ZLTIqcKiwZyHBq44Yhv29Q+VQsTGHYFqIr/s/9tqvNM7j+j1d+g== dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + postcss-value-parser "^4.2.0" -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== +postcss-color-functional-notation@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz#f59ccaeb4ee78f1b32987d43df146109cc743073" + integrity sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ== dependencies: - postcss "^7.0.14" + postcss-value-parser "^4.2.0" -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== +postcss-color-hex-alpha@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz#61a0fd151d28b128aa6a8a21a2dad24eebb34d52" + integrity sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw== dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" + postcss-value-parser "^4.2.0" -postcss-custom-selectors@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== +postcss-color-rebeccapurple@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz#5d397039424a58a9ca628762eb0b88a61a66e079" + integrity sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw== dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" + postcss-value-parser "^4.2.0" -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" +postcss-custom-media@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz#1be6aff8be7dc9bf1fe014bde3b71b92bb4552f1" + integrity sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g== -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== +postcss-custom-properties@^12.1.4: + version "12.1.4" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.4.tgz#e3d8a8000f28094453b836dff5132385f2862285" + integrity sha512-i6AytuTCoDLJkWN/MtAIGriJz3j7UX6bV7Z5t+KgFz+dwZS15/mlTJY1S0kRizlk6ba0V8u8hN50Fz5Nm7tdZw== dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" + postcss-value-parser "^4.2.0" -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== +postcss-custom-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz#022839e41fbf71c47ae6e316cb0e6213012df5ef" + integrity sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q== dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + postcss-selector-parser "^6.0.4" -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== +postcss-dir-pseudo-class@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz#9afe49ea631f0cb36fa0076e7c2feb4e7e3f049c" + integrity sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw== dependencies: - postcss "^7.0.2" + postcss-selector-parser "^6.0.9" -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== +postcss-double-position-gradients@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.0.tgz#a8614fb3a2a4b8877bffb8961b770e00322bbad1" + integrity sha512-oz73I08yMN3oxjj0s8mED1rG+uOYoK3H8N9RjQofyg52KBRNmePJKg3fVwTpL2U5ZFbCzXoZBsUD/CvZdlqE4Q== dependencies: - postcss "^7.0.2" + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" -postcss-font-variant@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" - integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== +postcss-env-function@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.5.tgz#b9614d50abd91e4c88a114644a9766880dabe393" + integrity sha512-gPUJc71ji9XKyl0WSzAalBeEA/89kU+XpffpPxSaaaZ1c48OL36r1Ep5R6+9XAPkIiDlSvVAwP4io12q/vTcvA== dependencies: - postcss "^7.0.2" + postcss-value-parser "^4.2.0" -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== dependencies: - postcss "^7.0.2" + postcss-selector-parser "^6.0.9" -postcss-html@^0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" - integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== dependencies: - htmlparser2 "^3.10.0" + postcss-selector-parser "^6.0.9" -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz#6401bb2f67d9cf255d677042928a70a915e6ba60" + integrity sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ== + +postcss-image-set-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz#bcff2794efae778c09441498f40e0c77374870a9" + integrity sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A== dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" + postcss-value-parser "^4.2.0" postcss-import@14.0.2: version "14.0.2" @@ -12796,51 +12137,37 @@ postcss-import@14.0.2: read-cache "^1.0.0" resolve "^1.1.7" -postcss-initial@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" - integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== - dependencies: - postcss "^7.0.2" - -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== -postcss-less@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" - integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== +postcss-lab-function@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.1.1.tgz#8b37dfcb9ca4ff82bbe7192c7ba3cc2bccbc0ef1" + integrity sha512-j3Z0WQCimY2tMle++YcmygnnVbt6XdnrCV1FO2IpzaCSmtTF2oO8h4ZYUA1Q+QHYroIiaWPvNHt9uBR4riCksQ== dependencies: - postcss "^7.0.14" + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" -postcss-loader@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.1.1.tgz#58dd0a3accd9bc87cc52eff75244db578d11301a" - integrity sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug== +postcss-loader@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: cosmiconfig "^7.0.0" - klona "^2.0.4" + klona "^2.0.5" semver "^7.3.5" -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== postcss-media-query-parser@^0.2.3: version "0.2.3" @@ -12875,164 +12202,131 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== +postcss-nesting@^10.1.2: + version "10.1.2" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.2.tgz#2e5f811b3d75602ea18a95dd445bde5297145141" + integrity sha512-dJGmgmsvpzKoVMtDMQQG/T6FSqs6kDtUDirIfl4KnjMCiY9/ETX8jdKyCd20swSRAbUYkaBKV20pxkzxoOXLqQ== dependencies: - postcss "^7.0.2" + postcss-selector-parser "^6.0.8" -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - dependencies: - postcss "^7.0.2" +postcss-opacity-percentage@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz#bd698bb3670a0a27f6d657cc16744b3ebf3b1145" + integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w== -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" +postcss-overflow-shorthand@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz#ebcfc0483a15bbf1b27fdd9b3c10125372f4cbc2" + integrity sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg== -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.4.tgz#eb026650b7f769ae57ca4f938c1addd6be2f62c9" + integrity sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg== dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" + postcss-value-parser "^4.2.0" -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== +postcss-preset-env@7.4.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.4.1.tgz#ca6131c6e0d0e0bcc429dbef3e8f8d03250041ea" + integrity sha512-UvBVvPJ2vb4odAtckSbryndyBz+Me1q8wawqq0qznpDXy188I+8W5Sa929sCPqw2/NSYnqpHJbo41BKso3+I9A== + dependencies: + "@csstools/postcss-color-function" "^1.0.2" + "@csstools/postcss-font-format-keywords" "^1.0.0" + "@csstools/postcss-hwb-function" "^1.0.0" + "@csstools/postcss-ic-unit" "^1.0.0" + "@csstools/postcss-is-pseudo-class" "^2.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.0" + "@csstools/postcss-oklab-function" "^1.0.1" + "@csstools/postcss-progressive-custom-properties" "^1.2.0" + autoprefixer "^10.4.2" + browserslist "^4.19.1" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^6.3.1" + postcss-attribute-case-insensitive "^5.0.0" + postcss-clamp "^4.0.0" + postcss-color-functional-notation "^4.2.2" + postcss-color-hex-alpha "^8.0.3" + postcss-color-rebeccapurple "^7.0.2" + postcss-custom-media "^8.0.0" + postcss-custom-properties "^12.1.4" + postcss-custom-selectors "^6.0.0" + postcss-dir-pseudo-class "^6.0.4" + postcss-double-position-gradients "^3.1.0" + postcss-env-function "^4.0.5" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.3" + postcss-image-set-function "^4.0.6" + postcss-initial "^4.0.1" + postcss-lab-function "^4.1.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.1.2" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.3" + postcss-page-break "^3.0.4" + postcss-place "^7.0.4" + postcss-pseudo-class-any-link "^7.1.1" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^5.0.0" + +postcss-pseudo-class-any-link@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.1.tgz#534eb1dadd9945eb07830dbcc06fb4d5d865b8e0" + integrity sha512-JRoLFvPEX/1YTPxRxp1JO4WxBVXJYrSY7NHeak5LImwJ+VobFMwYDQHvfTXEpcn+7fYIeGkC29zYFhFWIZD8fg== dependencies: - postcss "^7.0.2" + postcss-selector-parser "^6.0.9" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== postcss-resolve-nested-selector@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= -postcss-safe-parser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" - integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== - dependencies: - postcss "^7.0.26" - -postcss-sass@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.4.tgz#91f0f3447b45ce373227a98b61f8d8f0785285a3" - integrity sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg== - dependencies: - gonzales-pe "^4.3.0" - postcss "^7.0.21" - -postcss-scss@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.1.1.tgz#ec3a75fa29a55e016b90bf3269026c53c1d2b383" - integrity sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA== - dependencies: - postcss "^7.0.6" - -postcss-selector-matches@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" +postcss-safe-parser@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" + integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== -postcss-selector-not@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" - integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" +postcss-scss@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.3.tgz#36c23c19a804274e722e83a54d20b838ab4767ac" + integrity sha512-j4KxzWovfdHsyxwl1BxkUal/O4uirvHgdzMKS1aWJBAV0qh2qj5qAZqpeBfVUYGWv+4iK9Az7SPyZ4fyNju1uA== -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: +postcss-selector-not@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz#ac5fc506f7565dd872f82f5314c0f81a05630dc7" + integrity sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ== dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" + balanced-match "^1.0.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: - version "6.0.6" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" - integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.8, postcss-selector-parser@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-syntax@^0.36.2: - version "0.36.2" - resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" - integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: +postcss-values-parser@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== @@ -13041,49 +12335,14 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@7.x.x, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.6: - version "7.0.36" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" - integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@8.3.8: - version "8.3.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.8.tgz#9ebe2a127396b4b4570ae9f7770e7fb83db2bac1" - integrity sha512-GT5bTjjZnwDifajzczOC+r3FI3Cu+PgPvrsjhQdRqa2kTJ4968/X9CUce9xttIB0xOs5c6xf0TCWZo/y9lF6bA== - dependencies: - nanocolors "^0.2.2" - nanoid "^3.1.25" - source-map-js "^0.6.2" - -postcss@^7.0.17, postcss@^7.0.5: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.1.7, postcss@^8.2.1: - version "8.3.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" - integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== - dependencies: - colorette "^1.2.2" - nanoid "^3.1.23" - source-map-js "^0.6.2" - -postcss@^8.2.15: - version "8.3.9" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.9.tgz#98754caa06c4ee9eb59cc48bd073bb6bd3437c31" - integrity sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw== +postcss@8.4.6, postcss@^8.1.7, postcss@^8.2.14, postcss@^8.3.7, postcss@^8.4.5, postcss@^8.4.6: + version "8.4.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" + integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== dependencies: - nanoid "^3.1.28" - picocolors "^0.2.1" - source-map-js "^0.6.2" + nanoid "^3.2.0" + picocolors "^1.0.0" + source-map-js "^1.0.2" precinct@^7.0.0: version "7.1.0" @@ -13105,15 +12364,15 @@ precinct@^7.0.0: node-source-walk "^4.2.0" precinct@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/precinct/-/precinct-8.1.0.tgz#6b8f2389ba2ca61c466731390b0d7e25da3fd996" - integrity sha512-oeZBR9IdER42Ef6Rz11z1oOUqicsI5J1Qffj6tYghKLhxN2UnHy7uE1axxNr0VZRevPK2HWkROk36uXrbJwHFA== + version "8.3.1" + resolved "https://registry.yarnpkg.com/precinct/-/precinct-8.3.1.tgz#94b99b623df144eed1ce40e0801c86078466f0dc" + integrity sha512-pVppfMWLp2wF68rwHqBIpPBYY8Kd12lDhk8LVQzOwqllifVR15qNFyod43YLyFpurKRZQKnE7E4pofAagDOm2Q== dependencies: commander "^2.20.3" - debug "^4.3.1" - detective-amd "^3.0.1" + debug "^4.3.3" + detective-amd "^3.1.0" detective-cjs "^3.1.1" - detective-es6 "^2.2.0" + detective-es6 "^2.2.1" detective-less "^1.0.2" detective-postcss "^4.0.0" detective-sass "^3.0.1" @@ -13123,6 +12382,11 @@ precinct@^8.0.0: module-definition "^3.3.1" node-source-walk "^4.2.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -13134,9 +12398,9 @@ prepend-http@^2.0.0: integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= prettier@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" - integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== + version "2.5.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" + integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== pretty-bytes@^5.3.0: version "5.6.0" @@ -13150,10 +12414,15 @@ pretty-ms@^7.0.0: dependencies: parse-ms "^2.1.0" -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== +printj@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/printj/-/printj-1.3.1.tgz#9af6b1d55647a1587ac44f4c1654a4b95b8e12cb" + integrity sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg== + +proc-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.0.tgz#25f8cb346a5d08e27f2422b3ca6ba8379bcbf8ba" + integrity sha512-I/35MfCX2H8jBUhKN8JB8nmqvQo/nKdrBodBY7L3RhDSPPyvOHwLYNmPuhwuJq7a7C3vgFKWGQM+ecPStcvOHA== process-nextick-args@~1.0.6: version "1.0.7" @@ -13165,7 +12434,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^2.0.1, progress@^2.0.3: +progress@^2.0.0, progress@^2.0.1, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -13188,13 +12457,13 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -prompts@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== +prompts@~2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" - sisteransi "^1.0.4" + sisteransi "^1.0.5" propagate@^2.0.0: version "2.0.1" @@ -13213,10 +12482,17 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -protobufjs@6.8.8: - version "6.8.8" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" - integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== +proto3-json-serializer@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-0.1.8.tgz#f80f9afc1efe5ed9a9856bbbd17dc7cabd7ce9a3" + integrity sha512-ACilkB6s1U1gWnl5jtICpnDai4VCxmI9GFxuEaYdxtDG2oVI3sVFIUsvUZcQbJgtPM6p+zqKbjTKQZp6Y4FpQw== + dependencies: + protobufjs "^6.11.2" + +protobufjs@6.11.2, protobufjs@^6.10.0, protobufjs@^6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" + integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -13228,14 +12504,14 @@ protobufjs@6.8.8: "@protobufjs/path" "^1.1.2" "@protobufjs/pool" "^1.1.0" "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" long "^4.0.0" -protobufjs@^6.10.0, protobufjs@^6.10.2: - version "6.11.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" - integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== +protobufjs@6.8.8: + version "6.8.8" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" + integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -13247,8 +12523,8 @@ protobufjs@^6.10.0, protobufjs@^6.10.2: "@protobufjs/path" "^1.1.2" "@protobufjs/pool" "^1.1.0" "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" + "@types/long" "^4.0.0" + "@types/node" "^10.1.0" long "^4.0.0" protractor@^7.0.0: @@ -13272,7 +12548,7 @@ protractor@^7.0.0: webdriver-manager "^12.1.7" yargs "^15.3.1" -proxy-addr@~2.0.5: +proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== @@ -13280,17 +12556,17 @@ proxy-addr@~2.0.5: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-agent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-4.0.1.tgz#326c3250776c7044cd19655ccbfadf2e065a045c" - integrity sha512-ODnQnW2jc/FUVwHHuaZEfN5otg/fMbvMxz9nMSUQfJ9JU7q2SZvSULSsjLloVgJOiv9yhc8GlNMKc4GkFmcVEA== +proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" + integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== dependencies: agent-base "^6.0.0" debug "4" http-proxy-agent "^4.0.0" https-proxy-agent "^5.0.0" lru-cache "^5.1.1" - pac-proxy-agent "^4.1.0" + pac-proxy-agent "^5.0.0" proxy-from-env "^1.0.0" socks-proxy-agent "^5.0.0" @@ -13329,11 +12605,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^1.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -13374,12 +12645,12 @@ q@1.4.1: resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" integrity sha1-VXBbzZPF82c1MMLCy8DCs63cKG4= -q@^1.4.1, q@^1.5.1, q@~1.5.0: +q@^1.4.1, q@~1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qjobs@^1.1.4: +qjobs@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== @@ -13389,22 +12660,22 @@ qs@6.2.3: resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" integrity sha1-HPyyXBCpsrSDBT/zn138kjOQjP4= -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@6.9.7: + version "6.9.7" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== qs@^6.6.0: - version "6.10.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== dependencies: side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== query-string@^5.0.1: version "5.1.1" @@ -13415,11 +12686,6 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -13442,28 +12708,28 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: +range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "1.8.1" iconv-lite "0.4.24" unpipe "1.0.0" raw-body@^2.2.0, raw-body@^2.3.2, raw-body@^2.3.3: - version "2.4.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" - integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.0.tgz#865890d9435243e9fe6141feb4decf929a6e1525" + integrity sha512-XpyZ6O7PVu3ItMQl0LslfsRoKxMOxi3SzDkrOtxMES5AqLFpYjQCryxI4LGygUN2jL+RgFsPkMPPlG7cg/47+A== dependencies: - bytes "3.1.0" - http-errors "1.7.3" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -13478,13 +12744,13 @@ rc@^1.2.7, rc@^1.2.8: strip-json-comments "~2.0.1" re2@^1.15.8: - version "1.16.0" - resolved "https://registry.yarnpkg.com/re2/-/re2-1.16.0.tgz#f311eb4865b1296123800ea8e013cec8dab25590" - integrity sha512-eizTZL2ZO0ZseLqfD4t3Qd0M3b3Nr0MBWpX81EbPMIud/1d/CSfUIx2GQK8fWiAeHoSekO5EOeFib2udTZLwYw== + version "1.17.3" + resolved "https://registry.yarnpkg.com/re2/-/re2-1.17.3.tgz#8cceb48f52c45b860b1f67cee8a44726f7d05e9a" + integrity sha512-Dp5iWVR8W3C7Nm9DziMY4BleMPRb/pe6kvfbzLv80dVYaXRc9jRnwwNqU0oE/taRm0qYR1+Qrtzk9rPjS9ecaQ== dependencies: - install-artifact-from-github "^1.2.0" - nan "^2.14.2" - node-gyp "^8.0.0" + install-artifact-from-github "^1.3.0" + nan "^2.15.0" + node-gyp "^8.4.1" read-cache@^1.0.0: version "1.0.0" @@ -13493,7 +12759,7 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -read-package-json-fast@^2.0.1: +read-package-json-fast@^2.0.1, read-package-json-fast@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== @@ -13501,13 +12767,15 @@ read-package-json-fast@^2.0.1: json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= +read-package-json@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.1.tgz#153be72fce801578c1c86b8ef2b21188df1b9eea" + integrity sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw== dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^3.0.0" + npm-normalize-package-bin "^1.0.0" read-pkg-up@^7.0.1: version "7.0.1" @@ -13518,15 +12786,6 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -13556,7 +12815,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.6, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.7, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -13588,15 +12847,6 @@ readdir-glob@^1.0.0: dependencies: minimatch "^3.0.4" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -13626,15 +12876,15 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -reflect-metadata@^0.1.13, reflect-metadata@^0.1.2, reflect-metadata@^0.1.3: +reflect-metadata@^0.1.13, reflect-metadata@^0.1.2: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -regenerate-unicode-properties@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" - integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== dependencies: regenerate "^1.4.2" @@ -13655,36 +12905,33 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regex-parser@^2.2.11: version "2.2.11" resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== regexp.prototype.flags@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + version "1.4.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" + integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" - integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" @@ -13702,15 +12949,15 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== -regjsparser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" - integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: jsesc "~0.5.0" @@ -13740,44 +12987,6 @@ rehype@^8.0.0: rehype-stringify "^6.0.0" unified "^7.0.0" -remark-parse@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" - integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== - dependencies: - mdast-util-from-markdown "^0.8.0" - -remark-stringify@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894" - integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg== - dependencies: - mdast-util-to-markdown "^0.6.0" - -remark@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" - integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== - dependencies: - remark-parse "^9.0.0" - remark-stringify "^9.0.0" - unified "^9.1.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.0.0, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - replace-ext@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" @@ -13843,9 +13052,9 @@ requires-port@^1.0.0: integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= resolve-alpn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.0.tgz#058bb0888d1cd4d12474e9a4b6eb17bdd5addc44" - integrity sha512-e4FNQs+9cINYMO5NMFc6kOUCdohjqFPSgMuwuZAOUWqrfWsen+Yjy5qZFkV5K7VO7tFSLKcUL97olkED7sCBHA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-dependency-path@^2.0.0: version "2.0.0" @@ -13862,34 +13071,30 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" - integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== +resolve-url-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" + integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== dependencies: adjust-sourcemap-loader "^4.0.0" convert-source-map "^1.7.0" loader-utils "^2.0.0" - postcss "^7.0.35" + postcss "^8.2.14" source-map "0.6.1" -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.20.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== +resolve@1.22.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.21.0, resolve@^1.3.2, resolve@^1.4.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" resolve@~1.17.0: version "1.17.0" @@ -13929,9 +13134,9 @@ responselike@^2.0.0: lowercase-keys "^2.0.0" resq@^1.9.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/resq/-/resq-1.10.1.tgz#c05d1b3808016cceec4d485ceb375acb49565f53" - integrity sha512-zhp1iyUH02MLciv3bIM2bNtTFx/fqRsK4Jk73jcPqp00d/sMTTjOtjdTMAcgjrQKGx5DvQ/HSpeqaMW0atGRJA== + version "1.10.2" + resolved "https://registry.yarnpkg.com/resq/-/resq-1.10.2.tgz#cedf4f20d53f6e574b1e12afbda446ad9576c193" + integrity sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A== dependencies: fast-deep-equal "^2.0.1" @@ -13951,11 +13156,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - retry-request@^4.0.0: version "4.2.2" resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.2.2.tgz#b7d82210b6d2651ed249ba3497f07ea602f1a903" @@ -13979,7 +13179,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.1.4: +rfdc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== @@ -13989,7 +13189,7 @@ rgb2hex@0.2.3: resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.2.3.tgz#8aa464c517b8a26c7a79d767dabaec2b49ee78ec" integrity sha512-clEe0m1xv+Tva1B/TOepuIcvLAxP0U+sCDfgt1SX1HmI2Ahr5/Cd/nzJM1e78NKVtWdoo0s33YehpFA8UfIShQ== -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -14030,17 +13230,17 @@ rollup-plugin-sourcemaps@^0.6.3: "@rollup/pluginutils" "^3.0.9" source-map-resolve "^0.6.0" -rollup@2.58.0, rollup@^2.58.0: - version "2.58.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.58.0.tgz#a643983365e7bf7f5b7c62a8331b983b7c4c67fb" - integrity sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw== +rollup@^2.66.1: + version "2.67.3" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.67.3.tgz#3f04391fc296f807d067c9081d173e0a33dbd37e" + integrity sha512-G/x1vUwbGtP6O5ZM8/sWr8+p7YfZhI18pPqMRtMYMWSbHjKZ/ajHGiM+GWNTlWyOR0EHIdT8LHU+Z4ciIZ1oBw== optionalDependencies: fsevents "~2.3.2" router@^1.3.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/router/-/router-1.3.5.tgz#cb2f47f74fd99a77fb3bc01cc947f46b79b1790f" - integrity sha512-kozCJZUhuSJ5VcLhSb3F8fsmGXy+8HaDbKCAerR1G6tq3mnMZFMuSohbFvGv1c5oMFipijDjRZuuN/Sq5nMf3g== + version "1.3.6" + resolved "https://registry.yarnpkg.com/router/-/router-1.3.6.tgz#35302dc8d69f75b00797d618d92d6c9fb35604bf" + integrity sha512-gsjhou+LFApzkIP8VDrouG6Z4pqkeF11n3o5orlwPPvPTl0x7c+dbF71itKOhDoFHygmc3N3uqm55Uq/gIDUwg== dependencies: array-flatten "3.0.0" debug "2.6.9" @@ -14073,19 +13273,19 @@ rx@4.1.0: integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= rxjs-report-usage@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/rxjs-report-usage/-/rxjs-report-usage-1.0.5.tgz#8de220b385f3f65a163e75cfcc2566b1545c9b3d" - integrity sha512-jZeg+TTkvP8kAv0tIQj3WOuIhYLi+Ig9mG8DCc+nJHQ1ObJr8IaeNPbJmXDRfHvH3MKQMBzboY4RbQ6jWt6cIg== + version "1.0.6" + resolved "https://registry.yarnpkg.com/rxjs-report-usage/-/rxjs-report-usage-1.0.6.tgz#6e06034d9e1592e8a45bee877631638e4bac2576" + integrity sha512-omv1DIv5z1kV+zDAEjaDjWSkx8w5TbFp5NZoPwUipwzYVcor/4So9ZU3bUyQ1c8lxY5Q0Es/ztWW7PGjY7to0Q== dependencies: - "@babel/parser" "~7.10.3" - "@babel/traverse" "~7.10.3" - "@babel/types" "~7.10.3" + "@babel/parser" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" bent "~7.3.6" chalk "~4.1.0" - glob "~7.1.6" - prompts "~2.3.2" + glob "~7.2.0" + prompts "~2.4.2" -rxjs-tslint-rules@^4.33.1: +rxjs-tslint-rules@^4.34.8: version "4.34.8" resolved "https://registry.yarnpkg.com/rxjs-tslint-rules/-/rxjs-tslint-rules-4.34.8.tgz#ed56c6e0205cc395611ef8c6bb4005b920df0a53" integrity sha512-PKNG0IxB+44S1HNERnagF5bqegs9sSUpY08g+jeRb2Gq36Qt5nKdVt6ZnMilfQxKgjFqd50iHvn0yairQ/pLKQ== @@ -14099,7 +13299,7 @@ rxjs-tslint-rules@^4.33.1: tsutils "^3.0.0" tsutils-etc "^1.2.2" -rxjs@6.6.7, rxjs@^6.4.0, rxjs@^6.5.3: +rxjs@6.6.7, rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^6.6.7: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -14114,38 +13314,36 @@ rxjs@^5.5.6: symbol-observable "1.0.1" rxjs@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.2.0.tgz#5cd12409639e9514a71c9f5f9192b2c4ae94de31" - integrity sha512-aX8w9OpKrQmiPKfT1bqETtUr9JygIz6GZ+gql8v7CijClsP0laoFUdKzxFAoWuRdSlOdU2+crss+cMf+cqMTnw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" + integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== dependencies: - tslib "~2.1.0" + tslib "^2.1.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" +safe-stable-stringify@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" + integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg== "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.1.0.tgz#b73324622231009da6fba61ab76013256380d201" - integrity sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg== +sass-loader@12.6.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== dependencies: klona "^2.0.4" neo-async "^2.6.2" @@ -14157,19 +13355,23 @@ sass-lookup@^3.0.0: dependencies: commander "^2.16.0" -sass@1.42.1: - version "1.42.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.42.1.tgz#5ab17bebc1cb1881ad2e0c9a932c66ad64e441e2" - integrity sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg== +sass@1.49.7: + version "1.49.7" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.7.tgz#22a86a50552b9b11f71404dfad1b9ff44c6b0c49" + integrity sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ== dependencies: chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" -sass@^1.41.0: - version "1.41.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.41.1.tgz#bca5bed2154192779c29f48fca9c644c60c38d98" - integrity sha512-vIjX7izRxw3Wsiez7SX7D+j76v7tenfO18P59nonjr/nzCkZuoHuF7I/Fo0ZRZPKr88v29ivIdE9BqGDgQD/Nw== +sass@1.49.8, sass@^1.49.4: + version "1.49.8" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.8.tgz#9bbbc5d43d14862db07f1c04b786c9da9b641828" + integrity sha512-NoGOjvDDOU9og9oAxhRnap71QaTjjlzrvLnKecUJ3GxhaQBrV6e7gPuSPF28u1OcVAArVojPAe4ZhOXwwC4tGw== dependencies: chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" saucelabs@^1.5.0: version "1.5.0" @@ -14196,7 +13398,7 @@ sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -schema-utils@^2.6.5, schema-utils@^2.7.0: +schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -14205,7 +13407,7 @@ schema-utils@^2.6.5, schema-utils@^2.7.0: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.1.0, schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== @@ -14214,6 +13416,16 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + seek-bzip@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" @@ -14226,16 +13438,6 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selenium-webdriver@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.5.0.tgz#9036c82874e6c0f5cbff0a0f18223bc31c99cb77" - integrity sha512-1bCZYRfDy7vsu1dkLrclTLvWPxSo6rOIkxZXvB2wnzeWkEoiTKpw612EUGA3jRZxPzAzI9OlxuULJV8ge1vVXQ== - dependencies: - jszip "^3.1.3" - rimraf "^2.5.4" - tmp "0.0.30" - xml2js "^0.4.17" - selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1, selenium-webdriver@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" @@ -14246,12 +13448,21 @@ selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1, selenium-webdriver@^3.6.0: tmp "0.0.30" xml2js "^0.4.17" -selfsigned@^1.10.11: - version "1.10.11" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9" - integrity sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA== +selenium-webdriver@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.1.1.tgz#da083177d811f36614950e809e2982570f67d02e" + integrity sha512-Fr9e9LC6zvD6/j7NO8M1M/NVxFX67abHcxDJoP5w2KN/Xb1SyYLjMVPGgD14U2TOiKe4XKHf42OmFw9g2JgCBQ== + dependencies: + jszip "^3.6.0" + tmp "^0.2.1" + ws ">=7.4.6" + +selfsigned@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.0.tgz#e927cd5377cbb0a1075302cff8df1042cc2bce5b" + integrity sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ== dependencies: - node-forge "^0.10.0" + node-forge "^1.2.0" semver-compare@^1.0.0: version "1.0.0" @@ -14299,7 +13510,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: +semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@~7.3.0: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -14330,10 +13541,10 @@ send@0.16.2: range-parser "~1.2.0" statuses "~1.4.0" -send@0.17.1, send@^0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.17.2, send@^0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== dependencies: debug "2.6.9" depd "~1.1.2" @@ -14342,9 +13553,9 @@ send@0.17.1, send@^0.17.1: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "1.8.1" mime "1.6.0" - ms "2.1.1" + ms "2.1.3" on-finished "~2.3.0" range-parser "~1.2.1" statuses "~1.5.0" @@ -14410,22 +13621,22 @@ serve-static@1.13.2: parseurl "~1.3.2" send "0.16.2" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.17.2" server-destroy@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" integrity sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0= -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -14435,16 +13646,6 @@ set-immediate-shim@~1.0.1: resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - setimmediate@~1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -14455,11 +13656,6 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -14496,10 +13692,10 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@0.8.4, shelljs@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== +shelljs@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -14514,15 +13710,10 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -signal-exit@^3.0.3: - version "3.0.5" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" - integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== simple-swizzle@^0.2.2: version "0.2.2" @@ -14531,7 +13722,7 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.4: +sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -14541,6 +13732,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -14550,10 +13746,10 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snake-case@^2.1.0: version "2.1.0" @@ -14570,41 +13766,16 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - socket.io-adapter@~1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== +socket.io-adapter@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz#4d6111e4d42e9f7646e365b4f578269821f13486" + integrity sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ== + socket.io-client@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" @@ -14625,7 +13796,7 @@ socket.io-client@2.1.1: socket.io-parser "~3.2.0" to-array "0.1.4" -socket.io-client@^2.4.0: +socket.io-client@2.4.0, socket.io-client@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.4.0.tgz#aafb5d594a3c55a34355562fc8aea22ed9119a35" integrity sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ== @@ -14660,6 +13831,24 @@ socket.io-parser@~3.3.0: debug "~3.1.0" isarray "2.0.1" +socket.io-parser@~3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" + integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== + dependencies: + component-emitter "1.2.1" + debug "~4.1.0" + isarray "2.0.1" + +socket.io-parser@~4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0" + integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g== + dependencies: + "@types/component-emitter" "^1.2.10" + component-emitter "~1.3.0" + debug "~4.3.1" + socket.io@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" @@ -14672,13 +13861,37 @@ socket.io@2.1.1: socket.io-client "2.1.1" socket.io-parser "~3.2.0" +socket.io@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.4.0.tgz#01030a2727bd8eb2e85ea96d69f03692ee53d47e" + integrity sha512-9UPJ1UTvKayuQfVv2IQ3k7tCQC/fboDyIK62i99dAQIyHKaBsNdTpwHLgKJ6guRWxRtC9H+138UwpaGuQO9uWQ== + dependencies: + debug "~4.1.0" + engine.io "~3.5.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.4.0" + socket.io-parser "~3.4.0" + +socket.io@^4.2.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.4.1.tgz#cd6de29e277a161d176832bb24f64ee045c56ab8" + integrity sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg== + dependencies: + accepts "~1.3.4" + base64id "~2.0.0" + debug "~4.3.2" + engine.io "~6.1.0" + socket.io-adapter "~2.3.3" + socket.io-parser "~4.0.4" + sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" - uuid "^3.4.0" + uuid "^8.3.2" websocket-driver "^0.7.4" socks-proxy-agent@5, socks-proxy-agent@^5.0.0: @@ -14690,22 +13903,22 @@ socks-proxy-agent@5, socks-proxy-agent@^5.0.0: debug "4" socks "^2.3.3" -socks-proxy-agent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz#869cf2d7bd10fea96c7ad3111e81726855e285c3" - integrity sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg== +socks-proxy-agent@^6.0.0, socks-proxy-agent@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" + integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== dependencies: agent-base "^6.0.2" debug "^4.3.1" socks "^2.6.1" socks@^2.3.3, socks@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" - integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== + version "2.6.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" + integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== dependencies: ip "^1.1.5" - smart-buffer "^4.1.0" + smart-buffer "^4.2.0" sort-keys-length@^1.0.0: version "1.0.1" @@ -14728,35 +13941,19 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049" - integrity sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw== +source-map-loader@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.1.tgz#9ae5edc7c2d42570934be4c95d1ccc6352eba52d" + integrity sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA== dependencies: abab "^2.0.5" - iconv-lite "^0.6.2" - source-map-js "^0.6.2" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" source-map-resolve@^0.6.0: version "0.6.0" @@ -14766,10 +13963,10 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@0.5.20, source-map-support@^0.5.5, source-map-support@~0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== +source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -14789,11 +13986,6 @@ source-map-support@^0.4.15, source-map-support@~0.4.0: dependencies: source-map "^0.5.6" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -14816,7 +14008,7 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -sourcemap-codec@1.4.8, sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: +sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== @@ -14848,9 +14040,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" - integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== spdx-license-list@^2.1.0: version "2.1.0" @@ -14885,13 +14077,6 @@ specificity@^0.4.1: resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -14906,13 +14091,6 @@ split@0.3: dependencies: through "2" -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - sprintf-js@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" @@ -14924,9 +14102,9 @@ sprintf-js@~1.0.2: integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -14950,13 +14128,10 @@ stack-trace@0.0.x: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" @@ -14993,16 +14168,14 @@ stream-throttle@^0.1.3: commander "^2.2.0" limiter "^1.0.5" -streamroller@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-1.0.6.tgz#8167d8496ed9f19f05ee4b158d9611321b8cacd9" - integrity sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg== +streamroller@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.0.2.tgz#30418d0eee3d6c93ec897f892ed098e3a81e68b7" + integrity sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA== dependencies: - async "^2.6.2" - date-format "^2.0.0" - debug "^3.2.6" - fs-extra "^7.0.1" - lodash "^4.17.14" + date-format "^4.0.3" + debug "^4.1.1" + fs-extra "^10.0.0" strict-uri-encode@^1.0.0: version "1.1.0" @@ -15021,16 +14194,16 @@ string-length@^1.0.0: dependencies: strip-ansi "^3.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -"string-width@^1.0.2 || 2", string-width@^2.1.0: +string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -15038,24 +14211,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -15095,12 +14250,7 @@ stringify-object@^3.2.1: is-obj "^1.0.1" is-regexp "^1.0.0" -stringmap@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" - integrity sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE= - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: +strip-ansi@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -15121,12 +14271,12 @@ strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^5.0.0" + ansi-regex "^5.0.1" strip-ansi@^7.0.0: version "7.0.1" @@ -15135,11 +14285,6 @@ strip-ansi@^7.0.0: dependencies: ansi-regex "^6.0.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -15164,16 +14309,16 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -strip-json-comments@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - strip-outer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" @@ -15186,66 +14331,59 @@ style-search@^0.1.0: resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= -stylelint@^13.13.1: - version "13.13.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.13.1.tgz#fca9c9f5de7990ab26a00f167b8978f083a18f3c" - integrity sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ== +stylelint@^14.5.0: + version "14.5.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.5.1.tgz#2b2575ccaf14bb057209d48fc87c17d5b684f8db" + integrity sha512-8Hf4HtnhxlWlf7iXF9zFfhSc3X0teRnVzl6PqPs2JEFx+dy/mhMhghZfiTDW4QG0ihDw9+WP7GZw5Nzx7cQF5A== dependencies: - "@stylelint/postcss-css-in-js" "^0.37.2" - "@stylelint/postcss-markdown" "^0.36.2" - autoprefixer "^9.8.6" balanced-match "^2.0.0" - chalk "^4.1.1" - cosmiconfig "^7.0.0" - debug "^4.3.1" + colord "^2.9.2" + cosmiconfig "^7.0.1" + css-functions-list "^3.0.1" + debug "^4.3.3" execall "^2.0.0" - fast-glob "^3.2.5" + fast-glob "^3.2.11" fastest-levenshtein "^1.0.12" file-entry-cache "^6.0.1" get-stdin "^8.0.0" global-modules "^2.0.0" - globby "^11.0.3" + globby "^11.1.0" globjoin "^0.1.4" html-tags "^3.1.0" - ignore "^5.1.8" + ignore "^5.2.0" import-lazy "^4.0.0" imurmurhash "^0.1.4" - known-css-properties "^0.21.0" - lodash "^4.17.21" - log-symbols "^4.1.0" + is-plain-object "^5.0.0" + known-css-properties "^0.24.0" mathml-tag-names "^2.1.3" meow "^9.0.0" micromatch "^4.0.4" + normalize-path "^3.0.0" normalize-selector "^0.2.0" - postcss "^7.0.35" - postcss-html "^0.36.0" - postcss-less "^3.1.4" + picocolors "^1.0.0" + postcss "^8.4.6" postcss-media-query-parser "^0.2.3" postcss-resolve-nested-selector "^0.1.1" - postcss-safe-parser "^4.0.2" - postcss-sass "^0.4.4" - postcss-scss "^2.1.1" - postcss-selector-parser "^6.0.5" - postcss-syntax "^0.36.2" - postcss-value-parser "^4.1.0" + postcss-safe-parser "^6.0.0" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" resolve-from "^5.0.0" - slash "^3.0.0" specificity "^0.4.1" - string-width "^4.2.2" - strip-ansi "^6.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" style-search "^0.1.0" - sugarss "^2.0.0" + supports-hyperlinks "^2.2.0" svg-tags "^1.0.0" - table "^6.6.0" + table "^6.8.0" v8-compile-cache "^2.3.0" - write-file-atomic "^3.0.3" + write-file-atomic "^4.0.1" -stylus-loader@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-6.1.0.tgz#7a3a719a27cb2b9617896d6da28fda94c3ed9762" - integrity sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw== +stylus-loader@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-6.2.0.tgz#0ba499e744e7fb9d9b3977784c8639728a7ced8c" + integrity sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg== dependencies: - fast-glob "^3.2.5" + fast-glob "^3.2.7" klona "^2.0.4" normalize-path "^3.0.0" @@ -15257,27 +14395,18 @@ stylus-lookup@^3.0.1: commander "^2.8.1" debug "^4.1.0" -stylus@0.55.0: - version "0.55.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.55.0.tgz#bd404a36dd93fa87744a9dd2d2b1b8450345e5fc" - integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== +stylus@0.56.0: + version "0.56.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.56.0.tgz#13fc85c48082db483c90d2530942fe8b0be988eb" + integrity sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA== dependencies: css "^3.0.0" - debug "~3.1.0" + debug "^4.3.2" glob "^7.1.6" - mkdirp "~1.0.4" safer-buffer "^2.1.2" sax "~1.2.4" - semver "^6.3.0" source-map "^0.7.3" -sugarss@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" - integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== - dependencies: - postcss "^7.0.2" - superstatic@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-7.1.0.tgz#42cc773a0f500fb691841e0533d0b8c31f25997f" @@ -15329,14 +14458,7 @@ supports-color@^5.0.0, supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -15358,6 +14480,19 @@ supports-hyperlinks@^1.0.1: has-flag "^2.0.0" supports-color "^5.0.0" +supports-hyperlinks@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -15381,28 +14516,22 @@ symbol-observable@4.0.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== -table@^6.6.0: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== +table@^6.0.9, table@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== dependencies: ajv "^8.0.1" - lodash.clonedeep "^4.5.0" lodash.truncate "^4.4.2" slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" -tapable@^2.1.1: +tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tapable@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== - tar-fs@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -15438,22 +14567,22 @@ tar-stream@^2.1.4, tar-stream@^2.2.0: readable-stream "^3.1.1" tar@^4.3.0: - version "4.4.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.15.tgz#3caced4f39ebd46ddda4d6203d48493a919697f8" - integrity sha512-ItbufpujXkry7bHH9NpQyTXPbJ72iTlXgkBAYsAjDXk3Ds8t/3NfO5P4xZGy7u+sYuQUbimgzswX4uQIEeNVOA== + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" -tar@^6.0.2, tar@^6.1.0: - version "6.1.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.2.tgz#1f045a90a6eb23557a603595f41a16c57d47adc6" - integrity sha512-EwKEgqJ7nJoS+s8QfLYVGMDmAsj+StbI2AM/RTHeUSsOw6Z8bwNBRv5z3CY0m7laC5qUAqruLX5AhMuc5deY3Q== +tar@^6.0.2, tar@^6.1.11, tar@^6.1.2: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -15488,22 +14617,31 @@ term-size@^2.1.0: integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terser-webpack-plugin@^5.1.3: - version "5.2.4" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz#ad1be7639b1cbe3ea49fab995cbe7224b31747a1" - integrity sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA== + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== dependencies: - jest-worker "^27.0.6" - p-limit "^3.1.0" + jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" source-map "^0.6.1" terser "^5.7.2" -terser@5.9.0, terser@^5.7.2, terser@^5.9.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== +terser@5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" + integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + +terser@5.11.0, terser@^5.10.0, terser@^5.7.2: + version "5.11.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.11.0.tgz#2da5506c02e12cd8799947f30ce9c5b760be000f" + integrity sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A== dependencies: + acorn "^8.5.0" commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.20" @@ -15527,7 +14665,7 @@ text-hex@1.0.x: resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== -text-table@0.2.0: +text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -15548,14 +14686,6 @@ through2@2.0.1: readable-stream "~2.0.0" xtend "~4.0.0" -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through2@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" @@ -15606,7 +14736,7 @@ tmp@0.0.30: dependencies: os-tmpdir "~1.0.1" -tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: +tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -15635,26 +14765,11 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - to-readable-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -15662,20 +14777,10 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tough-cookie@~2.5.0: version "2.5.0" @@ -15692,6 +14797,11 @@ toxic@^1.0.0: dependencies: lodash "^4.17.10" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + "traverse@>=0.3.0 <0.4": version "0.3.9" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" @@ -15707,11 +14817,6 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -trim-off-newlines@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" - integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= - trim-repeated@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" @@ -15719,7 +14824,7 @@ trim-repeated@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -triple-beam@^1.2.0, triple-beam@^1.3.0: +triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== @@ -15729,12 +14834,17 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -ts-node@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5" - integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw== +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== + +ts-node@^10.2.1, ts-node@^10.4.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.5.0.tgz#618bef5854c1fbbedf5e31465cbb224a1d524ef9" + integrity sha512-6kEJKwVxAJ35W4akuiysfKwKmjkbYxwQMTBaAxo9KKAx/Yd26mPUyhGz3ji+EsJoAgrLqVsYHNuuYwQe22lbtw== dependencies: - "@cspotcode/source-map-support" "0.6.1" + "@cspotcode/source-map-support" "0.7.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" @@ -15745,8 +14855,17 @@ ts-node@^10.2.1: create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" + v8-compile-cache-lib "^3.0.0" yn "3.1.1" +tsec@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tsec/-/tsec-0.2.1.tgz#017423174b2be54f26da5cb7591dc7035996086b" + integrity sha512-RP9vhbRbRI9VH4CfOlQvo5W9HdfiPKq0gdiUOWI5oKmLaZKNFN8CsPwBfT5ySmhnKNwmmAS/BtY3WoTfABwwig== + dependencies: + glob "^7.1.1" + minimatch "^3.0.3" + tsickle@0.39.1: version "0.39.1" resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.39.1.tgz#7ccf672cde5b430f5dd0b281ee49e170ef390ff9" @@ -15757,12 +14876,7 @@ tsickle@^0.38.0: resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.38.1.tgz#30762db759d40c435943093b6972c7f2efb384ef" integrity sha512-4xZfvC6+etRu6ivKCNqMOd1FqcY/m6JY3Y+yr5+Xw+i751ciwrWINi6x/3l1ekcODH9GZhlf0ny2LpzWxnjWYA== -tslib@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -tslib@2.3.1, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0: +tslib@2.3.1, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -15772,11 +14886,6 @@ tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - tslint@^6.1.3: version "6.1.3" resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" @@ -15797,9 +14906,9 @@ tslint@^6.1.3: tsutils "^2.29.0" tsutils-etc@^1.2.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/tsutils-etc/-/tsutils-etc-1.3.4.tgz#35def32592fe16f56bb5f0bdc9844acdad6c9bab" - integrity sha512-GOQJeZgE0rFiok0CsOrvNgLrIG5LiVEYtSiPHZz0KFFlSR8q3qXMkGZ3hOvFpBvB++B7PVEMhjQQmAF3tSFLKA== + version "1.4.1" + resolved "https://registry.yarnpkg.com/tsutils-etc/-/tsutils-etc-1.4.1.tgz#bd42a0079d534765ab314d087f8a89c77a68723f" + integrity sha512-6UPYgc7OXcIW5tFxlsZF3OVSBvDInl/BkS3Xsu64YITXk7WrnWTVByKWPCThFDBp5gl5IGHOzGMdQuDCE7OL4g== dependencies: "@types/yargs" "^17.0.0" yargs "^17.0.0" @@ -15848,6 +14957,13 @@ tweetsodium@0.0.5: blakejs "^1.1.0" tweetnacl "^1.0.1" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -15885,7 +15001,7 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@~1.6.17, type-is@~1.6.18: +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -15898,20 +15014,20 @@ type@^1.0.1: resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -type@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== +type@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" + integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== typed-assert@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.8.tgz#4bf9f1ce7f3f974d09c3afd7c68d12e1391a233c" - integrity sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g== + version "1.0.9" + resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" + integrity sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== typed-graphqlify@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/typed-graphqlify/-/typed-graphqlify-3.1.3.tgz#6a8aea57d277a88e7d1934fc2120536c3bb18435" - integrity sha512-xLUvbyJf5qIPYj0hNijOVhKuBjXJ4apjOVGWGW33Sjj20MApp6EBImPNz+uuHukduHrdtawt1/6XJdb4oixZVQ== + version "3.1.4" + resolved "https://registry.yarnpkg.com/typed-graphqlify/-/typed-graphqlify-3.1.4.tgz#f5e494cd78bb87a4284df8c34b8f29617596aaec" + integrity sha512-/LnB/b5TXXL9zY5I5hE6/SwAaxZZsvQPxjZGIHtMa/Y0pcnw52uwVA5UnLNesgWtgFkfPYw2NAx31vGbnaqh+A== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -15920,35 +15036,40 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== - -typescript@4.4.2, typescript@^3.2.2: +"typescript-4.4@npm:typescript@4.4.2": version "4.4.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.2.tgz#6d618640d430e3569a1dfb44f7d7e600ced3ee86" integrity sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ== -typescript@4.4.3, typescript@~4.4.0, typescript@~4.4.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" - integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== +typescript@4.5.2, typescript@~4.5.4: + version "4.5.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" + integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== -typescript@^3.9.5, typescript@^3.9.7: +typescript@^3.9.10, typescript@^3.9.5, typescript@^3.9.7: version "3.9.10" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== -ua-parser-js@^0.7.18, ua-parser-js@^0.7.21: - version "0.7.28" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" - integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== +typescript@~4.5.0, typescript@~4.5.2, typescript@~4.5.5: + version "4.5.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" + integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== + +ua-parser-js@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.2.tgz#e2976c34dbfb30b15d2c300b2a53eac87c57a775" + integrity sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg== + +ua-parser-js@^0.7.18, ua-parser-js@^0.7.21, ua-parser-js@^0.7.30: + version "0.7.31" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== uglify-js@^3.1.4: - version "3.14.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.1.tgz#e2cb9fe34db9cb4cf7e35d1d26dfea28e09a7d06" - integrity sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g== + version "3.15.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.1.tgz#9403dc6fa5695a6172a91bc983ea39f0f7c9086d" + integrity sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ== ultron@~1.1.0: version "1.1.1" @@ -16000,28 +15121,6 @@ unified@^7.0.0: vfile "^3.0.0" x-is-string "^0.1.0" -unified@^9.1.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" - integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-buffer "^2.0.0" - is-plain-obj "^2.0.0" - trough "^1.0.0" - vfile "^4.0.0" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -16048,35 +15147,16 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unist-util-find-all-after@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6" - integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ== - dependencies: - unist-util-is "^4.0.0" - unist-util-is@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== -unist-util-is@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" - integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== - unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== -unist-util-stringify-position@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" - integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== - dependencies: - "@types/unist" "^2.0.2" - unist-util-stringify-position@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz#d517d2883d74d0daa0b565adc3d10a02b4a8cde9" @@ -16121,14 +15201,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - unzipper@^0.10.10: version "0.10.11" resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" @@ -16145,11 +15217,6 @@ unzipper@^0.10.10: readable-stream "~2.3.6" setimmediate "~1.0.4" -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - update-notifier@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" @@ -16222,11 +15289,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - url-join@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/url-join/-/url-join-0.0.1.tgz#1db48ad422d3402469a87f7d97bdebfe4fb1e3c8" @@ -16244,14 +15306,6 @@ url-to-options@^1.0.1: resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - urlencode@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/urlencode/-/urlencode-1.1.0.tgz#1f2ba26f013c85f0133f7a3ad6ff2730adf7cbb7" @@ -16259,19 +15313,6 @@ urlencode@^1.1.0: dependencies: iconv-lite "~0.4.11" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -useragent@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -16287,12 +15328,17 @@ uuid@8.3.2, uuid@^8.0.0, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^3.0.0, uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.0.0, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@^2.3.0: +v8-compile-cache-lib@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" + integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== + +v8-compile-cache@^2.0.3, v8-compile-cache@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== @@ -16331,10 +15377,10 @@ validate.js@^0.12.0: resolved "https://registry.yarnpkg.com/validate.js/-/validate.js-0.12.0.tgz#17f989e37c192ea2f826bbf19bf4e97e6e4be68f" integrity sha512-/x2RJSvbqEyxKj0RPN4xaRquK+EggjeVXiDDEyrJzsJogjtiZ9ov7lj/svVb4DM5Q5braQF4cooAryQbUwOxlA== -validator@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9" - integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA== +validator@^13.7.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== vary@^1, vary@~1.1.2: version "1.1.2" @@ -16351,9 +15397,9 @@ verror@1.10.0: extsprintf "^1.2.0" vfile-message@*: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.0.1.tgz#b9bcf87cb5525e61777e0c6df07e816a577588a3" - integrity sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.0.tgz#5437035aa43185ff4b9210d32fada6c640e59143" + integrity sha512-4QJbBk+DkPEhBXq3f260xSaWtjE4gPKOfulzfMFF8ZNwaPZieWsg3iVlcmF04+eebzpcpeXOOFMfrYzJHVYg+g== dependencies: "@types/unist" "^2.0.0" unist-util-stringify-position "^3.0.0" @@ -16365,14 +15411,6 @@ vfile-message@^1.0.0: dependencies: unist-util-stringify-position "^1.1.1" -vfile-message@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" - integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== - dependencies: - "@types/unist" "^2.0.0" - unist-util-stringify-position "^2.0.0" - vfile@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" @@ -16383,15 +15421,13 @@ vfile@^3.0.0: unist-util-stringify-position "^1.0.0" vfile-message "^1.0.0" -vfile@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" - integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== +vm2@^3.9.8: + version "3.9.8" + resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.8.tgz#e99c000db042735cd2f94d8db6c42163a17be04e" + integrity sha512-/1PYg/BwdKzMPo8maOZ0heT7DLI0DAFTm7YQaz/Lim9oIaFZsJs3EdtalvXuBfZwczNwsYhju75NW4d6E+4q+w== dependencies: - "@types/unist" "^2.0.0" - is-buffer "^2.0.0" - unist-util-stringify-position "^2.0.0" - vfile-message "^2.0.0" + acorn "^8.7.0" + acorn-walk "^8.2.0" void-elements@^2.0.0: version "2.0.1" @@ -16408,10 +15444,10 @@ walkdir@^0.4.1: resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ== -watchpack@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" - integrity sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA== +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -16501,47 +15537,57 @@ webdriverio@^6.7.0: serialize-error "^8.0.0" webdriver "6.12.1" -webpack-dev-middleware@5.2.1, webpack-dev-middleware@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz#97c948144349177856a3d2d9c612cc3fee180cf1" - integrity sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ== +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +webpack-dev-middleware@5.3.1, webpack-dev-middleware@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f" + integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg== dependencies: colorette "^2.0.10" - memfs "^3.2.2" + memfs "^3.4.1" mime-types "^2.1.31" range-parser "^1.2.1" - schema-utils "^3.1.0" - -webpack-dev-server@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.3.0.tgz#732f5869d4c06e222b599daee64bc268f5edea24" - integrity sha512-kuqP9Xn4OzcKe7f0rJwd4p8xqiD+4b5Lzu8tJa8OttRL3E1Q8gI2KmUtouJTgDswjjvHOHlZDV8LTQfSY5qZSA== - dependencies: + schema-utils "^4.0.0" + +webpack-dev-server@4.7.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" + integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.2.2" ansi-html-community "^0.0.8" bonjour "^3.5.0" - chokidar "^3.5.1" + 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" graceful-fs "^4.2.6" html-entities "^2.3.2" http-proxy-middleware "^2.0.0" - internal-ip "^6.2.0" ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" portfinder "^1.0.28" - schema-utils "^3.1.0" - selfsigned "^1.10.11" + schema-utils "^4.0.0" + selfsigned "^2.0.0" serve-index "^1.9.1" sockjs "^0.3.21" spdy "^4.0.2" strip-ansi "^7.0.0" - url "^0.11.0" - webpack-dev-middleware "^5.2.1" - ws "^8.1.0" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" webpack-merge@5.8.0: version "5.8.0" @@ -16551,33 +15597,25 @@ webpack-merge@5.8.0: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^1.2.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-sources@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.1.tgz#251a7d9720d75ada1469ca07dbb62f3641a05b6d" - integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== +webpack-sources@^3.0.0, webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack-subresource-integrity@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.0.0.tgz#8268b9cc1a229a8f8129ca9eeb59cde52185b6b1" - integrity sha512-x9514FpLRydO+UAQ8DY4aLtCjxmdLkuQVcDFN1kGzuusREYJ1B0rzk/iIlWiL6dnvrhEGFj2+UsdxDkP8Z4UKg== +webpack-subresource-integrity@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz#8b7606b033c6ccac14e684267cb7fb1f5c2a132a" + integrity sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q== dependencies: typed-assert "^1.0.8" -webpack@5.55.1: - version "5.55.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.55.1.tgz#426ebe54c15fa57f7b242590f65fd182382b5998" - integrity sha512-EYp9lwaOOAs+AA/KviNZ7bQiITHm4bXQvyTPewD2+f5YGjv6sfiClm40yeX5FgBMxh5bxcB6LryiFoP09B97Ug== +webpack@5.69.1: + version "5.69.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.69.1.tgz#8cfd92c192c6a52c99ab00529b5a0d33aa848dc5" + integrity sha512-+VyvOSJXZMT2V5vLzOnDuMz5GxEqLk7hKWQ56YxPW/PQRUuKimPqmEIJOx8jHYeyo65pKbapbW464mvsKbaj4A== dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.50" + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" @@ -16590,7 +15628,7 @@ webpack@5.55.1: eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" json-parse-better-errors "^1.0.2" loader-runner "^4.2.0" mime-types "^2.1.27" @@ -16598,8 +15636,8 @@ webpack@5.55.1: schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.2.0" - webpack-sources "^3.2.0" + watchpack "^2.3.1" + webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -16615,6 +15653,14 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -16634,12 +15680,12 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - string-width "^1.0.2 || 2" + string-width "^1.0.2 || 2 || 3 || 4" widest-line@^3.1.0: version "3.1.0" @@ -16653,13 +15699,14 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -winston-transport@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59" - integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw== +winston-transport@^4.4.0, winston-transport@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" + integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== dependencies: - readable-stream "^2.3.7" - triple-beam "^1.2.0" + logform "^2.3.2" + readable-stream "^3.6.0" + triple-beam "^1.3.0" winston@^2.1.1: version "2.4.5" @@ -16674,21 +15721,22 @@ winston@^2.1.1: stack-trace "0.0.x" winston@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" - integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw== + version "3.6.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.6.0.tgz#be32587a099a292b88c49fac6fa529d478d93fb6" + integrity sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w== dependencies: "@dabh/diagnostics" "^2.0.2" - async "^3.1.0" + async "^3.2.3" is-stream "^2.0.0" - logform "^2.2.0" + logform "^2.4.0" one-time "^1.0.0" readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" stack-trace "0.0.x" triple-beam "^1.3.0" - winston-transport "^4.4.0" + winston-transport "^4.5.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -16698,11 +15746,6 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -16726,7 +15769,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: +write-file-atomic@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -16736,15 +15779,23 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.2.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== +write-file-atomic@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" -ws@^8.1.0: - version "8.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== +ws@>=7.4.6, ws@^8.4.2: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +ws@^7.2.3: + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== ws@~3.3.1: version "3.3.3" @@ -16760,6 +15811,11 @@ ws@~7.4.2: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@~8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" + integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== + x-is-string@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" @@ -16808,7 +15864,7 @@ xregexp@2.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -16828,7 +15884,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -16838,12 +15894,12 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@*, yaml@^1.10.0: +yaml@*, yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^18.1.2, yargs-parser@^18.1.3: +yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -16856,10 +15912,15 @@ yargs-parser@^20.0.0, yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@16.2.0, yargs@^16.0.0, yargs@^16.0.3, yargs@^16.1.1, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +yargs-parser@^21.0.0: + version "21.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" + integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA== + +yargs@17.1.1: + version "17.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.1.1.tgz#c2a8091564bdb196f7c0a67c1d12e5b85b8067ba" + integrity sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ== dependencies: cliui "^7.0.2" escalade "^3.1.1" @@ -16886,10 +15947,10 @@ yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^17.0.0: - version "17.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" - integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== +yargs@^16.0.0, yargs@^16.0.3, yargs@^16.1.1, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" escalade "^3.1.1" @@ -16899,18 +15960,18 @@ yargs@^17.0.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.2.1: - version "17.2.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.2.1.tgz#e2c95b9796a0e1f7f3bf4427863b42e0418191ea" - integrity sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q== +yargs@^17.0.0, yargs@^17.2.1, yargs@^17.3.1: + version "17.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9" + integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA== dependencies: cliui "^7.0.2" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" - string-width "^4.2.0" + string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^20.2.2" + yargs-parser "^21.0.0" yauzl@^2.10.0, yauzl@^2.4.2: version "2.10.0" @@ -16935,14 +15996,14 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -z-schema@~3.18.3: - version "3.18.4" - resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-3.18.4.tgz#ea8132b279533ee60be2485a02f7e3e42541a9a2" - integrity sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw== +z-schema@~5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.2.tgz#f410394b2c9fcb9edaf6a7511491c0bb4e89a504" + integrity sha512-40TH47ukMHq5HrzkeVE40Ad7eIDKaRV2b+Qpi2prLc9X9eFJFzV7tMe5aH12e6avaSS/u5l653EQOv+J9PirPw== dependencies: - lodash.get "^4.0.0" - lodash.isequal "^4.0.0" - validator "^8.0.0" + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + validator "^13.7.0" optionalDependencies: commander "^2.7.1" @@ -16960,14 +16021,9 @@ zone.js@~0.10.3: resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.10.3.tgz#3e5e4da03c607c9dcd92e37dd35687a14a140c16" integrity sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== -zone.js@~0.11.3: +zone.js@~0.11.4: version "0.11.4" resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.11.4.tgz#0f70dcf6aba80f698af5735cbb257969396e8025" integrity sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw== dependencies: tslib "^2.0.0" - -zwitch@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" - integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==
- {{day.narrow}} + {{day.narrow}}

- {$ parameter.content | marked | safe $} + {$ parameter.description | marked | safe $}