diff --git a/.env b/.env deleted file mode 100644 index 4bdf3e6..0000000 --- a/.env +++ /dev/null @@ -1,8 +0,0 @@ -ENABLE_NEW_JSX_TRANSFORM="true" -FAST_REFRESH="true" - -CLOUD_IDENTIFIER=gcp-us -APPLICATION_ID=cldoqtyfj009nzk01wfj8r99o -APPLICATION_URL=https://custom-objects-editor.pages.dev -INITIAL_PROJECT_KEY=aries_dev-1 -ENTRY_POINT_URI_PATH=custom-objs \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 8deca72..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,65 +0,0 @@ -process.env.ENABLE_NEW_JSX_TRANSFORM = 'true'; - -/** - * @type {import("eslint").Linter.Config} - */ -module.exports = { - extends: [ - '@commercetools-frontend/eslint-config-mc-app', - 'eslint:recommended', - // "plugin:react/recommended", - 'plugin:@typescript-eslint/eslint-recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/typescript', - ], - plugins: ['graphql', 'unused-imports'], - overrides: [ - { - files: ['**/*.ctp.graphql'], - rules: { - 'graphql/template-strings': [ - 'error', - { - env: 'literal', - schemaJson: require('./schemas/ctp.json'), - }, - ], - }, - }, - ], - ignorePatterns: [ - 'public/', - 'node_nodules/', - '*.config.js', - '.eslintrc.js', - '*.d.ts', - ], - rules: { - quotes: ['error', 'single'], - // we want to force semicolons - semi: ['error', 'always'], - // we use 2 spaces to indent our code - indent: ['error', 2, { SwitchCase: 1 }], - - // we want to avoid extraneous spaces - 'no-multi-spaces': ['error'], - 'react/jsx-uses-react': ['error'], - 'react/jsx-uses-vars': ['error'], - 'import/order': ['error'], - 'import/newline-after-import': ['error'], - 'react/prop-types': 'off', - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', //disable for CI - 'no-unused-vars': 'off', // or "@typescript-eslint/no-unused-vars": "off", - 'unused-imports/no-unused-imports': 'error', - 'unused-imports/no-unused-vars': [ - 'warn', - { - vars: 'all', - varsIgnorePattern: '^_', - args: 'after-used', - argsIgnorePattern: '^_', - }, - ], - }, -}; diff --git a/.github/.DS_Store b/.github/.DS_Store deleted file mode 100644 index 3a7bee0..0000000 Binary files a/.github/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index 1b51f32..2dd5e2c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,13 @@ -node_modules/ -dist/ -coverage/ -public/ -csp.json -env.json +node_modules +coverage +.terraform +*.tfvars + +!.env .env.local -.firebase/ -.firebaserc -firebase.json -lambda.js -_site/ -.sass-cache/ + +.DS_Store +.vscode +.idea +build/ +public/ \ No newline at end of file diff --git a/README.md b/README.md index 92ca40b..679bec5 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,152 @@ -
-Aries Labs -
+# Custom object editor +This repo is a [Connect](https://docs.commercetools.com/connect) repository that allows you to manage custom objects in commercetools platform. There are two connect-apps in this repo: -# Custom Object Editor +- `mc-app`: A React application for managing custom objects in commercetools platform. +- `validation-service`: A Node.js service for validating custom objects in commercetools platform. -## Overview -This project is a commercetools custom application that allows the end user to create, view, and manage custom objects directly from the Merchant Center. Custom objects are an extremely powerful feature of the Composable Commerce offering and is useful for storing all sorts of diverse data. This application adds to that power by exposing this data to a business user without the need to go through APIs. +## Instalation +Refer to [documentation](https://docs.commercetools.com/merchant-center/connect) for more information -### Key Features -- **User Interface:** Professional user interface that seemlessly matches the Merchant Center design. -- **Easy Deploy:** The application can easily be deployed into multiple projects or organizations directly through the Merchant Center. +## Development +### Prerequisites -## Getting Started +- Node.js (version 18 or higher) +- Yarn (version 1.22 or higher) +### Local development +1. Clone the repository +2. Run `yarn install` in `mc-app` and `validation-service` directories to install all dependencies +3. Run `yarn start` in `mc-app` and `validation-service` directories to start the application +4. Refer to [documentation](https://docs.commercetools.com/connect/steps-locally-test-service) for more information -## Contributing -Contributions are welcome! Please feel free to submit pull requests or open issues to discuss proposed changes or report bugs. +### Configuration +- [mc-app](./mc-app/README.md) +- [validation-service](./validation-service/README.md) -For major changes, please open an issue first to discuss what you would like to change. Ensure to update tests as appropriate. -## License +### TODO -This source code is provided under the [GNU AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.en.html). +- Add more references types: -All work product released in this repository is provided ​“AS IS”. We makes no other warranties, express or implied, and hereby disclaims all implied warranties, including any warranty of merchantability and warranty of fitness for a particular purpose. The demo provided is for testing purposes only, does not include any form of SLA, and should not be used in a production environment. + [ ] approval-flow + References an ApprovalFlow. -If you would like to discuss alternative licensing or leveraging this application in your composable stack, please [reach out to Aries Solutions](https://www.ariessolutions.io/contact-aries/) to discuss options. + [ ] approval-rule + References an ApprovalRule. ----- + [ ] associate-role + References an AssociateRole. + [ ] attribute-group + References an AttributeGroup. -# [Aries Labs](https://www.ariessolutions.io/) + [ ] business-unit + References a BusinessUnit. -This project is part of the Aries Labs initiative. To learn more about Aries Solutions and other projects including the MACH Booster please visit our website. [ariessolutions.io](https://www.ariessolutions.io) \ No newline at end of file + [x] cart + References a Cart. + + [x] cart-discount + References a CartDiscount. + + [x] category + References a Category. + + [x] channel + References a Channel. + + [x] customer + References a Customer. + + [ ] customer-email-token + References a CustomerToken for email verification. + + [x] customer-group + References a CustomerGroup. + + [ ] customer-password-token + References a CustomerToken for password reset. + + [ ] direct-discount + References a DirectDiscount. + + [x] discount-code + References a DiscountCode. + + [ ] extension + References an Extension. + + [ ] inventory-entry + References an InventoryEntry. + + [x] key-value-document + References a CustomObject. + + [x] order + References an Order. + + [x] order-edit + References an Order Edit. + + [x] payment + References a Payment. + + [x] product + References a Product. + + [x] product-discount + References a ProductDiscount. + + [x] product-price + References an Embedded Price. + + [ ] product-selection + References a ProductSelection. + + [ ] product-tailoring + References a ProductTailoring. + + [x] product-type + References a ProductType. + + [ ] quote + References a Quote. + + quote-request + References a QuoteRequest. + + [ ] review + References a Review. + + [x] shipping-method + References a ShippingMethod. + + [x] shopping-list + References a ShoppingList. + + [ ] staged-quote + References a StagedQuote. + + [ ] standalone-price + References a StandalonePrice. + + [x] state + References a State. + + [x] store + References a Store. + + [ ] subscription + References a Subscription. + + [ ] tax-category + References a TaxCategory. + + [x] type + References a Type. + + [x] zone + References a Zone. diff --git a/connect.yaml b/connect.yaml new file mode 100644 index 0000000..5dc78ee --- /dev/null +++ b/connect.yaml @@ -0,0 +1,22 @@ +deployAs: + - name: mc-app + applicationType: merchant-center-custom-application + configuration: + standardConfiguration: + - key: CUSTOM_APPLICATION_ID + description: The Custom Application ID + required: true + - key: APPLICATION_URL + description: The Custom Application URL + required: true + - key: ENTRY_POINT_URI_PATH + description: The Application entry point URI path + required: true + default: 'custom-object-editor' + - key: INITIAL_PROJECT_KEY + description: development project key + required: true + - key: CLOUD_IDENTIFIER + description: one of the following gcp-us, gcp-eu, aws-us, aws-eu + required: false + default: 'gcp-us' \ No newline at end of file diff --git a/docs/Gemfile b/docs/Gemfile deleted file mode 100644 index a6e3065..0000000 --- a/docs/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -source 'https://rubygems.org' -gem 'jekyll-remote-theme' -gem 'github-pages' -gem 'jekyll-include-cache' -gem 'rake' -gem 'webrick' \ No newline at end of file diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock deleted file mode 100644 index 228e618..0000000 --- a/docs/Gemfile.lock +++ /dev/null @@ -1,278 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (7.1.3.2) - base64 - bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) - connection_pool (>= 2.2.5) - drb - i18n (>= 1.6, < 2) - minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) - addressable (2.8.6) - public_suffix (>= 2.0.2, < 6.0) - base64 (0.2.0) - bigdecimal (3.1.6) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.12.2) - colorator (1.1.0) - commonmarker (0.23.10) - concurrent-ruby (1.2.3) - connection_pool (2.4.1) - dnsruby (1.70.0) - simpleidn (~> 0.2.1) - drb (2.2.0) - ruby2_keywords - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - ethon (0.16.0) - ffi (>= 1.15.0) - eventmachine (1.2.7) - execjs (2.9.1) - faraday (2.9.0) - faraday-net_http (>= 2.0, < 3.2) - faraday-net_http (3.1.0) - net-http - ffi (1.16.3) - forwardable-extended (2.6.0) - gemoji (4.1.0) - github-pages (231) - github-pages-health-check (= 1.18.2) - jekyll (= 3.9.5) - jekyll-avatar (= 0.8.0) - jekyll-coffeescript (= 1.2.2) - jekyll-commonmark-ghpages (= 0.4.0) - jekyll-default-layout (= 0.1.5) - jekyll-feed (= 0.17.0) - jekyll-gist (= 1.5.0) - jekyll-github-metadata (= 2.16.1) - jekyll-include-cache (= 0.2.1) - jekyll-mentions (= 1.6.0) - jekyll-optional-front-matter (= 0.3.2) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.3.0) - jekyll-redirect-from (= 0.16.0) - jekyll-relative-links (= 0.6.1) - jekyll-remote-theme (= 0.4.3) - jekyll-sass-converter (= 1.5.2) - jekyll-seo-tag (= 2.8.0) - jekyll-sitemap (= 1.4.0) - jekyll-swiss (= 1.0.0) - jekyll-theme-architect (= 0.2.0) - jekyll-theme-cayman (= 0.2.0) - jekyll-theme-dinky (= 0.2.0) - jekyll-theme-hacker (= 0.2.0) - jekyll-theme-leap-day (= 0.2.0) - jekyll-theme-merlot (= 0.2.0) - jekyll-theme-midnight (= 0.2.0) - jekyll-theme-minimal (= 0.2.0) - jekyll-theme-modernist (= 0.2.0) - jekyll-theme-primer (= 0.6.0) - jekyll-theme-slate (= 0.2.0) - jekyll-theme-tactile (= 0.2.0) - jekyll-theme-time-machine (= 0.2.0) - jekyll-titles-from-headings (= 0.5.3) - jemoji (= 0.13.0) - kramdown (= 2.4.0) - kramdown-parser-gfm (= 1.1.0) - liquid (= 4.0.4) - mercenary (~> 0.3) - minima (= 2.5.1) - nokogiri (>= 1.13.6, < 2.0) - rouge (= 3.30.0) - terminal-table (~> 1.4) - github-pages-health-check (1.18.2) - addressable (~> 2.3) - dnsruby (~> 1.60) - octokit (>= 4, < 8) - public_suffix (>= 3.0, < 6.0) - typhoeus (~> 1.3) - html-pipeline (2.14.3) - activesupport (>= 2) - nokogiri (>= 1.4) - http_parser.rb (0.8.0) - i18n (1.14.1) - concurrent-ruby (~> 1.0) - jekyll (3.9.5) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (>= 0.7, < 2) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 2.0) - kramdown (>= 1.17, < 3) - liquid (~> 4.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (>= 1.7, < 4) - safe_yaml (~> 1.0) - jekyll-avatar (0.8.0) - jekyll (>= 3.0, < 5.0) - jekyll-coffeescript (1.2.2) - coffee-script (~> 2.2) - coffee-script-source (~> 1.12) - jekyll-commonmark (1.4.0) - commonmarker (~> 0.22) - jekyll-commonmark-ghpages (0.4.0) - commonmarker (~> 0.23.7) - jekyll (~> 3.9.0) - jekyll-commonmark (~> 1.4.0) - rouge (>= 2.0, < 5.0) - jekyll-default-layout (0.1.5) - jekyll (>= 3.0, < 5.0) - jekyll-feed (0.17.0) - jekyll (>= 3.7, < 5.0) - jekyll-gist (1.5.0) - octokit (~> 4.2) - jekyll-github-metadata (2.16.1) - jekyll (>= 3.4, < 5.0) - octokit (>= 4, < 7, != 4.4.0) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) - jekyll-mentions (1.6.0) - html-pipeline (~> 2.3) - jekyll (>= 3.7, < 5.0) - jekyll-optional-front-matter (0.3.2) - jekyll (>= 3.0, < 5.0) - jekyll-paginate (1.1.0) - jekyll-readme-index (0.3.0) - jekyll (>= 3.0, < 5.0) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) - jekyll-relative-links (0.6.1) - jekyll (>= 3.3, < 5.0) - jekyll-remote-theme (0.4.3) - addressable (~> 2.0) - jekyll (>= 3.5, < 5.0) - jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) - rubyzip (>= 1.3.0, < 3.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-swiss (1.0.0) - jekyll-theme-architect (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-cayman (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-dinky (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-hacker (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-leap-day (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-merlot (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-midnight (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-minimal (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-modernist (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.6.0) - jekyll (> 3.5, < 5.0) - jekyll-github-metadata (~> 2.9) - jekyll-seo-tag (~> 2.0) - jekyll-theme-slate (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-tactile (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-time-machine (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.3) - jekyll (>= 3.3, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - jemoji (0.13.0) - gemoji (>= 3, < 5) - html-pipeline (~> 2.2) - jekyll (>= 3.0, < 5.0) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.3.6) - minima (2.5.1) - jekyll (>= 3.5, < 5.0) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) - minitest (5.22.2) - mutex_m (0.2.0) - net-http (0.4.1) - uri - nokogiri (1.16.2-x86_64-linux) - racc (~> 1.4) - octokit (4.25.1) - faraday (>= 1, < 3) - sawyer (~> 0.9) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (5.0.4) - racc (1.7.3) - rake (13.1.0) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.6) - rouge (3.30.0) - ruby2_keywords (0.0.5) - rubyzip (2.3.2) - safe_yaml (1.0.5) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.9.2) - addressable (>= 2.3.5) - faraday (>= 0.17.3, < 3) - simpleidn (0.2.1) - unf (~> 0.1.4) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - typhoeus (1.4.1) - ethon (>= 0.9.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.9.1) - unicode-display_width (1.8.0) - uri (0.13.0) - webrick (1.8.1) - -PLATFORMS - x86_64-linux - -DEPENDENCIES - github-pages - jekyll-include-cache - jekyll-remote-theme - rake - webrick - -BUNDLED WITH - 2.3.5 diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 5042f5e..0000000 --- a/docs/_config.yml +++ /dev/null @@ -1,12 +0,0 @@ -title: Custom Objects Editor -description: Create and manage custom objects on the commercetools platform. -remote_theme: pmarsceill/just-the-docs -aux_links: - 'View on GitHub': - - '//github.com/ariessolutionsio/custom-objects-editor/' -footer_content: '' -logo: 'assets/Labs-For-Dk_BG.svg' -color_scheme: aries -plugins: - - jekyll-remote-theme - - jekyll-include-cache diff --git a/docs/_includes/footer_custom.html b/docs/_includes/footer_custom.html deleted file mode 100644 index 6cced25..0000000 --- a/docs/_includes/footer_custom.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/docs/_includes/nav_footer_custom.html b/docs/_includes/nav_footer_custom.html deleted file mode 100644 index 434dfe2..0000000 --- a/docs/_includes/nav_footer_custom.html +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/docs/_sass/color_schemes/aries.scss b/docs/_sass/color_schemes/aries.scss deleted file mode 100644 index 7005af7..0000000 --- a/docs/_sass/color_schemes/aries.scss +++ /dev/null @@ -1,15 +0,0 @@ -@import "./color_schemes/dark"; - -$white: #fff !default; -$black: #000000; -$light-grey: #d9d9d9; -$extra-light-grey: #d9d9d9; -$dark-grey: #a5a5a5; -$text: #1a1a1a; -$magenta: #b42573; -$purple: #6868cf; -$red: #670a3a; - -$link-color: $magenta; -$btn-primary-color: $magenta; -$base-button-color: $purple !default; diff --git a/docs/_sass/custom/custom.scss b/docs/_sass/custom/custom.scss deleted file mode 100644 index c458882..0000000 --- a/docs/_sass/custom/custom.scss +++ /dev/null @@ -1,20 +0,0 @@ -footer { - text-align: center; -} -.site-footer-logo { - display:block; - margin: 0 auto; - text-align: center; -} -.site-footer-logo img { - max-width: 100%; - width: 100px; - height: auto; -} - -@media (min-width: 50rem) { - .site-header { - max-height: 12rem; - height: 10rem; - } -} \ No newline at end of file diff --git a/docs/assets/Labs-For-Dk_BG.svg b/docs/assets/Labs-For-Dk_BG.svg deleted file mode 100644 index f502356..0000000 --- a/docs/assets/Labs-For-Dk_BG.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/assets/aries-logo-dark.png b/docs/assets/aries-logo-dark.png deleted file mode 100644 index ca0a4b6..0000000 Binary files a/docs/assets/aries-logo-dark.png and /dev/null differ diff --git a/docs/assets/custom-application-registration-main.png b/docs/assets/custom-application-registration-main.png deleted file mode 100644 index 98c37fe..0000000 Binary files a/docs/assets/custom-application-registration-main.png and /dev/null differ diff --git a/docs/assets/custom-application-registration-sub.png b/docs/assets/custom-application-registration-sub.png deleted file mode 100644 index 6e970c4..0000000 Binary files a/docs/assets/custom-application-registration-sub.png and /dev/null differ diff --git a/docs/assets/custom-object-data-model.png b/docs/assets/custom-object-data-model.png deleted file mode 100644 index 984249f..0000000 Binary files a/docs/assets/custom-object-data-model.png and /dev/null differ diff --git a/docs/assets/custom-object-management.gif b/docs/assets/custom-object-management.gif deleted file mode 100644 index 4c37ac9..0000000 Binary files a/docs/assets/custom-object-management.gif and /dev/null differ diff --git a/docs/assets/custom-objects-list.gif b/docs/assets/custom-objects-list.gif deleted file mode 100644 index 82980ab..0000000 Binary files a/docs/assets/custom-objects-list.gif and /dev/null differ diff --git a/docs/assets/schema-data-model.png b/docs/assets/schema-data-model.png deleted file mode 100644 index eda5b88..0000000 Binary files a/docs/assets/schema-data-model.png and /dev/null differ diff --git a/docs/assets/schema-management.gif b/docs/assets/schema-management.gif deleted file mode 100644 index 8ae07d7..0000000 Binary files a/docs/assets/schema-management.gif and /dev/null differ diff --git a/docs/assets/schemas-list.gif b/docs/assets/schemas-list.gif deleted file mode 100644 index 4ca274e..0000000 Binary files a/docs/assets/schemas-list.gif and /dev/null differ diff --git a/docs/datamodel.md b/docs/datamodel.md deleted file mode 100644 index f6cbe20..0000000 --- a/docs/datamodel.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -layout: default -title: Data Model -nav_order: 3 ---- - - -## Data Model -{: .no_toc } - -1. TOC -{:toc} - - - -### Container Schema - -Container schemas are -[Custom Objects](https://docs.commercetools.com/api/projects/custom-objects). - -- **container** - `mc-custom-object-schema` -- **key** - String, matching the pattern `[-_~.a-zA-Z0-9]+` - Required -- **value** - Object - - **attributes** - Array of [Attribute](#attribute) - Required - - -#### Attribute -{: .no_toc } - - -- **name** - String - Required\ - Displayed in [start case](https://lodash.com/docs/4.17.15#startCase) in the Custom - Object form as form field titles. Saved in schema as [kebab case](https://lodash.com/docs/4.17.15#kebabCase). -- **type** - [Type](#type) - Required\ - The type of the attribute. Determines the Custom Object form field input type. -- **set** - Boolean\ - Flag indicating if the attribute is an array/set. -- **required** - Boolean\ - Flag indicating if the attribute is required. -- **display** - Boolean\ - Flag indicating if the attribute should be displayed in the [Custom Object List](#custom-object-list) - Value column -- **attributes** - Array of [Attribute](#attribute) - Required when `type` is - Object -- **reference** - [Reference](#reference) - Required when `type` is Reference -- **enum** - Array of [Enum](#enum) - Required when `type` is List (enum) -- **lenum** - Array of [LocalizedEnum](#localizedenum) - Required when `type` is - Localized List (enum) - - -#### Type -{: .no_toc } - - -List of available types. - -- Text -- [Localized Text](https://docs.commercetools.com/api/types#localizedstring) -- Number -- Boolean -- [Money](https://docs.commercetools.com/api/types#moneys) -- [Date](https://docs.commercetools.com/api/types#date) -- [Time](https://docs.commercetools.com/api/types#time) -- [Date and time](https://docs.commercetools.com/api/types#datetime) -- List (enum) -- Localized List (enum) -- [Reference](https://docs.commercetools.com/api/types#reference) - by ID or key -- Object - - -#### Reference -{: .no_toc } - - -- **by** - Enum (id, key) -- **type** - - [ReferenceType](https://docs.commercetools.com/api/types#reference) - - -#### Enum -{: .no_toc } - - -- **value** - String - Required -- **label** - String - Required\ - The display text. - - -#### LocalizedEnum -{: .no_toc } - - -- **value** - String - Required -- **label** - - [LocalizedString](https://docs.commercetools.com/api/types#localizedstring) - - Required - -![Schema Data Model](assets/schema-data-model.png) - - -#### Example Data -{: .no_toc } - - -```json -{ - "id": "a372c000-9f4c-4b8a-9e13-8d2e64f51bcd", - "version": 1, - "container": "mc-custom-object-schema", - "key": "example-schema", - "value": { - "attributes": [ - { - "attributes": [ - { - "display": true, - "reference": { "type": "product", "by": "id" }, - "required": true, - "set": false, - "type": "Reference", - "name": "product" - }, - { "required": false, "set": true, "type": "String", "name": "text" } - ], - "display": false, - "required": false, - "set": false, - "type": "Object", - "name": "object" - }, - { - "display": true, - "enum": [ - { "label": "one", "value": "1" }, - { "label": "two", "value": "2" } - ], - "required": false, - "set": false, - "type": "Enum", - "name": "list" - }, - { - "lenum": [ - { "label": { "de": "one (de)", "en": "one" }, "value": "1" }, - { "label": { "de": "two (de)", "en": "two" }, "value": "2" } - ], - "required": false, - "set": false, - "type": "LocalizedEnum", - "name": "localized list" - } - ] - }, - "createdAt": "2024-01-02T15:25:52.545Z", - "lastModifiedAt": "2024-01-02T15:25:52.545Z", - "lastModifiedBy": { - "isPlatformClient": true, - "user": { "typeId": "user", "id": "a372c000-9f4c-4b8a-9e13-8d2e64f51bcd" } - }, - "createdBy": { - "isPlatformClient": true, - "user": { "typeId": "user", "id": "a372c000-9f4c-4b8a-9e13-8d2e64f51bcd" } - } -} -``` - -### Custom Object - -- **container** - String\ - The key of a [container schema](#container-schema). -- **key** - String, matching the pattern `[-_~.a-zA-Z0-9]+` - Required -- **value** - Object\ - Dynamically determined based on the schema's attributes. The object's keys are - the [attribute's](#attribute) name in [kebab case](https://lodash.com/docs/4.17.15#kebabCase). - -![Custom Object Data Model](assets/custom-object-data-model.png) - - -#### Example Data -{: .no_toc } - - -```json -{ - "id": "a372c000-9f4c-4b8a-9e13-8d2e64f51bcd", - "version": 1, - "container": "example-schema", - "key": "example-custom-object", - "value": { - "localizedList": "1", - "list": "2", - "object": { - "text": ["hello", "world"], - "product": { - "id": "a372c000-9f4c-4b8a-9e13-8d2e64f51bcd", - "typeId": "product" - } - } - }, - "createdAt": "2024-01-02T15:28:57.702Z", - "lastModifiedAt": "2024-01-02T15:28:57.702Z", - "lastModifiedBy": { - "isPlatformClient": true, - "user": { "typeId": "user", "id": "a372c000-9f4c-4b8a-9e13-8d2e64f51bcd" } - }, - "createdBy": { - "isPlatformClient": true, - "user": { "typeId": "user", "id": "a372c000-9f4c-4b8a-9e13-8d2e64f51bcd" } - } -} -``` diff --git a/docs/development.md b/docs/development.md deleted file mode 100644 index 67d6263..0000000 --- a/docs/development.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: default -title: Development -nav_order: 3 ---- - - -## Development -{: .no_toc } - -1. TOC -{:toc} - - - -### Technology - -- [ReactJS](https://reactjs.org/) -- [Apollo](https://www.apollographql.com/docs/react/) & - [GraphQL](https://graphql.org/learn/) -- [Merchant Center Application Kit](https://docs.commercetools.com/custom-applications/) -- [UI Kit](https://uikit.commercetools.com/?path=/story/introduction--getting-started) - - Merchant Center component library -- [Yarn](https://classic.yarnpkg.com/en/docs/getting-started) - Package manager -- [Jest](https://jestjs.io/docs/en/getting-started) - Test runner -- [Enzyme](https://enzymejs.github.io/enzyme/) - React testing utility -- [Prettier](https://prettier.io/docs/en/index.html) - Code formatter -- [ESLint](https://eslint.org/docs/user-guide/getting-started) - JS, CSS, and - GraphQL linter - - -### Installation - -Clone the repository. - -Simply run `yarn` or `yarn install` from the repository root to install the -application's dependencies. - -```bash -yarn -``` -If this is the first time running the application locally, create an `env.json` -file at the root directory using `env.local.json` as an example. Based on your -[region](https://docs.commercetools.com/api/general-concepts#regions), you may find it -necessary to modify the values of `frontendHost`, `mcApiUrl`, and `location`. - -Run the following command to start the development server and launch the -application: - -```bash -yarn start -``` - -### Build - -Run the following command to build the -[production bundles](https://docs.commercetools.com/custom-applications/development/going-to-production#building-production-bundles) -with webpack: - -```bash -yarn build -``` - -### Linting & Formatting - -#### Formatting code - -Run the following command to format JS, CSS, JSON and GraphQL files - -```shell -yarn format -``` - -#### Linting code - -Run the following command to lint JS, CSS, and GraphQL files - -```shell -yarn lint -``` - - -##### Linting GraphQL Queries -{: .no_toc } - - -A prerequisite for linting GraphQL queries is generating a `schema.graphql` -file, which contains the Types exposed by CTP API. Every time the API introduces -new Types, Queries or Mutations, the local `schema.graphql` must be updated. - - -##### Generating CTP GraphQL schema -{: .no_toc } - - -1. If you haven't done so already, create an API client under - `Settings -> Developer Settings` in Merchant Center for your project -2. Generate an access token using the - [Client Credentials flow](https://docs.commercetools.com/tutorials/mobile-spa#creating-a-regular-token-with-the-client-credentials-flow) -3. Export both your Merchant Center project key and generated access token as - environment variables -4. Retrieve schema with `graphql-cli` - -```shell -export PROJECT_KEY={project_key} -export AUTH_TOKEN={access_token} -npx graphql-cli get-schema -``` - -### Git Hooks - -Git hooks are configured using -[Husky](https://github.com/typicode/husky/blob/master/DOCS.md). - -- **Pre-commit**: JS, CSS, and GraphQL files are linted (ESLint/Stylelint) and - formatted (Prettier). Fixes are automatically added to Git. -- **Commit Message**: Commit messages are linted against the - [conventional commit format](https://www.conventionalcommits.org) using - commitlint - -## Tests - -Run the following command to run the tests: - -```shell -yarn test -``` - -To run the tests in watch mode: - -```shell -yarn test:watch -``` - -To run the tests with coverage: - -```shell -yarn test:coverage -``` diff --git a/docs/favicon.ico b/docs/favicon.ico deleted file mode 100644 index 79b8f33..0000000 Binary files a/docs/favicon.ico and /dev/null differ diff --git a/docs/features.md b/docs/features.md deleted file mode 100644 index 3226646..0000000 --- a/docs/features.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: default -title: Features -nav_order: 2 ---- - - -## Features -{: .no_toc } - -1. TOC -{:toc} - - - -### Container Schema List - -A grid displaying the container schemas within the commercetools project. - -![Schemas List](./assets/schemas-list.gif) - -- Pagination - - Default page size of 15 - - Enabled when the number of schemas exceeds the page size -- Sorting - - Sortable values are schema key, last modified date, and created date - - Initial sort is key in ascending order (alphabetical) - -### Container Schema Management - -By default, Custom Objects have no defined schema with their value consisting of -a JSON string. This application introduces a schema definition where the user -defines the fields and requirements for building a new custom object. Each -namespace has its own schema definition. - -![Container Schema](assets/schema-management.gif) - -- Create and edit container schemas -- Allows for primitive data as well as sets/arrays -- Attribute types - - Text - - Localized Text - - Number - - Boolean - - Money - - Date - - Time - - Date and time - - List (enum) - - Localized List (enum) - - Reference by ID or key - - Object -- Choose which attributes(s) are displayed in the Value column of the - [Custom Object List](#custom-object-list) by selecting "Display in List" -- Schemas can be modified to add or delete attributes - -### Custom Object List - -The landing page for the Custom Objects custom application is a list displaying -the managed Custom Objects within the commercetools project and ignores API -managed namespaces. - -![Custom Objects List](assets/custom-objects-list.gif) - -- Pagination - - Default page size of 20, - - Displayed when the number of Custom Objects exceeds the page size -- Sorting - - Sortable columns are Container, Key, and Last Modified - - Initial sort is Last Modified in descending order (most recently modified first) -- Filter by Custom Object container and key (exact match) -- Attributes displayed in the Value column are managed by the Custom Object's - schema. If no attributes have been flagged for display, the entire Custom - Object value is displayed. - -### Custom Object Management - -![Custom Object](assets/custom-object-management.gif) - -- Create and edit Custom Objects with managed schemas -- Field level validation for types and required fields -- Localized fields default to locales defined in the project settings - -### Limitations - -This application only displays Custom Objects created with a schema managed by -this application. Custom Objects created through the API without a schema are -not displayed. diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 84d63df..0000000 --- a/docs/index.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: default -title: Home -nav_order: 1 -permalink: / ---- - - -# Custom Objects Editor - -Manage your custom objects directly from the Merchant Center. -{: .fs-6 .fw-300 } - -commercetools offers unparalleled data configuration; however, there are -situations where a company needs to store information that does not fit neatly -into an existing endpoint. In these situations, commercetools offers a generic -endpoint - [Custom Objects](https://docs.commercetools.com/api/projects/custom-objects). -Custom Objects are a great way to store your JSON data. Some example use-cases may include -brand data, company profiles, shared product data, and feature flags. - -This application extends the commercetools Merchant Center to allow an end-user to define -a JSON data schema and Create, Read, Update, and Delete objects tied to that schema. - -_NOTE: Data modeling is an important aspect of any project and can have a big impact on your -project's success and application performance. We recommend getting advice from an experience -professional. Please feel free to [reach out](https://www.ariessolutions.io/contact-aries/) with any questions._ - -[Get started now](#getting-started){: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 } [View it on GitHub](https://github.com/ariessolutionsio/custom-objects-editor){: .btn .fs-5 .mb-4 .mb-md-0 } - ---- - - -## Getting started - -### Configure Custom Application with Merchant Center - - - -In order to use this custom application, you'll need to register it inside of the Merchant Center. -You can **demo** the application with our hosted version. For use in production please deploy the -application to your own cloud environment or contact us for help. - - - [TBD](LINK) - -To register your Custom Application with a Merchant Center project: - -1. In the main navigation of the Merchant Center, navigate to **User Icon > Manage Organization and Teams**. Click on the organizaiton where you want to install the application. - -2. From your organization page, navigate to the tab **Custom Applications** and clck the **Configure Custom Applications** button. Then click the **Add a Custom Application** button. - -3. Fill in the fields as follows: - -- **Application Name**: Custom Objects -- **Application Url**: Your hosting location -- **Application entry point URI path**: `custom-objects` -- **Permissions**: Manage Products, Manage Orders, Manage Customers -- **Sub Navigation** _(Optional)_ - - Custom Object List - - **Link To**: `/` - - **Link Permissions**: Manage Products, Manage Orders, Manage Customers - - Container Schema List - - **Link To**: `containers` - - **Link Permissions**: Manage Products, Manage Orders, Manage Customers - -4. Click **Register Custom Application**. - -5. Install the application in your desired projects. From the organization's Custom Applications screen click on the **Install Custom Applications** button. Choose the application. Install in all or selected projects for that organization. - ---- - -## License - -Aries code and modifications licensed under the [GNU AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.en.html). -Libraries, dependencies, and code pulled into this project will retain their existing license. - -If you would like to discuss alternative licensing or leveraging this application in your composable stack, please [reach out to Aries Solutions](https://www.ariessolutions.io/contact-aries/) to discuss options. - -#### Disclaimer - -Please note: all tools / scripts in this repository are released for use "AS IS" -without any warranties of any kind, including, but not limited to their -installation, use, or performance. We disclaim any and all warranties, either -express or implied, including but not limited to any warranty of -noninfringement, merchantability, and/ or fitness for a particular purpose. We -do not warrant that the technology will meet your requirements, that the -operation thereof will be uninterrupted or error-free, or that any errors will -be corrected. - -Any use of these scripts and tools is at your own risk. There is no guarantee -that they have been through thorough testing in a comparable environment and we -are not responsible for any damage or data loss incurred with their use. - -You are responsible for reviewing and testing any scripts you run _thoroughly_ -before use in any non-testing environment. - -## Support - -Need help with your project? Contact the Aries Solutions team for -assistance. diff --git a/jest-runner-eslint.config.js b/jest-runner-eslint.config.js deleted file mode 100644 index 0c5ad6a..0000000 --- a/jest-runner-eslint.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - cliOptions: { - format: require.resolve('eslint-formatter-pretty'), - rules: { - 'import/no-unresolved': 2 - }, - fix: true, - }, -}; diff --git a/jest.eslint-graphql.config.js b/jest.eslint-graphql.config.js deleted file mode 100644 index b5dbc82..0000000 --- a/jest.eslint-graphql.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - runner: 'jest-runner-eslint', - displayName: 'eslint', - modulePathIgnorePatterns: ['dist', 'coverage'], - testPathIgnorePatterns: ['schema.graphql'], - moduleFileExtensions: ['graphql'], - testMatch: ['/**/*.graphql'], - watchPlugins: ['jest-plugin-filename'], -}; diff --git a/jest.eslint.config.js b/jest.eslint.config.js deleted file mode 100644 index 631bcf4..0000000 --- a/jest.eslint.config.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @type {import('@jest/types').Config.ProjectConfig} - */ -module.exports = { - runner: 'jest-runner-eslint', - displayName: 'eslint', - moduleFileExtensions: ['js', 'ts', 'tsx'], - modulePathIgnorePatterns: [ - '.yarn', - '.cache', - 'build/', - 'dist/', - 'public/', - 'generated', - ], - testMatch: ['/**/*.js', '/**/*.ts', '/**/*.tsx'], - watchPlugins: [ - 'jest-watch-typeahead/filename', - 'jest-runner-eslint/watch-fix', - ], -}; diff --git a/jest.stylelint.config.js b/jest.stylelint.config.js deleted file mode 100644 index 9dfb67f..0000000 --- a/jest.stylelint.config.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - runner: 'jest-runner-stylelint', - displayName: 'stylelint', - moduleFileExtensions: ['css'], - modulePathIgnorePatterns: ['dist', 'coverage', 'public'], - testMatch: ['/**/*.css'], - watchPlugins: ['jest-plugin-filename'], -}; diff --git a/jest.test.config.js b/jest.test.config.js deleted file mode 100644 index 406dd5b..0000000 --- a/jest.test.config.js +++ /dev/null @@ -1,9 +0,0 @@ -process.env.ENABLE_NEW_JSX_TRANSFORM = 'true'; - -/** - * @type {import('@jest/types').Config.ProjectConfig} - */ -module.exports = { - preset: '@commercetools-frontend/jest-preset-mc-app/typescript', - setupFiles: ['./jest.setup.js'], -}; diff --git a/lint-staged.config.js b/lint-staged.config.js deleted file mode 100644 index fe0cea4..0000000 --- a/lint-staged.config.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - '*.js': [ - 'yarn lint:js --reporters=jest-silent-reporter --onlyChanged', - 'yarn format:js', - ], - '*.css': [ - 'yarn lint:css -- --reporters=jest-silent-reporter --onlyChanged', - 'yarn format:css', - ], - '*.graphql': [ - 'yarn lint:graphql --reporters=jest-silent-reporter --onlyChanged', - 'yarn format:graphql', - ] -}; diff --git a/mc-app/.env b/mc-app/.env new file mode 100644 index 0000000..a9e1ae9 --- /dev/null +++ b/mc-app/.env @@ -0,0 +1,7 @@ +ENABLE_NEW_JSX_TRANSFORM="true" +FAST_REFRESH="true" +CLOUD_IDENTIFIER="gcp-us" +CUSTOM_APPLICATION_ID= +APPLICATION_URL="https://todo.com" +INITIAL_PROJECT_KEY=us-store +ENTRY_POINT_URI_PATH="custom-object-editor" \ No newline at end of file diff --git a/.eslintignore b/mc-app/.eslintignore similarity index 100% rename from .eslintignore rename to mc-app/.eslintignore diff --git a/mc-app/.eslintrc.js b/mc-app/.eslintrc.js new file mode 100644 index 0000000..29969a2 --- /dev/null +++ b/mc-app/.eslintrc.js @@ -0,0 +1,65 @@ +process.env.ENABLE_NEW_JSX_TRANSFORM = "true"; + +/** + * @type {import("eslint").Linter.Config} + */ +module.exports = { + extends: [ + "@commercetools-frontend/eslint-config-mc-app", + "eslint:recommended", + // "plugin:react/recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", + "plugin:import/typescript", + ], + plugins: ["graphql", "unused-imports"], + overrides: [ + { + files: ["**/*.ctp.graphql"], + rules: { + "graphql/template-strings": [ + "error", + { + env: "literal", + schemaJson: require("./schemas/ctp.json"), + }, + ], + }, + }, + ], + ignorePatterns: [ + "public/", + "node_nodules/", + "*.config.js", + ".eslintrc.js", + "*.d.ts", + ], + rules: { + quotes: ["error", "single"], + // we want to force semicolons + semi: ["error", "always"], + // we use 2 spaces to indent our code + indent: ["error", 2, { SwitchCase: 1 }], + + // we want to avoid extraneous spaces + "no-multi-spaces": ["error"], + "react/jsx-uses-react": ["error"], + "react/jsx-uses-vars": ["error"], + "import/order": ["error"], + "import/newline-after-import": ["error"], + "react/prop-types": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", //disable for CI + "no-unused-vars": "off", // or "@typescript-eslint/no-unused-vars": "off", + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": [ + "warn", + { + vars: "all", + varsIgnorePattern: "^_", + args: "after-used", + argsIgnorePattern: "^_", + }, + ], + }, +}; diff --git a/.github/ISSUE_TEMPLATE/BUG-REPORT.yml b/mc-app/.github/ISSUE_TEMPLATE/BUG-REPORT.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/BUG-REPORT.yml rename to mc-app/.github/ISSUE_TEMPLATE/BUG-REPORT.yml diff --git a/.github/ISSUE_TEMPLATE/CONTRIBUTING.md b/mc-app/.github/ISSUE_TEMPLATE/CONTRIBUTING.md similarity index 100% rename from .github/ISSUE_TEMPLATE/CONTRIBUTING.md rename to mc-app/.github/ISSUE_TEMPLATE/CONTRIBUTING.md diff --git a/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml b/mc-app/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml rename to mc-app/.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/mc-app/.github/ISSUE_TEMPLATE/config.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/config.yml rename to mc-app/.github/ISSUE_TEMPLATE/config.yml diff --git a/.github/workflows/build.yml b/mc-app/.github/workflows/build.yml similarity index 100% rename from .github/workflows/build.yml rename to mc-app/.github/workflows/build.yml diff --git a/mc-app/.gitignore b/mc-app/.gitignore new file mode 100644 index 0000000..1b51f32 --- /dev/null +++ b/mc-app/.gitignore @@ -0,0 +1,13 @@ +node_modules/ +dist/ +coverage/ +public/ +csp.json +env.json +.env.local +.firebase/ +.firebaserc +firebase.json +lambda.js +_site/ +.sass-cache/ diff --git a/mc-app/.prettierignore b/mc-app/.prettierignore new file mode 100644 index 0000000..ecef4c4 --- /dev/null +++ b/mc-app/.prettierignore @@ -0,0 +1,4 @@ +i18n/data/*.json +public +.cache +.yarn diff --git a/mc-app/.prettierrc b/mc-app/.prettierrc new file mode 100644 index 0000000..ca5f8dc --- /dev/null +++ b/mc-app/.prettierrc @@ -0,0 +1,19 @@ +{ + "trailingComma": "es5", + "singleQuote": true, + "parser": "typescript", + "overrides": [ + { + "files": "*.json", + "options": { + "parser": "json" + } + }, + { + "files": "*.graphql", + "options": { + "parser": "graphql" + } + } + ] +} diff --git a/@types-extensions/graphql-ctp/index.d.ts b/mc-app/@types-extensions/graphql-ctp/index.d.ts similarity index 61% rename from @types-extensions/graphql-ctp/index.d.ts rename to mc-app/@types-extensions/graphql-ctp/index.d.ts index 72340cf..6d72c38 100644 --- a/@types-extensions/graphql-ctp/index.d.ts +++ b/mc-app/@types-extensions/graphql-ctp/index.d.ts @@ -1,24 +1,24 @@ /* THIS IS A GENERATED FILE */ /* eslint-disable import/no-duplicates */ -declare module '*/fetch-channel-details.ctp.graphql' { - import { DocumentNode } from 'graphql'; +declare module "*/fetch-channel-details.ctp.graphql" { + import { DocumentNode } from "graphql"; const defaultDocument: DocumentNode; export const FetchChannelDetails: DocumentNode; export default defaultDocument; } -declare module '*/fetch-channels.ctp.graphql' { - import { DocumentNode } from 'graphql'; +declare module "*/fetch-channels.ctp.graphql" { + import { DocumentNode } from "graphql"; const defaultDocument: DocumentNode; export const FetchChannels: DocumentNode; export default defaultDocument; } -declare module '*/update-channel-details.ctp.graphql' { - import { DocumentNode } from 'graphql'; +declare module "*/update-channel-details.ctp.graphql" { + import { DocumentNode } from "graphql"; const defaultDocument: DocumentNode; export const UpdateChannelDetails: DocumentNode; diff --git a/@types/commercetools__sync-actions/index.d.ts b/mc-app/@types/commercetools__sync-actions/index.d.ts similarity index 87% rename from @types/commercetools__sync-actions/index.d.ts rename to mc-app/@types/commercetools__sync-actions/index.d.ts index ef4e014..14da4a5 100644 --- a/@types/commercetools__sync-actions/index.d.ts +++ b/mc-app/@types/commercetools__sync-actions/index.d.ts @@ -1,4 +1,4 @@ -declare module '@commercetools/sync-actions' { +declare module "@commercetools/sync-actions" { export type SyncAction = { action: string; [x: string]: unknown }; function buildActions( nextDraft: NextDraft, diff --git a/LICENSE b/mc-app/LICENSE similarity index 100% rename from LICENSE rename to mc-app/LICENSE diff --git a/mc-app/README.md b/mc-app/README.md new file mode 100644 index 0000000..f2db4eb --- /dev/null +++ b/mc-app/README.md @@ -0,0 +1,36 @@ + +# Custom Object Editor + +## Overview +This project is a commercetools custom application that allows the end user to create, view, and manage custom objects directly from the Merchant Center. Custom objects are an extremely powerful feature of the Composable Commerce offering and is useful for storing all sorts of diverse data. This application adds to that power by exposing this data to a business user without the need to go through APIs. + +### Key Features +- **User Interface:** Professional user interface that seemlessly matches the Merchant Center design. +- **Easy Deploy:** The application can easily be deployed into multiple projects or organizations directly through the Merchant Center. + + +## Getting Started + +### Prerequisites +.env file +``` +ENABLE_NEW_JSX_TRANSFORM="true" +FAST_REFRESH="true" +CLOUD_IDENTIFIER="gcp-us" +CUSTOM_APPLICATION_ID= +APPLICATION_URL="https://todo.com" +INITIAL_PROJECT_KEY=todo +ENTRY_POINT_URI_PATH="custom-object-editor" +``` + + +## Contributing +Contributions are welcome! Please feel free to submit pull requests or open issues to discuss proposed changes or report bugs. + +For major changes, please open an issue first to discuss what you would like to change. Ensure to update tests as appropriate. + +## License + +This source code is provided under the [GNU AGPLv3 license](https://www.gnu.org/licenses/agpl-3.0.en.html). + +All work product released in this repository is provided ​“AS IS”. We makes no other warranties, express or implied, and hereby disclaims all implied warranties, including any warranty of merchantability and warranty of fitness for a particular purpose. The demo provided is for testing purposes only, does not include any form of SLA, and should not be used in a production environment. diff --git a/config/S3-CloudFront-template.json b/mc-app/config/S3-CloudFront-template.json similarity index 100% rename from config/S3-CloudFront-template.json rename to mc-app/config/S3-CloudFront-template.json diff --git a/config/transformer-aws.js b/mc-app/config/transformer-aws.js similarity index 100% rename from config/transformer-aws.js rename to mc-app/config/transformer-aws.js diff --git a/config/transformer-firebase.js b/mc-app/config/transformer-firebase.js similarity index 100% rename from config/transformer-firebase.js rename to mc-app/config/transformer-firebase.js diff --git a/custom-application-config.mjs b/mc-app/custom-application-config.mjs similarity index 61% rename from custom-application-config.mjs rename to mc-app/custom-application-config.mjs index af7c291..cad46af 100644 --- a/custom-application-config.mjs +++ b/mc-app/custom-application-config.mjs @@ -1,15 +1,15 @@ -import { PERMISSIONS, entryPointUriPath } from './src/constants'; +import { PERMISSIONS } from './src/constants'; /** * @type {import('@commercetools-frontend/application-config').ConfigOptions} */ const config = { name: 'Custom Objects Editor', - entryPointUriPath, + entryPointUriPath: '${env:ENTRY_POINT_URI_PATH}', cloudIdentifier: '${env:CLOUD_IDENTIFIER}', env: { production: { - applicationId: '${env:APPLICATION_ID}', + applicationId: '${env:CUSTOM_APPLICATION_ID}', url: '${env:APPLICATION_URL}', }, development: { @@ -18,15 +18,24 @@ const config = { }, oAuthScopes: { view: [ - 'view_products', - 'view_orders', + 'view_categories', + 'view_cart_discounts', + 'view_customer_groups', 'view_customers', + 'view_discount_codes', 'view_key_value_documents', + 'view_orders', + 'view_payments', + 'view_products', + 'view_shipping_methods', + 'view_shopping_lists', + 'view_standalone_prices', + 'view_states', + 'view_stores', + 'view_tax_categories', + 'view_types', ], manage: [ - 'manage_products', - 'manage_orders', - 'manage_customers', 'manage_key_value_documents', ], }, @@ -37,10 +46,10 @@ const config = { permissions: [PERMISSIONS.View], }, submenuLinks: [ - // { - // defaultLabel: 'Custom Objects Editor List', - // uriPath: 'custom-objects', - // }, + { + defaultLabel: 'Custom Objects Editor', + uriPath: '/', + }, { defaultLabel: 'Container Schema Manager', uriPath: 'containers', diff --git a/mc-app/graphql-ctp/index.d.ts b/mc-app/graphql-ctp/index.d.ts new file mode 100644 index 0000000..6d72c38 --- /dev/null +++ b/mc-app/graphql-ctp/index.d.ts @@ -0,0 +1,26 @@ +/* THIS IS A GENERATED FILE */ +/* eslint-disable import/no-duplicates */ + +declare module "*/fetch-channel-details.ctp.graphql" { + import { DocumentNode } from "graphql"; + const defaultDocument: DocumentNode; + export const FetchChannelDetails: DocumentNode; + + export default defaultDocument; +} + +declare module "*/fetch-channels.ctp.graphql" { + import { DocumentNode } from "graphql"; + const defaultDocument: DocumentNode; + export const FetchChannels: DocumentNode; + + export default defaultDocument; +} + +declare module "*/update-channel-details.ctp.graphql" { + import { DocumentNode } from "graphql"; + const defaultDocument: DocumentNode; + export const UpdateChannelDetails: DocumentNode; + + export default defaultDocument; +} diff --git a/intl-formatter.js b/mc-app/intl-formatter.js similarity index 100% rename from intl-formatter.js rename to mc-app/intl-formatter.js diff --git a/mc-app/jest-runner-eslint.config.js b/mc-app/jest-runner-eslint.config.js new file mode 100644 index 0000000..9047025 --- /dev/null +++ b/mc-app/jest-runner-eslint.config.js @@ -0,0 +1,9 @@ +module.exports = { + cliOptions: { + format: require.resolve("eslint-formatter-pretty"), + rules: { + "import/no-unresolved": 2, + }, + fix: true, + }, +}; diff --git a/jest.d.ts b/mc-app/jest.d.ts similarity index 100% rename from jest.d.ts rename to mc-app/jest.d.ts diff --git a/mc-app/jest.eslint-graphql.config.js b/mc-app/jest.eslint-graphql.config.js new file mode 100644 index 0000000..761995c --- /dev/null +++ b/mc-app/jest.eslint-graphql.config.js @@ -0,0 +1,9 @@ +module.exports = { + runner: "jest-runner-eslint", + displayName: "eslint", + modulePathIgnorePatterns: ["dist", "coverage"], + testPathIgnorePatterns: ["schema.graphql"], + moduleFileExtensions: ["graphql"], + testMatch: ["/**/*.graphql"], + watchPlugins: ["jest-plugin-filename"], +}; diff --git a/mc-app/jest.eslint.config.js b/mc-app/jest.eslint.config.js new file mode 100644 index 0000000..62baf22 --- /dev/null +++ b/mc-app/jest.eslint.config.js @@ -0,0 +1,21 @@ +/** + * @type {import('@jest/types').Config.ProjectConfig} + */ +module.exports = { + runner: "jest-runner-eslint", + displayName: "eslint", + moduleFileExtensions: ["js", "ts", "tsx"], + modulePathIgnorePatterns: [ + ".yarn", + ".cache", + "build/", + "dist/", + "public/", + "generated", + ], + testMatch: ["/**/*.js", "/**/*.ts", "/**/*.tsx"], + watchPlugins: [ + "jest-watch-typeahead/filename", + "jest-runner-eslint/watch-fix", + ], +}; diff --git a/jest.setup.js b/mc-app/jest.setup.js similarity index 72% rename from jest.setup.js rename to mc-app/jest.setup.js index be8d017..1cfdff2 100644 --- a/jest.setup.js +++ b/mc-app/jest.setup.js @@ -1,4 +1,4 @@ import { ReadableStream } from 'node:stream/web'; // Polyfill `ReadableStream` in the Jest environment -global.ReadableStream = ReadableStream; \ No newline at end of file +global.ReadableStream = ReadableStream; diff --git a/mc-app/jest.stylelint.config.js b/mc-app/jest.stylelint.config.js new file mode 100644 index 0000000..bfdafb4 --- /dev/null +++ b/mc-app/jest.stylelint.config.js @@ -0,0 +1,8 @@ +module.exports = { + runner: "jest-runner-stylelint", + displayName: "stylelint", + moduleFileExtensions: ["css"], + modulePathIgnorePatterns: ["dist", "coverage", "public"], + testMatch: ["/**/*.css"], + watchPlugins: ["jest-plugin-filename"], +}; diff --git a/mc-app/jest.test.config.js b/mc-app/jest.test.config.js new file mode 100644 index 0000000..da9d4d0 --- /dev/null +++ b/mc-app/jest.test.config.js @@ -0,0 +1,9 @@ +process.env.ENABLE_NEW_JSX_TRANSFORM = "true"; + +/** + * @type {import('@jest/types').Config.ProjectConfig} + */ +module.exports = { + preset: "@commercetools-frontend/jest-preset-mc-app/typescript", + setupFiles: ["./jest.setup.js"], +}; diff --git a/mc-app/lint-staged.config.js b/mc-app/lint-staged.config.js new file mode 100644 index 0000000..99d001c --- /dev/null +++ b/mc-app/lint-staged.config.js @@ -0,0 +1,14 @@ +module.exports = { + "*.js": [ + "yarn lint:js --reporters=jest-silent-reporter --onlyChanged", + "yarn format:js", + ], + "*.css": [ + "yarn lint:css -- --reporters=jest-silent-reporter --onlyChanged", + "yarn format:css", + ], + "*.graphql": [ + "yarn lint:graphql --reporters=jest-silent-reporter --onlyChanged", + "yarn format:graphql", + ], +}; diff --git a/mc-app/netlify.toml b/mc-app/netlify.toml new file mode 100644 index 0000000..152ca04 --- /dev/null +++ b/mc-app/netlify.toml @@ -0,0 +1,4 @@ +[[redirects]] + from = "/*" + to = "/index.html" + status = 200 \ No newline at end of file diff --git a/package.json b/mc-app/package.json similarity index 53% rename from package.json rename to mc-app/package.json index 9636a22..9f6e530 100644 --- a/package.json +++ b/mc-app/package.json @@ -13,53 +13,54 @@ "test": "jest --config jest.test.config.js", "test:watch": "jest --config jest.test.config.js --watch", "lint": "jest --config jest.eslint.config.js", + "format": "prettier --write 'src/**/*.{js,ts,tsx}'", "typecheck": "tsc --noEmit", "versions:appkit": "manypkg upgrade @commercetools-frontend", "versions:uikit": "manypkg upgrade @commercetools-uikit" }, "dependencies": { "@apollo/client": "^3.9.7", - "@commercetools-frontend/actions-global": "^22.20.0", - "@commercetools-frontend/application-components": "^22.20.0", - "@commercetools-frontend/application-config": "^22.20.0", - "@commercetools-frontend/application-shell": "^22.20.0", - "@commercetools-frontend/application-shell-connectors": "^22.20.0", - "@commercetools-frontend/assets": "^22.20.0", - "@commercetools-frontend/constants": "^22.20.0", - "@commercetools-frontend/eslint-config-mc-app": "^22.20.0", - "@commercetools-frontend/i18n": "^22.20.0", - "@commercetools-frontend/jest-preset-mc-app": "^22.20.0", - "@commercetools-frontend/mc-dev-authentication": "^22.20.0", - "@commercetools-frontend/mc-scripts": "^22.20.0", - "@commercetools-frontend/permissions": "^22.20.0", + "@commercetools-frontend/actions-global": "^22.35.1", + "@commercetools-frontend/application-components": "^22.35.1", + "@commercetools-frontend/application-config": "^22.35.1", + "@commercetools-frontend/application-shell": "^22.35.1", + "@commercetools-frontend/application-shell-connectors": "^22.35.1", + "@commercetools-frontend/assets": "^22.35.1", + "@commercetools-frontend/constants": "^22.35.1", + "@commercetools-frontend/eslint-config-mc-app": "^22.35.1", + "@commercetools-frontend/i18n": "^22.35.1", + "@commercetools-frontend/jest-preset-mc-app": "^22.35.1", + "@commercetools-frontend/mc-dev-authentication": "^22.35.1", + "@commercetools-frontend/mc-scripts": "^22.35.1", + "@commercetools-frontend/permissions": "^22.35.1", "@commercetools-test-data/channel": "^7.3.0", "@commercetools-test-data/commons": "^7.3.0", "@commercetools-test-data/core": "^7.3.0", - "@commercetools-uikit/checkbox-input": "^18.4.0", - "@commercetools-uikit/collapsible-panel": "^18.4.0", - "@commercetools-uikit/constraints": "^18.4.0", - "@commercetools-uikit/data-table": "^18.4.0", - "@commercetools-uikit/date-input": "^18.4.0", - "@commercetools-uikit/date-time-input": "^18.4.0", - "@commercetools-uikit/flat-button": "^18.4.0", - "@commercetools-uikit/grid": "^18.4.0", - "@commercetools-uikit/hooks": "^18.4.0", - "@commercetools-uikit/icons": "^18.4.0", - "@commercetools-uikit/link": "^18.4.0", - "@commercetools-uikit/link-button": "^18.4.0", - "@commercetools-uikit/loading-spinner": "^18.4.0", - "@commercetools-uikit/localized-text-field": "^18.4.0", - "@commercetools-uikit/localized-text-input": "^18.4.0", - "@commercetools-uikit/money-input": "^18.4.0", - "@commercetools-uikit/notifications": "^18.4.0", - "@commercetools-uikit/pagination": "^18.4.0", - "@commercetools-uikit/select-field": "^18.4.0", - "@commercetools-uikit/spacings": "^18.4.0", - "@commercetools-uikit/text": "^18.4.0", - "@commercetools-uikit/text-field": "^18.4.0", - "@commercetools-uikit/text-input": "^18.4.0", - "@commercetools-uikit/time-input": "^18.4.0", - "@commercetools/sync-actions": "^5.15.0", + "@commercetools-uikit/checkbox-input": "^19.16.0", + "@commercetools-uikit/collapsible-panel": "^19.16.0", + "@commercetools-uikit/constraints": "^19.16.0", + "@commercetools-uikit/data-table": "^19.16.0", + "@commercetools-uikit/date-input": "^19.16.0", + "@commercetools-uikit/date-time-input": "^19.16.0", + "@commercetools-uikit/flat-button": "^19.16.0", + "@commercetools-uikit/grid": "^19.16.0", + "@commercetools-uikit/hooks": "^19.16.0", + "@commercetools-uikit/icons": "^19.16.0", + "@commercetools-uikit/link": "^19.16.0", + "@commercetools-uikit/link-button": "^19.16.0", + "@commercetools-uikit/loading-spinner": "^19.16.0", + "@commercetools-uikit/localized-text-field": "^19.16.0", + "@commercetools-uikit/localized-text-input": "^19.16.0", + "@commercetools-uikit/money-input": "^19.16.0", + "@commercetools-uikit/notifications": "^19.16.0", + "@commercetools-uikit/pagination": "^19.16.0", + "@commercetools-uikit/select-field": "^19.16.0", + "@commercetools-uikit/spacings": "^19.16.0", + "@commercetools-uikit/text": "^19.16.0", + "@commercetools-uikit/text-field": "^19.16.0", + "@commercetools-uikit/text-input": "^19.16.0", + "@commercetools-uikit/time-input": "^19.16.0", + "@commercetools/sync-actions": "^5.19.2", "@formatjs/cli": "^6.2.7", "@jest/types": "27.5.1", "@manypkg/cli": "^0.21.3", @@ -68,6 +69,7 @@ "@testing-library/react-hooks": "8.0.1", "@types/eslint": "<9", "@types/react": "<18", + "axios": "^1.7.7", "eslint": "^8.57.0", "eslint-formatter-pretty": "^6.0.1", "eslint-import-resolver-typescript": "^3.6.1", @@ -99,6 +101,7 @@ "cheerio": "=1.0.0-rc.3" }, "devDependencies": { + "@types/axios": "^0.14.4", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.8", "eslint-react": "0.0.4" diff --git a/schemas/ctp.json b/mc-app/schemas/ctp.json similarity index 100% rename from schemas/ctp.json rename to mc-app/schemas/ctp.json diff --git a/setup-jest.js b/mc-app/setup-jest.js similarity index 100% rename from setup-jest.js rename to mc-app/setup-jest.js diff --git a/src/assets/aries-labs-logo.svg b/mc-app/src/assets/aries-labs-logo.svg similarity index 100% rename from src/assets/aries-labs-logo.svg rename to mc-app/src/assets/aries-labs-logo.svg diff --git a/src/components/container-details/container-details.module.css b/mc-app/src/components/container-details/container-details.module.css similarity index 100% rename from src/components/container-details/container-details.module.css rename to mc-app/src/components/container-details/container-details.module.css diff --git a/src/components/container-details/container-details.spec.toBeMigrated.js b/mc-app/src/components/container-details/container-details.spec.toBeMigrated.js similarity index 100% rename from src/components/container-details/container-details.spec.toBeMigrated.js rename to mc-app/src/components/container-details/container-details.spec.toBeMigrated.js diff --git a/src/components/container-details/container-details.tsx b/mc-app/src/components/container-details/container-details.tsx similarity index 100% rename from src/components/container-details/container-details.tsx rename to mc-app/src/components/container-details/container-details.tsx diff --git a/src/components/container-details/index.ts b/mc-app/src/components/container-details/index.ts similarity index 100% rename from src/components/container-details/index.ts rename to mc-app/src/components/container-details/index.ts diff --git a/src/components/container-details/messages.ts b/mc-app/src/components/container-details/messages.ts similarity index 100% rename from src/components/container-details/messages.ts rename to mc-app/src/components/container-details/messages.ts diff --git a/src/components/container-form/attribute-group.spec.js b/mc-app/src/components/container-form/attribute-group.spec.js similarity index 99% rename from src/components/container-form/attribute-group.spec.js rename to mc-app/src/components/container-form/attribute-group.spec.js index 45fc06c..9b514f8 100644 --- a/src/components/container-form/attribute-group.spec.js +++ b/mc-app/src/components/container-form/attribute-group.spec.js @@ -32,7 +32,7 @@ const mocks = { remove: jest.fn(), removeDisabled: faker.random.boolean(), }; -configure({adapter: new Adapter()}); +configure({ adapter: new Adapter() }); const loadAttributeGroup = (value = mockValue) => shallow(); diff --git a/src/components/container-form/attribute-group.tsx b/mc-app/src/components/container-form/attribute-group.tsx similarity index 98% rename from src/components/container-form/attribute-group.tsx rename to mc-app/src/components/container-form/attribute-group.tsx index 9f8d54f..7f78ddc 100644 --- a/src/components/container-form/attribute-group.tsx +++ b/mc-app/src/components/container-form/attribute-group.tsx @@ -5,7 +5,12 @@ import LocalizedTextInput from '@commercetools-uikit/localized-text-input'; import Spacings from '@commercetools-uikit/spacings'; import { useFormik } from 'formik'; import { get } from 'lodash'; -import { ATTRIBUTES, AttributeValue, REFERENCE_BY, TYPES } from '../../constants'; +import { + ATTRIBUTES, + AttributeValue, + REFERENCE_BY, + TYPES, +} from '../../constants'; import Attribute from './attribute'; import EnumAttributes from './enum-attributes'; import LocalizedEnumAttributes from './localized-enum-attributes'; diff --git a/src/components/container-form/attribute.mod.css b/mc-app/src/components/container-form/attribute.mod.css similarity index 100% rename from src/components/container-form/attribute.mod.css rename to mc-app/src/components/container-form/attribute.mod.css diff --git a/src/components/container-form/attribute.spec.toBeMigrated.js b/mc-app/src/components/container-form/attribute.spec.toBeMigrated.js similarity index 100% rename from src/components/container-form/attribute.spec.toBeMigrated.js rename to mc-app/src/components/container-form/attribute.spec.toBeMigrated.js diff --git a/src/components/container-form/attribute.tsx b/mc-app/src/components/container-form/attribute.tsx similarity index 99% rename from src/components/container-form/attribute.tsx rename to mc-app/src/components/container-form/attribute.tsx index 4fedb04..f9fe3fd 100644 --- a/src/components/container-form/attribute.tsx +++ b/mc-app/src/components/container-form/attribute.tsx @@ -102,7 +102,6 @@ const Attribute: FC = ({ // } // }, [value.type]); - return (
diff --git a/src/components/container-form/container-form.tsx b/mc-app/src/components/container-form/container-form.tsx similarity index 76% rename from src/components/container-form/container-form.tsx rename to mc-app/src/components/container-form/container-form.tsx index 24e18a3..8ce9b9e 100644 --- a/src/components/container-form/container-form.tsx +++ b/mc-app/src/components/container-form/container-form.tsx @@ -43,40 +43,42 @@ const ContainerForm: FC = ({ onSubmit, initialValues, children }) => { required: bool(), display: bool(), attributes: array(lazy(() => object(attributeSchema))), - reference: object() - .when('type', { - is: (val: any) => val === TYPES.Reference, - then: (schema) => object({ + reference: object().when('type', { + is: (val: any) => val === TYPES.Reference, + then: (schema) => + object({ by: stringSchema, type: stringSchema, - }) - }), + }), + }), enum: array().when('type', { is: (val: any) => val === TYPES.Enum, - then: (schema) => array( - object({ - value: string().required(requiredFieldMessage), - label: string().required(requiredFieldMessage), - }) - ), + then: (schema) => + array( + object({ + value: string().required(requiredFieldMessage), + label: string().required(requiredFieldMessage), + }) + ), }), lenum: array().when('type', { is: (val: any) => val === TYPES.LocalizedEnum, - then: (schema) => array( - object({ - value: string().required(requiredFieldMessage), - label: object( - reduce( - projectLanguages, - (name, lang) => ({ - ...name, - [lang]: string().required(requiredFieldMessage), - }), - {} - ) - ), - }) - ), + then: (schema) => + array( + object({ + value: string().required(requiredFieldMessage), + label: object( + reduce( + projectLanguages, + (name, lang) => ({ + ...name, + [lang]: string().required(requiredFieldMessage), + }), + {} + ) + ), + }) + ), }), }; const validationSchema = object({ diff --git a/src/components/container-form/enum-attributes.module.css b/mc-app/src/components/container-form/enum-attributes.module.css similarity index 100% rename from src/components/container-form/enum-attributes.module.css rename to mc-app/src/components/container-form/enum-attributes.module.css diff --git a/src/components/container-form/enum-attributes.spec.toBeMigrated.js b/mc-app/src/components/container-form/enum-attributes.spec.toBeMigrated.js similarity index 100% rename from src/components/container-form/enum-attributes.spec.toBeMigrated.js rename to mc-app/src/components/container-form/enum-attributes.spec.toBeMigrated.js diff --git a/src/components/container-form/enum-attributes.tsx b/mc-app/src/components/container-form/enum-attributes.tsx similarity index 100% rename from src/components/container-form/enum-attributes.tsx rename to mc-app/src/components/container-form/enum-attributes.tsx diff --git a/src/components/container-form/form.module.css b/mc-app/src/components/container-form/form.module.css similarity index 100% rename from src/components/container-form/form.module.css rename to mc-app/src/components/container-form/form.module.css diff --git a/src/components/container-form/form.tsx b/mc-app/src/components/container-form/form.tsx similarity index 100% rename from src/components/container-form/form.tsx rename to mc-app/src/components/container-form/form.tsx diff --git a/src/components/container-form/index.ts b/mc-app/src/components/container-form/index.ts similarity index 100% rename from src/components/container-form/index.ts rename to mc-app/src/components/container-form/index.ts diff --git a/src/components/container-form/localized-enum-attributes.spec.toBeMigrated.js b/mc-app/src/components/container-form/localized-enum-attributes.spec.toBeMigrated.js similarity index 100% rename from src/components/container-form/localized-enum-attributes.spec.toBeMigrated.js rename to mc-app/src/components/container-form/localized-enum-attributes.spec.toBeMigrated.js diff --git a/src/components/container-form/localized-enum-attributes.tsx b/mc-app/src/components/container-form/localized-enum-attributes.tsx similarity index 100% rename from src/components/container-form/localized-enum-attributes.tsx rename to mc-app/src/components/container-form/localized-enum-attributes.tsx diff --git a/src/components/container-form/messages.ts b/mc-app/src/components/container-form/messages.ts similarity index 100% rename from src/components/container-form/messages.ts rename to mc-app/src/components/container-form/messages.ts diff --git a/src/components/container-form/nested-attributes.module.css b/mc-app/src/components/container-form/nested-attributes.module.css similarity index 100% rename from src/components/container-form/nested-attributes.module.css rename to mc-app/src/components/container-form/nested-attributes.module.css diff --git a/src/components/container-form/object-attributes.spec.toBeMigrated.js b/mc-app/src/components/container-form/object-attributes.spec.toBeMigrated.js similarity index 100% rename from src/components/container-form/object-attributes.spec.toBeMigrated.js rename to mc-app/src/components/container-form/object-attributes.spec.toBeMigrated.js diff --git a/src/components/container-form/object-attributes.tsx b/mc-app/src/components/container-form/object-attributes.tsx similarity index 100% rename from src/components/container-form/object-attributes.tsx rename to mc-app/src/components/container-form/object-attributes.tsx diff --git a/src/components/container-form/reference-attribute.tsx b/mc-app/src/components/container-form/reference-attribute.tsx similarity index 100% rename from src/components/container-form/reference-attribute.tsx rename to mc-app/src/components/container-form/reference-attribute.tsx diff --git a/src/components/container-list/constants.ts b/mc-app/src/components/container-list/constants.ts similarity index 100% rename from src/components/container-list/constants.ts rename to mc-app/src/components/container-list/constants.ts diff --git a/src/components/container-list/container-list.spec.toBeMigrated.js b/mc-app/src/components/container-list/container-list.spec.toBeMigrated.js similarity index 100% rename from src/components/container-list/container-list.spec.toBeMigrated.js rename to mc-app/src/components/container-list/container-list.spec.toBeMigrated.js diff --git a/src/components/container-list/container-list.tsx b/mc-app/src/components/container-list/container-list.tsx similarity index 100% rename from src/components/container-list/container-list.tsx rename to mc-app/src/components/container-list/container-list.tsx diff --git a/src/components/container-list/index.ts b/mc-app/src/components/container-list/index.ts similarity index 100% rename from src/components/container-list/index.ts rename to mc-app/src/components/container-list/index.ts diff --git a/src/components/container-list/messages.ts b/mc-app/src/components/container-list/messages.ts similarity index 100% rename from src/components/container-list/messages.ts rename to mc-app/src/components/container-list/messages.ts diff --git a/src/components/create-container/create-container.spec.toBeMigrated.js b/mc-app/src/components/create-container/create-container.spec.toBeMigrated.js similarity index 100% rename from src/components/create-container/create-container.spec.toBeMigrated.js rename to mc-app/src/components/create-container/create-container.spec.toBeMigrated.js diff --git a/src/components/create-container/create-container.tsx b/mc-app/src/components/create-container/create-container.tsx similarity index 100% rename from src/components/create-container/create-container.tsx rename to mc-app/src/components/create-container/create-container.tsx diff --git a/src/components/create-container/index.ts b/mc-app/src/components/create-container/index.ts similarity index 100% rename from src/components/create-container/index.ts rename to mc-app/src/components/create-container/index.ts diff --git a/src/components/create-container/messages.ts b/mc-app/src/components/create-container/messages.ts similarity index 100% rename from src/components/create-container/messages.ts rename to mc-app/src/components/create-container/messages.ts diff --git a/src/components/create-custom-object/create-custom-object.spec.toBeMigrated.js b/mc-app/src/components/create-custom-object/create-custom-object.spec.toBeMigrated.js similarity index 100% rename from src/components/create-custom-object/create-custom-object.spec.toBeMigrated.js rename to mc-app/src/components/create-custom-object/create-custom-object.spec.toBeMigrated.js diff --git a/src/components/create-custom-object/create-custom-object.tsx b/mc-app/src/components/create-custom-object/create-custom-object.tsx similarity index 97% rename from src/components/create-custom-object/create-custom-object.tsx rename to mc-app/src/components/create-custom-object/create-custom-object.tsx index 46cf114..8d1f8c2 100644 --- a/src/components/create-custom-object/create-custom-object.tsx +++ b/mc-app/src/components/create-custom-object/create-custom-object.tsx @@ -44,7 +44,7 @@ const CreateCustomObject: FC = ({ onClose }) => { showNotification({ kind: NOTIFICATION_KINDS_SIDE.error, domain: DOMAINS.SIDE, - text: intl.formatMessage(messages.createSuccess), + text: message, }); }, }); diff --git a/src/components/create-custom-object/index.ts b/mc-app/src/components/create-custom-object/index.ts similarity index 100% rename from src/components/create-custom-object/index.ts rename to mc-app/src/components/create-custom-object/index.ts diff --git a/src/components/create-custom-object/messages.ts b/mc-app/src/components/create-custom-object/messages.ts similarity index 100% rename from src/components/create-custom-object/messages.ts rename to mc-app/src/components/create-custom-object/messages.ts diff --git a/src/components/custom-object-details/custom-object-details.module.css b/mc-app/src/components/custom-object-details/custom-object-details.module.css similarity index 100% rename from src/components/custom-object-details/custom-object-details.module.css rename to mc-app/src/components/custom-object-details/custom-object-details.module.css diff --git a/src/components/custom-object-details/custom-object-details.spec.toBeMigrated.js b/mc-app/src/components/custom-object-details/custom-object-details.spec.toBeMigrated.js similarity index 100% rename from src/components/custom-object-details/custom-object-details.spec.toBeMigrated.js rename to mc-app/src/components/custom-object-details/custom-object-details.spec.toBeMigrated.js diff --git a/src/components/custom-object-details/custom-object-details.tsx b/mc-app/src/components/custom-object-details/custom-object-details.tsx similarity index 99% rename from src/components/custom-object-details/custom-object-details.tsx rename to mc-app/src/components/custom-object-details/custom-object-details.tsx index 9519a7c..21e6f85 100644 --- a/src/components/custom-object-details/custom-object-details.tsx +++ b/mc-app/src/components/custom-object-details/custom-object-details.tsx @@ -164,7 +164,7 @@ const CustomObjectDetails: FC = ({ onClose }) => { showNotification({ kind: NOTIFICATION_KINDS_SIDE.error, domain: DOMAINS.SIDE, - text: intl.formatMessage(messages.editError), + text: message, }); }, }); diff --git a/src/components/custom-object-details/index.ts b/mc-app/src/components/custom-object-details/index.ts similarity index 100% rename from src/components/custom-object-details/index.ts rename to mc-app/src/components/custom-object-details/index.ts diff --git a/src/components/custom-object-details/messages.ts b/mc-app/src/components/custom-object-details/messages.ts similarity index 100% rename from src/components/custom-object-details/messages.ts rename to mc-app/src/components/custom-object-details/messages.ts diff --git a/src/components/custom-object-form/attribute-field.module.css b/mc-app/src/components/custom-object-form/attribute-field.module.css similarity index 100% rename from src/components/custom-object-form/attribute-field.module.css rename to mc-app/src/components/custom-object-form/attribute-field.module.css diff --git a/src/components/custom-object-form/attribute-field.spec.toBeMigrated.js b/mc-app/src/components/custom-object-form/attribute-field.spec.toBeMigrated.js similarity index 97% rename from src/components/custom-object-form/attribute-field.spec.toBeMigrated.js rename to mc-app/src/components/custom-object-form/attribute-field.spec.toBeMigrated.js index a83a159..e26a2b7 100644 --- a/src/components/custom-object-form/attribute-field.spec.toBeMigrated.js +++ b/mc-app/src/components/custom-object-form/attribute-field.spec.toBeMigrated.js @@ -9,17 +9,13 @@ import times from 'lodash/times'; import { FieldArray } from 'formik'; import * as ApplicationContext from '@commercetools-frontend/application-shell-connectors'; import Card from '@commercetools-uikit/card'; -import { - REFERENCE_BY, - REFERENCE_TYPES, - TYPES, -} from '../../constants'; +import { REFERENCE_BY, REFERENCE_TYPES, TYPES } from '../../constants'; import { generateContainer } from '../../test-utils'; import { getValueByType } from '../../helpers'; import AttributeField from './attribute-field'; import AttributeInput from './attribute-input'; -configure({adapter: new Adapter()}); +configure({ adapter: new Adapter() }); const project = { currencies: times(2, () => faker.finance.currencyCode()), diff --git a/src/components/custom-object-form/attribute-field.tsx b/mc-app/src/components/custom-object-form/attribute-field.tsx similarity index 97% rename from src/components/custom-object-form/attribute-field.tsx rename to mc-app/src/components/custom-object-form/attribute-field.tsx index cb601c6..f8f696d 100644 --- a/src/components/custom-object-form/attribute-field.tsx +++ b/mc-app/src/components/custom-object-form/attribute-field.tsx @@ -67,11 +67,11 @@ const AttributeField: FC = ({ const selectOptions = type === TYPES.LocalizedEnum ? options?.map((option) => { - return { - value: option.value, - label: option.label[dataLocale], - }; - }) + return { + value: option.value, + label: option.label[dataLocale], + }; + }) : options; return ( diff --git a/src/components/custom-object-form/attribute-input.spec.toBeMigrated.js b/mc-app/src/components/custom-object-form/attribute-input.spec.toBeMigrated.js similarity index 99% rename from src/components/custom-object-form/attribute-input.spec.toBeMigrated.js rename to mc-app/src/components/custom-object-form/attribute-input.spec.toBeMigrated.js index 5687445..1f15104 100644 --- a/src/components/custom-object-form/attribute-input.spec.toBeMigrated.js +++ b/mc-app/src/components/custom-object-form/attribute-input.spec.toBeMigrated.js @@ -7,11 +7,7 @@ import { FormattedMessage } from 'react-intl'; import moment from 'moment'; import momentTZ from 'moment-timezone'; import * as ApplicationContext from '@commercetools-frontend/application-shell-connectors'; -import { - REFERENCE_BY, - REFERENCE_TYPES, - TYPES, -} from '../../constants'; +import { REFERENCE_BY, REFERENCE_TYPES, TYPES } from '../../constants'; import { generateContainer } from '../../test-utils'; import { getValueByType } from '../../helpers'; import AttributeInput from './attribute-input'; diff --git a/src/components/custom-object-form/attribute-input.tsx b/mc-app/src/components/custom-object-form/attribute-input.tsx similarity index 94% rename from src/components/custom-object-form/attribute-input.tsx rename to mc-app/src/components/custom-object-form/attribute-input.tsx index 9c0b6ca..db0ebb3 100644 --- a/src/components/custom-object-form/attribute-input.tsx +++ b/mc-app/src/components/custom-object-form/attribute-input.tsx @@ -1,9 +1,7 @@ import React, { FC } from 'react'; -import camelCase from 'lodash/camelCase'; import get from 'lodash/get'; import map from 'lodash/map'; import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; - import CheckboxInput from '@commercetools-uikit/checkbox-input'; import DateInput from '@commercetools-uikit/date-input'; import TimeInput from '@commercetools-uikit/time-input'; @@ -17,6 +15,7 @@ import { ErrorMessage } from '@commercetools-uikit/messages'; import Spacings from '@commercetools-uikit/spacings'; import { TYPES } from '../../constants'; import nestedStyles from '../container-form/nested-attributes.module.css'; +import ReferenceInput from '../reference-input'; import AttributeField from './attribute-field'; // eslint-disable-line import/no-cycle type Props = { @@ -96,8 +95,10 @@ const AttributeInput: FC = ({ onChange={onChange} onBlur={onBlur} /> - {LocalizedTextInput.isTouched(touched) && errors && ( - {errors} + {LocalizedTextInput.isTouched(touched) && errors?.defaultMessage && ( + + {errors.defaultMessage} + )} ); @@ -233,19 +234,20 @@ const AttributeInput: FC = ({ case TYPES.Reference: { const referenceBy: any = get(reference, 'by'); - const refValue = get(value, referenceBy, ''); + // const refValue = get(value, referenceBy, ""); const refTouched = get(touched, referenceBy); const refErrors = get(errors, referenceBy); const hasError = !!(refTouched && refErrors); return ( - {hasError && ( {refErrors} @@ -259,7 +261,7 @@ const AttributeInput: FC = ({
{map(attributes, (attribute: any, index) => { - const attributeName = camelCase(attribute.name); + const attributeName = attribute.name; return ( = ({ type, title, isRequired, reference }) => { hint={ reference ? `${startCase(reference.type)} ${capitalize( - reference.by - )} ${intl.formatMessage(messages.referenceLabel)}` + reference.by + )} ${intl.formatMessage(messages.referenceLabel)}` : '' } /> diff --git a/src/components/custom-object-form/constants.ts b/mc-app/src/components/custom-object-form/constants.ts similarity index 100% rename from src/components/custom-object-form/constants.ts rename to mc-app/src/components/custom-object-form/constants.ts diff --git a/src/components/custom-object-form/custom-object-form.spec.toBeMigrated.js b/mc-app/src/components/custom-object-form/custom-object-form.spec.toBeMigrated.js similarity index 100% rename from src/components/custom-object-form/custom-object-form.spec.toBeMigrated.js rename to mc-app/src/components/custom-object-form/custom-object-form.spec.toBeMigrated.js diff --git a/src/components/custom-object-form/custom-object-form.tsx b/mc-app/src/components/custom-object-form/custom-object-form.tsx similarity index 100% rename from src/components/custom-object-form/custom-object-form.tsx rename to mc-app/src/components/custom-object-form/custom-object-form.tsx diff --git a/src/components/custom-object-form/form.module.css b/mc-app/src/components/custom-object-form/form.module.css similarity index 100% rename from src/components/custom-object-form/form.module.css rename to mc-app/src/components/custom-object-form/form.module.css diff --git a/src/components/custom-object-form/form.spec.toBeMigrated.js b/mc-app/src/components/custom-object-form/form.spec.toBeMigrated.js similarity index 100% rename from src/components/custom-object-form/form.spec.toBeMigrated.js rename to mc-app/src/components/custom-object-form/form.spec.toBeMigrated.js diff --git a/src/components/custom-object-form/form.tsx b/mc-app/src/components/custom-object-form/form.tsx similarity index 89% rename from src/components/custom-object-form/form.tsx rename to mc-app/src/components/custom-object-form/form.tsx index 91e57d6..9a23faf 100644 --- a/src/components/custom-object-form/form.tsx +++ b/mc-app/src/components/custom-object-form/form.tsx @@ -1,5 +1,4 @@ import React, { FC } from 'react'; -import camelCase from 'lodash/camelCase'; import get from 'lodash/get'; import map from 'lodash/map'; import { FormattedMessage, useIntl } from 'react-intl'; @@ -52,19 +51,22 @@ const Form: FC = ({ value: JSON.stringify(container), })); - const onAttributesChange = React.useCallback((attributes: any) => { - if (attributes) { - const valueSchema = getAttributeValidation( - attributes, - languages, - { - required: messages.requiredFieldError, - }, - intl - ); - updateSchemaValidation(valueSchema); - } - }, [intl, languages, updateSchemaValidation]); + const onAttributesChange = React.useCallback( + (attributes: any) => { + if (attributes) { + const valueSchema = getAttributeValidation( + attributes, + languages, + { + required: messages.requiredFieldError, + }, + intl + ); + updateSchemaValidation(valueSchema); + } + }, + [intl, languages, updateSchemaValidation] + ); React.useEffect(() => { if (values.container) { @@ -78,7 +80,14 @@ const Form: FC = ({ setFieldValue('value', value); setFieldValue('attributes', attributes); } - }, [currencies, initialValues.container, initialValues.value, languages, setFieldValue, values.container]); + }, [ + currencies, + initialValues.container, + initialValues.value, + languages, + setFieldValue, + values.container, + ]); React.useEffect(() => { onAttributesChange(values.attributes); @@ -130,7 +139,7 @@ const Form: FC = ({ } > {values.attributes.map((attribute, index) => { - const name = `value.${camelCase(attribute.name)}`; + const name = `value.${attribute.name}`; return ( { ): Array { return attributes.reduce>((display, attribute) => { if (attribute.display) { - return [...display, camelCase(attribute.name)]; + return [...display, attribute.name]; } if (attribute.attributes) { const nested = getDisplayAttributes(attribute.attributes); diff --git a/src/components/custom-objects-list/index.ts b/mc-app/src/components/custom-objects-list/index.ts similarity index 100% rename from src/components/custom-objects-list/index.ts rename to mc-app/src/components/custom-objects-list/index.ts diff --git a/src/components/custom-objects-list/messages.ts b/mc-app/src/components/custom-objects-list/messages.ts similarity index 100% rename from src/components/custom-objects-list/messages.ts rename to mc-app/src/components/custom-objects-list/messages.ts diff --git a/src/components/custom-objects-list/text-filter.module.css b/mc-app/src/components/custom-objects-list/text-filter.module.css similarity index 100% rename from src/components/custom-objects-list/text-filter.module.css rename to mc-app/src/components/custom-objects-list/text-filter.module.css diff --git a/src/components/custom-objects-list/text-filter.spec.tsx b/mc-app/src/components/custom-objects-list/text-filter.spec.tsx similarity index 100% rename from src/components/custom-objects-list/text-filter.spec.tsx rename to mc-app/src/components/custom-objects-list/text-filter.spec.tsx diff --git a/src/components/custom-objects-list/text-filter.tsx b/mc-app/src/components/custom-objects-list/text-filter.tsx similarity index 100% rename from src/components/custom-objects-list/text-filter.tsx rename to mc-app/src/components/custom-objects-list/text-filter.tsx diff --git a/src/components/entry-point/entry-point.tsx b/mc-app/src/components/entry-point/entry-point.tsx similarity index 100% rename from src/components/entry-point/entry-point.tsx rename to mc-app/src/components/entry-point/entry-point.tsx diff --git a/src/components/entry-point/index.ts b/mc-app/src/components/entry-point/index.ts similarity index 100% rename from src/components/entry-point/index.ts rename to mc-app/src/components/entry-point/index.ts diff --git a/mc-app/src/components/reference-input/index.tsx b/mc-app/src/components/reference-input/index.tsx new file mode 100644 index 0000000..cbfb8ce --- /dev/null +++ b/mc-app/src/components/reference-input/index.tsx @@ -0,0 +1,155 @@ +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { ExternalLinkIcon } from '@commercetools-uikit/icons'; +import Spacings from '@commercetools-uikit/spacings'; +import TextInput from '@commercetools-uikit/text-input'; +import get from 'lodash/get'; +import React, { Suspense, lazy } from 'react'; +import { Link } from 'react-router-dom'; +import { ReferenceInputProps } from './search-input/types'; +import { referenceTypeToSingleValueMap } from '../../shared-code'; + +const referenceTypeToComponentMap: Record = { + category: lazy(() => import('./search-components/category')), + customer: lazy(() => import('./search-components/customer')), + product: lazy(() => import('./search-components/product')), + cart: lazy(() => import('./search-components/cart')), + order: lazy(() => import('./search-components/order')), + 'tax-category': lazy(() => import('./search-components/tax-category')), + 'cart-discount': lazy(() => import('./search-components/cart-discount')), + 'product-discount': lazy( + () => import('./search-components/product-discount') + ), + channel: lazy(() => import('./search-components/channel')), + store: lazy(() => import('./search-components/store')), + type: lazy(() => import('./search-components/type')), + payment: lazy(() => import('./search-components/payment')), + state: lazy(() => import('./search-components/state')), + 'product-price': lazy(() => import('./search-components/standalone-price')), + 'customer-group': lazy(() => import('./search-components/customer-group')), + 'discount-code': lazy(() => import('./search-components/discount-code')), + 'product-type': lazy(() => import('./search-components/product-type')), + 'shopping-list': lazy(() => import('./search-components/shopping-list')), + 'shipping-method': lazy(() => import('./search-components/shipping-method')), + 'key-value-document': lazy( + () => import('./search-components/key-value-document') + ), +}; + +const referenceTypeToMCPageMap: Record = { + category: 'categories', + customer: 'customers', + product: 'products', + order: 'orders', + 'cart-discount': 'discounts/carts', + 'product-discount': 'discounts/products', + channel: 'settings/project/channels', + store: 'settings/project/stores', + 'customer-group': 'customers/customer-groups', + 'discount-code': 'discounts/codes', + 'product-type': 'settings/product-types', + 'tax-category': 'settings/project/taxes', + 'shipping-method': 'settings/project/shipping-methods', + 'product-price': 'standalone-prices', +}; + +const restrictedReferenceTypesToReferenceBy = [ + { + referenceType: 'key-value-document', + referenceBy: 'key', + }, + { + referenceType: 'order', + referenceBy: 'key', + }, +]; + + +const LoadingFallback: React.FC = () =>
Loading...
; + +class ErrorBoundary extends React.Component< + { children: React.ReactNode }, + { hasError: boolean } +> { + constructor(props: { children: React.ReactNode }) { + super(props); + this.state = { hasError: false }; + } + + static getDerivedStateFromError() { + return { hasError: true }; + } + + render() { + if (this.state.hasError) { + return
Error loading component
; + } + return this.props.children; + } +} + +const ReferenceInput: React.FC< + React.HTMLAttributes & ReferenceInputProps +> = ({ reference, value, ...props }) => { + const { project } = useApplicationContext(); + const referenceBy: 'id' | 'key' = get(reference, 'by', 'id') as 'id' | 'key'; + const referenceType = get(reference, 'type'); + const refValue = get(value, referenceBy, ''); + const inRestrictedList = restrictedReferenceTypesToReferenceBy.some( + (item) => { + return ( + item.referenceType === referenceType && item.referenceBy === referenceBy + ); + } + ); + + const externalUrl = + referenceBy === 'id' && referenceTypeToMCPageMap[referenceType as string] + ? `/${project?.key}/${ + referenceTypeToMCPageMap[referenceType as string] + }/${refValue}` + : ''; + + if (referenceType && referenceTypeToComponentMap[referenceType]) { + if (!inRestrictedList) { + const Component = referenceTypeToComponentMap[referenceType]; + const singleValueQueryDataObject = referenceTypeToSingleValueMap[ + referenceType + ] + ? referenceTypeToSingleValueMap[referenceType] + : referenceType; + return ( + + }> + + + {!!externalUrl && !!refValue && ( + + + + )} + + + + ); + } + } + + return ( + + ); +}; + +export default ReferenceInput; diff --git a/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-all.graphql b/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-all.graphql new file mode 100644 index 0000000..7e4d139 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-all.graphql @@ -0,0 +1,13 @@ +query CartDiscountSearch($locale: Locale!) { + cartDiscounts(limit: 50) { + results { + id + name(locale: $locale) + key + isActive + value { + type + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-by-id.graphql b/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-by-id.graphql new file mode 100644 index 0000000..bb83d8e --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-by-id.graphql @@ -0,0 +1,11 @@ +query CartDiscountById($id: String!, $locale: Locale) { + cartDiscount(id: $id) { + id + name(locale: $locale) + key + isActive + value { + type + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-by-key.graphql b/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-by-key.graphql new file mode 100644 index 0000000..c83a592 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-by-key.graphql @@ -0,0 +1,12 @@ +query CartDiscountByKey($key: String!, $locale: Locale) { + cartDiscount(key: $key) { + id + name(locale: $locale) + key + isActive + value { + type + } + } +} + diff --git a/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-search.graphql b/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-search.graphql new file mode 100644 index 0000000..4eb87eb --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart-discount/cart-discount-search.graphql @@ -0,0 +1,13 @@ +query CartDiscountSearch($where: String!, $locale: Locale!) { + cartDiscounts(where: $where) { + results { + id + name(locale:$locale) + key, + isActive + value { + type + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/cart-discount/index.tsx b/mc-app/src/components/reference-input/search-components/cart-discount/index.tsx new file mode 100644 index 0000000..7b49688 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart-discount/index.tsx @@ -0,0 +1,51 @@ +// mc-app/src/components/reference-input/search-components/cart-discount.tsx + +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import CartDiscountById from './cart-discount-by-id.graphql'; +import CartDiscountByKey from './cart-discount-by-key.graphql'; +import CartDiscountSearch from './cart-discount-search.graphql'; +import CartDiscountAll from './cart-discount-all.graphql'; +import { CartDiscount } from './types'; + +const localizePath = (cartdiscount: CartDiscount) => { + return `${cartdiscount.name} - isActive: ${cartdiscount.isActive} - key: ${cartdiscount.key}`; +}; + +const CartDiscountSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + const optionMapper = (data: Result) => + data.cartDiscounts.results.map((cartDiscount: CartDiscount): TEntity => { + return { + id: cartDiscount.id, + name: cartDiscount.name, + key: cartDiscount.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `name(${dataLocale} = "${text}") or description(${dataLocale} = "${text}") or key = "${text}"`, + }); + + return ( + > + optionMapper={optionMapper} + variableBuilder={variableBuilder} + localizePath={localizePath} + searchQuery={CartDiscountSearch} + byKeyQuery={CartDiscountByKey} + byIdQuery={CartDiscountById} + allQuery={CartDiscountAll} + {...props} + /> + ); +}; + +export default CartDiscountSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/cart-discount/types.ts b/mc-app/src/components/reference-input/search-components/cart-discount/types.ts new file mode 100644 index 0000000..e30715c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart-discount/types.ts @@ -0,0 +1,11 @@ +import { TEntity } from '../../types'; + +export interface CartDiscount extends TEntity { + id: string; + name: string; + key: string; + value: { + type: string; + }; + isActive: boolean; +} diff --git a/mc-app/src/components/reference-input/search-components/cart/cart-all.graphql b/mc-app/src/components/reference-input/search-components/cart/cart-all.graphql new file mode 100755 index 0000000..6c3f08a --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart/cart-all.graphql @@ -0,0 +1,19 @@ +query SearchCart { + carts(limit: 50) { + results { + id + key + customerEmail + billingAddress { + streetName + city + state + country + } + totalPrice { + centAmount + currencyCode + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/cart/cart-by-id.graphql b/mc-app/src/components/reference-input/search-components/cart/cart-by-id.graphql new file mode 100755 index 0000000..463cec1 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart/cart-by-id.graphql @@ -0,0 +1,16 @@ +query getCartById($id: String!) { + cart(id: $id) { + id + key + customerEmail + billingAddress { + streetName + city + state + country + } + totalPrice { + centAmount + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/cart/cart-by-key.graphql b/mc-app/src/components/reference-input/search-components/cart/cart-by-key.graphql new file mode 100755 index 0000000..1afeb37 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart/cart-by-key.graphql @@ -0,0 +1,16 @@ +query getCartByKey($key: String!) { + cart(key: $key) { + id + key + customerEmail + billingAddress { + streetName + city + state + country + } + totalPrice { + centAmount + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/cart/cart-search.graphql b/mc-app/src/components/reference-input/search-components/cart/cart-search.graphql new file mode 100755 index 0000000..f30c811 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart/cart-search.graphql @@ -0,0 +1,19 @@ +query SearchCart($where: String!, $limit: Int!, $offset: Int!) { + carts(where: $where, limit: $limit, offset: $offset) { + results { + id + key + customerEmail + billingAddress { + streetName + city + state + country + } + totalPrice { + centAmount + currencyCode + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/cart/index.tsx b/mc-app/src/components/reference-input/search-components/cart/index.tsx new file mode 100755 index 0000000..ef0a38b --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart/index.tsx @@ -0,0 +1,51 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import CartById from './cart-by-id.graphql'; +import CartByKey from './cart-by-key.graphql'; +import CartSearch from './cart-search.graphql'; +import CartAll from './cart-all.graphql'; +import { Cart } from './types'; + +const localizePath = (cart: Cart) => { + return `${cart.customerEmail ?? ''} ${ + (cart.totalPrice?.centAmount ?? 0) / 100 + } ${cart.totalPrice?.currencyCode || 'N/A'} ${ + cart.billingAddress?.streetName ?? '' + } ${cart.billingAddress?.city ?? ''} ${cart.billingAddress?.state ?? ''} ${ + cart.billingAddress?.country ?? '' + }`; +}; + +const CartSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.carts.results.map((cart: Cart): TEntity => { + return { + id: cart.id, + name: localizePath(cart), + key: cart.key, + }; + }); + const variableBuilder = (text: string) => ({ + where: `customerEmail = "${text}" or billingAddress(country= "${text}") or billingAddress(city= "${text}") or billingAddress(state= "${text}") or billingAddress(streetName= "${text}")`, + }); + + return ( + > + optionMapper={optionMapper} + localizePath={localizePath} + variableBuilder={variableBuilder} + allQuery={CartAll} + searchQuery={CartSearch} + byKeyQuery={CartByKey} + byIdQuery={CartById} + {...props} + /> + ); +}; +CartSearchInput.displayName = 'CartSearchInput'; + +export default CartSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/cart/types.ts b/mc-app/src/components/reference-input/search-components/cart/types.ts new file mode 100644 index 0000000..b22b87c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/cart/types.ts @@ -0,0 +1,19 @@ +import { TEntity } from '../../types'; + +export interface Cart extends TEntity { + customerEmail?: string; + billingAddress: { + country: string; + city: string; + state?: string; + streetName?: string; + }; + totalPrice?: { + centAmount: number; + currencyCode: string; + }; +} + +export interface CartResults { + categories: { results: Cart[] }; +} diff --git a/mc-app/src/components/reference-input/search-components/category/category-all.graphql b/mc-app/src/components/reference-input/search-components/category/category-all.graphql new file mode 100755 index 0000000..30e1d81 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/category/category-all.graphql @@ -0,0 +1,24 @@ +query CategorySearch($locale: Locale) { + categories: categorySearch( + limit: 50 + ) { + results { + id + key + name(locale: $locale) + nameAllLocales { + locale + value + } + ancestors { + id + name(locale: $locale) + nameAllLocales { + locale + value + } + } + stagedProductCount + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/category/category-by-id.graphql b/mc-app/src/components/reference-input/search-components/category/category-by-id.graphql new file mode 100755 index 0000000..163bdcc --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/category/category-by-id.graphql @@ -0,0 +1,14 @@ +fragment CategoryToDisplay on Category { + name(locale: $locale) + key +} + +query CategoryById($id: String, $locale: Locale) { + category(id: $id) { + ...CategoryToDisplay + stagedProductCount + ancestors { + ...CategoryToDisplay + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/category/category-by-key.graphql b/mc-app/src/components/reference-input/search-components/category/category-by-key.graphql new file mode 100755 index 0000000..3fc958e --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/category/category-by-key.graphql @@ -0,0 +1,14 @@ +fragment CategoryToDisplay on Category { + name(locale: $locale) + key +} + +query CategoryById($key: String, $locale: Locale) { + category(key: $key) { + ...CategoryToDisplay + stagedProductCount + ancestors { + ...CategoryToDisplay + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/category/category-search.graphql b/mc-app/src/components/reference-input/search-components/category/category-search.graphql new file mode 100755 index 0000000..f9dcc70 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/category/category-search.graphql @@ -0,0 +1,26 @@ +query CategorySearch($fullText: LocalizedText, $limit: Int!, $offset: Int!, $locale: Locale) { + categories: categorySearch( + fulltext: $fullText + limit: $limit + offset: $offset + ) { + results { + id + key + name(locale: $locale) + nameAllLocales { + locale + value + } + ancestors { + id + name(locale: $locale) + nameAllLocales { + locale + value + } + } + stagedProductCount + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/category/index.tsx b/mc-app/src/components/reference-input/search-components/category/index.tsx new file mode 100755 index 0000000..09cffca --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/category/index.tsx @@ -0,0 +1,56 @@ +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import CategoryById from './category-by-id.graphql'; +import CategoryByKey from './category-by-key.graphql'; +import CategorySearch from './category-search.graphql'; +import CategoryAll from './category-all.graphql'; +import { Category } from './types'; + +const localizePath = (category: Category, showProductCount = false) => { + let path = category.ancestors + ?.map((ancestor) => ancestor.name) + .concat([category.name]) + .join(' > '); + if (showProductCount) { + path = `${path} (${category.stagedProductCount})`; + } + return path; +}; + +const CategorySearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + const optionMapper = (data: Result) => + data.categories.results.map((category: Category): TEntity => { + return { + id: category.id, + name: localizePath(category, false), + key: category.key, + }; + }); + const variableBuilder = (text: string) => ({ + fullText: { locale: dataLocale, text }, + }); + + return ( + > + optionMapper={optionMapper} + localizePath={localizePath} + variableBuilder={variableBuilder} + searchQuery={CategorySearch} + byKeyQuery={CategoryByKey} + byIdQuery={CategoryById} + allQuery={CategoryAll} + {...props} + /> + ); +}; +CategorySearchInput.displayName = 'CategorySearchInput'; + +export default CategorySearchInput; diff --git a/mc-app/src/components/reference-input/search-components/category/types.ts b/mc-app/src/components/reference-input/search-components/category/types.ts new file mode 100644 index 0000000..83cdcf5 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/category/types.ts @@ -0,0 +1,16 @@ +import { TEntity } from '../../types'; + +export interface Category extends TEntity { + name: string; + nameAllLocales: { [key: string]: string }; + ancestors?: { + nameAllLocales: { [key: string]: string }; + id: string; + name: string; + }[]; + stagedProductCount?: number; +} + +export interface CategoryResults { + categories: { results: Category[] }; +} diff --git a/mc-app/src/components/reference-input/search-components/channel/channel-all.graphql b/mc-app/src/components/reference-input/search-components/channel/channel-all.graphql new file mode 100644 index 0000000..22bec4f --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/channel/channel-all.graphql @@ -0,0 +1,10 @@ +query ChannelSearch($locale: Locale!) { + channels(limit: 50) { + results { + id + name(locale: $locale) + key + roles + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/channel/channel-by-id.graphql b/mc-app/src/components/reference-input/search-components/channel/channel-by-id.graphql new file mode 100644 index 0000000..c513732 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/channel/channel-by-id.graphql @@ -0,0 +1,8 @@ +query ChannelById($id: String!, $locale: Locale!) { + channel(id: $id) { + id + name(locale: $locale) + key + roles + } +} diff --git a/mc-app/src/components/reference-input/search-components/channel/channel-by-key.graphql b/mc-app/src/components/reference-input/search-components/channel/channel-by-key.graphql new file mode 100644 index 0000000..de9538e --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/channel/channel-by-key.graphql @@ -0,0 +1,8 @@ +query ChannelByKey($key: String!, $locale: Locale!) { + channel(key: $key) { + id + name(locale: $locale) + key + roles + } +} diff --git a/mc-app/src/components/reference-input/search-components/channel/channel-search.graphql b/mc-app/src/components/reference-input/search-components/channel/channel-search.graphql new file mode 100644 index 0000000..21b1e3b --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/channel/channel-search.graphql @@ -0,0 +1,10 @@ +query ChannelSearch($where: String!, $limit: Int!, $offset: Int!, $locale: Locale!) { + channels(where: $where, limit: $limit, offset: $offset) { + results { + id + name(locale: $locale) + key + roles + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/channel/index.tsx b/mc-app/src/components/reference-input/search-components/channel/index.tsx new file mode 100644 index 0000000..283e3ef --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/channel/index.tsx @@ -0,0 +1,52 @@ +// mc-app/src/components/reference-input/search-components/channel.tsx + +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import ChannelById from './channel-by-id.graphql'; +import ChannelByKey from './channel-by-key.graphql'; +import ChannelSearch from './channel-search.graphql'; +import ChannelAll from './channel-all.graphql'; +import { Channel } from './types'; + +const localizePath = (channel: Channel) => { + return `${channel.name} - roles: ${channel.roles.join(', ')} - key: ${ + channel.key + }`; +}; +const ChannelSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + const optionMapper = (data: Result) => + data.channels.results.map((channel: Channel): TEntity => { + return { + id: channel.id, + name: channel.name, + key: channel.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `key = "${text}" or name(${dataLocale} = "${text}")`, + }); + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={ChannelSearch} + byKeyQuery={ChannelByKey} + byIdQuery={ChannelById} + allQuery={ChannelAll} + {...props} + /> + ); +}; + +export default ChannelSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/channel/types.ts b/mc-app/src/components/reference-input/search-components/channel/types.ts new file mode 100644 index 0000000..d384a75 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/channel/types.ts @@ -0,0 +1,5 @@ +import { TEntity } from '../../types'; + +export interface Channel extends TEntity { + roles: string[]; +} diff --git a/mc-app/src/components/reference-input/search-components/customer-group/customer-group-all.graphql b/mc-app/src/components/reference-input/search-components/customer-group/customer-group-all.graphql new file mode 100644 index 0000000..feee9ec --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer-group/customer-group-all.graphql @@ -0,0 +1,9 @@ +query CustomerGroupSearch { + customerGroups(limit: 50) { + results { + id + name + key + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/customer-group/customer-group-by-id.graphql b/mc-app/src/components/reference-input/search-components/customer-group/customer-group-by-id.graphql new file mode 100644 index 0000000..be08331 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer-group/customer-group-by-id.graphql @@ -0,0 +1,7 @@ +query CustomerGroupById($id: String!) { + customerGroup(id: $id) { + id + name + key + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/customer-group/customer-group-by-key.graphql b/mc-app/src/components/reference-input/search-components/customer-group/customer-group-by-key.graphql new file mode 100644 index 0000000..f083074 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer-group/customer-group-by-key.graphql @@ -0,0 +1,7 @@ +query CustomerGroupByKey($key: String!) { + customerGroup(key: $key) { + id + name + key + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/customer-group/customer-group-search.graphql b/mc-app/src/components/reference-input/search-components/customer-group/customer-group-search.graphql new file mode 100644 index 0000000..2675de3 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer-group/customer-group-search.graphql @@ -0,0 +1,9 @@ +query CustomerGroupSearch($where: String!, $limit: Int!, $offset: Int!) { + customerGroups(where: $where, limit: $limit, offset: $offset) { + results { + id + name + key + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/customer-group/index.tsx b/mc-app/src/components/reference-input/search-components/customer-group/index.tsx new file mode 100644 index 0000000..ec253af --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer-group/index.tsx @@ -0,0 +1,45 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import CustomerGroupById from './customer-group-by-id.graphql'; +import CustomerGroupByKey from './customer-group-by-key.graphql'; +import CustomerGroupSearch from './customer-group-search.graphql'; +import CustomerGroupAll from './customer-group-all.graphql'; +import { CustomerGroup } from './types'; + +const localizePath = (customerGroup: CustomerGroup) => { + return `${customerGroup.name} (${customerGroup.key})`; +}; + +const CustomerGroupSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.customerGroups.results.map((customerGroup: CustomerGroup): TEntity => { + return { + id: customerGroup.id, + name: customerGroup.name, + key: customerGroup.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `name = "${text}" or key = "${text}"`, + }); + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={CustomerGroupSearch} + byKeyQuery={CustomerGroupByKey} + byIdQuery={CustomerGroupById} + allQuery={CustomerGroupAll} + {...props} + /> + ); +}; + +export default CustomerGroupSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/customer-group/types.ts b/mc-app/src/components/reference-input/search-components/customer-group/types.ts new file mode 100644 index 0000000..9a81b51 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer-group/types.ts @@ -0,0 +1,7 @@ +import { TEntity } from '../../types'; + +export interface CustomerGroup extends TEntity { + id: string; + name: string; + key: string; +} diff --git a/mc-app/src/components/reference-input/search-components/customer/customer-all.graphql b/mc-app/src/components/reference-input/search-components/customer/customer-all.graphql new file mode 100755 index 0000000..a9e5a5a --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer/customer-all.graphql @@ -0,0 +1,11 @@ +query CustomerSearch { + customers (limit: 50) { + results { + email, + firstName, + lastName, + id, + key, + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/customer/customer-by-id.graphql b/mc-app/src/components/reference-input/search-components/customer/customer-by-id.graphql new file mode 100755 index 0000000..c9ad07c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer/customer-by-id.graphql @@ -0,0 +1,9 @@ +query CustomerById($id:String!) { + customer (id: $id) { + email, + firstName, + lastName, + id, + key, + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/customer/customer-by-key.graphql b/mc-app/src/components/reference-input/search-components/customer/customer-by-key.graphql new file mode 100755 index 0000000..97c3507 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer/customer-by-key.graphql @@ -0,0 +1,9 @@ +query CustomerByKey($key:String!) { + customer (key: $key) { + email, + firstName, + lastName, + id, + key, + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/customer/customer-search.graphql b/mc-app/src/components/reference-input/search-components/customer/customer-search.graphql new file mode 100755 index 0000000..291c3e6 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer/customer-search.graphql @@ -0,0 +1,12 @@ +query CustomerSearch($where:String!, $limit: Int!, $offset: Int!) { + customers (where: $where, limit: $limit + offset: $offset) { + results { + email, + firstName, + lastName, + id, + key, + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/customer/index.tsx b/mc-app/src/components/reference-input/search-components/customer/index.tsx new file mode 100755 index 0000000..7052c34 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer/index.tsx @@ -0,0 +1,47 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import CustomerById from './customer-by-id.graphql'; +import CustomerByKey from './customer-by-key.graphql'; +import CustomerSearch from './customer-search.graphql'; +import CustomerAll from './customer-all.graphql'; +import { Customer } from './types'; + +const localizePath = (customer: Customer) => { + return ( + customer.firstName + ' ' + customer.lastName + ' (' + customer.email + ')' + ); +}; + +const CustomerSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.customers.results.map((customer: Customer): TEntity => { + return { + id: customer.id, + name: localizePath(customer), + key: customer.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `firstName = "${text}" or lastName = "${text}" or email= "${text}"`, + }); + return ( + > + optionMapper={optionMapper} + localizePath={localizePath} + variableBuilder={variableBuilder} + searchQuery={CustomerSearch} + byKeyQuery={CustomerByKey} + byIdQuery={CustomerById} + allQuery={CustomerAll} + {...props} + /> + ); +}; +CustomerSearchInput.displayName = 'CustomerSearchInput'; + +export default CustomerSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/customer/types.ts b/mc-app/src/components/reference-input/search-components/customer/types.ts new file mode 100644 index 0000000..a2bb008 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/customer/types.ts @@ -0,0 +1,9 @@ +import { TEntity } from '../../types'; + +export interface Customer extends TEntity { + email?: string; + firstName?: string; + lastName?: string; + id: string; + key?: string; +} diff --git a/mc-app/src/components/reference-input/search-components/discount-code/discount-code-all.graphql b/mc-app/src/components/reference-input/search-components/discount-code/discount-code-all.graphql new file mode 100644 index 0000000..0cc44a3 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/discount-code/discount-code-all.graphql @@ -0,0 +1,10 @@ +query DiscountCodeSearch($locale: Locale!) { + discountCodes(limit: 50) { + results { + id + name(locale: $locale) + key + code + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/discount-code/discount-code-by-id.graphql b/mc-app/src/components/reference-input/search-components/discount-code/discount-code-by-id.graphql new file mode 100644 index 0000000..220c22e --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/discount-code/discount-code-by-id.graphql @@ -0,0 +1,9 @@ + +query DiscountCodeById($id: String!, $locale: Locale!) { + discountCode(id: $id) { + id + name(locale: $locale) + key + code + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/discount-code/discount-code-by-key.graphql b/mc-app/src/components/reference-input/search-components/discount-code/discount-code-by-key.graphql new file mode 100644 index 0000000..b1d55b6 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/discount-code/discount-code-by-key.graphql @@ -0,0 +1,7 @@ +query DiscountCodeByKey($key: String!, $locale: Locale!) { + discountCode(key: $key) { + id + name(locale: $locale) + key + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/discount-code/discount-code-search.graphql b/mc-app/src/components/reference-input/search-components/discount-code/discount-code-search.graphql new file mode 100644 index 0000000..dec0a97 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/discount-code/discount-code-search.graphql @@ -0,0 +1,10 @@ +query DiscountCodeSearch($where: String!, $limit: Int!, $offset: Int!, $locale: Locale!) { + discountCodes(where: $where, limit: $limit, offset: $offset) { + results { + id + name(locale: $locale) + key + code + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/discount-code/index.tsx b/mc-app/src/components/reference-input/search-components/discount-code/index.tsx new file mode 100644 index 0000000..61e8c33 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/discount-code/index.tsx @@ -0,0 +1,51 @@ +// workspace/discount-code.tsx + +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import DiscountCodeById from './discount-code-by-id.graphql'; +import DiscountCodeByKey from './discount-code-by-key.graphql'; +import DiscountCodeSearch from './discount-code-search.graphql'; +import DiscountCodeAll from './discount-code-all.graphql'; +import { DiscountCode } from './types'; + +const localizePath = (discountCode: DiscountCode) => { + return `${discountCode.name} (${discountCode.code})`; +}; + +const DiscountCodeSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + const optionMapper = (data: Result) => + data.discountCodes.results.map((discountCode: DiscountCode): TEntity => { + return { + id: discountCode.id, + name: localizePath(discountCode), + key: discountCode.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `name(${dataLocale} = "${text}") or code = "${text}" or key = "${text}"`, + }); + + return ( + > + optionMapper={optionMapper} + variableBuilder={variableBuilder} + localizePath={localizePath} + searchQuery={DiscountCodeSearch} + byKeyQuery={DiscountCodeByKey} + byIdQuery={DiscountCodeById} + allQuery={DiscountCodeAll} + {...props} + /> + ); +}; + +export default DiscountCodeSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/discount-code/types.ts b/mc-app/src/components/reference-input/search-components/discount-code/types.ts new file mode 100644 index 0000000..604d94c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/discount-code/types.ts @@ -0,0 +1,5 @@ +import { TEntity } from '../../types'; + +export interface DiscountCode extends TEntity { + code: string; +} diff --git a/mc-app/src/components/reference-input/search-components/key-value-document/index.tsx b/mc-app/src/components/reference-input/search-components/key-value-document/index.tsx new file mode 100644 index 0000000..3449271 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/key-value-document/index.tsx @@ -0,0 +1,56 @@ +// workspace/key-value-document.tsx + +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import KeyValueDocumentById from './key-value-document-by-id.graphql'; +import KeyValueDocumentByKey from './key-value-document-by-key.graphql'; +import KeyValueDocumentSearch from './key-value-document-search.graphql'; +import { KeyValueDocument } from './types'; + +const localizePath = (keyValueDocument: KeyValueDocument) => { + return `Container: ${keyValueDocument.container}, key: ${keyValueDocument.key}`; +}; +const KeyValueDocumentSearchInput: FC< + React.HTMLAttributes & + GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.customObjects.results.map( + (keyValueDocument: KeyValueDocument): TEntity => { + return { + id: keyValueDocument.id, + name: localizePath(keyValueDocument), + key: keyValueDocument.key, + }; + } + ); + + const variableBuilder = (text: string) => { + if (text.split(' ').length > 1) { + return { + container: text.split(' ')[0], + where: `key = "${text.split(' ')[1]}"`, + }; + } + return { + container: text, + // where: '', + }; + }; + + return ( + > + optionMapper={optionMapper} + localizePath={localizePath} + variableBuilder={variableBuilder} + searchQuery={KeyValueDocumentSearch} + byKeyQuery={KeyValueDocumentByKey} + byIdQuery={KeyValueDocumentById} + {...props} + /> + ); +}; + +export default KeyValueDocumentSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-by-id.graphql b/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-by-id.graphql new file mode 100644 index 0000000..d7db2b8 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-by-id.graphql @@ -0,0 +1,7 @@ +query KeyValueDocumentById($id:String!) { + customObject(id: $id) { + id + key + container + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-by-key.graphql b/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-by-key.graphql new file mode 100644 index 0000000..58233d9 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-by-key.graphql @@ -0,0 +1,7 @@ +query KeyValueDocumentByKey($key: String!) { + customObject(key: $key) { + id + container + key + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-search.graphql b/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-search.graphql new file mode 100644 index 0000000..b286a08 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/key-value-document/key-value-document-search.graphql @@ -0,0 +1,9 @@ +query KeyValueDocumentSearch($container:String!, $where: String, $limit: Int!, $offset: Int!) { + customObjects(container:$container, where: $where, limit: $limit, offset: $offset, sort:"key asc") { + results { + id + key + container + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/key-value-document/types.ts b/mc-app/src/components/reference-input/search-components/key-value-document/types.ts new file mode 100644 index 0000000..4f47f72 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/key-value-document/types.ts @@ -0,0 +1,5 @@ +import { TEntity } from '../../types'; + +export interface KeyValueDocument extends TEntity { + container: string; +} diff --git a/mc-app/src/components/reference-input/search-components/order/index.tsx b/mc-app/src/components/reference-input/search-components/order/index.tsx new file mode 100755 index 0000000..97cfd58 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/order/index.tsx @@ -0,0 +1,51 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import OrderById from './order-by-id.graphql'; +import OrderByKey from './order-by-key.graphql'; +import OrderSearch from './order-search.graphql'; +import OrderAll from './order-all.graphql'; +import { Order } from './types'; + +const localizePath = (order: Order) => { + return `OrderNumber: ${order.orderNumber} - ${order.customerEmail ?? ''} ${ + (order.totalPrice?.centAmount ?? 0) / 100 + } ${order.totalPrice?.currencyCode || 'N/A'} ${ + order.billingAddress?.streetName ?? '' + } ${order.billingAddress?.city ?? ''} ${order.billingAddress?.state ?? ''} ${ + order.billingAddress?.country ?? '' + }`; +}; + +const OrderSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.orders.results.map((order: Order): TEntity => { + return { + id: order.id, + name: localizePath(order), + key: order.orderNumber, + }; + }); + const variableBuilder = (text: string) => ({ + where: `orderNumber = "${text}" or customerEmail = "${text}" or billingAddress(country= "${text}") or billingAddress(city= "${text}") or billingAddress(state= "${text}") or billingAddress(streetName= "${text}")`, + }); + + return ( + > + optionMapper={optionMapper} + localizePath={localizePath} + variableBuilder={variableBuilder} + searchQuery={OrderSearch} + byKeyQuery={OrderByKey} + byIdQuery={OrderById} + allQuery={OrderAll} + {...props} + /> + ); +}; +OrderSearchInput.displayName = 'OrderSearchInput'; + +export default OrderSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/order/order-all.graphql b/mc-app/src/components/reference-input/search-components/order/order-all.graphql new file mode 100755 index 0000000..403bb88 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/order/order-all.graphql @@ -0,0 +1,19 @@ +query SearchOrder { + orders(limit: 50) { + results { + id + orderNumber + customerEmail + billingAddress { + streetName + city + state + country + } + totalPrice { + centAmount + currencyCode + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/order/order-by-id.graphql b/mc-app/src/components/reference-input/search-components/order/order-by-id.graphql new file mode 100755 index 0000000..65f2b88 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/order/order-by-id.graphql @@ -0,0 +1,16 @@ +query getOrderById($id: String!) { + order(id: $id) { + id + orderNumber + customerEmail + billingAddress { + streetName + city + state + country + } + totalPrice { + centAmount + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/order/order-by-key.graphql b/mc-app/src/components/reference-input/search-components/order/order-by-key.graphql new file mode 100755 index 0000000..f358b6d --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/order/order-by-key.graphql @@ -0,0 +1,16 @@ +query getOrderByOrderNumber($orderNumber: String!) { + order(orderNumber: $orderNumber) { + id + orderNumber + customerEmail + billingAddress { + streetName + city + state + country + } + totalPrice { + centAmount + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/order/order-search.graphql b/mc-app/src/components/reference-input/search-components/order/order-search.graphql new file mode 100755 index 0000000..d73ab0f --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/order/order-search.graphql @@ -0,0 +1,19 @@ +query SearchOrder($where: String!, $limit: Int!, $offset: Int!) { + orders(where: $where, limit: $limit, offset: $offset) { + results { + id + orderNumber + customerEmail + billingAddress { + streetName + city + state + country + } + totalPrice { + centAmount + currencyCode + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/order/types.ts b/mc-app/src/components/reference-input/search-components/order/types.ts new file mode 100644 index 0000000..0e84846 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/order/types.ts @@ -0,0 +1,20 @@ +import { TEntity } from '../../types'; + +export interface Order extends TEntity { + orderNumber: string; + customerEmail?: string; + billingAddress: { + country: string; + city: string; + state?: string; + streetName?: string; + }; + totalPrice?: { + centAmount: number; + currencyCode: string; + }; +} + +export interface OrderResults { + categories: { results: Order[] }; +} diff --git a/mc-app/src/components/reference-input/search-components/payment/index.tsx b/mc-app/src/components/reference-input/search-components/payment/index.tsx new file mode 100644 index 0000000..1f60571 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/payment/index.tsx @@ -0,0 +1,56 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import PaymentMethodById from './payment-by-id.graphql'; +import PaymentMethodByKey from './payment-by-key.graphql'; +import PaymentMethodSearch from './payment-search.graphql'; +import PaymentMethodAll from './payment-all.graphql'; +import { Payment } from './types'; + +const localizePath = (payment: Payment) => { + return `${payment.id} - Amount: ${ + (payment.amountPlanned?.centAmount ?? 0) / 100 + } ${payment.amountPlanned?.currencyCode}${ + payment.customer?.email ? ` - Customer: ${payment.customer.email}` : '' + }`; +}; + +const PaymentSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.payments.results.map((payment: Payment): TEntity => { + return { + id: payment.id, + name: localizePath(payment), + key: payment.key, + }; + }); + + const variableBuilder = (text: string) => { + if (isNaN(parseInt(text))) { + return { + where: `key="${text}" or amountPlanned(currencyCode= "${text}")`, + }; + } + return { + where: `amountPlanned(centAmount = ${text})`, + }; + }; + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={PaymentMethodSearch} + byKeyQuery={PaymentMethodByKey} + byIdQuery={PaymentMethodById} + allQuery={PaymentMethodAll} + {...props} + /> + ); +}; + +export default PaymentSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/payment/payment-all.graphql b/mc-app/src/components/reference-input/search-components/payment/payment-all.graphql new file mode 100644 index 0000000..96a1235 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/payment/payment-all.graphql @@ -0,0 +1,23 @@ +query PaymentSearch($locale: Locale!) { + payments(limit: 50) { + results { + id + key + amountPlanned { + centAmount + currencyCode + } + customer { + email + } + paymentMethodInfo { + name(locale: $locale) + } + paymentStatus { + state { + key + } + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/payment/payment-by-id.graphql b/mc-app/src/components/reference-input/search-components/payment/payment-by-id.graphql new file mode 100644 index 0000000..dbf0a72 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/payment/payment-by-id.graphql @@ -0,0 +1,21 @@ +query PaymentGatewayById($id: String!, $locale: Locale!) { + payment(id: $id) { + id + key + amountPlanned { + centAmount + currencyCode + } + customer { + email + } + paymentMethodInfo { + name(locale: $locale) + } + paymentStatus { + state { + key + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/payment/payment-by-key.graphql b/mc-app/src/components/reference-input/search-components/payment/payment-by-key.graphql new file mode 100644 index 0000000..bd83540 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/payment/payment-by-key.graphql @@ -0,0 +1,21 @@ +query PaymentGatewayByKey($key: String!, $locale: Locale!) { + payment(key: $key) { + id + key + amountPlanned { + centAmount + currencyCode + } + customer { + email + } + paymentMethodInfo { + name(locale: $locale) + } + paymentStatus { + state { + key + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/payment/payment-search.graphql b/mc-app/src/components/reference-input/search-components/payment/payment-search.graphql new file mode 100644 index 0000000..23dd358 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/payment/payment-search.graphql @@ -0,0 +1,23 @@ +query PaymentSearch($where:String!, $limit: Int!, $offset: Int!, $locale: Locale!) { + payments(where:$where,limit: $limit, offset: $offset) { + results { + id + key + amountPlanned { + centAmount + currencyCode + } + customer { + email + } + paymentMethodInfo { + name(locale: $locale) + } + paymentStatus { + state { + key + } + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/payment/types.ts b/mc-app/src/components/reference-input/search-components/payment/types.ts new file mode 100644 index 0000000..f71f57c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/payment/types.ts @@ -0,0 +1,16 @@ +import { TEntity } from '../../types'; + +export interface Payment extends TEntity { + amountPlanned?: { + centAmount: number; + currencyCode: string; + }; + customer?: { + email: string; + }; + paymentStatus?: { + state?: { + key?: string; + }; + }; +} diff --git a/mc-app/src/components/reference-input/search-components/product-discount/index.tsx b/mc-app/src/components/reference-input/search-components/product-discount/index.tsx new file mode 100644 index 0000000..446c02c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-discount/index.tsx @@ -0,0 +1,54 @@ +// mc-app/src/components/reference-input/search-components/cart-discount.tsx + +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import ProductDiscountById from './product-discount-by-id.graphql'; +import ProductDiscountByKey from './product-discount-by-key.graphql'; +import ProductDiscountSearch from './product-discount-search.graphql'; +import ProductDiscountAll from './product-discount-all.graphql'; +import { ProductDiscount } from './types'; + +const localizePath = (productdiscount: ProductDiscount) => { + return `${productdiscount.name} - isActive: ${productdiscount.isActive} - key: ${productdiscount.key}`; +}; + +const ProductDiscountSearchInput: FC< + React.HTMLAttributes & + GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + const optionMapper = (data: Result) => + data.productDiscounts.results.map( + (productDiscount: ProductDiscount): TEntity => { + return { + id: productDiscount.id, + name: productDiscount.name, + key: productDiscount.key, + }; + } + ); + + const variableBuilder = (text: string) => ({ + where: `name(${dataLocale} = "${text}") or description(${dataLocale} = "${text}") or key = "${text}"`, + }); + + return ( + > + optionMapper={optionMapper} + variableBuilder={variableBuilder} + localizePath={localizePath} + searchQuery={ProductDiscountSearch} + byKeyQuery={ProductDiscountByKey} + byIdQuery={ProductDiscountById} + allQuery={ProductDiscountAll} + {...props} + /> + ); +}; + +export default ProductDiscountSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/product-discount/product-discount-all.graphql b/mc-app/src/components/reference-input/search-components/product-discount/product-discount-all.graphql new file mode 100644 index 0000000..541464f --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-discount/product-discount-all.graphql @@ -0,0 +1,13 @@ +query ProductDiscountSearch($locale: Locale!) { + productDiscounts(limit: 50) { + results { + id + name(locale:$locale) + key, + isActive + value { + type + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product-discount/product-discount-by-id.graphql b/mc-app/src/components/reference-input/search-components/product-discount/product-discount-by-id.graphql new file mode 100644 index 0000000..c45e8e4 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-discount/product-discount-by-id.graphql @@ -0,0 +1,11 @@ +query ProductDiscountById($id: String!, $locale: Locale) { + productDiscount(id: $id) { + id + name(locale: $locale) + key + isActive + value { + type + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/product-discount/product-discount-by-key.graphql b/mc-app/src/components/reference-input/search-components/product-discount/product-discount-by-key.graphql new file mode 100644 index 0000000..73936ce --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-discount/product-discount-by-key.graphql @@ -0,0 +1,12 @@ +query ProductDiscountByKey($key: String!, $locale: Locale) { + productDiscount(key: $key) { + id + name(locale: $locale) + key + isActive + value { + type + } + } +} + diff --git a/mc-app/src/components/reference-input/search-components/product-discount/product-discount-search.graphql b/mc-app/src/components/reference-input/search-components/product-discount/product-discount-search.graphql new file mode 100644 index 0000000..318b90e --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-discount/product-discount-search.graphql @@ -0,0 +1,13 @@ +query ProductDiscountSearch($where: String!, $locale: Locale!) { + productDiscounts(where: $where) { + results { + id + name(locale:$locale) + key, + isActive + value { + type + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product-discount/types.ts b/mc-app/src/components/reference-input/search-components/product-discount/types.ts new file mode 100644 index 0000000..c0875cf --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-discount/types.ts @@ -0,0 +1,11 @@ +import { TEntity } from '../../types'; + +export interface ProductDiscount extends TEntity { + id: string; + name: string; + key: string; + value: { + type: string; + }; + isActive: boolean; +} diff --git a/mc-app/src/components/reference-input/search-components/product-type/index.tsx b/mc-app/src/components/reference-input/search-components/product-type/index.tsx new file mode 100644 index 0000000..ba84c3c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-type/index.tsx @@ -0,0 +1,45 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import ProductTypeById from './product-type-by-id.graphql'; +import ProductTypeByKey from './product-type-by-key.graphql'; +import ProductTypeSearch from './product-type-search.graphql'; +import ProductTypeAll from './product-type-all.graphql'; +import { ProductType } from './types'; + +const localizePath = (product: ProductType) => { + return `${product.name} (${product.key})`; +}; + +const ProductTypeSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.productTypes.results.map((productType: ProductType): TEntity => { + return { + id: productType.id, + name: productType.name, + key: productType.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `name = "${text}"`, + }); + + return ( + > + optionMapper={optionMapper} + localizePath={localizePath} + variableBuilder={variableBuilder} + searchQuery={ProductTypeSearch} + byKeyQuery={ProductTypeByKey} + byIdQuery={ProductTypeById} + allQuery={ProductTypeAll} + {...props} + /> + ); +}; + +export default ProductTypeSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/product-type/product-type-all.graphql b/mc-app/src/components/reference-input/search-components/product-type/product-type-all.graphql new file mode 100644 index 0000000..0328357 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-type/product-type-all.graphql @@ -0,0 +1,9 @@ +query ProductTypeSearch { + productTypes(limit: 50) { + results { + id + name + key + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product-type/product-type-by-id.graphql b/mc-app/src/components/reference-input/search-components/product-type/product-type-by-id.graphql new file mode 100644 index 0000000..2249e67 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-type/product-type-by-id.graphql @@ -0,0 +1,7 @@ +query ProductTypeById($id: String!) { + productType(id: $id) { + id + name + key + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product-type/product-type-by-key.graphql b/mc-app/src/components/reference-input/search-components/product-type/product-type-by-key.graphql new file mode 100644 index 0000000..c5f1816 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-type/product-type-by-key.graphql @@ -0,0 +1,7 @@ +query ProductTypeByKey($key: String!) { + productType(key: $key) { + id + name + key + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product-type/product-type-search.graphql b/mc-app/src/components/reference-input/search-components/product-type/product-type-search.graphql new file mode 100644 index 0000000..ed1bb14 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-type/product-type-search.graphql @@ -0,0 +1,9 @@ +query ProductTypeSearch($where: String!, $limit: Int!, $offset: Int!) { + productTypes(where: $where, limit: $limit, offset: $offset) { + results { + id + name + key + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product-type/types.ts b/mc-app/src/components/reference-input/search-components/product-type/types.ts new file mode 100644 index 0000000..d8ea2b5 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product-type/types.ts @@ -0,0 +1,3 @@ +import { TEntity } from '../../types'; + +export type ProductType = TEntity; diff --git a/mc-app/src/components/reference-input/search-components/product/index.tsx b/mc-app/src/components/reference-input/search-components/product/index.tsx new file mode 100755 index 0000000..6ce0f0b --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product/index.tsx @@ -0,0 +1,51 @@ +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import ProductById from './product-by-id.graphql'; +import ProductByKey from './product-by-key.graphql'; +import ProductSearch from './product-search.graphql'; +import ProductAll from './product-all.graphql'; +import { Product, ProductProjectionItem } from './types'; + +const localizePathProductprojection = (product: ProductProjectionItem) => { + return `${product.name} (${product.masterVariant?.sku})`; +}; +const localizePath = (product: Product) => { + return `${product.masterData?.current?.name} (${product.masterData?.current?.masterVariant?.sku})`; +}; + +const ProductSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => context); + const optionMapper = (data: Result) => + data.productProjectionSearch.results.map((product: Product): TEntity => { + return { + id: product.id, + name: localizePathProductprojection(product), + key: product.key, + }; + }); + + const variableBuilder = (text: string) => ({ + text, + locale: dataLocale, + }); + return ( + > + optionMapper={optionMapper} + localizePath={localizePath} + variableBuilder={variableBuilder} + searchQuery={ProductSearch} + byKeyQuery={ProductByKey} + byIdQuery={ProductById} + allQuery={ProductAll} + {...props} + /> + ); +}; +ProductSearchInput.displayName = 'CustomerSearchInput'; + +export default ProductSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/product/product-all.graphql b/mc-app/src/components/reference-input/search-components/product/product-all.graphql new file mode 100755 index 0000000..9ebfb21 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product/product-all.graphql @@ -0,0 +1,16 @@ +query SearchProducts($locale: Locale!) { + productProjectionSearch(limit: 50) { + total + results { + id + productType { + key + } + key + name(locale:$locale) + masterVariant { + sku + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product/product-by-id.graphql b/mc-app/src/components/reference-input/search-components/product/product-by-id.graphql new file mode 100755 index 0000000..9b1a588 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product/product-by-id.graphql @@ -0,0 +1,18 @@ +query getProductById($id: String!, $locale: Locale!) { + product(id: $id) { + id + productType { + key + } + key + masterData { + current { + name (locale: $locale) + masterVariant { + sku + } + } + } + + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product/product-by-key.graphql b/mc-app/src/components/reference-input/search-components/product/product-by-key.graphql new file mode 100755 index 0000000..1881d8f --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product/product-by-key.graphql @@ -0,0 +1,18 @@ +query getProductByKey($key: String!, $locale: Locale!) { + product(key: $key) { + id + productType { + key + } + key + masterData { + current { + name (locale: $locale) + masterVariant { + sku + } + } + } + + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product/product-search.graphql b/mc-app/src/components/reference-input/search-components/product/product-search.graphql new file mode 100755 index 0000000..9dc76fd --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product/product-search.graphql @@ -0,0 +1,16 @@ +query SearchProducts($text: String!, $limit: Int!, $offset: Int!, $locale: Locale!) { + productProjectionSearch(text: $text, limit: $limit, offset: $offset, locale:$locale) { + total + results { + id + productType { + key + } + key + name(locale:$locale) + masterVariant { + sku + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/product/types.ts b/mc-app/src/components/reference-input/search-components/product/types.ts new file mode 100644 index 0000000..c3a50f1 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/product/types.ts @@ -0,0 +1,24 @@ +import { TEntity } from '../../types'; + +export interface Product extends TEntity { + productType: { + key?: string; + }; + masterData: { + current: { + name?: string; + masterVariant?: { + sku?: string; + }; + }; + }; +} + +export interface ProductProjectionItem extends TEntity { + productType: { + key?: string; + }; + masterVariant?: { + sku?: string; + }; +} diff --git a/mc-app/src/components/reference-input/search-components/shipping-method/index.tsx b/mc-app/src/components/reference-input/search-components/shipping-method/index.tsx new file mode 100644 index 0000000..467a856 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shipping-method/index.tsx @@ -0,0 +1,51 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import ShippingMethodById from './shipping-method-by-id.graphql'; +import ShippingMethodByKey from './shipping-method-by-key.graphql'; +import ShippingMethodSearch from './shipping-method-search.graphql'; +import ShippingMethodAll from './shipping-method-all.graphql'; +import { ShippingMethod } from './types'; + +const localizePath = (shippingMethod: ShippingMethod) => { + return `${shippingMethod.name ?? ''} - key: ${ + shippingMethod.key + }, Zones: ${shippingMethod.zoneRates + ?.map((zoneRate) => zoneRate.zone.name) + .join(', ')}`; +}; + +const ShippingMethodSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.shippingMethods.results.map( + (shippingMethod: ShippingMethod): TEntity => { + return { + id: shippingMethod.id, + name: localizePath(shippingMethod), + key: shippingMethod.key, + }; + } + ); + + const variableBuilder = (text: string) => ({ + where: `name = "${text}" or description = "${text}"`, + }); + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={ShippingMethodSearch} + byKeyQuery={ShippingMethodByKey} + byIdQuery={ShippingMethodById} + allQuery={ShippingMethodAll} + {...props} + /> + ); +}; + +export default ShippingMethodSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-all.graphql b/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-all.graphql new file mode 100644 index 0000000..3ed949b --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-all.graphql @@ -0,0 +1,15 @@ +query ShippingMethodSearch { + shippingMethods(limit: 50) { + results { + id + name + key + zoneRates { + zone { + id + name + } + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-by-id.graphql b/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-by-id.graphql new file mode 100644 index 0000000..0f5f086 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-by-id.graphql @@ -0,0 +1,13 @@ +query ShippingMethodById($id: String!) { + shippingMethod(id: $id) { + id + name + key + zoneRates { + zone { + id + name + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-by-key.graphql b/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-by-key.graphql new file mode 100644 index 0000000..91c95a3 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-by-key.graphql @@ -0,0 +1,13 @@ +query ShippingMethodByKey($key: String!) { + shippingMethod(key: $key) { + id + name + key + zoneRates { + zone { + id + name + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-search.graphql b/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-search.graphql new file mode 100644 index 0000000..cbdba10 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shipping-method/shipping-method-search.graphql @@ -0,0 +1,15 @@ +query ShippingMethodSearch($where: String!, $limit: Int!, $offset: Int!) { + shippingMethods(where: $where, limit: $limit, offset: $offset) { + results { + id + name + key + zoneRates { + zone { + id + name + } + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/shipping-method/types.ts b/mc-app/src/components/reference-input/search-components/shipping-method/types.ts new file mode 100644 index 0000000..6600118 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shipping-method/types.ts @@ -0,0 +1,10 @@ +import { TEntity } from '../../types'; + +export interface ShippingMethod extends TEntity { + zoneRates: { + zone: { + id: string; + name: string; + }; + }[]; +} diff --git a/mc-app/src/components/reference-input/search-components/shopping-list/index.tsx b/mc-app/src/components/reference-input/search-components/shopping-list/index.tsx new file mode 100644 index 0000000..4abef56 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shopping-list/index.tsx @@ -0,0 +1,51 @@ +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import ShoppingListById from './shopping-list-by-id.graphql'; +import ShoppingListByKey from './shopping-list-by-key.graphql'; +import ShoppingListSearch from './shopping-list-search.graphql'; +import ShoppingListAll from './shopping-list-all.graphql'; +import { ShoppingList } from './types'; + +const localizePath = (shoppingList: ShoppingList) => { + return `${shoppingList.name ?? ''} - key: ${shoppingList.key}, customer: ${ + shoppingList.customer?.email ?? '' + } - id: ${shoppingList.id}`; +}; + +const ShoppingListSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + const optionMapper = (data: Result) => + data.shoppingLists.results.map((shoppingList: ShoppingList): TEntity => { + return { + id: shoppingList.id, + name: localizePath(shoppingList), + key: shoppingList.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `name(${dataLocale} = "${text}") or key = "${text}"`, + }); + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={ShoppingListSearch} + byKeyQuery={ShoppingListByKey} + byIdQuery={ShoppingListById} + allQuery={ShoppingListAll} + {...props} + /> + ); +}; + +export default ShoppingListSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-all.graphql b/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-all.graphql new file mode 100644 index 0000000..5b9d100 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-all.graphql @@ -0,0 +1,13 @@ +query ShoppingListSearch($locale: Locale!) { + shoppingLists(limit: 50) { + results { + id + name(locale: $locale) + key + slug(locale: $locale) + customer { + email + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-by-id.graphql b/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-by-id.graphql new file mode 100644 index 0000000..ee54c62 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-by-id.graphql @@ -0,0 +1,11 @@ +query ShoppingListById($id: String!, $locale: Locale!) { + shoppingList(id: $id) { + id + name(locale: $locale) + key + slug(locale: $locale) + customer { + email + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-by-key.graphql b/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-by-key.graphql new file mode 100644 index 0000000..47220a5 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-by-key.graphql @@ -0,0 +1,11 @@ +query ShoppingListByKey($key: String!, $locale: Locale!) { + shoppingList(key: $key) { + id + name(locale: $locale) + key + slug(locale: $locale) + customer { + email + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-search.graphql b/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-search.graphql new file mode 100644 index 0000000..a9de5c9 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shopping-list/shopping-list-search.graphql @@ -0,0 +1,13 @@ +query ShoppingListSearch($limit: Int!, $offset: Int!, $locale: Locale!, $where: String!) { + shoppingLists(limit: $limit, offset: $offset, where: $where) { + results { + id + name(locale: $locale) + key + slug(locale: $locale) + customer { + email + } + } + } +} diff --git a/mc-app/src/components/reference-input/search-components/shopping-list/types.ts b/mc-app/src/components/reference-input/search-components/shopping-list/types.ts new file mode 100644 index 0000000..2cf5af1 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/shopping-list/types.ts @@ -0,0 +1,9 @@ +import { TEntity } from '../../types'; + +export interface ShoppingList extends TEntity { + slug?: string; + customer?: { + email?: string; + id: string; + }; +} diff --git a/mc-app/src/components/reference-input/search-components/standalone-price/index.tsx b/mc-app/src/components/reference-input/search-components/standalone-price/index.tsx new file mode 100644 index 0000000..fc72065 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/standalone-price/index.tsx @@ -0,0 +1,63 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import StandalonePriceById from './standalone-price-by-id.graphql'; +import StandalonePriceByKey from './standalone-price-by-key.graphql'; +import StandalonePriceSearch from './standalone-price-search.graphql'; +import StandalonePricAll from './standalone-price-all.graphql'; +import { StandalonePrice } from './types'; + +const localizePath = (standalonePrice: StandalonePrice) => { + return `SKU: ${standalonePrice.sku} - key: ${standalonePrice.key} - Price: ${ + (standalonePrice.value.centAmount ?? 0) / 100 + } ${standalonePrice.value.currencyCode}${ + standalonePrice.channel ? ` - channel: ${standalonePrice.channel.key}` : '' + }${ + standalonePrice.customerGroup + ? ` - customerGroup: ${standalonePrice.customerGroup.key}` + : '' + }`; +}; + +const StandalonePriceSearchInput: FC< + React.HTMLAttributes & + GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.standalonePrices.results.map( + (standalonePrice: StandalonePrice): TEntity => { + return { + id: standalonePrice.id, + name: localizePath(standalonePrice), + key: standalonePrice.key, + }; + } + ); + + const variableBuilder = (text: string) => { + if (isNaN(parseInt(text))) { + return { + where: `key = "${text}" or sku = "${text}" or value(currencyCode="${text}")`, + }; + } + return { + where: `value(centAmount = ${text})`, + }; + }; + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={StandalonePriceSearch} + byKeyQuery={StandalonePriceByKey} + byIdQuery={StandalonePriceById} + allQuery={StandalonePricAll} + {...props} + /> + ); +}; + +export default StandalonePriceSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-all.graphql b/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-all.graphql new file mode 100644 index 0000000..b122ee1 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-all.graphql @@ -0,0 +1,21 @@ +query StandalonePriceSearch { + standalonePrices(limit: 50) { + results { + id + sku + key + customerGroup { + key + } + channel { + key + } + value { + centAmount + currencyCode + } + validFrom + validUntil + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-by-id.graphql b/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-by-id.graphql new file mode 100644 index 0000000..acdcd14 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-by-id.graphql @@ -0,0 +1,19 @@ +query StandalonePriceById($id: String!) { + standalonePrice(id: $id) { + id + sku + key + customerGroup { + key + } + channel { + key + } + value { + centAmount + currencyCode + } + validFrom + validUntil + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-by-key.graphql b/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-by-key.graphql new file mode 100644 index 0000000..79697e9 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-by-key.graphql @@ -0,0 +1,19 @@ +query StandalonePriceByKey($key: String!) { + standalonePrice(key: $key) { + id + sku + key + customerGroup { + key + } + channel { + key + } + value { + centAmount + currencyCode + } + validFrom + validUntil + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-search.graphql b/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-search.graphql new file mode 100644 index 0000000..b626afe --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/standalone-price/standalone-price-search.graphql @@ -0,0 +1,21 @@ +query StandalonePriceSearch($where: String!, $limit: Int!, $offset: Int!) { + standalonePrices(where: $where, limit: $limit, offset: $offset) { + results { + id + sku + key + customerGroup { + key + } + channel { + key + } + value { + centAmount + currencyCode + } + validFrom + validUntil + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/standalone-price/types.ts b/mc-app/src/components/reference-input/search-components/standalone-price/types.ts new file mode 100644 index 0000000..2479041 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/standalone-price/types.ts @@ -0,0 +1,17 @@ +import { TEntity } from '../../types'; + +export interface StandalonePrice extends TEntity { + sku: string; + customerGroup?: { + key: string; + }; + channel?: { + key: string; + }; + value: { + centAmount: number; + currencyCode: string; + }; + validFrom: string; + validUntil: string; +} diff --git a/mc-app/src/components/reference-input/search-components/state/index.tsx b/mc-app/src/components/reference-input/search-components/state/index.tsx new file mode 100644 index 0000000..2c66ca3 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/state/index.tsx @@ -0,0 +1,49 @@ +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import StateById from './state-by-id.graphql'; +import StateByKey from './state-by-key.graphql'; +import StateSearch from './state-search.graphql'; +import StateAll from './state-all.graphql'; +import { State } from './types'; + +const localizePath = (state: State) => { + return `${state.name} - key: ${state.key} - type: ${state.type}`; +}; + +const StateSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + const optionMapper = (data: Result) => + data.states.results.map((state: State): TEntity => { + return { + id: state.id, + name: localizePath(state), + key: state.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `name(${dataLocale} = "${text}") or key= "${text}"`, + }); + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={StateSearch} + byKeyQuery={StateByKey} + byIdQuery={StateById} + allQuery={StateAll} + {...props} + /> + ); +}; + +export default StateSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/state/state-all.graphql b/mc-app/src/components/reference-input/search-components/state/state-all.graphql new file mode 100644 index 0000000..b8ed668 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/state/state-all.graphql @@ -0,0 +1,12 @@ +query StateSearch($locale: Locale!) { + states(limit: 50) { + results { + id + name(locale: $locale) + key + description(locale: $locale) + roles + type + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/state/state-by-id.graphql b/mc-app/src/components/reference-input/search-components/state/state-by-id.graphql new file mode 100644 index 0000000..df41b34 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/state/state-by-id.graphql @@ -0,0 +1,10 @@ +query StateById($id: String!, $locale: Locale!) { + state(id: $id) { + id + name(locale: $locale) + key + description(locale: $locale) + roles + type + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/state/state-by-key.graphql b/mc-app/src/components/reference-input/search-components/state/state-by-key.graphql new file mode 100644 index 0000000..6372a71 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/state/state-by-key.graphql @@ -0,0 +1,10 @@ +query StateByKey($key: String!, $locale: Locale!) { + state(key: $key) { + id + name(locale: $locale) + key + description(locale: $locale) + roles + type + } +} diff --git a/mc-app/src/components/reference-input/search-components/state/state-search.graphql b/mc-app/src/components/reference-input/search-components/state/state-search.graphql new file mode 100644 index 0000000..87ea33e --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/state/state-search.graphql @@ -0,0 +1,12 @@ +query StateSearch($where: String!, $limit: Int!, $offset: Int!, $locale: Locale!) { + states(where: $where, limit: $limit, offset: $offset) { + results { + id + name(locale: $locale) + key + description(locale: $locale) + roles + type + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/state/types.ts b/mc-app/src/components/reference-input/search-components/state/types.ts new file mode 100644 index 0000000..261587b --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/state/types.ts @@ -0,0 +1,7 @@ +import { TEntity } from '../../types'; + +export interface State extends TEntity { + description?: string; + roles?: string[]; + type?: string; +} diff --git a/mc-app/src/components/reference-input/search-components/store/index.tsx b/mc-app/src/components/reference-input/search-components/store/index.tsx new file mode 100644 index 0000000..4def753 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/store/index.tsx @@ -0,0 +1,50 @@ +// mc-app/src/components/reference-input/search-components/channel.tsx + +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import StoreById from './store-by-id.graphql'; +import StoreByKey from './store-by-key.graphql'; +import StoreSearch from './store-search.graphql'; +import StoreAll from './store-all.graphql'; +import { Store } from './types'; + +const localizePath = (store: Store) => { + return `${store.name} - key: ${store.key}`; +}; +const StoreSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + const optionMapper = (data: Result) => + data.stores.results.map((store: Store): TEntity => { + return { + id: store.id, + name: localizePath(store), + key: store.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `key = "${text}" or name(${dataLocale} = "${text}")`, + }); + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={StoreSearch} + byKeyQuery={StoreByKey} + byIdQuery={StoreById} + allQuery={StoreAll} + {...props} + /> + ); +}; + +export default StoreSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/store/store-all.graphql b/mc-app/src/components/reference-input/search-components/store/store-all.graphql new file mode 100644 index 0000000..ccfff40 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/store/store-all.graphql @@ -0,0 +1,15 @@ +query StorelSearch($locale: Locale) { + stores(limit: 50) { + results { + id + name(locale: $locale) + key + distributionChannels { + name + } + supplyChannels { + name + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/store/store-by-id.graphql b/mc-app/src/components/reference-input/search-components/store/store-by-id.graphql new file mode 100644 index 0000000..a46227c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/store/store-by-id.graphql @@ -0,0 +1,13 @@ +query StorelSearch($id: String!, $locale: Locale) { + store(id: $id) { + id + name(locale: $locale) + key + distributionChannels { + name + } + supplyChannels { + name + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/store/store-by-key.graphql b/mc-app/src/components/reference-input/search-components/store/store-by-key.graphql new file mode 100644 index 0000000..8e22bcf --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/store/store-by-key.graphql @@ -0,0 +1,13 @@ +query StorelSearch($key: String!, $locale: Locale) { + store(key: $key) { + id + name(locale: $locale) + key + distributionChannels { + name + } + supplyChannels { + name + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/store/store-search.graphql b/mc-app/src/components/reference-input/search-components/store/store-search.graphql new file mode 100644 index 0000000..b87f80c --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/store/store-search.graphql @@ -0,0 +1,15 @@ +query StorelSearch($where: String!, $limit: Int!, $offset: Int!, $locale: Locale) { + stores(where: $where, limit: $limit, offset: $offset) { + results { + id + name(locale: $locale) + key + distributionChannels { + name + } + supplyChannels { + name + } + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/store/types.ts b/mc-app/src/components/reference-input/search-components/store/types.ts new file mode 100644 index 0000000..06140ed --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/store/types.ts @@ -0,0 +1,3 @@ +import { TEntity } from '../../types'; + +export type Store = TEntity; diff --git a/mc-app/src/components/reference-input/search-components/tax-category/index.tsx b/mc-app/src/components/reference-input/search-components/tax-category/index.tsx new file mode 100644 index 0000000..c0f1c29 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/tax-category/index.tsx @@ -0,0 +1,45 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import TaxCategoryById from './tax-category-by-id.graphql'; +import TaxCategoryByKey from './tax-category-by-key.graphql'; +import TaxCategorySearch from './tax-category-search.graphql'; +import TaxCategoryAll from './tax-category-all.graphql'; +import { TaxCategory } from './types'; + +const localizePath = (taxCategory: TaxCategory) => { + return `${taxCategory.name} (${taxCategory.key})`; +}; + +const TaxCategorySearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.taxCategories.results.map((taxCategory: TaxCategory): TEntity => { + return { + id: taxCategory.id, + name: localizePath(taxCategory), + key: taxCategory.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `name = "${text}" or description = "${text}"`, + }); + + return ( + > + optionMapper={optionMapper} + localizePath={localizePath} + variableBuilder={variableBuilder} + searchQuery={TaxCategorySearch} + byKeyQuery={TaxCategoryByKey} + byIdQuery={TaxCategoryById} + allQuery={TaxCategoryAll} + {...props} + /> + ); +}; + +export default TaxCategorySearchInput; diff --git a/mc-app/src/components/reference-input/search-components/tax-category/tax-category-all.graphql b/mc-app/src/components/reference-input/search-components/tax-category/tax-category-all.graphql new file mode 100644 index 0000000..00eb905 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/tax-category/tax-category-all.graphql @@ -0,0 +1,9 @@ +query TaxCategorySearch { + taxCategories(limit: 50) { + results { + id + name + key + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/tax-category/tax-category-by-id.graphql b/mc-app/src/components/reference-input/search-components/tax-category/tax-category-by-id.graphql new file mode 100644 index 0000000..64a67ec --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/tax-category/tax-category-by-id.graphql @@ -0,0 +1,7 @@ +query TaxCategoryById($id: String!) { + taxCategory(id: $id) { + id + name + key + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/tax-category/tax-category-by-key.graphql b/mc-app/src/components/reference-input/search-components/tax-category/tax-category-by-key.graphql new file mode 100644 index 0000000..66674dc --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/tax-category/tax-category-by-key.graphql @@ -0,0 +1,7 @@ +query TaxCategoryByKey($key: String!) { + taxCategory(key: $key) { + id + name + key + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/tax-category/tax-category-search.graphql b/mc-app/src/components/reference-input/search-components/tax-category/tax-category-search.graphql new file mode 100644 index 0000000..cf2b1a9 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/tax-category/tax-category-search.graphql @@ -0,0 +1,9 @@ +query TaxCategorySearch($where: String!, $limit: Int!, $offset: Int!) { + taxCategories(where: $where, limit: $limit, offset: $offset) { + results { + id + name + key + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/tax-category/types.ts b/mc-app/src/components/reference-input/search-components/tax-category/types.ts new file mode 100644 index 0000000..6379519 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/tax-category/types.ts @@ -0,0 +1,3 @@ +import { TEntity } from '../../types'; + +export type TaxCategory = TEntity; diff --git a/mc-app/src/components/reference-input/search-components/type/index.tsx b/mc-app/src/components/reference-input/search-components/type/index.tsx new file mode 100644 index 0000000..9a4323b --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/type/index.tsx @@ -0,0 +1,47 @@ +import { FC } from 'react'; +import AsyncSearchInput from '../../search-input/async-search-input'; +import { GenericSearchInputProps, Result } from '../../search-input/types'; +import { TEntity } from '../../types'; +import TypeById from './type-by-id.graphql'; +import TypeByKey from './type-by-key.graphql'; +import TypeSearch from './type-search.graphql'; +import TypeAll from './type-all.graphql'; +import { TType } from './types'; + +const localizePath = (type: TType) => { + return `${type.name ?? ''} - key: ${ + type.key + }, Resources: ${type.resourceTypeIds?.join(', ')}`; +}; + +const TypeSearchInput: FC< + React.HTMLAttributes & GenericSearchInputProps +> = (props) => { + const optionMapper = (data: Result) => + data.typeDefinitions.results.map((type: TType): TEntity => { + return { + id: type.id, + name: localizePath(type), + key: type.key, + }; + }); + + const variableBuilder = (text: string) => ({ + where: `key = "${text}"`, + }); + + return ( + > + localizePath={localizePath} + optionMapper={optionMapper} + variableBuilder={variableBuilder} + searchQuery={TypeSearch} + byKeyQuery={TypeByKey} + byIdQuery={TypeById} + allQuery={TypeAll} + {...props} + /> + ); +}; + +export default TypeSearchInput; diff --git a/mc-app/src/components/reference-input/search-components/type/type-all.graphql b/mc-app/src/components/reference-input/search-components/type/type-all.graphql new file mode 100644 index 0000000..09523c2 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/type/type-all.graphql @@ -0,0 +1,10 @@ +query TypeSearch( $locale: Locale!) { + typeDefinitions(limit: 50) { + results { + id + name(locale:$locale) + key + resourceTypeIds + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/type/type-by-id.graphql b/mc-app/src/components/reference-input/search-components/type/type-by-id.graphql new file mode 100644 index 0000000..cfb7f9b --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/type/type-by-id.graphql @@ -0,0 +1,8 @@ +query TypeById($id: String!, $locale: Locale!) { + typeDefinition(id: $id) { + id + name(locale:$locale) + key + resourceTypeIds + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/type/type-by-key.graphql b/mc-app/src/components/reference-input/search-components/type/type-by-key.graphql new file mode 100644 index 0000000..8c46609 --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/type/type-by-key.graphql @@ -0,0 +1,8 @@ +query TypeByKey($key: String!, $locale: Locale!) { + typeDefinition(key: $key) { + id + name(locale:$locale) + key + resourceTypeIds + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/type/type-search.graphql b/mc-app/src/components/reference-input/search-components/type/type-search.graphql new file mode 100644 index 0000000..eee9b1f --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/type/type-search.graphql @@ -0,0 +1,10 @@ +query TypeSearch($where: String!, $limit: Int!, $offset: Int!, $locale: Locale!) { + typeDefinitions(where: $where, limit: $limit, offset: $offset) { + results { + id + name(locale:$locale) + key + resourceTypeIds + } + } +} \ No newline at end of file diff --git a/mc-app/src/components/reference-input/search-components/type/types.ts b/mc-app/src/components/reference-input/search-components/type/types.ts new file mode 100644 index 0000000..8f7d34f --- /dev/null +++ b/mc-app/src/components/reference-input/search-components/type/types.ts @@ -0,0 +1,5 @@ +import { TEntity } from '../../types'; + +export interface TType extends TEntity { + resourceTypeIds?: string[]; +} diff --git a/mc-app/src/components/reference-input/search-input/async-search-input.tsx b/mc-app/src/components/reference-input/search-input/async-search-input.tsx new file mode 100755 index 0000000..e4d2ecf --- /dev/null +++ b/mc-app/src/components/reference-input/search-input/async-search-input.tsx @@ -0,0 +1,139 @@ +import { useLazyQuery, useQuery } from '@apollo/client'; +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { GRAPHQL_TARGETS } from '@commercetools-frontend/constants'; +import AsyncSelectInput from '@commercetools-uikit/async-select-input'; +import { SearchIcon } from '@commercetools-uikit/icons'; +import { useCallback, useEffect, useState } from 'react'; +import { SingleValueProps } from 'react-select'; +import { TEntity } from '../types'; +import { AsyncSelectOption } from './search-option'; +import { SearchSingleValue } from './search-single-value'; +import { AsyncSearchInputProps, Result } from './types'; + +const AsyncSearchInput = >({ + name, + value, + placeholder, + hasError, + referenceBy, + referenceType, + singleValueQueryDataObject, + byIdQuery, + byKeyQuery, + searchQuery, + allQuery, + onChange, + onBlur, + optionMapper, + variableBuilder, + localizePath, + ...props +}: React.HTMLAttributes & AsyncSearchInputProps) => { + const [defaultOptions, setDefaultOptions] = useState([]); + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + + const { refetch } = useQuery(searchQuery, { + skip: true, + variables: { + limit: 20, + offset: 0, + locale: dataLocale, + }, + context: { + target: GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM, + }, + }); + + const [getAll] = useLazyQuery(allQuery ?? searchQuery, { + variables: { + locale: dataLocale, + }, + context: { + target: GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM, + }, + fetchPolicy: 'cache-first' + }); + + const loadOptions = (text: string) => { + console.log('text', text); + + return refetch(variableBuilder(text)).then((response) => + optionMapper(response.data).map((option) => ({ + ...option, + disabled: !option[referenceBy], + })) + ); + }; + + const loadDefaultOptions = useCallback(async () => { + const res = await getAll().then((response) => { + if (response.data) { + return optionMapper(response.data).map((option) => ({ + ...option, + disabled: !option[referenceBy], + })); + } + return []; + }); + setDefaultOptions(res); + }, [allQuery]); + + useEffect(() => { + if (allQuery) { + loadDefaultOptions(); + } + }, [allQuery, loadDefaultOptions]); + return ( + !!option.disabled} + name={`${name}.${referenceBy}`} + value={value} + placeholder={placeholder} + isClearable + isSearchable + cacheOptions={20} + loadOptions={loadOptions} + defaultOptions={defaultOptions} + components={{ + SingleValue: (props: SingleValueProps) => ( + + {...props} + referenceBy={referenceBy} + singleValueQueryDataObject={singleValueQueryDataObject} + referenceType={referenceType} + byIdQuery={byIdQuery} + byKeyQuery={byKeyQuery} + localizePath={localizePath} + /> + ), + Option: AsyncSelectOption, + DropdownIndicator: () => , + }} + hasError={hasError} + onBlur={(event) => { + onBlur({ + ...event, + target: { + ...event.target, + value: (event.target.value as TEntity)?.[referenceBy], + }, + }); + }} + onChange={(event) => { + onChange({ + ...event, + target: { + ...event.target, + value: (event.target.value as TEntity)?.[referenceBy], + }, + }); + }} + /> + ); +}; +AsyncSearchInput.displayName = 'AsyncSearchInput'; + +export default AsyncSearchInput; diff --git a/mc-app/src/components/reference-input/search-input/search-option.tsx b/mc-app/src/components/reference-input/search-input/search-option.tsx new file mode 100644 index 0000000..73a784d --- /dev/null +++ b/mc-app/src/components/reference-input/search-input/search-option.tsx @@ -0,0 +1,30 @@ +import { FC } from 'react'; +import AsyncSelectInput from '@commercetools-uikit/async-select-input'; +import { OptionProps } from 'react-select'; +import Spacings from '@commercetools-uikit/spacings'; +import Text from '@commercetools-uikit/text'; + +export const AsyncSelectOption: FC> = (props) => { + return ( + { + return { + padding: '8px', + cursor: (optionProps as OptionProps)?.data?.disabled + ? 'not-allowed' + : 'pointer', + '&:hover': { + backgroundColor: (optionProps as OptionProps)?.data?.disabled + ? 'var(--color-neutral-60)' + : 'var(--color-primary-90)', + }, + }; + }} + > + + {props.data.name} + + + ); +}; diff --git a/mc-app/src/components/reference-input/search-input/search-single-value.tsx b/mc-app/src/components/reference-input/search-input/search-single-value.tsx new file mode 100644 index 0000000..20abe41 --- /dev/null +++ b/mc-app/src/components/reference-input/search-input/search-single-value.tsx @@ -0,0 +1,66 @@ +import { useQuery } from '@apollo/client'; + +import { useApplicationContext } from '@commercetools-frontend/application-shell-connectors'; +import { GRAPHQL_TARGETS } from '@commercetools-frontend/constants'; +import AsyncSelectInput from '@commercetools-uikit/async-select-input'; +import LoadingSpinner from '@commercetools-uikit/loading-spinner'; +import { ContentNotification } from '@commercetools-uikit/notifications'; +import Spacings from '@commercetools-uikit/spacings'; +import Text from '@commercetools-uikit/text'; +import { SingleValueProps } from 'react-select'; +import { getErrorMessage } from '../../../helpers'; +import { TEntity } from '../types'; +import { SearchSingleValueProps } from './types'; + +export const SearchSingleValue = ( + props: SingleValueProps & SearchSingleValueProps +) => { + const { dataLocale } = useApplicationContext((context) => ({ + dataLocale: context.dataLocale ?? '', + })); + + const { data, loading, error } = useQuery< + Record, + { locale: string } + >(props.referenceBy === 'key' ? props.byKeyQuery : props.byIdQuery, { + variables: { + [props.referenceBy]: props.data[props.referenceBy], + locale: dataLocale, + }, + context: { + target: GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM, + }, + skip: !props.data || !props.data[props.referenceBy], + }); + + if (!props.data || !props.data[props.referenceBy]) { + return ; + } + if (error) { + return ( + + {getErrorMessage(error)} + + ); + } + if (loading) { + return ( + + + + ); + } + if (!data?.[props.singleValueQueryDataObject]) { + return ( + + Invalid value + + ); + } + + return ( + + {props.localizePath(data[props.singleValueQueryDataObject], true)} + + ); +}; diff --git a/mc-app/src/components/reference-input/search-input/types.ts b/mc-app/src/components/reference-input/search-input/types.ts new file mode 100644 index 0000000..8dcd7a1 --- /dev/null +++ b/mc-app/src/components/reference-input/search-input/types.ts @@ -0,0 +1,49 @@ +import { DocumentNode, OperationVariables } from '@apollo/client'; +import { TEntity } from '../types'; + +export interface SearchSingleValueProps { + referenceBy: 'key' | 'id'; + referenceType: string; + singleValueQueryDataObject: string; + byKeyQuery: DocumentNode; + byIdQuery: DocumentNode; + localizePath: (value: T, ...args: any[]) => string | undefined; +} + +export interface GenericSearchInputProps extends ReferenceInputProps { + value?: T | null; + referenceBy: 'key' | 'id'; + referenceType: string; + singleValueQueryDataObject: string; +} + +export interface AsyncSearchInputProps + extends GenericSearchInputProps { + value?: T | null; + byIdQuery: DocumentNode; + byKeyQuery: DocumentNode; + searchQuery: DocumentNode; + allQuery?: DocumentNode; + optionMapper: (data: R) => TEntity[]; + variableBuilder: (text: string) => OperationVariables; + localizePath: (value: T, ...args: any[]) => string | undefined; +} + +export interface ReferenceInputProps { + name: string; + value?: any; + placeholder?: string; + hasError?: boolean; + onChange(...args: unknown[]): unknown; + onBlur(...args: unknown[]): unknown; + reference?: { + by?: string; + type?: string; + }; +} + +export interface Result { + [key: string]: { + results: T[]; + }; +} diff --git a/mc-app/src/components/reference-input/types.ts b/mc-app/src/components/reference-input/types.ts new file mode 100644 index 0000000..9aa13a0 --- /dev/null +++ b/mc-app/src/components/reference-input/types.ts @@ -0,0 +1,6 @@ +export interface TEntity { + key?: string; + id: string; + name?: string; + disabled?: boolean; +} diff --git a/src/constants.ts b/mc-app/src/constants.ts similarity index 99% rename from src/constants.ts rename to mc-app/src/constants.ts index 9945465..404f2f4 100644 --- a/src/constants.ts +++ b/mc-app/src/constants.ts @@ -22,7 +22,6 @@ export const groupNames = { customers: 'customers', }; - export const TYPES = { String: 'String', LocalizedString: 'LocalizedString', @@ -161,4 +160,4 @@ export const emptyAttribute: AttributeValue = { type: TYPES_ENUM.Boolean, set: false, required: false, -}; \ No newline at end of file +}; diff --git a/src/context/container-context.tsx b/mc-app/src/context/container-context.tsx similarity index 99% rename from src/context/container-context.tsx rename to mc-app/src/context/container-context.tsx index 5c40886..1184079 100644 --- a/src/context/container-context.tsx +++ b/mc-app/src/context/container-context.tsx @@ -27,7 +27,6 @@ const useContainerContext = (): ContainerContext => { type Props = PropsWithChildren<{ results: Array | undefined }>; const ContainerProvider: React.FC = ({ results, children }) => { - const containerContextValue: ContainerContext = { hasContainers: (results && results.length > 0) || false, containers: results || [], diff --git a/src/form-utils.spec.toBeMigrated.js b/mc-app/src/form-utils.spec.toBeMigrated.js similarity index 99% rename from src/form-utils.spec.toBeMigrated.js rename to mc-app/src/form-utils.spec.toBeMigrated.js index eb8872e..4c67b96 100644 --- a/src/form-utils.spec.toBeMigrated.js +++ b/mc-app/src/form-utils.spec.toBeMigrated.js @@ -6,11 +6,7 @@ import times from 'lodash/times'; import * as yup from 'yup'; import { FormattedMessage } from 'react-intl'; import LocalizedTextInput from '@commercetools-uikit/localized-text-input'; -import { - REFERENCE_BY, - REFERENCE_TYPES, - TYPES, -} from './constants'; +import { REFERENCE_BY, REFERENCE_TYPES, TYPES } from './constants'; import { getAttributeValues, getAttributeValidation } from './form-utils'; import messages from './components/custom-object-form/messages'; diff --git a/src/form-utils.ts b/mc-app/src/form-utils.ts similarity index 82% rename from src/form-utils.ts rename to mc-app/src/form-utils.ts index 008c31d..4112a6c 100644 --- a/src/form-utils.ts +++ b/mc-app/src/form-utils.ts @@ -1,8 +1,5 @@ import { IntlShape, MessageDescriptor } from 'react-intl'; -import camelCase from 'lodash/camelCase'; -import { - AttributeValue, -} from './constants'; +import { AttributeValue } from './constants'; import { getInitialValueByType, getValidationSpecification } from './helpers'; export const getAttributeValues = ( @@ -14,7 +11,7 @@ export const getAttributeValues = ( (value, { name, type, set, attributes: nested, reference }) => { return { ...value, - [camelCase(name)]: getInitialValueByType( + [name]: getInitialValueByType( type, set, nested, @@ -27,7 +24,7 @@ export const getAttributeValues = ( {} ); }; - + export const getAttributeValidation = ( attributes: Array, languages: Array, @@ -37,7 +34,7 @@ export const getAttributeValidation = ( return attributes.reduce((result, attribute) => { return { ...result, - [camelCase(attribute.name)]: getValidationSpecification( + [attribute.name]: getValidationSpecification( attribute, languages, messages, diff --git a/src/globals.d.ts b/mc-app/src/globals.d.ts similarity index 100% rename from src/globals.d.ts rename to mc-app/src/globals.d.ts diff --git a/src/helpers.ts b/mc-app/src/helpers.ts similarity index 98% rename from src/helpers.ts rename to mc-app/src/helpers.ts index fbc8fd8..0ea2e85 100644 --- a/src/helpers.ts +++ b/mc-app/src/helpers.ts @@ -10,12 +10,7 @@ import LocalizedTextInput from '@commercetools-uikit/localized-text-input'; import { IntlShape, MessageDescriptor } from 'react-intl'; import { addMethod, array, object, string, number, date, boolean } from 'yup'; import type { TChannel } from './types/generated/ctp'; -import { - AttributeValue, - Reference, - TYPES, - TYPES_ENUM, -} from './constants'; +import { AttributeValue, Reference, TYPES, TYPES_ENUM } from './constants'; import { getAttributeValues, getAttributeValidation } from './form-utils'; export const getErrorMessage = (error: ApolloError) => @@ -78,7 +73,6 @@ export const convertToActionData = (draft: Partial) => ({ name: transformLocalizedFieldToLocalizedString(draft.nameAllLocales || []), }); - export const getValueByType = ( type: TYPES_ENUM, attributes: Array | undefined, @@ -250,4 +244,4 @@ export const getValidationSpecification = ( ) => { const validation = getValidationByType(attribute, languages, messages, intl); return attribute.set ? array(validation) : validation; -}; \ No newline at end of file +}; diff --git a/src/hooks/use-custom-object-connector/delete-custom-object.rest.graphql b/mc-app/src/hooks/use-custom-object-connector/delete-custom-object.rest.graphql similarity index 100% rename from src/hooks/use-custom-object-connector/delete-custom-object.rest.graphql rename to mc-app/src/hooks/use-custom-object-connector/delete-custom-object.rest.graphql diff --git a/src/hooks/use-custom-object-connector/get-custom-object.rest.graphql b/mc-app/src/hooks/use-custom-object-connector/get-custom-object.rest.graphql similarity index 100% rename from src/hooks/use-custom-object-connector/get-custom-object.rest.graphql rename to mc-app/src/hooks/use-custom-object-connector/get-custom-object.rest.graphql diff --git a/src/hooks/use-custom-object-connector/get-custom-objects.ctp.graphql b/mc-app/src/hooks/use-custom-object-connector/get-custom-objects.ctp.graphql similarity index 100% rename from src/hooks/use-custom-object-connector/get-custom-objects.ctp.graphql rename to mc-app/src/hooks/use-custom-object-connector/get-custom-objects.ctp.graphql diff --git a/src/hooks/use-custom-object-connector/update-custom-object.rest.graphql b/mc-app/src/hooks/use-custom-object-connector/update-custom-object.rest.graphql similarity index 100% rename from src/hooks/use-custom-object-connector/update-custom-object.rest.graphql rename to mc-app/src/hooks/use-custom-object-connector/update-custom-object.rest.graphql diff --git a/src/hooks/use-custom-object-connector/use-custom-object-connector.ts b/mc-app/src/hooks/use-custom-object-connector/use-custom-object-connector.ts similarity index 82% rename from src/hooks/use-custom-object-connector/use-custom-object-connector.ts rename to mc-app/src/hooks/use-custom-object-connector/use-custom-object-connector.ts index ba1faf3..be081dd 100644 --- a/src/hooks/use-custom-object-connector/use-custom-object-connector.ts +++ b/mc-app/src/hooks/use-custom-object-connector/use-custom-object-connector.ts @@ -1,3 +1,6 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import { createApolloClient } from '@commercetools-frontend/application-shell'; + import { ApolloError, ApolloQueryResult } from '@apollo/client'; import { useMcMutation, @@ -8,16 +11,16 @@ import { extractErrorFromGraphQlResponse } from '../../helpers'; import { TCustomObjectDraft, TMutation, - TMutation_CreateOrUpdateCustomObjectArgs, TMutation_DeleteCustomObjectArgs, TQuery, TQuery_CustomObjectArgs, TQuery_CustomObjectsArgs, } from '../../types/generated/ctp'; -import GetCustomObjects from './get-custom-objects.ctp.graphql'; -import GetCustomObject from './get-custom-object.rest.graphql'; import DeleteCustomObject from './delete-custom-object.rest.graphql'; -import UpdateCustomObject from './update-custom-object.rest.graphql'; +import GetCustomObject from './get-custom-object.rest.graphql'; +import GetCustomObjects from './get-custom-objects.ctp.graphql'; +import { CustomObjectController } from '../../shared-code'; +import { GraphQLClient } from '../../shared-code/types/graphql'; type TUseCustomObjectsFetcher = (variables: TQuery_CustomObjectsArgs) => { customObjectsPaginatedResult?: TQuery['customObjects']; @@ -26,6 +29,8 @@ type TUseCustomObjectsFetcher = (variables: TQuery_CustomObjectsArgs) => { refetch(): Promise>; }; +const client = createApolloClient(); + export const useCustomObjectsFetcher: TUseCustomObjectsFetcher = ( variables: TQuery_CustomObjectsArgs ) => { @@ -76,11 +81,6 @@ export const useCustomObjectFetcher: TUseCustomObjectFetcher = ( }; export const useCustomObjectUpdater = () => { - const [updateCustomObject, { loading }] = useMcMutation< - TMutation, - TMutation_CreateOrUpdateCustomObjectArgs - >(UpdateCustomObject); - const execute = async ({ draft, onCompleted, @@ -90,28 +90,29 @@ export const useCustomObjectUpdater = () => { onCompleted?: () => void; onError?: (message?: string) => void; }) => { + const controller = new CustomObjectController(client as GraphQLClient, { + target: GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM, + }); try { - return await updateCustomObject({ - context: { - target: GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM, - }, - variables: { - draft: draft, - }, - onCompleted() { + await controller + .createOrUpdateCustomObject( + draft.container, + draft.key, + draft.value, + draft.container + ) + .then(() => { onCompleted && onCompleted(); - }, - onError({ message }) { - onError && onError(message); - }, - }); + }) + .catch((error) => { + onError && onError(error.message); + }); } catch (graphQlResponse) { throw extractErrorFromGraphQlResponse(graphQlResponse); } }; return { - loading, execute, }; }; diff --git a/src/i18n/data/core.json b/mc-app/src/i18n/data/core.json similarity index 100% rename from src/i18n/data/core.json rename to mc-app/src/i18n/data/core.json diff --git a/src/i18n/data/de.json b/mc-app/src/i18n/data/de.json similarity index 100% rename from src/i18n/data/de.json rename to mc-app/src/i18n/data/de.json diff --git a/src/i18n/data/en.json b/mc-app/src/i18n/data/en.json similarity index 100% rename from src/i18n/data/en.json rename to mc-app/src/i18n/data/en.json diff --git a/src/i18n/data/es.json b/mc-app/src/i18n/data/es.json similarity index 100% rename from src/i18n/data/es.json rename to mc-app/src/i18n/data/es.json diff --git a/src/i18n/data/fr-FR.json b/mc-app/src/i18n/data/fr-FR.json similarity index 100% rename from src/i18n/data/fr-FR.json rename to mc-app/src/i18n/data/fr-FR.json diff --git a/src/i18n/data/ja.json b/mc-app/src/i18n/data/ja.json similarity index 100% rename from src/i18n/data/ja.json rename to mc-app/src/i18n/data/ja.json diff --git a/src/i18n/data/zh-CN.json b/mc-app/src/i18n/data/zh-CN.json similarity index 100% rename from src/i18n/data/zh-CN.json rename to mc-app/src/i18n/data/zh-CN.json diff --git a/src/index.tsx b/mc-app/src/index.tsx similarity index 100% rename from src/index.tsx rename to mc-app/src/index.tsx diff --git a/src/load-messages.ts b/mc-app/src/load-messages.ts similarity index 100% rename from src/load-messages.ts rename to mc-app/src/load-messages.ts diff --git a/src/messages.ts b/mc-app/src/messages.ts similarity index 100% rename from src/messages.ts rename to mc-app/src/messages.ts diff --git a/src/routes.tsx b/mc-app/src/routes.tsx similarity index 92% rename from src/routes.tsx rename to mc-app/src/routes.tsx index 127e895..f74f019 100644 --- a/src/routes.tsx +++ b/mc-app/src/routes.tsx @@ -12,7 +12,6 @@ import LoadingSpinner from '@commercetools-uikit/loading-spinner'; import Spacings from '@commercetools-uikit/spacings'; import Link from '@commercetools-uikit/link'; import Text from '@commercetools-uikit/text'; -import ariesLabsLogo from './assets/aries-labs-logo.svg'; import ContainerList from './components/container-list'; import CustomObjectsList from './components/custom-objects-list'; import { messages } from './messages'; @@ -25,7 +24,6 @@ type ApplicationRoutesProps = { children?: ReactNode; }; const ApplicationRoutes = (_props: ApplicationRoutesProps) => { - const match = useRouteMatch(); /** @@ -89,7 +87,7 @@ const ApplicationRoutes = (_props: ApplicationRoutesProps) => { if (!customObjectsPaginatedResult) { return ; } - + const { results } = customObjectsPaginatedResult || {}; return ( @@ -98,11 +96,6 @@ const ApplicationRoutes = (_props: ApplicationRoutesProps) => { - - - Aries Labs Logo - - ); }; diff --git a/mc-app/src/shared-code/constants/map-types.ts b/mc-app/src/shared-code/constants/map-types.ts new file mode 100644 index 0000000..ebe417e --- /dev/null +++ b/mc-app/src/shared-code/constants/map-types.ts @@ -0,0 +1,17 @@ +export const referenceTypeToSingleValueMap: Record = { + 'cart-discount': 'cartDiscount', + 'product-discount': 'productDiscount', + 'customer-group': 'customerGroup', + 'discount-code': 'discountCode', + 'key-value-document': 'customObject', + 'product-type': 'productType', + 'tax-category': 'taxCategory', + 'shopping-list': 'shoppingList', + 'shipping-method': 'shippingMethod', + type: 'typeDefinition', + 'product-price': 'standalonePrice', + }; + + export const referenceTypeSkipKey: string[] = [ + 'order' + ] \ No newline at end of file diff --git a/mc-app/src/shared-code/custom-object.controller.ts b/mc-app/src/shared-code/custom-object.controller.ts new file mode 100644 index 0000000..554f50e --- /dev/null +++ b/mc-app/src/shared-code/custom-object.controller.ts @@ -0,0 +1,504 @@ +import { ApolloContextValue } from '@apollo/client'; +import { AttributeSchema, CustomObject, Schema } from './types/validator'; +import Create from './queries/create-custom-object'; +import Get from './queries/get-custom-object'; +import { GraphQLClient } from './types/graphql'; +import { referenceTypeToSingleValueMap } from './constants/map-types'; +import { getEntityById } from './queries/get-entity-by-id'; +import { getEntityByKey } from './queries/get-entity-by-key'; + +const SCHEMA_CONTAINER = 'mc-custom-object-schema'; +export class CustomObjectController { + private apolloClient?: GraphQLClient; + private context?: ApolloContextValue; + + constructor( + apolloClient?: GraphQLClient, + context?: ApolloContextValue & { target: string } + ) { + this.apolloClient = apolloClient; + this.context = context; + } + + async fetchCustomObject( + container: string, + key: string + ): Promise { + try { + const response = await this.apolloClient + ?.query({ + query: Get, + variables: { container, key }, + ...(this.context && { context: this.context }), + }) + .then((res) => { + return res.data as { customObject: CustomObject }; + }); + return response?.customObject; + } catch (error) { + console.error('Error fetching custom object:', error); + return undefined; + } + } + + async createOrUpdateCustomObject( + container: string, + key: string, + value: string, + schemaType: string + ): Promise { + const jsonValue = JSON.parse(value); + await this.validateObjectBySchemaType(jsonValue, schemaType); + + const response = await this.apolloClient + ?.mutate({ + mutation: Create, + variables: { + draft: { + container, + key, + value, + }, + }, + ...(this.context && { context: this.context }), + }) + .then((res) => { + return res.data as CustomObject; + }); + + return response; + } + + private async validateObjectBySchemaType( + value: Record, + schemaType: string + ): Promise { + if (schemaType === SCHEMA_CONTAINER) { + return; + } + const schemaObject = await this.fetchCustomObject( + SCHEMA_CONTAINER, + schemaType + ); + + if (!schemaObject) { + throw new Error(`Schema not found for type: ${schemaType}`); + } + await this.validateObjectSchema(schemaObject.value, value); + } + + private async validateObjectSchema( + schema: Schema, + value: Record + ) { + for (const attributeSchema of schema.attributes) { + const attributeValue = value[attributeSchema.name]; + + if (attributeSchema.required && attributeValue === undefined) { + throw new Error(`Required attribute missing: ${attributeSchema.name}`); + } + + if (attributeValue != null) { + await this.validateAttribute(attributeSchema, attributeValue); + } + } + } + + public async validateAttribute( + schema: AttributeSchema, + value: any + ): Promise { + switch (schema.type) { + case 'Boolean': + await this.validateBoolean(schema, value); + break; + case 'String': + await this.validateString(schema, value); + break; + case 'LocalizedString': + await this.validateLocalizedString(schema, value); + break; + case 'Number': + await this.validateNumber(schema, value); + break; + case 'Date': + await this.validateDate(schema, value); + break; + case 'Enum': + await this.validateEnum(schema, value); + break; + case 'LocalizedEnum': + await this.validateLocalizedEnum(schema, value); + break; + case 'Money': + await this.validateMoney(schema, value); + break; + case 'Time': + await this.validateTime(schema, value); + break; + case 'DateTime': + await this.validateDateTime(schema, value); + break; + case 'Reference': + await this.validateReference(schema, value); + break; + case 'Object': + await this.validateObject(schema, value); + break; + default: + throw new Error(`Unsupported type for attribute: ${schema.name}`); + } + } + + private async validateSet( + schema: AttributeSchema, + value: any, + cbFuncName: string + ): Promise { + if (!schema.required && (typeof value === 'undefined' || value === null)) { + return; + } else if (!Array.isArray(value)) { + throw new Error( + `Invalid type for set attribute: ${ + schema.name + }. Expected Array, got ${typeof value}` + ); + } + for (const item of value) { + // @ts-ignore + this[cbFuncName] && + // @ts-ignore + (await this[cbFuncName]( + { + ...schema, + set: false, + }, + item + )); + } + } + + private async validateBoolean( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateBoolean'); + } else { + if (schema.required && typeof value !== 'boolean') { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected Boolean, got ${typeof value}` + ); + } + } + } + + private async validateString( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateString'); + } else { + if (schema.required && typeof value !== 'string') { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected String, got ${typeof value}` + ); + } + } + } + + private async validateNumber( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateNumber'); + } else { + if (schema.required && typeof value !== 'number') { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected Number, got ${typeof value}` + ); + } + } + } + + private async validateEnum( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateEnum'); + } else { + if (!schema.required && !value) { + return; + } + + if (!schema.enum?.some((enumValue) => enumValue.value === value)) { + throw new Error( + `Invalid enum value for attribute: ${schema.name}. Value: ${value}` + ); + } + + if (schema.required && typeof value !== 'string') { + throw new Error( + `Invalid type for enum attribute: ${ + schema.name + }. Expected String, got ${typeof value}` + ); + } + } + } + private async validateLocalizedEnum( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateLocalizedEnum'); + } else { + if (!schema.required && !value) { + return; + } + + if (!schema.lenum?.some((enumValue) => enumValue.value === value)) { + throw new Error( + `Invalid enum value for attribute: ${schema.name}. Value: ${value}` + ); + } + + if (schema.required && typeof value !== 'string') { + throw new Error( + `Invalid type for enum attribute: ${ + schema.name + }. Expected String, got ${typeof value}` + ); + } + } + } + + private async validateReference( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateReference'); + } else { + if (!schema.required && !value) { + return; + } + if (typeof value !== 'object' || !value) { + throw new Error( + `Invalid type for reference attribute: ${ + schema.name + }. Expected object, got ${typeof value}` + ); + } + + const referenceValue = value as Record; + const typeId = referenceValue.typeId as string; + const id = referenceValue.id as string; + const key = referenceValue.key as string; + + if (!typeId) { + throw new Error( + `Invalid reference value for attribute: ${schema.name}. Missing typeId` + ); + } + if (schema.required && !id && !key) { + throw new Error( + `Invalid reference value for attribute: ${schema.name}. Missing id or key` + ); + } + + if (!schema.reference || typeId !== schema.reference.type) { + throw new Error( + `Invalid reference type for attribute: ${schema.name}. Expected ${schema.reference?.type}, got ${typeId}` + ); + } + await this.validateReferenceValue(typeId, id, key); + } + } + + private async validateMoney( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateMoney'); + } else { + if (!schema.required && !value) { + return; + } + if ( + typeof value.amount !== 'string' || + typeof value.currencyCode !== 'string' + ) { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected Money, got ${typeof value}` + ); + } + if (isNaN(parseInt(value.amount))) { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected amount, got ${typeof value.amount}` + ); + } + } + } + private async validateTime( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateTime'); + } else { + if (!schema.required && !value) { + return; + } + + const timeRegex = /^([01]?[0-9]|2[0-3]):[0-5][0-9] ([AP]M)$/; + if (typeof value !== 'string' || !value.match(timeRegex)) { + throw new Error( + `Invalid value for attribute: ${schema.name}. Expected Time in format HH:mm AM/PM, got ${value}` + ); + } + } + } + private async validateDateTime( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateDateTime'); + } else { + if (!schema.required && !value) { + return; + } + const dateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/; + if (typeof value !== 'string' || !value.match(dateTimeRegex)) { + throw new Error( + `Invalid value for attribute: ${schema.name}. Expected DateTime in format yyyy-mm-ddTHH:mm:ss.sssZ, got ${value}` + ); + } + } + } + private async validateDate( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateDate'); + } else { + if (!schema.required && !value) { + return; + } + const dateRegex = /^\d{4}-\d{2}-\d{2}$/; + if (typeof value !== 'string' || !value.match(dateRegex)) { + throw new Error( + `Invalid value for attribute: ${schema.name}. Expected Date in format MM/DD/YYYY, got ${value}` + ); + } + } + } + + private async validateLocalizedString( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateLocalizedString'); + } else { + if (!schema.required && !value) { + return; + } + if (typeof value !== 'object' || value === null) { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected LocalizedString, got ${typeof value}` + ); + } + if (Object.keys(value).length === 0) { + throw new Error( + `Invalid type for attribute: ${schema.name}. Expected LocalizedString is empty` + ); + } + if (schema.required) { + if ( + !Object.keys(value).some( + (key) => typeof value[key] !== undefined || value[key] !== '' + ) + ) { + throw new Error(`Required attribute missing: ${schema.name}`); + } + } + } + } + + private async validateObject( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateObject'); + } else { + if (!schema.required && !value) { + return; + } + if (typeof value !== 'object' || !value) { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected Object, got ${typeof value}` + ); + } + if (schema.attributes?.length) { + await this.validateObjectSchema( + { + attributes: schema.attributes, + }, + value + ); + } + } + } + + private async validateReferenceValue( + typeId: string, + id?: string, + key?: string + ): Promise { + if (!id && !key){ + return; + } + const singleValueQueryDataObject = referenceTypeToSingleValueMap[typeId] + ? referenceTypeToSingleValueMap[typeId] + : typeId; + + const query = id + ? getEntityById(singleValueQueryDataObject) + : getEntityByKey(singleValueQueryDataObject); + + await this.apolloClient + ?.query({ + query: query, + variables: id ? { id } : { key }, + ...(this.context && { context: this.context }), + }).then((res) => { + if (!(res.data as any)[singleValueQueryDataObject]) { + throw new Error( + `Invalid reference value for attribute: ${typeId}. The expected ${typeId} was not found` + ); + } + }); + } +} diff --git a/mc-app/src/shared-code/index.ts b/mc-app/src/shared-code/index.ts new file mode 100644 index 0000000..7a7740b --- /dev/null +++ b/mc-app/src/shared-code/index.ts @@ -0,0 +1,2 @@ +export { CustomObjectController } from './custom-object.controller'; +export { referenceTypeToSingleValueMap } from './constants/map-types'; diff --git a/mc-app/src/shared-code/queries/create-custom-object.ts b/mc-app/src/shared-code/queries/create-custom-object.ts new file mode 100644 index 0000000..7440df9 --- /dev/null +++ b/mc-app/src/shared-code/queries/create-custom-object.ts @@ -0,0 +1,12 @@ +import gql from 'graphql-tag'; + +export default gql` + mutation UpdateCustomObject($draft: CustomObjectDraft!) { + createOrUpdateCustomObject(draft: $draft) { + id + version + key + container + } + } +`; diff --git a/mc-app/src/shared-code/queries/get-custom-object.ts b/mc-app/src/shared-code/queries/get-custom-object.ts new file mode 100644 index 0000000..ae57073 --- /dev/null +++ b/mc-app/src/shared-code/queries/get-custom-object.ts @@ -0,0 +1,13 @@ +import gql from 'graphql-tag'; + +export default gql` + query customObject($key: String!, $container: String!) { + customObject(key: $key, container: $container) { + id + lastModifiedAt + container + key + value + } + } +`; diff --git a/mc-app/src/shared-code/queries/get-entity-by-id.ts b/mc-app/src/shared-code/queries/get-entity-by-id.ts new file mode 100644 index 0000000..4e68c6a --- /dev/null +++ b/mc-app/src/shared-code/queries/get-entity-by-id.ts @@ -0,0 +1,14 @@ +import gql from "graphql-tag" +import { referenceTypeSkipKey } from "../constants/map-types" + +export const getEntityById = (type: string) => { + const skipKey = referenceTypeSkipKey.includes(type) + return gql` + query ${type}($id: String!) { + ${type}(id: $id) { + id + ${skipKey ? '' : 'key'} + } + } + ` +} \ No newline at end of file diff --git a/mc-app/src/shared-code/queries/get-entity-by-key.ts b/mc-app/src/shared-code/queries/get-entity-by-key.ts new file mode 100644 index 0000000..f9395a3 --- /dev/null +++ b/mc-app/src/shared-code/queries/get-entity-by-key.ts @@ -0,0 +1,12 @@ +import gql from "graphql-tag" + +export const getEntityByKey = (type: string) => { + return gql` + query ${type}($key: String!) { + ${type}(key: $key) { + id + key + } + } + ` +} \ No newline at end of file diff --git a/mc-app/src/shared-code/specs/custom-object.controller.boolean.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.boolean.spec.ts new file mode 100644 index 0000000..7c06dba --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.boolean.spec.ts @@ -0,0 +1,126 @@ +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateAttribute', () => { + describe('Boolean', () => { + const testCases = [ + { + schema: { + name: 'test', + type: 'Boolean', + set: false, + required: false, + }, + value: true, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Boolean', + set: false, + required: false, + }, + value: false, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Boolean', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: false, required: true }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Boolean', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: false }, + value: [true], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: false }, + value: [false], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: false }, + value: [true, false], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [], + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [true], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [false], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [true, false], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [true, true], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [false, false], + shouldThrowError: false, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'fail' : 'pass'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute( + schema as AttributeSchema, + value + ); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.date-time.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.date-time.spec.ts new file mode 100644 index 0000000..d17c680 --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.date-time.spec.ts @@ -0,0 +1,212 @@ +// valication-service/src/controllers/custom-object.controller.date-time.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateDateTime', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: '2022-01-01T12:34:56.999Z', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: '2022-01-01T12:34:56Z', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: 'random string', + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: true, + }, + value: '2022-01-01T12:34:56.000Z', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: true, + }, + value: 'invalid date format', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: false, + }, + value: ['2022-01-01T12:34:56.000Z'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: false, + }, + value: ['invalid date format'], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: ['2022-01-01T12:34:56.333Z'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: ['invalid date'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: [''], + shouldThrowError: true, + }, + ]; + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.date.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.date.spec.ts new file mode 100644 index 0000000..455b35a --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.date.spec.ts @@ -0,0 +1,193 @@ +// valication-service/src/controllers/custom-object.controller.date.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateDate', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: false, + }, + value: '2022-01-01', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: false, + }, + value: 'invalid date format', + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: true, + }, + value: '2022-01-01', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: true, + }, + value: 'invalid date format', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: false, + }, + value: ['2022-01-01'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: false, + }, + value: ['invalid date format'], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: true, + }, + value: ['2022-01-01'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: true, + }, + value: ['invalid date format'], + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.enum.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.enum.spec.ts new file mode 100644 index 0000000..7e6b45b --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.enum.spec.ts @@ -0,0 +1,173 @@ +// valication-service/src/controllers/custom-object.controller.enum.spec.ts + +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateEnum', () => { + const enumValues = [ + { value: 'option1' }, + { value: 'option2' }, + { value: 'option3' }, + ]; + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: false, + enum: enumValues, + }, + value: 'option1', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: false, + enum: enumValues, + }, + value: 'invalid', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: false, + enum: enumValues, + }, + value: undefined, + shouldThrowError: false, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: true, + enum: enumValues, + }, + value: 'option1', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: true, + enum: enumValues, + }, + value: 'invalid', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: true, + enum: enumValues, + }, + value: undefined, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: false, + enum: enumValues, + }, + value: ['option1', 'option2'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: false, + enum: enumValues, + }, + value: ['invalid'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: false, + enum: enumValues, + }, + value: undefined, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: true, + enum: enumValues, + }, + value: ['option1', 'option2'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: true, + enum: enumValues, + }, + value: ['invalid'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: true, + enum: enumValues, + }, + value: undefined, + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.localised-string.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.localised-string.spec.ts new file mode 100644 index 0000000..990e00e --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.localised-string.spec.ts @@ -0,0 +1,266 @@ +// valication-service/src/controllers/custom-object.controller.localized-string.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateLocalizedString', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: { + en: 'hello', + de: 'hallo', + }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: {}, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: 'string value', + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: { + en: 'hello', + de: 'hallo', + }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: {}, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: 'string value', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: [ + { + locale: 'en', + value: 'hello', + }, + { + locale: 'de', + value: 'hallo', + }, + ], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: [ + { + locale: 'en', + value: 'hello', + }, + { + locale: 'en', + value: 'hello again', + }, + ], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: 'string value', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: [ + { + en: 'hello', + de: 'hallo', + }, + ], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: [ + { + en: 123, + }, + ], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: 'string value', + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.localized-enum.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.localized-enum.spec.ts new file mode 100644 index 0000000..cea8f33 --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.localized-enum.spec.ts @@ -0,0 +1,191 @@ +// valication-service/src/controllers/custom-object.controller.localized-enum.spec.ts + +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateLocalizedEnum', () => { + const localizedEnumValues = [ + { + value: 'option1', + label: { + en: 'Option 1', + de: 'Option 1 (DE)', + }, + }, + { + value: 'option2', + label: { + en: 'Option 2', + de: 'Option 2 (DE)', + }, + }, + { + value: 'option3', + label: { + en: 'Option 3', + de: 'Option 3 (DE)', + }, + }, + ]; + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: false, + lenum: localizedEnumValues, + }, + value: 'option1', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: false, + lenum: localizedEnumValues, + }, + value: 'invalid', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: false, + lenum: localizedEnumValues, + }, + value: undefined, + shouldThrowError: false, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: true, + lenum: localizedEnumValues, + }, + value: 'option1', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: true, + lenum: localizedEnumValues, + }, + value: 'invalid', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: true, + lenum: localizedEnumValues, + }, + value: undefined, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: false, + lenum: localizedEnumValues, + }, + value: ['option1', 'option2'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: false, + lenum: localizedEnumValues, + }, + value: ['invalid'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: false, + lenum: localizedEnumValues, + }, + value: undefined, + shouldThrowError: false, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: true, + lenum: localizedEnumValues, + }, + value: ['option1', 'option2'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: true, + lenum: localizedEnumValues, + }, + value: ['invalid'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: true, + lenum: localizedEnumValues, + }, + value: undefined, + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.money.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.money.spec.ts new file mode 100644 index 0000000..6bc78c3 --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.money.spec.ts @@ -0,0 +1,278 @@ +// valication-service/src/controllers/custom-object.controller.money.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateMoney', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { amount: '1000', currencyCode: 'USD' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { amount: 1000, currencyCode: 'USD' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { amount: 'invalid', currencyCode: 'USD' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { amount: '1000' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { currencyCode: 'USD' }, + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: { amount: '1000', currencyCode: 'EUR' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: { amount: 'invalid', currencyCode: 'USD' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: { amount: '1000' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: { currencyCode: 'USD' }, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [ + { amount: '1000', currencyCode: 'USD' }, + { amount: '2000', currencyCode: 'EUR' }, + ], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [{ amount: 'invalid', currencyCode: 'USD' }], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [{ amount: '1000' }], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [{ currencyCode: 'USD' }], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: [ + { amount: '1000', currencyCode: 'USD' }, + { amount: '2000', currencyCode: 'EUR' }, + ], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: [{ amount: 'invalid', currencyCode: 'USD' }], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: [{ amount: '1000' }], + shouldThrowError: true, + }, + ]; + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${JSON.stringify(value)} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.number.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.number.spec.ts new file mode 100644 index 0000000..8aad096 --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.number.spec.ts @@ -0,0 +1,128 @@ +// valication-service/src/controllers/custom-object.controller.number.spec.ts + +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateNumber', () => { + const testCases = [ + { + schema: { + name: 'test', + type: 'Number', + set: false, + required: false, + }, + value: 42, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Number', + set: false, + required: false, + }, + value: 'hello', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: false, + }, + value: [1, 2, 3], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: false, + }, + value: ['hello', 'world'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: true, + }, + value: [1], + shouldThrowError: false, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.object.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.object.spec.ts new file mode 100644 index 0000000..f55c6e6 --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.object.spec.ts @@ -0,0 +1,404 @@ +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +const objectSchema: { attributes: AttributeSchema[]; value: any }[] = [ + { + attributes: [ + { + name: 'age', + type: 'Number', + set: false, + required: true, + }, + ], + value: { + age: 25, + }, + }, + { + attributes: [ + { + name: 'names', + type: 'String', + set: true, + required: true, + }, + ], + value: { + names: ['John', 'Smith'], + }, + }, +]; + +describe('CustomObjectController - validateObject', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = () => + objectSchema + .map((item) => [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: item.value, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: {}, + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: 'string value', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: 123, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: true, + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: item.value, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: {}, + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: 'string value', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: 123, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: true, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [item.value], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [], + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: ['string value'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [123], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [true], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [{}], + shouldThrowError: true, + }, + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [item.value], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [], + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [{}], + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: ['string value'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [123], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [true], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: 'string value', + shouldThrowError: true, + }, + ]) + .reduce((a, b) => a.concat(b), []); + + testCases().forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.reference.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.reference.spec.ts new file mode 100644 index 0000000..15c729b --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.reference.spec.ts @@ -0,0 +1,252 @@ +// valication-service/src/controllers/custom-object.controller.reference.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateReference', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: { typeId: 'product', id: '123' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: { typeId: 'product', key: '123' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: { typeId: 'category', id: '123' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: { typeId: 'product', productId: '123' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: [{ typeId: 'product', id: '123' }], + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: { typeId: 'product', id: '123' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: { typeId: 'product', key: '123' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: { typeId: 'product', productId: '123' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: undefined, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: [{ typeId: 'product', id: '123' }], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: [{ typeId: 'product', key: '123' }], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: [{ typeId: 'category', id: '123' }], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: true, + reference: { type: 'product' }, + }, + value: [{ typeId: 'product', id: '123' }], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: true, + reference: { type: 'product' }, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: true, + reference: { type: 'product' }, + }, + value: undefined, + shouldThrowError: true, + }, + ]; + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.string.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.string.spec.ts new file mode 100644 index 0000000..77c6b5a --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.string.spec.ts @@ -0,0 +1,101 @@ +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateAttribute', () => { + describe('String', () => { + const testCases = [ + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: 'test', + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: '', + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: null, + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: false, required: true }, + value: null, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: false, required: true }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: ['test'], + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: true, required: false }, + value: ['test'], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: true, required: false }, + value: [], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: true, required: false }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: true, required: true }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: true, required: true }, + value: [], + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: true, required: true }, + value: ['test'], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: true, required: true }, + value: [''], + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute( + schema as AttributeSchema, + value + ); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); + }); +}); diff --git a/mc-app/src/shared-code/specs/custom-object.controller.time.spec.ts b/mc-app/src/shared-code/specs/custom-object.controller.time.spec.ts new file mode 100644 index 0000000..3549820 --- /dev/null +++ b/mc-app/src/shared-code/specs/custom-object.controller.time.spec.ts @@ -0,0 +1,212 @@ +// valication-service/src/controllers/custom-object.controller.time.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateTime', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: '12:34 AM', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: 'invalid time format', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: '22:34 AM', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: '10:34', + shouldThrowError: true, + }, + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: true, + }, + value: '12:34 PM', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: true, + }, + value: 'invalid time format', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: false, + }, + value: ['12:34 AM'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: false, + }, + value: ['55:42 PM'], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: true, + }, + value: ['12:34 PM'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: true, + }, + value: [{ value: 'invalid time format' }], + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/mc-app/src/shared-code/types/graphql.ts b/mc-app/src/shared-code/types/graphql.ts new file mode 100644 index 0000000..d6b57da --- /dev/null +++ b/mc-app/src/shared-code/types/graphql.ts @@ -0,0 +1,14 @@ +import { DocumentNode } from 'graphql'; + +export interface GraphQLClient { + query(options: { + query: DocumentNode; + variables?: Record; + context?: any; + }): Promise<{ data: T }>; + mutate(options: { + mutation: DocumentNode; + variables?: Record; + context?: any; + }): Promise<{ data: T }>; +} diff --git a/mc-app/src/shared-code/types/index.types.ts b/mc-app/src/shared-code/types/index.types.ts new file mode 100644 index 0000000..4e2d9ae --- /dev/null +++ b/mc-app/src/shared-code/types/index.types.ts @@ -0,0 +1,17 @@ +export type Message = { + code: string; + message: string; + referencedBy: string; +}; + +export type ValidatorCreator = ( + path: string[], + message: Message, + overrideConfig?: object +) => [string[], [[(o: object) => boolean, string, [object]]]]; + +export type ValidatorFunction = (o: object) => boolean; + +export type Wrapper = ( + validator: ValidatorFunction +) => (value: object) => boolean; diff --git a/mc-app/src/shared-code/types/validator.ts b/mc-app/src/shared-code/types/validator.ts new file mode 100644 index 0000000..3c60f13 --- /dev/null +++ b/mc-app/src/shared-code/types/validator.ts @@ -0,0 +1,59 @@ +// Types for schema structure +export type AttributeType = + | 'Boolean' + | 'String' + | 'Number' + | 'Date' + | 'Enum' + | 'Reference' + | 'Money' + | 'LocalizedString' + | 'Time' + | 'DateTime' + | 'LocalizedEnum' + | 'Object'; + +export interface EnumValue { + value: string; + label: string; +} +export interface LEnumValue { + value: string; + label: Record; +} + +export interface ReferenceType { + by: string; + type: string; +} + +export interface AttributeSchema { + name: string; + type: AttributeType; + set: boolean; + required: boolean; + enum?: EnumValue[]; + lenum?: LEnumValue[]; + reference?: ReferenceType; + attributes?: AttributeSchema[]; +} + +export interface Schema { + attributes: AttributeSchema[]; +} + +export interface CustomObject { + id: string; + container: string; + key: string; + value: T; + version: number; + createdAt: string; + lastModifiedAt: string; +} + +export interface CustomObjectDraft { + container: string; + key: string; + value: T; +} diff --git a/src/test-utils/builder.ts b/mc-app/src/test-utils/builder.ts similarity index 100% rename from src/test-utils/builder.ts rename to mc-app/src/test-utils/builder.ts diff --git a/src/test-utils/generator.ts b/mc-app/src/test-utils/generator.ts similarity index 100% rename from src/test-utils/generator.ts rename to mc-app/src/test-utils/generator.ts diff --git a/src/test-utils/index.tsx b/mc-app/src/test-utils/index.tsx similarity index 98% rename from src/test-utils/index.tsx rename to mc-app/src/test-utils/index.tsx index 1285eb6..ed8d378 100644 --- a/src/test-utils/index.tsx +++ b/mc-app/src/test-utils/index.tsx @@ -11,9 +11,13 @@ import map from 'lodash/map'; import reduce from 'lodash/reduce'; import times from 'lodash/times'; import faker from 'faker'; -import { entryPointUriPath, CONTAINER, REFERENCE_BY, +import { + entryPointUriPath, + CONTAINER, + REFERENCE_BY, REFERENCE_TYPES, - TYPES, } from '../constants'; + TYPES, +} from '../constants'; import ApplicationRoutes from '../routes'; import { getAttributeValues } from '../form-utils'; diff --git a/src/test-utils/intl-mock.js b/mc-app/src/test-utils/intl-mock.js similarity index 100% rename from src/test-utils/intl-mock.js rename to mc-app/src/test-utils/intl-mock.js diff --git a/src/test-utils/transformers.ts b/mc-app/src/test-utils/transformers.ts similarity index 100% rename from src/test-utils/transformers.ts rename to mc-app/src/test-utils/transformers.ts diff --git a/src/test-utils/types.ts b/mc-app/src/test-utils/types.ts similarity index 100% rename from src/test-utils/types.ts rename to mc-app/src/test-utils/types.ts diff --git a/src/test-utils/use-effect-mock.js b/mc-app/src/test-utils/use-effect-mock.js similarity index 100% rename from src/test-utils/use-effect-mock.js rename to mc-app/src/test-utils/use-effect-mock.js diff --git a/src/types/generated/ctp.ts b/mc-app/src/types/generated/ctp.ts similarity index 100% rename from src/types/generated/ctp.ts rename to mc-app/src/types/generated/ctp.ts diff --git a/tsconfig.json b/mc-app/tsconfig.json similarity index 100% rename from tsconfig.json rename to mc-app/tsconfig.json diff --git a/yarn.lock b/mc-app/yarn.lock similarity index 80% rename from yarn.lock rename to mc-app/yarn.lock index a44d9d6..06202b5 100644 --- a/yarn.lock +++ b/mc-app/yarn.lock @@ -3,9 +3,9 @@ "@adobe/css-tools@^4.0.1": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63" - integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.1.tgz#2447a230bfe072c1659e6815129c03cf170710e3" + integrity sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ== "@ampproject/remapping@^2.2.0": version "2.3.0" @@ -16,9 +16,9 @@ "@jridgewell/trace-mapping" "^0.3.24" "@apollo/client@^3.9.7": - version "3.11.5" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.11.5.tgz#6645a716f28e9c712912de369ac0f9d74e163762" - integrity sha512-gmTKgXhYH2Q3VT9vUWChuMy34gfK7n/EEJYc7kXt1GP7678Vz2L0xUlHSMEoPoqit317eamZjXQSyxlpn03lnQ== + version "3.11.10" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.11.10.tgz#e16ae82ea9b16536ffd109847d24f9293fab5c4d" + integrity sha512-IfGc+X4il0rDqVQBBWdxIKM+ciDCiDzBq9+Bg9z4tJMi87uF6po4v+ddiac1wP0ARgVPsFwEIGxK7jhN4pW8jg== dependencies: "@graphql-typed-document-node/core" "^3.1.1" "@wry/caches" "^1.0.0" @@ -49,34 +49,35 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.8.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.8.3": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== dependencies: - "@babel/highlight" "^7.24.7" + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2", "@babel/compat-data@^7.25.4": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" - integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" + integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== "@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.6", "@babel/core@^7.22.17", "@babel/core@^7.24.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" - integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-module-transforms" "^7.25.2" - "@babel/helpers" "^7.25.0" - "@babel/parser" "^7.25.0" - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.2" - "@babel/types" "^7.25.2" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -84,76 +85,77 @@ semver "^6.3.1" "@babel/eslint-parser@^7.22.15": - version "7.25.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz#469cee4bd18a88ff3edbdfbd227bd20e82aa9b82" - integrity sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" + integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.25.0", "@babel/generator@^7.25.6", "@babel/generator@^7.7.2": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" - integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== +"@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" + integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== dependencies: - "@babel/types" "^7.25.6" + "@babel/parser" "^7.26.2" + "@babel/types" "^7.26.0" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" + jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" - integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== +"@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== dependencies: - "@babel/types" "^7.24.7" + "@babel/types" "^7.25.9" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" - integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz#f41752fe772a578e67286e6779a68a5a92de1ee9" + integrity sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g== dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" - integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== dependencies: - "@babel/compat-data" "^7.25.2" - "@babel/helper-validator-option" "^7.24.8" - browserslist "^4.23.1" + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0", "@babel/helper-create-class-features-plugin@^7.25.4": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz#57eaf1af38be4224a9d9dd01ddde05b741f50e14" - integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-member-expression-to-functions" "^7.24.8" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/helper-replace-supers" "^7.25.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/traverse" "^7.25.4" +"@babel/helper-create-class-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" + integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0", "@babel/helper-create-regexp-features-plugin@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" - integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz#3e8999db94728ad2b2458d7a470e7770b7764e26" + integrity sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - regexpu-core "^5.3.1" + "@babel/helper-annotate-as-pure" "^7.25.9" + regexpu-core "^6.1.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== +"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21" + integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -161,181 +163,178 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-member-expression-to-functions@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" - integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== - dependencies: - "@babel/traverse" "^7.24.8" - "@babel/types" "^7.24.8" - -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" - integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.2" - -"@babel/helper-optimise-call-expression@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" - integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== - dependencies: - "@babel/types" "^7.24.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.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" - integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== - -"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e" - integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-wrap-function" "^7.25.0" - "@babel/traverse" "^7.25.0" - -"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" - integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.24.8" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/traverse" "^7.25.0" - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-skip-transparent-expression-wrappers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" - integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" - integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== - -"@babel/helper-wrap-function@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81" - integrity sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ== - dependencies: - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/helpers@^7.25.0": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60" - integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== - dependencies: - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.6" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" +"@babel/helper-member-expression-to-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-optimise-call-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-remap-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-wrap-function" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-replace-supers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" + integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-simple-access@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz#6d51783299884a2c74618d6ef0f86820ec2e7739" + integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helper-wrap-function@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== + dependencies: + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + +"@babel/highlight@^7.10.4": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" + integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.6", "@babel/parser@^7.7.0": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" - integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2", "@babel/parser@^7.7.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== dependencies: - "@babel/types" "^7.25.6" + "@babel/types" "^7.26.0" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" - integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" + integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.3" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73" - integrity sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" + integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0": - version "7.25.0" - 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.25.0.tgz#749bde80356b295390954643de7635e0dffabe73" - integrity sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": + version "7.25.9" + 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.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" + integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" - integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" + integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb" - integrity sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" + integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" "@babel/plugin-proposal-do-expressions@^7.22.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.24.7.tgz#09ab8037ef28d71578b1734dc8a88fd00887c98a" - integrity sha512-M9pJwhoROof4rc4WzDdMoftv8JrtYfBVurvReacQ8lit+qUd0d71+1zUltb6/zCI7HBW4+KZbtBGmcudXw0GDQ== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.25.9.tgz#c1eae77aeb86fcd689804378acefd9e8f1ca8a27" + integrity sha512-0IkO77tw2OcZua/ADovH//IEiUyQpNjWvLyMFNidXnZx4eEriQjwkH9t/EyQZUaQu0KOxxdszC7m8VUVs51ydg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-do-expressions" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-proposal-export-default-from@^7.22.17": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz#0b539c46b8ac804f694e338f803c8354c0f788b6" - integrity sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.9.tgz#52702be6ef8367fc8f18b8438278332beeb8f87c" + integrity sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-default-from" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -370,47 +369,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-do-expressions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.24.7.tgz#c8aa7471fa25286fede4c12a464a49d286de8362" - integrity sha512-lQee+garSbTjCvXdzfjXeSzPd03pyBXALfB2C4bW7SwORrZAs5CDt67toH8MRPuvQFYvWpkXYe07AhHDY3tWfQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@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-default-from@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz#85dae9098933573aae137fb52141dd3ca52ae7ac" - integrity sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@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-import-assertions@^7.24.7": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz#bb918905c58711b86f9710d74a3744b6c56573b5" - integrity sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ== +"@babel/plugin-syntax-import-assertions@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" + integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz#6d4c78f042db0e82fd6436cd65fec5dc78ad2bde" - integrity sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ== +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -426,12 +397,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== +"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -486,15 +457,13 @@ 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-syntax-typescript@^7.24.7", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz#04db9ce5a9043d9c635e75ae7969a2cd50ca97ff" - integrity sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg== +"@babel/plugin-syntax-typescript@^7.25.9", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -504,563 +473,545 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" - integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== +"@babel/plugin-transform-arrow-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-generator-functions@^7.25.4": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz#2afd4e639e2d055776c9f091b6c0c180ed8cf083" - integrity sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg== +"@babel/plugin-transform-async-generator-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-remap-async-to-generator" "^7.25.0" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/traverse" "^7.25.4" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-async-to-generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" - integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== +"@babel/plugin-transform-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-remap-async-to-generator" "^7.24.7" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" -"@babel/plugin-transform-block-scoped-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" - integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== +"@babel/plugin-transform-block-scoped-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458" + integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-block-scoping@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac" - integrity sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ== +"@babel/plugin-transform-block-scoping@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" + integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.25.4": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz#bae7dbfcdcc2e8667355cd1fb5eda298f05189fd" - integrity sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g== +"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.4" - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-static-block@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" - integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== +"@babel/plugin-transform-class-static-block@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" + integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-classes@^7.25.4": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz#d29dbb6a72d79f359952ad0b66d88518d65ef89a" - integrity sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg== +"@babel/plugin-transform-classes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-replace-supers" "^7.25.0" - "@babel/traverse" "^7.25.4" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/traverse" "^7.25.9" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" - integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== +"@babel/plugin-transform-computed-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/template" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/template" "^7.25.9" -"@babel/plugin-transform-destructuring@^7.22.15", "@babel/plugin-transform-destructuring@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" - integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== +"@babel/plugin-transform-destructuring@^7.22.15", "@babel/plugin-transform-destructuring@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dotall-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" - integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== +"@babel/plugin-transform-dotall-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" + integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-keys@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" - integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== +"@babel/plugin-transform-duplicate-keys@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" + integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604" - integrity sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" + integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.0" - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dynamic-import@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" - integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== +"@babel/plugin-transform-dynamic-import@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" + integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-exponentiation-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" - integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== +"@babel/plugin-transform-exponentiation-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz#ece47b70d236c1d99c263a1e22b62dc20a4c8b0f" + integrity sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-export-namespace-from@^7.22.11", "@babel/plugin-transform-export-namespace-from@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" - integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== +"@babel/plugin-transform-export-namespace-from@^7.22.11", "@babel/plugin-transform-export-namespace-from@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-for-of@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" - integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== +"@babel/plugin-transform-for-of@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" + integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-function-name@^7.25.1": - version "7.25.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37" - integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA== +"@babel/plugin-transform-function-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== dependencies: - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.1" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-json-strings@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" - integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== +"@babel/plugin-transform-json-strings@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" + integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-literals@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3" - integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw== +"@babel/plugin-transform-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-logical-assignment-operators@^7.22.11", "@babel/plugin-transform-logical-assignment-operators@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" - integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== +"@babel/plugin-transform-logical-assignment-operators@^7.22.11", "@babel/plugin-transform-logical-assignment-operators@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-member-expression-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" - integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== +"@babel/plugin-transform-member-expression-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" + integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-amd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" - integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== +"@babel/plugin-transform-modules-amd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" + integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" - integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== +"@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz#d165c8c569a080baf5467bda88df6425fc060686" + integrity sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg== dependencies: - "@babel/helper-module-transforms" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-simple-access" "^7.25.9" -"@babel/plugin-transform-modules-systemjs@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33" - integrity sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw== +"@babel/plugin-transform-modules-systemjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" + integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== dependencies: - "@babel/helper-module-transforms" "^7.25.0" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.0" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-modules-umd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" - integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== +"@babel/plugin-transform-modules-umd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" + integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" - integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-new-target@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" - integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== +"@babel/plugin-transform-new-target@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" + integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" - integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" + integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-numeric-separator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" - integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== +"@babel/plugin-transform-numeric-separator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-object-rest-spread@^7.22.15", "@babel/plugin-transform-object-rest-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" - integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== +"@babel/plugin-transform-object-rest-spread@^7.22.15", "@babel/plugin-transform-object-rest-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== dependencies: - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" -"@babel/plugin-transform-object-super@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" - integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== +"@babel/plugin-transform-object-super@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" + integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" -"@babel/plugin-transform-optional-catch-binding@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" - integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== +"@babel/plugin-transform-optional-catch-binding@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" - integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== +"@babel/plugin-transform-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-parameters@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" - integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== +"@babel/plugin-transform-parameters@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.25.4": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz#9bbefbe3649f470d681997e0b64a4b254d877242" - integrity sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw== +"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.4" - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" - integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== +"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-property-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" - integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== +"@babel/plugin-transform-property-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" + integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-react-constant-elements@^7.18.12": - version "7.25.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz#71a665ed16ce618067d05f4a98130207349d82ae" - integrity sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz#08a1de35a301929b60fdf2788a54b46cd8ecd0ef" + integrity sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-display-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" - integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== +"@babel/plugin-transform-react-display-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" + integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx-development@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" - integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== +"@babel/plugin-transform-react-jsx-development@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" + integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== dependencies: - "@babel/plugin-transform-react-jsx" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.25.9" "@babel/plugin-transform-react-jsx-self@^7.24.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz#66bff0248ea0b549972e733516ffad577477bdab" - integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858" + integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-react-jsx-source@^7.24.1": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz#1198aab2548ad19582013815c938d3ebd8291ee3" - integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503" + integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx@^7.17.12", "@babel/plugin-transform-react-jsx@^7.24.7": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a" - integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== +"@babel/plugin-transform-react-jsx@^7.17.12", "@babel/plugin-transform-react-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" + integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/plugin-syntax-jsx" "^7.24.7" - "@babel/types" "^7.25.2" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/plugin-transform-react-pure-annotations@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" - integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== +"@babel/plugin-transform-react-pure-annotations@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" + integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-regenerator@^7.22.10", "@babel/plugin-transform-regenerator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" - integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== +"@babel/plugin-transform-regenerator@^7.22.10", "@babel/plugin-transform-regenerator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" + integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" - integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== +"@babel/plugin-transform-regexp-modifiers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" + integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-reserved-words@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" + integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-runtime@^7.22.15": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz#96e4ad7bfbbe0b4a7b7e6f2a533ca326cf204963" - integrity sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" + integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" - integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== +"@babel/plugin-transform-shorthand-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" - integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== +"@babel/plugin-transform-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-sticky-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" - integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== +"@babel/plugin-transform-sticky-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-template-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" - integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== +"@babel/plugin-transform-template-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" + integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typeof-symbol@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" - integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== +"@babel/plugin-transform-typeof-symbol@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b" + integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typescript@^7.24.7": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add" - integrity sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A== +"@babel/plugin-transform-typescript@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz#69267905c2b33c2ac6d8fe765e9dc2ddc9df3849" + integrity sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-create-class-features-plugin" "^7.25.0" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-syntax-typescript" "^7.24.7" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-syntax-typescript" "^7.25.9" -"@babel/plugin-transform-unicode-escapes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" - integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== +"@babel/plugin-transform-unicode-escapes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" + integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-property-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" - integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== +"@babel/plugin-transform-unicode-property-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" + integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" - integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== +"@babel/plugin-transform-unicode-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-sets-regex@^7.25.4": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz#be664c2a0697ffacd3423595d5edef6049e8946c" - integrity sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA== +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" + integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.2" - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.15": - version "7.25.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.4.tgz#be23043d43a34a2721cd0f676c7ba6f1481f6af6" - integrity sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw== - dependencies: - "@babel/compat-data" "^7.25.4" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-validator-option" "^7.24.8" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0" + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1" + integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw== + dependencies: + "@babel/compat-data" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@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-import-assertions" "^7.24.7" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@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-syntax-import-assertions" "^7.26.0" + "@babel/plugin-syntax-import-attributes" "^7.26.0" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.7" - "@babel/plugin-transform-async-generator-functions" "^7.25.4" - "@babel/plugin-transform-async-to-generator" "^7.24.7" - "@babel/plugin-transform-block-scoped-functions" "^7.24.7" - "@babel/plugin-transform-block-scoping" "^7.25.0" - "@babel/plugin-transform-class-properties" "^7.25.4" - "@babel/plugin-transform-class-static-block" "^7.24.7" - "@babel/plugin-transform-classes" "^7.25.4" - "@babel/plugin-transform-computed-properties" "^7.24.7" - "@babel/plugin-transform-destructuring" "^7.24.8" - "@babel/plugin-transform-dotall-regex" "^7.24.7" - "@babel/plugin-transform-duplicate-keys" "^7.24.7" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0" - "@babel/plugin-transform-dynamic-import" "^7.24.7" - "@babel/plugin-transform-exponentiation-operator" "^7.24.7" - "@babel/plugin-transform-export-namespace-from" "^7.24.7" - "@babel/plugin-transform-for-of" "^7.24.7" - "@babel/plugin-transform-function-name" "^7.25.1" - "@babel/plugin-transform-json-strings" "^7.24.7" - "@babel/plugin-transform-literals" "^7.25.2" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" - "@babel/plugin-transform-member-expression-literals" "^7.24.7" - "@babel/plugin-transform-modules-amd" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.8" - "@babel/plugin-transform-modules-systemjs" "^7.25.0" - "@babel/plugin-transform-modules-umd" "^7.24.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" - "@babel/plugin-transform-new-target" "^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" - "@babel/plugin-transform-numeric-separator" "^7.24.7" - "@babel/plugin-transform-object-rest-spread" "^7.24.7" - "@babel/plugin-transform-object-super" "^7.24.7" - "@babel/plugin-transform-optional-catch-binding" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.8" - "@babel/plugin-transform-parameters" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.25.4" - "@babel/plugin-transform-private-property-in-object" "^7.24.7" - "@babel/plugin-transform-property-literals" "^7.24.7" - "@babel/plugin-transform-regenerator" "^7.24.7" - "@babel/plugin-transform-reserved-words" "^7.24.7" - "@babel/plugin-transform-shorthand-properties" "^7.24.7" - "@babel/plugin-transform-spread" "^7.24.7" - "@babel/plugin-transform-sticky-regex" "^7.24.7" - "@babel/plugin-transform-template-literals" "^7.24.7" - "@babel/plugin-transform-typeof-symbol" "^7.24.8" - "@babel/plugin-transform-unicode-escapes" "^7.24.7" - "@babel/plugin-transform-unicode-property-regex" "^7.24.7" - "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.25.4" + "@babel/plugin-transform-arrow-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions" "^7.25.9" + "@babel/plugin-transform-block-scoping" "^7.25.9" + "@babel/plugin-transform-class-properties" "^7.25.9" + "@babel/plugin-transform-class-static-block" "^7.26.0" + "@babel/plugin-transform-classes" "^7.25.9" + "@babel/plugin-transform-computed-properties" "^7.25.9" + "@babel/plugin-transform-destructuring" "^7.25.9" + "@babel/plugin-transform-dotall-regex" "^7.25.9" + "@babel/plugin-transform-duplicate-keys" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-dynamic-import" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator" "^7.25.9" + "@babel/plugin-transform-export-namespace-from" "^7.25.9" + "@babel/plugin-transform-for-of" "^7.25.9" + "@babel/plugin-transform-function-name" "^7.25.9" + "@babel/plugin-transform-json-strings" "^7.25.9" + "@babel/plugin-transform-literals" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" + "@babel/plugin-transform-member-expression-literals" "^7.25.9" + "@babel/plugin-transform-modules-amd" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-modules-systemjs" "^7.25.9" + "@babel/plugin-transform-modules-umd" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-new-target" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" + "@babel/plugin-transform-numeric-separator" "^7.25.9" + "@babel/plugin-transform-object-rest-spread" "^7.25.9" + "@babel/plugin-transform-object-super" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-private-methods" "^7.25.9" + "@babel/plugin-transform-private-property-in-object" "^7.25.9" + "@babel/plugin-transform-property-literals" "^7.25.9" + "@babel/plugin-transform-regenerator" "^7.25.9" + "@babel/plugin-transform-regexp-modifiers" "^7.26.0" + "@babel/plugin-transform-reserved-words" "^7.25.9" + "@babel/plugin-transform-shorthand-properties" "^7.25.9" + "@babel/plugin-transform-spread" "^7.25.9" + "@babel/plugin-transform-sticky-regex" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-typeof-symbol" "^7.25.9" + "@babel/plugin-transform-unicode-escapes" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex" "^7.25.9" + "@babel/plugin-transform-unicode-regex" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.37.1" + core-js-compat "^3.38.1" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -1073,32 +1024,32 @@ esutils "^2.0.2" "@babel/preset-react@^7.18.6", "@babel/preset-react@^7.22.15": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" - integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.25.9.tgz#5f473035dc2094bcfdbc7392d0766bd42dce173e" + integrity sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-transform-react-display-name" "^7.24.7" - "@babel/plugin-transform-react-jsx" "^7.24.7" - "@babel/plugin-transform-react-jsx-development" "^7.24.7" - "@babel/plugin-transform-react-pure-annotations" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-transform-react-display-name" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx-development" "^7.25.9" + "@babel/plugin-transform-react-pure-annotations" "^7.25.9" "@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.15": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" - integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz#4a570f1b8d104a242d923957ffa1eaff142a106d" + integrity sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-syntax-jsx" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.7" - "@babel/plugin-transform-typescript" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-typescript" "^7.25.9" "@babel/register@^7.22.15": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.24.6.tgz#59e21dcc79e1d04eed5377633b0f88029a6bef9e" - integrity sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.25.9.tgz#1c465acf7dc983d70ccc318eb5b887ecb04f021b" + integrity sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" @@ -1106,15 +1057,10 @@ pirates "^4.0.6" source-map-support "^0.5.16" -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - "@babel/runtime-corejs3@^7.12.5", "@babel/runtime-corejs3@^7.17.9", "@babel/runtime-corejs3@^7.20.13", "@babel/runtime-corejs3@^7.22.15", "@babel/runtime-corejs3@^7.22.5": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.25.6.tgz#5e3facf42775cc95bcde95746e940061931286e4" - integrity sha512-Gz0Nrobx8szge6kQQ5Z5MX9L3ObqNwCQY1PSwSNzreFL7aHGxv8Fp2j3ETV6/wWdbiV+mW6OSm8oQhg3Tcsniw== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz#5af6bed16073eb4a0191233d61e158a5c768c430" + integrity sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w== dependencies: core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" @@ -1127,54 +1073,53 @@ regenerator-runtime "^0.14.0" "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.9", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.6.tgz#9afc3289f7184d8d7f98b099884c26317b9264d2" - integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.24.7", "@babel/template@^7.25.0", "@babel/template@^7.3.3": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" - integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.25.4", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" - integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.6" - "@babel/parser" "^7.25.6" - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.6" +"@babel/template@^7.25.9", "@babel/template@^7.3.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.25.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" - integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@bundled-es-modules/cookie@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz#c3b82703969a61cf6a46e959a012b2c257f6b164" - integrity sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw== +"@bundled-es-modules/cookie@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz#b41376af6a06b3e32a15241d927b840a9b4de507" + integrity sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw== dependencies: - cookie "^0.5.0" + cookie "^0.7.2" "@bundled-es-modules/statuses@^1.0.1": version "1.0.1" @@ -1199,38 +1144,38 @@ "@babel/runtime" "^7.17.9" "@babel/runtime-corejs3" "^7.17.9" -"@commercetools-frontend/actions-global@22.31.0", "@commercetools-frontend/actions-global@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/actions-global/-/actions-global-22.31.0.tgz#cbe1048c1abcf10cc9c5bf00d11a800b594340c1" - integrity sha512-oh7zMHXYWMJYEOvSdZ46veNupK62RoazVsKJunyyEZje50c0iDmHX1NJ2jd7Wut2c4ILtjENzPgjbE4ZuWqVLw== +"@commercetools-frontend/actions-global@22.35.1", "@commercetools-frontend/actions-global@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/actions-global/-/actions-global-22.35.1.tgz#82bd59c9c09c5d5782e69a60993b4c5619e75881" + integrity sha512-mPVzdkdVzdruo+BC/37PoaaIBcU1A5xVAcKf6w7avrhIEdUI3VjQ+B06ptc6X9BpVHEyFusF+p4POgI+CQ/NkA== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/browser-history" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" - "@commercetools-frontend/notifications" "22.31.0" - "@commercetools-frontend/sentry" "22.31.0" + "@commercetools-frontend/browser-history" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" + "@commercetools-frontend/notifications" "22.35.1" + "@commercetools-frontend/sentry" "22.35.1" "@types/lodash" "^4.14.198" "@types/react" "^17.0.80" "@types/react-redux" "^7.1.26" lodash "4.17.21" redux-thunk "2.4.2" -"@commercetools-frontend/application-components@22.31.0", "@commercetools-frontend/application-components@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/application-components/-/application-components-22.31.0.tgz#09cb31415d77a813494aa2912590f6a80a04fa46" - integrity sha512-/qSp9fsSuPpCqtKDecPPwbm8GpG+40XckZYSr7VFeJZjhPF7AfRuU6HZkOFVpdEfWqrlyH7HILR32s0D9cmgzQ== +"@commercetools-frontend/application-components@22.35.1", "@commercetools-frontend/application-components@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/application-components/-/application-components-22.35.1.tgz#f982b46b2aa871d4449f349c8e84803ab86bb0c9" + integrity sha512-HnNFlDnXty1tcl40Q77dHeHCojT/Zh9kkPpUFqo5/Qws7qczr4lDn9HGeErqpQLEFujt0Jm1UeT7kPUQmegrMw== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/actions-global" "22.31.0" - "@commercetools-frontend/application-config" "22.31.0" - "@commercetools-frontend/application-shell-connectors" "22.31.0" - "@commercetools-frontend/assets" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" - "@commercetools-frontend/i18n" "22.31.0" - "@commercetools-frontend/l10n" "22.31.0" - "@commercetools-frontend/sentry" "22.31.0" + "@commercetools-frontend/actions-global" "22.35.1" + "@commercetools-frontend/application-config" "22.35.1" + "@commercetools-frontend/application-shell-connectors" "22.35.1" + "@commercetools-frontend/assets" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" + "@commercetools-frontend/i18n" "22.35.1" + "@commercetools-frontend/l10n" "22.35.1" + "@commercetools-frontend/sentry" "22.35.1" "@commercetools-uikit/accessible-button" "^19.9.0" "@commercetools-uikit/card" "^19.9.0" "@commercetools-uikit/constraints" "^19.9.0" @@ -1266,17 +1211,17 @@ raf-schd "^4.0.3" react-modal "3.16.1" -"@commercetools-frontend/application-config@22.31.0", "@commercetools-frontend/application-config@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/application-config/-/application-config-22.31.0.tgz#38d542559cc33b3bac5219fb6318518122174a96" - integrity sha512-WtRhef0/41WOAz2J+wMC9AD7rtBQHVjoDJKmTxWCNDgud6kLnHFb4Xg8Q5YfkNc7VDddlmUtzNiM83jw/ByEKw== +"@commercetools-frontend/application-config@22.35.1", "@commercetools-frontend/application-config@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/application-config/-/application-config-22.35.1.tgz#2849280127c71bde55546f6921e243e727f84f45" + integrity sha512-q76TlK/jSZZRs8hWsjs3vhveSrBGdOuNyFS99wH/Nsm5KOKKQk6vbH++eN9tcpjlqQvwmPzHhoY5muIxHUByCQ== dependencies: "@babel/core" "^7.22.17" "@babel/register" "^7.22.15" "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/babel-preset-mc-app" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" + "@commercetools-frontend/babel-preset-mc-app" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" "@types/dompurify" "^2.4.0" "@types/lodash" "^4.14.198" "@types/react" "^17.0.80" @@ -1288,17 +1233,17 @@ lodash "4.17.21" omit-empty-es "1.2.0" -"@commercetools-frontend/application-shell-connectors@22.31.0", "@commercetools-frontend/application-shell-connectors@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/application-shell-connectors/-/application-shell-connectors-22.31.0.tgz#798dcaadf4f584c1488ed60e9a9ab41287d87369" - integrity sha512-nS4paiy7bAP5znEkYo4K5t7t82PJ+0jZ4UyRCLfioJ45i5DMv3gU/bgt97mUC46N0Sk0PHxKStdQfG5CmwJgMA== +"@commercetools-frontend/application-shell-connectors@22.35.1", "@commercetools-frontend/application-shell-connectors@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/application-shell-connectors/-/application-shell-connectors-22.35.1.tgz#33a97f41ea31967faa9d3bfeca8240f01856dc2b" + integrity sha512-QOMZDuovIk21Y6bUKYZJ/A0704z4DzIeeF7M7fTIvPpZDte2jF2tr8OqTTGzZaDnnmySDm03KOdiOk4HR4/D7g== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/application-config" "22.31.0" - "@commercetools-frontend/browser-history" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" - "@commercetools-frontend/sentry" "22.31.0" + "@commercetools-frontend/application-config" "22.35.1" + "@commercetools-frontend/browser-history" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" + "@commercetools-frontend/sentry" "22.35.1" "@commercetools/http-user-agent" "3.0.0" "@emotion/react" "^11.11.4" "@types/lodash" "^4.14.198" @@ -1314,28 +1259,28 @@ uuid "9.0.1" wait-for-observables "1.0.3" -"@commercetools-frontend/application-shell@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/application-shell/-/application-shell-22.31.0.tgz#7b8ed93c0f63c7330b182095e269cf89e83295a6" - integrity sha512-V4yPzJAvhp0B0a2qGwujYNPppCy9WGqTieaYZuZjKTvaDVqYfzR86znUfO5s1FLTEHg4E89uCNnF8H71i5W7IQ== +"@commercetools-frontend/application-shell@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/application-shell/-/application-shell-22.35.1.tgz#7f70ba050fca9890a08f086effbbc0c8474949c2" + integrity sha512-xB43L1GCRCYA9uyw8WFnZ2Re25b7nXWDR9q/lnf/wMT15S/zBpku5uf3fQT7WbZIq5eKElKkymJ77asv70H0CA== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/actions-global" "22.31.0" - "@commercetools-frontend/application-components" "22.31.0" - "@commercetools-frontend/application-config" "22.31.0" - "@commercetools-frontend/application-shell-connectors" "22.31.0" - "@commercetools-frontend/assets" "22.31.0" - "@commercetools-frontend/browser-history" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" - "@commercetools-frontend/i18n" "22.31.0" - "@commercetools-frontend/l10n" "22.31.0" - "@commercetools-frontend/notifications" "22.31.0" - "@commercetools-frontend/permissions" "22.31.0" - "@commercetools-frontend/react-notifications" "22.31.0" - "@commercetools-frontend/sdk" "22.31.0" - "@commercetools-frontend/sentry" "22.31.0" - "@commercetools-frontend/url-utils" "22.31.0" + "@commercetools-frontend/actions-global" "22.35.1" + "@commercetools-frontend/application-components" "22.35.1" + "@commercetools-frontend/application-config" "22.35.1" + "@commercetools-frontend/application-shell-connectors" "22.35.1" + "@commercetools-frontend/assets" "22.35.1" + "@commercetools-frontend/browser-history" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" + "@commercetools-frontend/i18n" "22.35.1" + "@commercetools-frontend/l10n" "22.35.1" + "@commercetools-frontend/notifications" "22.35.1" + "@commercetools-frontend/permissions" "22.35.1" + "@commercetools-frontend/react-notifications" "22.35.1" + "@commercetools-frontend/sdk" "22.35.1" + "@commercetools-frontend/sentry" "22.35.1" + "@commercetools-frontend/url-utils" "22.35.1" "@commercetools-uikit/accessible-hidden" "^19.9.0" "@commercetools-uikit/avatar" "^19.9.0" "@commercetools-uikit/card" "^19.9.0" @@ -1351,7 +1296,6 @@ "@commercetools-uikit/select-input" "^19.9.0" "@commercetools-uikit/spacings" "^19.9.0" "@commercetools-uikit/text" "^19.9.0" - "@commercetools-uikit/tooltip" "^19.9.0" "@emotion/react" "^11.11.4" "@emotion/styled" "^11.11.0" "@flopflip/combine-adapters" "14.0.2" @@ -1396,15 +1340,15 @@ unfetch "4.2.0" uuid "9.0.1" -"@commercetools-frontend/assets@22.31.0", "@commercetools-frontend/assets@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/assets/-/assets-22.31.0.tgz#0e762f2eb5d1f3c15d82a9984e0f10ddb4862ad5" - integrity sha512-Kdn7K8SktY32yAcoz3QutUpdkID7mQZOzVQGBSCGKySdhWJ8atqNJn+/QqOKvcGZ5Leo9DPh2yj8lbYkrRK75Q== +"@commercetools-frontend/assets@22.35.1", "@commercetools-frontend/assets@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/assets/-/assets-22.35.1.tgz#d8b6f8a50c79b88aa880613abd8efa3b2e0f93bc" + integrity sha512-NzLJpEt1wGEQJk3weqxx18nK/83wEcvfnxxu2j96bfy4O/N6fgPzAFlRgzTLyeVnviNaVXlBEIq9eWV3iup+zg== -"@commercetools-frontend/babel-preset-mc-app@22.31.0", "@commercetools-frontend/babel-preset-mc-app@^22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/babel-preset-mc-app/-/babel-preset-mc-app-22.31.0.tgz#d2ab7e7c0ef5ad4859694760b396b43c54609d7a" - integrity sha512-2HQbx0G6N+tOp9BDonTpCDck/LNzDoWk9+puXEwAA7SxOqfBasVybSNVDSV6odlUdY8b6z58NFl0gU0gDTSy6g== +"@commercetools-frontend/babel-preset-mc-app@22.35.1", "@commercetools-frontend/babel-preset-mc-app@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/babel-preset-mc-app/-/babel-preset-mc-app-22.35.1.tgz#a8f50c8b2142f011dcc2f0b2edc1f545392d1e9b" + integrity sha512-ECcKIoG1iy/2CnB0AXAcRpIyqqN4A0UiYpXind9QBFssnMdDSgDF9Sae3Z6nFbUlTPAGDFejU2KzDJaMwhu7hQ== dependencies: "@babel/core" "^7.22.17" "@babel/plugin-proposal-do-expressions" "^7.22.5" @@ -1432,10 +1376,10 @@ babel-plugin-transform-react-remove-prop-types "^0.4.24" core-js "^3.32.2" -"@commercetools-frontend/browser-history@22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/browser-history/-/browser-history-22.31.0.tgz#ca2150bae2c32c09f3c2a397cba01faf3db643b0" - integrity sha512-IXow4sW/gp3qOU218tLBBuqaSEyGyUWj6CNkdjsTp15W5S7kUzfeGux5NIqfFNG2pbIzYYR2m/Iw1ctsYCGYAg== +"@commercetools-frontend/browser-history@22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/browser-history/-/browser-history-22.35.1.tgz#599bf60382938e4b996e784f4438e3518009b314" + integrity sha512-zlbmZ88Lfg6/ZIi9k9Ieps+GEtnO7Xv7ncyNokuUqaX+SFcxJ3DO4GEt5Yq+1W96HrfHmbCX/uUT3G8HHTkDzw== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" @@ -1444,22 +1388,22 @@ history-query-enhancer "1.0.4" qss "2.0.3" -"@commercetools-frontend/constants@22.31.0", "@commercetools-frontend/constants@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/constants/-/constants-22.31.0.tgz#c1eb7c4cd00f77948d83e01fdef926e5c360291d" - integrity sha512-qqSo8XdwJlvMJ+Nf6NAjKqTY7MHI0ZfjjwLHHMuyN0kjBK/MGEbzksnSpTFbgR8lhqcn1AI4fq0CcLX97KRidw== +"@commercetools-frontend/constants@22.35.1", "@commercetools-frontend/constants@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/constants/-/constants-22.35.1.tgz#2ee1a9920f361a15388c9eed521e4c5386358412" + integrity sha512-URRXa6cuTw/HYtRMz0ZF1LJ/W0kqQarM+j+t6tCIg+b4hOORo21HPpuV7YHbAfCwgxo60uDBmsPGUdo/PfUhgg== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" -"@commercetools-frontend/eslint-config-mc-app@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/eslint-config-mc-app/-/eslint-config-mc-app-22.31.0.tgz#ca69adf495bb4c7a9a8f1f446258d5df56a35e0c" - integrity sha512-mqZjVNYC+e3J5vvC1ABc3hmC6VTks2atuXcqiUSewKlXRzNyX/gp7Z1GcmKm2Nc8A15/0aTqbwQsm2lDZj1lew== +"@commercetools-frontend/eslint-config-mc-app@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/eslint-config-mc-app/-/eslint-config-mc-app-22.35.1.tgz#f6ebd7e3388c9912d3532c2f3abadbea8e6b2d55" + integrity sha512-BVgQe4+ikHkn+NYbcqSa9zB5/onjuM3cPp2aze8MhB0Kz/CEEb1nC5JdViMgjceggHxt2jeSu8OalrL2RvP7dw== dependencies: "@babel/core" "^7.22.17" "@babel/eslint-parser" "^7.22.15" - "@commercetools-frontend/babel-preset-mc-app" "^22.31.0" + "@commercetools-frontend/babel-preset-mc-app" "^22.35.1" "@rushstack/eslint-patch" "^1.3.3" "@typescript-eslint/eslint-plugin" "^5.62.0" "@typescript-eslint/parser" "^5.62.0" @@ -1478,15 +1422,15 @@ prettier "^2.8.4" typescript "^5.2.2" -"@commercetools-frontend/i18n@22.31.0", "@commercetools-frontend/i18n@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/i18n/-/i18n-22.31.0.tgz#465a92c3f869eada6e6e33ef539d5e10484d58ee" - integrity sha512-p1x8Mgv/Sz5dcXqYF9jqhge7ILQeYGx15hjkzV79jmg0TP/GEQ/8Ajsz6qE0LehLttfsVFje7HXtDstwp9UuDg== +"@commercetools-frontend/i18n@22.35.1", "@commercetools-frontend/i18n@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/i18n/-/i18n-22.35.1.tgz#cb279ab1946c962d0dc16fa1f986430c6bb93093" + integrity sha512-tODOlppSvCTJpdfMrDSBJqHDlW94/c28V7e5HrvH7uZtESEVOZdHQaOIG8Dtqo38jndNuQ4x619aERQlJkwXug== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" "@commercetools-community-kit/i18n" "^0.3.0" - "@commercetools-frontend/sentry" "22.31.0" + "@commercetools-frontend/sentry" "22.35.1" "@commercetools-uikit/i18n" "^19.9.0" "@emotion/react" "^11.11.4" "@formatjs/icu-messageformat-parser" "2.7.8" @@ -1495,13 +1439,13 @@ moment "^2.29.4" prop-types "15.8.1" -"@commercetools-frontend/jest-preset-mc-app@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/jest-preset-mc-app/-/jest-preset-mc-app-22.31.0.tgz#cf5877dc69a18de9a91c6a2d4a5369ef6597d362" - integrity sha512-R0t4THFrKWWTTUgJ+nU6AMMqFCYVfzDJ1To/goGxzABdcqBQAR6+4ROCQjRJ7oI8b5cxNu72gdQbS8mON1YMQA== +"@commercetools-frontend/jest-preset-mc-app@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/jest-preset-mc-app/-/jest-preset-mc-app-22.35.1.tgz#abf770162c44553e89c3aaf4b07411e1314a94fc" + integrity sha512-CTmjIbYwYFNBOSRbH6c+VlBgcX+kxZ7oK0GGtZuFlE5qA0TLLXUXHBAzIcxEJoSssSNLi32J9o9t3owq8zgb9Q== dependencies: "@babel/core" "^7.22.17" - "@commercetools-frontend/babel-preset-mc-app" "22.31.0" + "@commercetools-frontend/babel-preset-mc-app" "22.35.1" "@formatjs/intl-getcanonicallocales" "^2.2.1" "@formatjs/intl-listformat" "^7.4.1" "@formatjs/intl-locale" "^3.3.3" @@ -1526,14 +1470,14 @@ setimmediate "1.0.5" unfetch "4.2.0" -"@commercetools-frontend/l10n@22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/l10n/-/l10n-22.31.0.tgz#6b9f68fe8518c9be54dd0e49ff1e128d5ab9a39d" - integrity sha512-L/SkjUN9nnAwBQvp+PECWPMKVZFazRdac8xRUFiSafBpfemyrAKL8i/70MiFF4qVHqpDer383x15Bx62LJqk7Q== +"@commercetools-frontend/l10n@22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/l10n/-/l10n-22.35.1.tgz#6e528ba151a998dfdbe5d734604a24e84e351138" + integrity sha512-yTrbbtCpTJpFrDc4P8rWcKP+/VQyQCgmXHNjInmVKdFuzCRAPo8mDzcSJ9XK5Y3OgKZUR4dlD0X6EDClqzR9KQ== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/sentry" "22.31.0" + "@commercetools-frontend/sentry" "22.35.1" "@emotion/react" "^11.11.4" "@types/lodash" "^4.14.198" "@types/prop-types" "^15.7.5" @@ -1543,42 +1487,42 @@ moment-timezone "^0.5.40" prop-types "15.8.1" -"@commercetools-frontend/mc-dev-authentication@22.31.0", "@commercetools-frontend/mc-dev-authentication@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/mc-dev-authentication/-/mc-dev-authentication-22.31.0.tgz#1203b595f70cd41a43e7ad123dab46dc8d284663" - integrity sha512-wzo21gg+zjARFEb8eYTU0W8auC6xQ6DawXohKjYAbjLmMvdTlk7y2eFyh5+hRoWjm0nplAxQR3iUYXOWctwViQ== +"@commercetools-frontend/mc-dev-authentication@22.35.1", "@commercetools-frontend/mc-dev-authentication@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/mc-dev-authentication/-/mc-dev-authentication-22.35.1.tgz#61b5351addaf5ae6b8a0d1048a84c9d3da9fa9ea" + integrity sha512-pRZS4lb0rKsSFbGbP7GgIDmOsCScofeJWLdZ3839uCSQpw6OH1g0homYKPj75W7yHWNEkGHbUSdh8h0Fe8JYVQ== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" -"@commercetools-frontend/mc-html-template@22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/mc-html-template/-/mc-html-template-22.31.0.tgz#b471c403f313100f8ea4af4b272a121b1775bf03" - integrity sha512-gHKxA6DOnqRNAL2LPGXzkr11dpWjrspVGQc1qk7EsrMmb2pvFL/QMLRxTvrTvvSVrXFmiYkZ1608S0DrWiEZHw== +"@commercetools-frontend/mc-html-template@22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/mc-html-template/-/mc-html-template-22.35.1.tgz#9fb987bc5e501145cd2e25705d2c9a3f4376bec7" + integrity sha512-WTqCVuvZ4wGx8ULmdNGnnzQ0z+y6tYnj3RMMHW4g+EmYp9ZS/fJNJMPgdxPugt7pccu9Lz/xZvKB+/meoN8K1A== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/application-config" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" + "@commercetools-frontend/application-config" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" serialize-javascript "6.0.2" uglify-js "3.18.0" uglifycss "0.0.29" -"@commercetools-frontend/mc-scripts@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/mc-scripts/-/mc-scripts-22.31.0.tgz#b2e8eda56f61b44944420ff163d1078c902a3229" - integrity sha512-/10d+TiNopT6lgOvqfOdFnQf4rCEbwzmmVEzKyxVcv3RS6dc943SvBOfgMCm3w30urrn5fygEPwBDiz1mjwyuw== +"@commercetools-frontend/mc-scripts@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/mc-scripts/-/mc-scripts-22.35.1.tgz#a55477ce681fe49aed44c1c2042adc7abfd3a1ec" + integrity sha512-LG8QiZ3yYntjfstR48q+QGy2Zwp71tCcDjxpmlRjjGPAo4eoA1l8SSeLl0sSY1FYkuIhLJRHv2zvznh7QUOnWA== dependencies: "@babel/core" "^7.22.17" "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/application-components" "22.31.0" - "@commercetools-frontend/application-config" "22.31.0" - "@commercetools-frontend/assets" "22.31.0" - "@commercetools-frontend/babel-preset-mc-app" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" - "@commercetools-frontend/mc-dev-authentication" "22.31.0" - "@commercetools-frontend/mc-html-template" "22.31.0" + "@commercetools-frontend/application-components" "22.35.1" + "@commercetools-frontend/application-config" "22.35.1" + "@commercetools-frontend/assets" "22.35.1" + "@commercetools-frontend/babel-preset-mc-app" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" + "@commercetools-frontend/mc-dev-authentication" "22.35.1" + "@commercetools-frontend/mc-html-template" "22.35.1" "@commercetools/http-user-agent" "3.0.0" "@formatjs/cli-lib" "^6.3.8" "@pmmmwh/react-refresh-webpack-plugin" "0.5.15" @@ -1624,6 +1568,7 @@ querystring-es3 "^0.2.1" react-dev-utils "12.0.1" react-refresh "0.14.2" + rollup-plugin-visualizer "^5.12.0" serve-handler "6.1.5" shelljs "0.8.5" style-loader "3.3.4" @@ -1632,28 +1577,29 @@ thread-loader "3.0.4" url "^0.11.0" vite "~4.5.3" - webpack "5.92.0" + vite-bundle-analyzer "0.12.1" + webpack "5.94.0" webpack-bundle-analyzer "4.10.2" webpack-dev-server "4.15.2" webpackbar "5.0.2" -"@commercetools-frontend/notifications@22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/notifications/-/notifications-22.31.0.tgz#6f1ab1d8031a05c6d4a68a5b7e634486d05c0212" - integrity sha512-brxa85orJgVfSGSGlVkqG6J2tN6FC9r5EVEZC/zIc6f1URFlh/2QRs9e5MOk65VRnlSFx5/CB8EW/2B3DPYuTw== +"@commercetools-frontend/notifications@22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/notifications/-/notifications-22.35.1.tgz#2af3d42a3cfc19708144c4d0f23bcd061a1c6435" + integrity sha512-Mm0w8onl4fRjeI62wR1llyDUiczuvR1sEkPLnbfrUYyrCaoRSGGMyxNouY1nLptoz1du/2Kp9UNecM6M1fQqYA== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" -"@commercetools-frontend/permissions@22.31.0", "@commercetools-frontend/permissions@^22.20.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/permissions/-/permissions-22.31.0.tgz#f29a0839f453507c3392b7c9a0619b426843bd71" - integrity sha512-oYAQ3esL8Eu53mpSLgcRGwwVR+vvrz5nq+meQSazbZCwNRAOpywl6qUbs/suGwgSce0kaE2X6A5NWbyFv2R98g== +"@commercetools-frontend/permissions@22.35.1", "@commercetools-frontend/permissions@^22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/permissions/-/permissions-22.35.1.tgz#811ac4d5f9fec8771be39520b07fd846c0389063" + integrity sha512-SZEz1XeU1CMo0PWMoEVvZXDcoqImnwY+K/c08Gd59LPU4uJcYcd6olgz+cmIdAQ6SzhNIBIlMqbb4ULSZziOFQ== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/application-shell-connectors" "22.31.0" - "@commercetools-frontend/sentry" "22.31.0" + "@commercetools-frontend/application-shell-connectors" "22.35.1" + "@commercetools-frontend/sentry" "22.35.1" "@emotion/react" "^11.11.4" "@types/lodash" "^4.14.198" "@types/prop-types" "^15.7.5" @@ -1663,18 +1609,18 @@ tiny-invariant "1.3.3" tiny-warning "1.0.3" -"@commercetools-frontend/react-notifications@22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/react-notifications/-/react-notifications-22.31.0.tgz#f7874fae439f7e42f4bef31380a19f02a1b82f65" - integrity sha512-BcdUjZQLjdf1OVl8esJ26pMRTRdvjbpxSRF6ZOAQOt3QC4jZUdtcLrUuMvJyPwhbvD5HNgFhclUau3h/g9rQuA== +"@commercetools-frontend/react-notifications@22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/react-notifications/-/react-notifications-22.35.1.tgz#5377366aeb29cc820423bc58ec01f297c3b67489" + integrity sha512-YITgNOiGdi01XveyAGxj/qB/kuQV+5eAjdo681onJaP/pKhdayxCnM0PJ5t9TUzJmutkd87pR/vvMo8xzJbt5Q== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/actions-global" "22.31.0" - "@commercetools-frontend/application-components" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" - "@commercetools-frontend/notifications" "22.31.0" - "@commercetools-frontend/sentry" "22.31.0" + "@commercetools-frontend/actions-global" "22.35.1" + "@commercetools-frontend/application-components" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" + "@commercetools-frontend/notifications" "22.35.1" + "@commercetools-frontend/sentry" "22.35.1" "@commercetools-uikit/design-system" "^19.9.0" "@commercetools-uikit/hooks" "^19.9.0" "@commercetools-uikit/icon-button" "^19.9.0" @@ -1698,14 +1644,14 @@ prop-types "15.8.1" reselect "4.1.8" -"@commercetools-frontend/sdk@22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/sdk/-/sdk-22.31.0.tgz#1bdbf72494ac322cd36531af771872e71db61bad" - integrity sha512-jKKYZGTL2CBVbYDkD7b+frc9ZlWYmIb/v32UpSTbxSAXsZeSKpTH5iZHUuYjimUFRnSE1KAj4QF+pZ8IjXLjMw== +"@commercetools-frontend/sdk@22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/sdk/-/sdk-22.35.1.tgz#07b9376132d3162eb24c13598770dd208fe8ebc6" + integrity sha512-I5lR78i8SJtmB8SlukMbqulE+/c0/c+9L2gX1045e/bhqDPde+Ty7LDy7DpSZpMPH6xckUGPrk/2rrjZJcPAuw== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/constants" "22.31.0" + "@commercetools-frontend/constants" "22.35.1" "@commercetools/api-request-builder" "6.0.0" "@commercetools/http-user-agent" "3.0.0" "@commercetools/sdk-client" "3.0.0" @@ -1723,26 +1669,26 @@ unfetch "4.2.0" uuid "9.0.1" -"@commercetools-frontend/sentry@22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/sentry/-/sentry-22.31.0.tgz#a63c847de26ce24fb2c7af30e414207b47cde528" - integrity sha512-+oySanJ+uSb80U4Z4fiFY8LBqCjv+AJzHKBi8bv1aDcOP74lso/A1wHQ7iHyaUNkBnZe714pzHh9J1vgHFmhvQ== +"@commercetools-frontend/sentry@22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/sentry/-/sentry-22.35.1.tgz#8cd3b4cd10a03874a259bc78d0811ad1341c6ca8" + integrity sha512-7KtCm20oyEZ/PJhSWfJgWx+i8ONpa1dv7JphQlPub0Icw1LCVb2eMR9NVFZxzRkjcGOI6L+QWeABv1y/mYCxzA== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" - "@commercetools-frontend/browser-history" "22.31.0" - "@commercetools-frontend/constants" "22.31.0" - "@sentry/browser" "7.117.0" + "@commercetools-frontend/browser-history" "22.35.1" + "@commercetools-frontend/constants" "22.35.1" + "@sentry/browser" "7.119.1" "@sentry/react" "7.117.0" "@sentry/types" "7.117.0" "@types/prop-types" "^15.7.5" "@types/react" "^17.0.80" prop-types "15.8.1" -"@commercetools-frontend/url-utils@22.31.0": - version "22.31.0" - resolved "https://registry.yarnpkg.com/@commercetools-frontend/url-utils/-/url-utils-22.31.0.tgz#9d72a6920689195b8a6370ba168992666a6b6ff6" - integrity sha512-TMFXchgS+Bpnsa25RR+XiH/mIfeOodiReUhFKnFy0S2vnCCBLyMhEiyi9EPSFJo7c71sWJCbM60sBI9Njn3vfg== +"@commercetools-frontend/url-utils@22.35.1": + version "22.35.1" + resolved "https://registry.yarnpkg.com/@commercetools-frontend/url-utils/-/url-utils-22.35.1.tgz#b9c605b809fc3450ed1aab73a0a37a2c602113c0" + integrity sha512-WfW4d6kw0ZohLrb22D3TTSmm7aT8OgzyXD3tukV/bSR4C108D8k0sJCIHeLEiiQdfhXY6iYsKqDb20bIYKcn2g== dependencies: "@babel/runtime" "^7.22.15" "@babel/runtime-corejs3" "^7.22.15" @@ -1794,15 +1740,15 @@ "@babel/runtime-corejs3" "^7.17.9" "@faker-js/faker" "^8.0.0" -"@commercetools-uikit/accessible-button@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/accessible-button/-/accessible-button-18.5.0.tgz#9e587dd4a60c5ddb06b749b13e1b558c4359e2f0" - integrity sha512-0GnjrSi6Rb3K8HJs0efczPivWEXERaHo7aRAxPOf7a6OSjtiwLVaKb+9RwtaKJTrkmxK27Yu42OBDlCUH+JAbA== +"@commercetools-uikit/accessible-button@19.16.0", "@commercetools-uikit/accessible-button@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/accessible-button/-/accessible-button-19.16.0.tgz#ecd93c6224df1f6fa431b03e50f10808e53a7daa" + integrity sha512-rVxsTyINsfqOijvQHsOaGEsTRJBzXlKlfaXeiJyvaQX5l8lDmt6UUrtyifqtk6Dvq3Z1Hh3vXbXMS/0ytMR7IA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" "@types/react-is" "^17.0.3" @@ -1810,211 +1756,242 @@ prop-types "15.8.1" react-is "17.0.2" -"@commercetools-uikit/accessible-button@19.10.0", "@commercetools-uikit/accessible-button@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/accessible-button/-/accessible-button-19.10.0.tgz#d14aa279fbce7df53e5d00bdfccb7b30d43e8353" - integrity sha512-kvoFBUkqn+lizYhvl6IkLr2a+yAafLzApdh3FXpCPA/hlV5iTmTC63Jwr2InXxYGRTGMTIUN8KU9Be2B/eSWHQ== +"@commercetools-uikit/accessible-hidden@19.16.0", "@commercetools-uikit/accessible-hidden@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/accessible-hidden/-/accessible-hidden-19.16.0.tgz#801ae4aa2008ae95eaca40cfc41c84e47cdc20fb" + integrity sha512-ogSnKT+YS794MA7IWA5I+5tByT6GSFrZ37/Sv6Lk+1Cwc2hhz+5PLO+6Jp/43JW1nPx+pwIoBtiWhX7/QP1IKQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" "@emotion/react" "^11.10.5" - "@emotion/styled" "^11.10.5" - "@types/react-is" "^17.0.3" - lodash "4.17.21" prop-types "15.8.1" - react-is "17.0.2" -"@commercetools-uikit/accessible-hidden@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/accessible-hidden/-/accessible-hidden-19.10.0.tgz#8b2f0bbd063406f94fe0238fca25c50508bb33a8" - integrity sha512-chVA3PizltnrgJ+zeosFnU0wbJjJYYHXizfjX7usYm6FVuElJtDR53fIZ4oOjzqE3ibHTIWvnPLC1bWsGz5BSw== +"@commercetools-uikit/async-select-input@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/async-select-input/-/async-select-input-19.16.0.tgz#1b3770d03ac5390aa5798718faebec759ecaae2b" + integrity sha512-HydckVHcI8Ag6mo98SNiU11aRJB7JwjokeIXt3Cp8qsNMPUp5RepNpzt/nVYRRj/5bU7G3ShaViBw4H9nKjNiA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/loading-spinner" "19.16.0" + "@commercetools-uikit/select-utils" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" + "@emotion/styled" "^11.10.5" + lodash "4.17.21" prop-types "15.8.1" + react-select "5.8.1" "@commercetools-uikit/avatar@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/avatar/-/avatar-19.10.0.tgz#7cfe9e692dd3c66aa2a7a8bf1798d5b2cb0c3f24" - integrity sha512-O8eGOJsvq/ICsWFjBcZsrTypJ5vTf3Cj3GNXju4nTq6w69xUS3aRhFG32m/yKV5yPMXYfd8sVRzNQhirUkzGkQ== + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/avatar/-/avatar-19.16.0.tgz#c99cb2abac799c57d5773c46ff17862b2c379aed" + integrity sha512-I13ORtboYyb+vSybDryev9bJlAO4KL/15pJWPiWuF7F3rhDCoXP2fQT5YcXwwem6lXhh48uVQHUItfpEqlQAnA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" -"@commercetools-uikit/calendar-time-utils@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/calendar-time-utils/-/calendar-time-utils-18.5.0.tgz#10ac004e54521d6b980ab7d65688a1b932b52d2e" - integrity sha512-Zqcb+OHbnUIqi4WYAj6Fp/eWRfgV2sCOwayMqeMnty8vblh7YnC1vRVWXKfjoTRZqT+xhpVv9tj54iVisNtVxw== +"@commercetools-uikit/calendar-time-utils@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/calendar-time-utils/-/calendar-time-utils-19.16.0.tgz#5ead7bd92874a0daa9ba0e8573b7a4de4dd9aff5" + integrity sha512-+phwo3JkI8p5DSBFQG4Qt3RZbEtso9bDs7eVjnIbygozmcve/tzrRn+J4nylltljaX0M8IivzzfqN+PT5aQyvw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/utils" "19.16.0" -"@commercetools-uikit/calendar-utils@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/calendar-utils/-/calendar-utils-18.5.0.tgz#9da73ddb6857689d23b95af63108333f2126bca6" - integrity sha512-Hoq8ylo38Jch4BPexNKhnEiG/0baca7Z8tZxcPTOMy8w27JspfsxYEbbb+PZr+scxjx4aPNIQEUNIDYysTP92w== +"@commercetools-uikit/calendar-utils@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/calendar-utils/-/calendar-utils-19.16.0.tgz#e954aa97d839dfc0fd75cc262c9fde3f7c15492f" + integrity sha512-KzvvKmq5UDvQ0ytXgSBsroM6yUbn8U5GScSM+Xg3eptiMgkmJqmdwr6u9jEllYbi88icuF2Sr9v6ZJybByy+Mg== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/input-utils" "18.5.0" - "@commercetools-uikit/secondary-icon-button" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/tooltip" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/input-utils" "19.16.0" + "@commercetools-uikit/secondary-icon-button" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/tooltip" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" - react-select "5.8.0" + react-select "5.8.1" -"@commercetools-uikit/card@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/card/-/card-19.10.0.tgz#b211da351a57be191a241d854fd93e0291930421" - integrity sha512-1XPMXFoDhb8sLFTS1bbi9f3cKlpMR20e3AiQ+n9NFlbdei1uEHGrT0gu3aCd1PEKZRNk74WZzybMxfd4roA4vg== +"@commercetools-uikit/card@19.16.0", "@commercetools-uikit/card@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/card/-/card-19.16.0.tgz#daf0a5006de92ccc60aba3d1988471325bbd920c" + integrity sha512-NX27x1IcCPwozDCjVmEQYg/SnORfX5suEIS7V7kfwzv+/xUKqDCqEdUZRtmG6YxPR7SwMqiGm6tb/2pfWuXloA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/spacings-inset" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings-inset" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" "@types/react-router-dom" "^5.3.3" prop-types "15.8.1" -"@commercetools-uikit/checkbox-input@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/checkbox-input/-/checkbox-input-18.5.0.tgz#854e01442f5b47cdaf6f939fa137f14a268014f7" - integrity sha512-uRAVzrOBPQULujBMuNWNh0rOyyCiUGfi2cuc/4YlwVNYo0M5gRH23/fMlPg+TmuMrE4OdzBBf/zGjD1s5soJqg== +"@commercetools-uikit/checkbox-input@19.16.0", "@commercetools-uikit/checkbox-input@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/checkbox-input/-/checkbox-input-19.16.0.tgz#22da19983399023622463dedb6ed463a78257423" + integrity sha512-MfswCBTbOgRlWXgS18nV4p+gqOJZPmH+0/NnusPjY1MmmASkKlfNGe26sc+XgPf5cyO1LEwweJkKmmZIR5ovow== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/input-utils" "18.5.0" - "@commercetools-uikit/select-utils" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/input-utils" "19.16.0" + "@commercetools-uikit/select-utils" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/collapsible-motion@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/collapsible-motion/-/collapsible-motion-18.5.0.tgz#751764c5df71388417fa34aabcf4eda362b78f5e" - integrity sha512-ocRU30Z6bSpLEU0F+uNMFlfWle+7Dv8V9PvfTECAaryUoNYGbsTaXK6Jyb6F8ef/1k4nd1fRl9r6ZLMek5K3wQ== +"@commercetools-uikit/collapsible-motion@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/collapsible-motion/-/collapsible-motion-19.16.0.tgz#4d952e3580131539f7a0109ceb393ccb9a7d0446" + integrity sha512-HYkfcwyUZ5tcm6M4OXFuTTDKmnjfkRfjP5OkwMBfofXfQqmAn9RfxifLGdP0nEvMswS6SUnQIZxlNnFu+CNIzQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" -"@commercetools-uikit/collapsible-panel@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/collapsible-panel/-/collapsible-panel-18.5.0.tgz#8087372040bbecae4899b2496c259d8bbca20df9" - integrity sha512-zr+y//n6W522S56j27gK7n2VS2sVZBwUTL8cMXMGRqnZYNN98eZodYU5sfbtqUaAZ1xIzGgO7OH2tMVKWCFsMA== +"@commercetools-uikit/collapsible-panel@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/collapsible-panel/-/collapsible-panel-19.16.0.tgz#7c7fbc731ea1d5e3e0d076cd14842013fd830ec6" + integrity sha512-Ibiu/07saap2cmi2iAy2RQclLLOIgArkBKob0Kah5Sk7zifCaN0lJ4imrTXu32PuGThQ3QUX7kWoQIUJrD7G6A== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/collapsible-motion" "18.5.0" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/spacings" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/collapsible-motion" "19.16.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/constraints@18.5.0", "@commercetools-uikit/constraints@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/constraints/-/constraints-18.5.0.tgz#868a009b18db0e1e3fe44ec2d68a48b3441d6022" - integrity sha512-okhWVIpceE1YKUoXwozd+zcoD+yr+IO5oAxaNKi5j/ssVr3OBdq+cFiSsXb9WMvZD0Ix0zY8bzTZQOLx7el7bw== +"@commercetools-uikit/constraints@19.16.0", "@commercetools-uikit/constraints@^19.16.0", "@commercetools-uikit/constraints@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/constraints/-/constraints-19.16.0.tgz#9191a0873bde2f405bd0821357a884f29bb50615" + integrity sha512-R/8ae5E1xBjiL6b2vkYB2Lu9D+ufkEt8uqmNa6jt90fGmiZEoC/H0fRbixz1ZewwBMhKtnExlLdDrhRe77Ymtg== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/constraints@19.10.0", "@commercetools-uikit/constraints@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/constraints/-/constraints-19.10.0.tgz#a41bfbe103b01c00075a6d13942551e338a6a7de" - integrity sha512-YS+q0xh1aN4j//aelWds+HyzgLHDgSIBSg84Zp0ifhMFvcHcVgGzOpCas+1kA4RuT1rAYYBUNh7jxqhU7ll0JQ== +"@commercetools-uikit/data-table-manager@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/data-table-manager/-/data-table-manager-19.16.0.tgz#4812b0e961521f3b5ef15784f8a63ec099663c96" + integrity sha512-zFw2DFu9krwhNigJ1s9EqwZkgqlPLU2UN7rf9kj9EFk608cNviwKhRJfCq1kV2756zykRFI+huR7DC+oK9wI0A== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/accessible-hidden" "19.16.0" + "@commercetools-uikit/async-select-input" "19.16.0" + "@commercetools-uikit/card" "19.16.0" + "@commercetools-uikit/collapsible-motion" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/dropdown-menu" "19.16.0" + "@commercetools-uikit/field-label" "19.16.0" + "@commercetools-uikit/grid" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icon-button" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/primary-button" "19.16.0" + "@commercetools-uikit/radio-input" "19.16.0" + "@commercetools-uikit/secondary-button" "19.16.0" + "@commercetools-uikit/secondary-icon-button" "19.16.0" + "@commercetools-uikit/select-input" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/tag" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/tooltip" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" + "@types/debounce-promise" "^3.1.6" + "@types/react-beautiful-dnd" "^13.1.3" + debounce-promise "^3.1.2" + lodash "4.17.21" prop-types "15.8.1" + react-beautiful-dnd "13.1.1" -"@commercetools-uikit/data-table@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/data-table/-/data-table-18.5.0.tgz#48e47c6e7ac41bbe64a5f58454f705c2224773c6" - integrity sha512-jstEsfFOZDYAfvLQUTZ2oky1XjKLg+J7rlPG8XaMbt3CG3ifXMhelz4XfP/8R1175NVHY5hDwmjjFvt/Q1+TnQ== +"@commercetools-uikit/data-table@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/data-table/-/data-table-19.16.0.tgz#e84c416d084c2d42ba9104a6dd9eaefea9b8d025" + integrity sha512-wdpDvUNqGvF2KP+p0FlISeKQa7kHzc4wMUelc6l4ZDk1vozPqdAJztjbEAw+AHbjGW9mqnCv8KH936M0kfLg2g== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/secondary-icon-button" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/data-table-manager" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/secondary-icon-button" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/date-input@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/date-input/-/date-input-18.5.0.tgz#427b91902e86237affc2c046a55b185ca131dc12" - integrity sha512-XeobwLA10kGnF2ZIU8xuOvYTlmYFuV8qVGqxqYEatg+3K65KNvbwL85RKF0vxOR4TuREVclhQAzrrd9d72ytsQ== +"@commercetools-uikit/date-input@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/date-input/-/date-input-19.16.0.tgz#1c544dada42f5ee37748872688d6b1e5c391ad35" + integrity sha512-dacMZX4mDoJOPTBZDJ7Ga3D2Y+2jPkZn6ygq7Lw4wVSmY6YCdNrwowV2jsesvSGESu4iKl0JLvl5BEmkQUTG4A== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/calendar-time-utils" "18.5.0" - "@commercetools-uikit/calendar-utils" "18.5.0" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/secondary-icon-button" "18.5.0" - "@commercetools-uikit/select-utils" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/tooltip" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/calendar-time-utils" "19.16.0" + "@commercetools-uikit/calendar-utils" "19.16.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/secondary-icon-button" "19.16.0" + "@commercetools-uikit/select-utils" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/tooltip" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" downshift "6.1.12" @@ -2022,26 +1999,26 @@ react-is "17.0.2" warning "4.0.3" -"@commercetools-uikit/date-time-input@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/date-time-input/-/date-time-input-18.5.0.tgz#3b1c4e97beefb7261cd1c703db91a88cc74f5cbf" - integrity sha512-GGMWbT49YoeJo+GHvkHZsLUH26n+WuXKpeSNU1HBPZz9eTNjjzQKZ5/lwc5omNyKo6DQYrIuqQ0BrV54IkuE9A== +"@commercetools-uikit/date-time-input@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/date-time-input/-/date-time-input-19.16.0.tgz#fb5c74d96069dc0c7f9cd50d5fd443b196504a4c" + integrity sha512-j88Bu5Q0gP12tGPm2EziA147JI51E4PnSDkHN6GjxHbw1qXgp310xnQqLPeCCyvvB9qvndOncGtESXUI9iqEEA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/calendar-time-utils" "18.5.0" - "@commercetools-uikit/calendar-utils" "18.5.0" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/secondary-icon-button" "18.5.0" - "@commercetools-uikit/select-utils" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/tooltip" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/calendar-time-utils" "19.16.0" + "@commercetools-uikit/calendar-utils" "19.16.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/secondary-icon-button" "19.16.0" + "@commercetools-uikit/select-utils" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/tooltip" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" downshift "6.1.12" @@ -2049,117 +2026,107 @@ react-is "17.0.2" warning "4.0.3" -"@commercetools-uikit/design-system@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/design-system/-/design-system-18.5.0.tgz#87e6b903eda359f65afe5e5da64dd5c109cefdd0" - integrity sha512-tocLjSfzHfHFGQRctH4tSOEyigAHy6rM9DADFRXTCOXrruSA63EuelAWIDttikJkZy1Pk1duBaWyzC0qNiHVQw== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/hooks" "18.5.0" - "@emotion/react" "^11.10.5" - lodash "4.17.21" - prop-types "15.8.1" - react "17.0.2" - -"@commercetools-uikit/design-system@19.10.0", "@commercetools-uikit/design-system@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/design-system/-/design-system-19.10.0.tgz#69cb8708121d5a5772a7b3b9e8c435e37dcd05f1" - integrity sha512-BI3ul4tlPhYbhP9JDMc9EhMwlbGX+h1YplFRl5LU9FWDxbl+hLPLrRPonwUnldsoTfZEJcsXHT91aI4CZIBAhg== +"@commercetools-uikit/design-system@19.16.0", "@commercetools-uikit/design-system@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/design-system/-/design-system-19.16.0.tgz#b0ce825ed7ffaba6449cc950d6cf3eb3355b7456" + integrity sha512-wkkHgGI6KaY5nZQ2D7z/2VOc9RgT0GUc4BsS+RnciZSIgB9VqVXaxaBnE1QqX+Xu/N8crSGn9eRgWORLWpt9uA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/hooks" "19.10.0" + "@commercetools-uikit/hooks" "19.16.0" "@emotion/react" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" react "17.0.2" -"@commercetools-uikit/field-errors@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/field-errors/-/field-errors-18.5.0.tgz#91e7e30d64756efea3d2c12fd4fa3e93b6572ca2" - integrity sha512-LqKFdLzpY7I1ZKFcMQvtUBTMzPuyuwiGodb6ZzUtw4zNcIRit8fNb37Vrjx4E3G4DxDBdf5NbRvFs9Jqz8ZgQA== +"@commercetools-uikit/dropdown-menu@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/dropdown-menu/-/dropdown-menu-19.16.0.tgz#554c0c87e253eb5dc864f6f478a5069efa9fbba7" + integrity sha512-2C0cuHDkWbsyMS+pBg418uWrwrYUckrTec8i0ppRXprF6st2DOZ6vmTK3I9Vtf6hCrTa1AWcO2ZvrFprwLld1w== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/messages" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/secondary-button" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/spacings-stack" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" + react-intl "^6.3.2" -"@commercetools-uikit/field-label@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/field-label/-/field-label-18.5.0.tgz#29a42a528abaec1e7b0a83623ba3a71cbfd71cb6" - integrity sha512-CKgxEmCjYJOW9qxXtFgA8VQGAXUjFi5szImL5E6acpOaaMyX71DXq0Oz3gBhTMFbMaqCdEDzzisu16cwcFX4Tg== +"@commercetools-uikit/field-errors@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/field-errors/-/field-errors-19.16.0.tgz#2b6ecba3ff5edcaab94a46f956d305a0dd9df009" + integrity sha512-Hm85SW7qcdz2C9PX25WgpwnPx4fVugVwQjC0QGS1ZJVGlULfi0emAm0PnISK7JCuTQmTzZfD18IdWeNxO+W4KA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/icon-button" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/label" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/spacings-stack" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/messages" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" - react-intl "^6.3.2" -"@commercetools-uikit/field-warnings@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/field-warnings/-/field-warnings-18.5.0.tgz#26595feac859119cdf4f6d4b878e6ed437acf187" - integrity sha512-auBAIZlaR/yKUxyucaWOVKirm/J3JDh1DepwXgN+O87Ya9MTWrQbl8Y3jb5+A0RQb+r1RRUNO39eBJUE4BFOMA== +"@commercetools-uikit/field-label@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/field-label/-/field-label-19.16.0.tgz#d7084e3bca033e486e7ea4a7d02b10cc71da3874" + integrity sha512-jCjBV4vjXMuPPcFIpjAWdgbl75a1B3hafD0pZU4xs9NGeQSYf8YqCsqA7FmCdQ9KO5Hpr4NLd8d6QOHrALXn1A== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/messages" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icon-button" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/label" "19.16.0" + "@commercetools-uikit/secondary-icon-button" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/spacings-stack" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" + react-intl "^6.3.2" -"@commercetools-uikit/flat-button@18.5.0", "@commercetools-uikit/flat-button@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/flat-button/-/flat-button-18.5.0.tgz#3e2a9d82bdc86641444d8ce781e2b47b3ec09738" - integrity sha512-zhDr+T7hXfjn61THSflDR/sR80LiGB0O1D842d4bVv1gd5AfdStVZ2Pz/MjxPfbOE8fdHFScNKFByuMgzl2pDw== +"@commercetools-uikit/field-warnings@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/field-warnings/-/field-warnings-19.16.0.tgz#7e86ca68ada6a4c3ffa0f6c9539410b3193138f3" + integrity sha512-2Q++tBFouUeZm9ulWUrwsGrOpqkOKfodq2LHjgqSj3HCTL2zMK9ZA+tNCTI0iNn99fMvS8jrVq/fpCAj2EvdZA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/messages" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" - lodash "4.17.21" prop-types "15.8.1" - react-intl "^6.3.2" -"@commercetools-uikit/flat-button@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/flat-button/-/flat-button-19.10.0.tgz#78c51c25d56aee2011f953d8145e9ec6a10589c8" - integrity sha512-b+mMQwn/CaH7Qg/LMMjYEgzBTLkm2eJO2PPSwEUlWcauleXSPnwWCN1BUjoTB2zsdJpT/iWpouEMx8ciyutkbQ== +"@commercetools-uikit/flat-button@19.16.0", "@commercetools-uikit/flat-button@^19.16.0", "@commercetools-uikit/flat-button@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/flat-button/-/flat-button-19.16.0.tgz#3c5b7726f485037c71aed7be8d1a17e36aec4f32" + integrity sha512-Glkz0nm2YteZ8QftH2fQFTsJ38C0PB3CBxn039UzJfgQpWSZSEHiEBFVBRt4A0Jc54yP7y5tn1YABgZXJHH7OQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/spacings-inline" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/grid@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/grid/-/grid-18.5.0.tgz#5533effdb900b07c978bddd218e76ec3a4759669" - integrity sha512-gQB03NxaUP2MFQnD5p6EiqomfHCut17mRZStKEKsSZinD/wXAx9yROm3lSzfnqqW+qMsj5ieT1pM1Qw6EUlpFg== +"@commercetools-uikit/grid@19.16.0", "@commercetools-uikit/grid@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/grid/-/grid-19.16.0.tgz#16a8f3327c8979e26aa0f4e41b48d5196a936cf7" + integrity sha512-bD3bcbxsoQbcL2N7U7zKV4qB1qkLfjyzCs6vLRGbI9ulSgVvzI6p9nICNRoL9Vm1fw2TjddGJeK6S4hmIuV1BA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" @@ -2167,177 +2134,117 @@ "@emotion/styled" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/hooks@18.5.0", "@commercetools-uikit/hooks@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/hooks/-/hooks-18.5.0.tgz#d5944ba4c87252fc5419c913ae8ddf165cf9d9d9" - integrity sha512-rsCkuy1s1iZIpTiKnzl63xcThSr+gS6jTL7Vw1Pz4wUZbTY9n6WNEOBZfYJXAEQJxAhSMxshWCTivZbx1xC88w== +"@commercetools-uikit/hooks@19.16.0", "@commercetools-uikit/hooks@^19.16.0", "@commercetools-uikit/hooks@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/hooks/-/hooks-19.16.0.tgz#fc2ade04dba28689050fded6abc74d684d94de68" + integrity sha512-3cqSM6v2u5tRzTom9voZnkw8PKum/ao6WD5iU9JesgUwhIXYLVmt9snr3hfOMqGsNosACNAgUEPRac7rRSgS3A== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/utils" "18.5.0" - "@types/raf-schd" "^4.0.1" - lodash "4.17.21" - raf-schd "^4.0.3" - -"@commercetools-uikit/hooks@19.10.0", "@commercetools-uikit/hooks@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/hooks/-/hooks-19.10.0.tgz#3572ecee82ceb1d4b970af21c5862330b980b13d" - integrity sha512-U1qEnYt0uB9vmTEiDba6nJrIbPaUDeA2o7zgoEl62l/TIiu5vrv4DGPpIHh1pjrH8X8BLo7PXmChAh+XLm0yJA== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/utils" "19.16.0" "@types/raf-schd" "^4.0.1" lodash "4.17.21" raf-schd "^4.0.3" "@commercetools-uikit/i18n@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/i18n/-/i18n-19.10.0.tgz#222e5a455b688ae4d0ccb966a7bae9d929306644" - integrity sha512-k09Edrk3t4qBTQg4K+azWEQcskojDMWbxkKqYwlmQ93BvaiAA6bJPX0nbC3z7FeblZS1trqZI/geliAVfcBZNg== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - -"@commercetools-uikit/icon-button@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/icon-button/-/icon-button-18.5.0.tgz#5e75f1bd09058ef3fa5920adee9a78c937b353c3" - integrity sha512-sCsDuGXtcmkK1/y3vCDt2e+h7mdZQXg3wApgzS35Q7avOiCokmDAEegZRnBeAV20zngZpUgHaOOeT/DgLTlaPA== + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/i18n/-/i18n-19.16.0.tgz#71982af98b2ad1b89920cc429623b195d14feb0a" + integrity sha512-o8gKkPLiGnNHhcRRZBXeIsImIP6o95SRZ+eKNEDmWtcCW1nCBspJeXfg4K3KcddInMxh5y1q1cGJ556A87CN9w== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/spacings" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/react" "^11.10.5" - "@emotion/styled" "^11.10.5" - lodash "4.17.21" - prop-types "15.8.1" - react-intl "^6.3.2" -"@commercetools-uikit/icon-button@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/icon-button/-/icon-button-19.10.0.tgz#0b302a3272b164025b97dfef370aa6196d75dcfd" - integrity sha512-PyXnQkrWCyIepu0KvxXFclbUdbxDJMYtU+2BxbEjJkGWKshyCcfB7eV0kNhAyKNiBtc8Db163gaDn9G5JIbzsw== +"@commercetools-uikit/icon-button@19.16.0", "@commercetools-uikit/icon-button@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/icon-button/-/icon-button-19.16.0.tgz#e738715429f39a06563fa5b4bd13326814592520" + integrity sha512-6QZHOmchvjyZRApyZiN0qLqC2Qb4RrYHDG3522/INYcsAXgUS9scgbzw6yvwYfIpYMI3p+sUm68GKpkNmAvLpQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/spacings" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/icons@18.5.0", "@commercetools-uikit/icons@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/icons/-/icons-18.5.0.tgz#ab47525a2da15a85a0d11e74efaed7e18c11fef7" - integrity sha512-VI40UVABLrJO1MwJdiMcvBkaZVl7xYK0JNlNXoxa143w1ZsPxcT/Vy5bcRn/uHDVL6EQRG4S4tl/8fEMkpMteQ== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/react" "^11.10.5" - "@emotion/styled" "^11.10.5" - "@types/dompurify" "^2.4.0" - dompurify "2.4.7" - prop-types "15.8.1" - react-from-dom "0.6.2" - -"@commercetools-uikit/icons@19.10.0", "@commercetools-uikit/icons@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/icons/-/icons-19.10.0.tgz#ed489e924c077a363664b3d95f737066b2f85090" - integrity sha512-le959+zYiZNLNPOUQSv3frPm9z5E95roJkovfqzGIoNPi6X/4W8OH+PgK1Q5cpC7wzDNwmfLRJkSDWOAHJGzcQ== +"@commercetools-uikit/icons@19.16.0", "@commercetools-uikit/icons@^19.16.0", "@commercetools-uikit/icons@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/icons/-/icons-19.16.0.tgz#834424ee70abff13b27e9f9d9a261dc896492871" + integrity sha512-ASEMBWm4mbsZPz63XaawIrASbmLif8N6YTlSk1KWL9y1UI/8HrtJNtgZOX67PHM897luoc5cC8XdP7KkG7pPfA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" "@types/dompurify" "^2.4.0" - dompurify "2.5.5" + dompurify "2.5.7" prop-types "15.8.1" react-from-dom "0.6.2" -"@commercetools-uikit/input-utils@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/input-utils/-/input-utils-18.5.0.tgz#615c9dc022326f5c47b61e0eaf17690ef1abaa61" - integrity sha512-yL6+E32vVA+DqZyODrdhJAtS3sa9xnS2j9NvLjgxogMI+ZDszjwM3QJIX6uNSlPrSXpI9QI+xjVhlABuNmSYwA== +"@commercetools-uikit/input-utils@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/input-utils/-/input-utils-19.16.0.tgz#2d1bd091f92459dd96d92c5acdc5c217acc3e2dc" + integrity sha512-KH5u5jKeIq7p3Par6D0FWMu/ucyK9KtaIKXxGzdTi+4JAPAeMTL4g/qGoYtooIt3MfbcsZi5GCFjszZHZFMGKA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/flat-button" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/flat-button" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" prop-types "15.8.1" react-textarea-autosize "8.4.0" -"@commercetools-uikit/label@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/label/-/label-18.5.0.tgz#4cf6be2b0e6f724ef0a1e8b1650d9b5b888e9035" - integrity sha512-McEPWyCdfO3OZO9QkxdAU6yKoaQ/lMk07JeOvAk+83iBf9Xu5+FPE8UmCwfgKB4UAvuniiQ37hdw3VbWVKnoIw== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/react" "^11.10.5" - "@emotion/styled" "^11.10.5" - prop-types "15.8.1" - -"@commercetools-uikit/label@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/label/-/label-19.10.0.tgz#f8e8ff9dd79c5d2648430566969a66b7a640a9ad" - integrity sha512-NPefW5iQuT/oBizvdJR+V2vs8o94nnGpxr9xZFBhQCfdJh+7/p/KDAZNUr1e8hAwYwZ2y5CcT4t+coQfa6/wsQ== +"@commercetools-uikit/label@19.16.0", "@commercetools-uikit/label@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/label/-/label-19.16.0.tgz#4a9fcfa233a88190ec502c8171f9a87447a57f94" + integrity sha512-1M21mSQ7Qw79PiGDpg4WJJgDg/JvltSEm3bCjmJcMh745r+qjCgEW40l0UEcjgnuekADeN/RWbiI23WoBB6zlg== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/link-button@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/link-button/-/link-button-18.5.0.tgz#d814cea8999139cc2b7a62387c5b0ffcab2f2cb1" - integrity sha512-oU8yyIzOBraH2viLbla835DwlBoXcVilDmD9lvGwlRf1+5UaYRtNpMJ/n74lF/J94KucNV4PJLUd9AlK3eA/7A== +"@commercetools-uikit/link-button@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/link-button/-/link-button-19.16.0.tgz#f696a9edcb812a617b4adacc6a8ee45a95d13c09" + integrity sha512-yLMuvMtgsgFax8SFmiBR4FuIsM3UK99a492+fO0BcrA6g8ncj6/PcqGBi9Ydh9S0CzVeVwA/cihQUtGBXbVcyg== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" -"@commercetools-uikit/link@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/link/-/link-18.5.0.tgz#27aff47d067ffa6cf425ae1122823422706b52d6" - integrity sha512-/wAP+xiKwoOydopDYQzNMvck1pOZLduLcy8G86kVkVCRq5aQ7Rus4zypFM4jouEfOiveGO3b9/0cJOYl+Wj0Dg== +"@commercetools-uikit/link@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/link/-/link-19.16.0.tgz#108729879b7fdd594c8021fafaa98fa2866118d4" + integrity sha512-kxS7CWkHkoiH8f2H41Ud3RyGO1iIYeeuKXDBWuU/rbRXYLvSYOQex568g99WXH3sADKcYsZhxSum+nCAuxkkBg== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" "@types/history" "^4.7.11" @@ -2345,617 +2252,467 @@ history "4.10.1" prop-types "15.8.1" -"@commercetools-uikit/loading-spinner@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/loading-spinner/-/loading-spinner-18.5.0.tgz#394f01997a1cb58056338f50c0fe8b97d6910f74" - integrity sha512-DXhs2kBFxQvK7f0eFNktjg0UFwSHwznKmVS92a0pmGJJGnu5ih+sQf5HZ/ZDKCCkZf/NTfKPJzBnMDNSye7Fww== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/react" "^11.10.5" - prop-types "15.8.1" - react-intl "^6.3.2" - -"@commercetools-uikit/loading-spinner@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/loading-spinner/-/loading-spinner-19.10.0.tgz#01a094d3193497abdcbf65fb0b463f4210cc1cd8" - integrity sha512-bEmSfV/lFjHCqWIz3UbqG9WA/Us1poLcarj103jJ3JLJitMQmazN3bStpx/YvwssZ99MPmOS/XHIEjeoj3Piug== +"@commercetools-uikit/loading-spinner@19.16.0", "@commercetools-uikit/loading-spinner@^19.16.0", "@commercetools-uikit/loading-spinner@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/loading-spinner/-/loading-spinner-19.16.0.tgz#46e8074faf21862e604dbf7e207878157294a1cd" + integrity sha512-9FRa/JLGbZrN0eFaHbovhCQRjS3c7npXs5hHyQy9riunGmft2SIfyPsRU4OgalcyDWU7pgZOg9ESsf6m0eBZEw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/spacings-inline" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/localized-text-field@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/localized-text-field/-/localized-text-field-18.5.0.tgz#fe79c9022265ee874eb62ce9b9c064c47f7bbef2" - integrity sha512-Rft+bnfx7x8GoMaJdEcmPcsS17kHncbK7373T9KugIEf6DN+aC57z11thj0ermuvfl9pj/hlp4RyKnTyXIsS4g== +"@commercetools-uikit/localized-text-field@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/localized-text-field/-/localized-text-field-19.16.0.tgz#8e74422d171c18afb93b2b0e4dc5dc421d0506d8" + integrity sha512-HrbBTQ12nbZAIJlMg1dpdl7A32KTdWleS5bdozzwAd5R+jKSszoJRQfew0wa/Xr29cjzab3PHvUPMBk0FpZ2wA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/field-errors" "18.5.0" - "@commercetools-uikit/field-label" "18.5.0" - "@commercetools-uikit/field-warnings" "18.5.0" - "@commercetools-uikit/localized-text-input" "18.5.0" - "@commercetools-uikit/spacings" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/field-errors" "19.16.0" + "@commercetools-uikit/field-label" "19.16.0" + "@commercetools-uikit/field-warnings" "19.16.0" + "@commercetools-uikit/localized-text-input" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/localized-text-input@18.5.0", "@commercetools-uikit/localized-text-input@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/localized-text-input/-/localized-text-input-18.5.0.tgz#4043ef1c8e772a953ba808a52263df1277845665" - integrity sha512-utflOpCMbpnFi3TpW9JDm7mQxBa/NidP6QQZDG0cUEvVbyCm+5/SuVccZtnevnxxXfpD8Crk4ER5RfrZ0Zhdwg== +"@commercetools-uikit/localized-text-input@19.16.0", "@commercetools-uikit/localized-text-input@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/localized-text-input/-/localized-text-input-19.16.0.tgz#4a55b419a8856fa3b3a8b9e5f88af52e3fc2a2be" + integrity sha512-2R0HuxrS2NmoIGJroyFnn4BQMyeWwPSKld8Wgb8xxll+GdaSA/bZy96wl9EvseghMP+mVokgrw3d1zObITUMEw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/flat-button" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/input-utils" "18.5.0" - "@commercetools-uikit/localized-utils" "18.5.0" - "@commercetools-uikit/messages" "18.5.0" - "@commercetools-uikit/spacings-stack" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/text-input" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/flat-button" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/input-utils" "19.16.0" + "@commercetools-uikit/localized-utils" "19.16.0" + "@commercetools-uikit/messages" "19.16.0" + "@commercetools-uikit/spacings-stack" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/text-input" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/localized-utils@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/localized-utils/-/localized-utils-18.5.0.tgz#00c28af810dbb9f5e4dd5c068efd4e196649fb23" - integrity sha512-2H0poskSAJltvGzpjfWdzWg5Y++kDoStXxQ3Br4xlL61372dWfoPlSFH3++HzRzBuraNZWoMGgxWK+BdoY529w== +"@commercetools-uikit/localized-utils@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/localized-utils/-/localized-utils-19.16.0.tgz#278f38863edca473bf8cfc257d00be0a6937a0bb" + integrity sha512-ymbo+KK9WWYpnT0HgkPCPwUkcZff+irNczZnl0jkW1v3zQKivNWhbPHPoG6giMzsGWBmA0PZ8LOLBdhFVekoOQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/utils" "19.16.0" lodash "4.17.21" -"@commercetools-uikit/messages@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/messages/-/messages-18.5.0.tgz#7a87a91e2013532549a6980542b1d4737027163e" - integrity sha512-ck3DdPDq09NLXK+cMWWZefCPGElUObhaR8ffPNAxDgjxw/52sDoidxMqlcutbTU0x50OJ74v9XQLJgetdl8vxQ== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/react" "^11.10.5" - "@emotion/styled" "^11.10.5" - prop-types "15.8.1" - react-intl "^6.3.2" - -"@commercetools-uikit/messages@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/messages/-/messages-19.10.0.tgz#e165933ee6c17c834d9b7d852ba09ab67fbb32d6" - integrity sha512-ALi6QVbH0RmPIQlX3gCxjMPPaPHmfoWjztXjOgmL7e5iNIpGcs4jlii+4bVGxB30qDfy2+4UlWeQwef+7kxInQ== +"@commercetools-uikit/messages@19.16.0", "@commercetools-uikit/messages@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/messages/-/messages-19.16.0.tgz#48177033df1dd20f4255a90d42c297ac9991870d" + integrity sha512-a4kRJKvx0ifNs2Qcr+P+DL6M/51OamPyCan9KVw1VD6wGjW5a3tr+Zp5FvOB3IqCCe5XI2vc8aqWujmM40Z/gA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/money-input@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/money-input/-/money-input-18.5.0.tgz#1ba914d3e1d4280774cf4810bd3bf2aa17723e07" - integrity sha512-IsUvFJTIT6LIhZA9HlN4vUIO3tJWm3kpdNi+RUdTjWOs1efe5NB3+0R7ivtqZX1o1NPsA6pSK5QL5qz8iooR1w== +"@commercetools-uikit/money-input@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/money-input/-/money-input-19.16.0.tgz#4ba93a257ec33a14357327f8c744f4dfffce86eb" + integrity sha512-VWtwHhhuPo8b6+SJ6pqv8A5d+FTfRQ9nxqV2+zhDmlk/QmZmCTZKjD6oyDoquJOt+7FbKVkb4AqrVgvdXRWhKQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/input-utils" "18.5.0" - "@commercetools-uikit/select-utils" "18.5.0" - "@commercetools-uikit/tooltip" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/input-utils" "19.16.0" + "@commercetools-uikit/select-utils" "19.16.0" + "@commercetools-uikit/tooltip" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" - react-select "5.8.0" - -"@commercetools-uikit/notifications@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/notifications/-/notifications-18.5.0.tgz#9cbeaf7a8e2acbdc9dd75aa5459d27376312b780" - integrity sha512-zA03FQBhi+o13ufFXKuWCdgVyZGO6UJuEwiixI4jc0c/7G0aVvq610yXhgI5hMcudBNbb7qAqOxSxOA1Y6gyWw== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/react" "^11.10.5" - prop-types "15.8.1" + react-select "5.8.1" -"@commercetools-uikit/notifications@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/notifications/-/notifications-19.10.0.tgz#fb02265878f5d2c8749ac8f62d81e59c8cc0a04a" - integrity sha512-z6Of6bW869mxc+Gg6ySGX4JC9dooqIOdkLuHsB4RruaLOcEh4+RZCAI11dAt+NqSdV8r636AvxhhML4kY6GRfQ== +"@commercetools-uikit/notifications@^19.16.0", "@commercetools-uikit/notifications@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/notifications/-/notifications-19.16.0.tgz#ba0132148f41662b7136559ad2d104d7a9477194" + integrity sha512-MTvbBp/LTktsyrCbB5hGb4NIQMc1FEXsofvH+m2J+XzAfL9faYrGOOxGobiJ7ltBSyMGHR6FhObQYdgSHYw+mQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/icons" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/number-input@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/number-input/-/number-input-18.5.0.tgz#51ff805a306450798a0c6adcb3b6e2da3e441d28" - integrity sha512-Sfvgs9J+q/dHvo2iX19EGxsHYeAxC0VgZm4kgPpMW0yt+mCo8kF1coqX8OYjqWK84L5dFf9HktfCUz6NctnI9w== +"@commercetools-uikit/number-input@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/number-input/-/number-input-19.16.0.tgz#72753900b9d4ac2f78d8f770f19c5ef752a27808" + integrity sha512-s7cAz94pfss79sKX+vqtH6EBKr1VzNKd+0k+bG9BP/uN43qG9T1iSo1d5Vr3//2K/K2SWmgvxFWXasr/G7Oh5w== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/input-utils" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/input-utils" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/pagination@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/pagination/-/pagination-18.5.0.tgz#ad42ce3cbb0c03a1560da764b6e2da63b27c5589" - integrity sha512-gRENZFTe42trFT5drMyCzXW4oqpcFsIZtwyGjv9W0oWOWuX9yTP/Cj5P+CJuyD3IkdBlkCZVmk00qPz6YY0jxA== +"@commercetools-uikit/pagination@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/pagination/-/pagination-19.16.0.tgz#3e0bd33d25e941cb23fbf42948a3e47d955a2511" + integrity sha512-ku/mVfxIy2fImDCdgje0VXJgUQNyl6Fu+uK24RazcSfzhNms2Z3JNpv/wMH9dLIy6UvKHUlIIOPM23Z8lyJrpg== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/label" "18.5.0" - "@commercetools-uikit/number-input" "18.5.0" - "@commercetools-uikit/secondary-icon-button" "18.5.0" - "@commercetools-uikit/select-input" "18.5.0" - "@commercetools-uikit/spacings" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/label" "19.16.0" + "@commercetools-uikit/number-input" "19.16.0" + "@commercetools-uikit/secondary-icon-button" "19.16.0" + "@commercetools-uikit/select-input" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" formik "^2.2.9" lodash "4.17.21" prop-types "15.8.1" -"@commercetools-uikit/primary-button@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/primary-button/-/primary-button-19.10.0.tgz#42cb850d3ddaa34f941a8c276c1752033e7c3fab" - integrity sha512-jf8GXjXB9g1UFxXNCt84SceQvBiI4ob+k04vR9w34PzT1psFt3z9TEMeKzcrxF9WpuUa+SNRydZAbyCqCB2Vmg== +"@commercetools-uikit/primary-button@19.16.0", "@commercetools-uikit/primary-button@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/primary-button/-/primary-button-19.16.0.tgz#80e401bd859256d3ae2a5cf6bddd953e62c7ae56" + integrity sha512-A5C81n1XOauWVRf2HoDwSa+pv1sA/F4nhJbbG5HIfWhvPYTnMSRaGmP+CzmXqGZvZg8SA35kTlqg2XcOMGgSMA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/spacings-inline" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/secondary-button@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/secondary-button/-/secondary-button-19.10.0.tgz#339d625e1d0945da070dc9af87cc0e5ec177774e" - integrity sha512-Aw8197pb+rwzd1UeUa3fSlHaBWRazfw1Wlo6FUojiyG/hVq8K0nFcNFPFdICFDTmVQh8a+zEIa3ctubqwgy/Ig== +"@commercetools-uikit/radio-input@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/radio-input/-/radio-input-19.16.0.tgz#d5004504f90fbb0ccbd19c6ac2e70618564afd7b" + integrity sha512-wFOZykVestoNzyYN5tc/nmk3HLvJdAi4eYdWBm/oC/TwPNT38MRxZ0A3vhIwcsezvbGbSpk11YUOaYzPPTaF1g== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/spacings-inline" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/input-utils" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/spacings-inset" "19.16.0" + "@commercetools-uikit/spacings-stack" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" - lodash "4.17.21" prop-types "15.8.1" + react-is "17.0.2" -"@commercetools-uikit/secondary-icon-button@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/secondary-icon-button/-/secondary-icon-button-18.5.0.tgz#6e15b86f318b03ccc363f54169fbcaa32846bf45" - integrity sha512-8zKmp+ZVZKwTobnh8sr8Y2HxWDEAolGtyOLOowkgnqPibWQExT8T3n99ZL7TtS4IK+PyGlD5ol5o+WbHAqLBgA== +"@commercetools-uikit/secondary-button@19.16.0", "@commercetools-uikit/secondary-button@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/secondary-button/-/secondary-button-19.16.0.tgz#12cf71eb607df61c655302a2f3292c7a4b8f6bcc" + integrity sha512-QzrOJZ4VzvOEfRP3MC0f/aXXSp10/0vVer2x+Ghh/NkFfcXx8UbZYZusQ7TP2SMMOzV50ItQQQs+4VvZyLAIrw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/spacings" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" - react-intl "^6.3.2" -"@commercetools-uikit/secondary-icon-button@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/secondary-icon-button/-/secondary-icon-button-19.10.0.tgz#01a6bcce77c60254fb21802295916c7ceb468201" - integrity sha512-j42XEuOfAfz96ptvZhzhZp1t1UQ96AEWbZpttlke/bnwjYjc7Jb/bw3+GeGKSJrtRjOqsfj1Iy7uh8Jm8VMZbg== +"@commercetools-uikit/secondary-icon-button@19.16.0", "@commercetools-uikit/secondary-icon-button@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/secondary-icon-button/-/secondary-icon-button-19.16.0.tgz#5698dc537bc765718c716bbf6e9f5d79e8fdf420" + integrity sha512-+K98Kv0hQSo8sysWtseHOosLQlG+HFiWRqG6xOcySlIyXdvB38pZ3npnLXgzfIOgJ/WMeQDxpyugqoIqKALn8w== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/spacings" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/select-field@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/select-field/-/select-field-18.5.0.tgz#fcb9c9bbbc172b22506f6ab5a6abdf7d9ac9659f" - integrity sha512-ZubyBp7jOvnrzEeaP2SgR68BRRFOrAj9yArXMWQPe9d5P3mZdoX+KBd626Hqk+jcuNDs7ROJdHo/BcmmRNLGsQ== +"@commercetools-uikit/select-field@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/select-field/-/select-field-19.16.0.tgz#b3dec5306d564a254d872a6f2a12d29256bee36b" + integrity sha512-Yf3NfcpWJcBElfc/vnU5AuWxxk3cEWfYeJ9EjZOrmFL7N9HvDgzkNgNehfh2cLfWA5rk6jNmy2AG21j4x+citw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/field-errors" "18.5.0" - "@commercetools-uikit/field-label" "18.5.0" - "@commercetools-uikit/field-warnings" "18.5.0" - "@commercetools-uikit/select-input" "18.5.0" - "@commercetools-uikit/spacings" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/field-errors" "19.16.0" + "@commercetools-uikit/field-label" "19.16.0" + "@commercetools-uikit/field-warnings" "19.16.0" + "@commercetools-uikit/select-input" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/select-input@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/select-input/-/select-input-18.5.0.tgz#2dd9923a0ff327847daac5a93ae3d54df26a5633" - integrity sha512-Cvp/Jy28YIXXARCa6iCBDkvkp6QQGIp0vDnWVnkta6PFscL1QyGKHv1P10KoNsXKLlA7YoRNfPwfUunsVzX1pg== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/select-utils" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/is-prop-valid" "1.2.1" - "@emotion/react" "^11.10.5" - "@emotion/styled" "^11.10.5" - lodash "4.17.21" - prop-types "15.8.1" - react-select "5.8.0" - -"@commercetools-uikit/select-input@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/select-input/-/select-input-19.10.0.tgz#b30367103d031740f7e4018536078268f463beb7" - integrity sha512-9tgAqLXDW8UACCkgIEt1ApsFTrS8S1IqoBcf07tuIP4x/LdAlq6OKRnd00FSmO4E4/3bsxCIMsFd508MqAMzUw== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/icons" "19.10.0" - "@commercetools-uikit/select-utils" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" - "@emotion/is-prop-valid" "1.2.2" - "@emotion/react" "^11.10.5" - "@emotion/styled" "^11.10.5" - lodash "4.17.21" - prop-types "15.8.1" - react-select "5.8.0" - -"@commercetools-uikit/select-utils@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/select-utils/-/select-utils-18.5.0.tgz#bc2d788e3d2d355ad0112c927559ad7cb38b30e5" - integrity sha512-kjHRYkGLgmi8DrXag+LU/5d2Qmz+5UMX8zyS7K/IPcBgJ/rbuX9/yN+EXSA2KogWczHegvbWhYldc6loiGAf5g== +"@commercetools-uikit/select-input@19.16.0", "@commercetools-uikit/select-input@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/select-input/-/select-input-19.16.0.tgz#6167da125154265fb8615317e2f60d5865897c6c" + integrity sha512-OYwgmbq6vlX4dau821Bq/uyBk2j4nHCcdfBlwwy+mQ2q1D85B70Jx2m7mHKcQ60hpUtlAij0QpIj3dg0BxmxdA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/spacings" "18.5.0" - "@commercetools-uikit/text" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/select-utils" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" + "@emotion/is-prop-valid" "1.3.1" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" - react-select "5.8.0" + react-select "5.8.1" -"@commercetools-uikit/select-utils@19.10.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/select-utils/-/select-utils-19.10.0.tgz#d6fa5ec32769716a62ef585e2393368add823c82" - integrity sha512-MTm3tX/nABFnnlH/iUXyhyvOoaaYC94oSRcN5e3zjQV3IcDx6HRXmBgztTReLMTNwMPTIJcuycQB/a5Wmap/sg== +"@commercetools-uikit/select-utils@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/select-utils/-/select-utils-19.16.0.tgz#ba1a5587aca839163fac46cd80b45b5292c4d923" + integrity sha512-GTOO4ShjcT7l9N0vqhap1hpRHnMis8yrPMIXP3h5hoD25T7j5n5knh+jINhivMRk9j4+kUA/tqTlme6k7EvZmw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/icons" "19.10.0" - "@commercetools-uikit/spacings" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/checkbox-input" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" - react-select "5.8.0" - -"@commercetools-uikit/spacings-inline@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inline/-/spacings-inline-18.5.0.tgz#80b105d79ac7d2a7a2b1e871e32fafd2460b644e" - integrity sha512-0tkuG7Dhu4i5oSiMJ3CMpzyx/vTiROICXXgSd5bxrvUyNe2OLfHlQIqIrEmslTWfs5fExS/8W6obqA0PudH6TA== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/react" "^11.10.5" - prop-types "15.8.1" + react-select "5.8.1" -"@commercetools-uikit/spacings-inline@19.10.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inline/-/spacings-inline-19.10.0.tgz#1c3b21ed0620bc00677a0833890ca1c3bafd6120" - integrity sha512-Py7yUA5nr4+WxixkoCPyqelF8NWD9WTb5rUSXeTACxnzuGDaeUDyOuoAfaHk4kOM8RM4hDqLIjokPIeXdmkHnw== +"@commercetools-uikit/spacings-inline@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inline/-/spacings-inline-19.16.0.tgz#5bf671da5a977558e8245b64cfa32b662cf4c137" + integrity sha512-zmK4WgotHEBXvrwbHBzP++fiK/lV9luQYV3G1de0YbwMf0tXWiT38uNX+RLVhvjbFgD2lxyGQs2PdonoRMwCFw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/spacings-inset-squish@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inset-squish/-/spacings-inset-squish-18.5.0.tgz#b6e32785305a1b2c2db0ecbb6b315afe38c77d0f" - integrity sha512-GTc/iq07+oaDSG7UFUMN3BFSYRYILRVlgT1Q/8HGmQt7ldnhpUZ2TembCQqRNIVN7Rb8YiqmZsdG5SqwptC6iw== +"@commercetools-uikit/spacings-inset-squish@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inset-squish/-/spacings-inset-squish-19.16.0.tgz#9e1d51737b9cfd631fd5cc007ea175858dbbcb30" + integrity sha512-Owar8Ov8+8F2Co6yrsCVTZoGpri2UxqADTpcjcivgsDlJkj4/GeHRthAN4GfVay1fQBefUpx2ueaDvLtBiyeQQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/spacings-inset-squish@19.10.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inset-squish/-/spacings-inset-squish-19.10.0.tgz#751b3ac6e76bb76fa4383b86ca3dc8f3a0ef31f1" - integrity sha512-JbcJGVJVIDbcnm994uToG+qrvJRHfo4Lvt6MFcw8PUEhXFVvIVWpRfNGoby8KGX9xide4hPSZoXMimkjRl+J/w== +"@commercetools-uikit/spacings-inset@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inset/-/spacings-inset-19.16.0.tgz#a86170ad5635c2c676c1b4b2e755ae5fb8a115e3" + integrity sha512-496UQMqyXnZ44hdRPfPobOgknowaqFgSqFdAuWxt2Pvgi81pA0GZy/54LMeXCAfrNRGPNvLIOHlI83f2aJ2DOA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/spacings-inset@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inset/-/spacings-inset-18.5.0.tgz#7697a45055ab5d8c72abecbee4ef2b3852853923" - integrity sha512-5C9ychAChYFe9jGvpPhtDkdsTN7whxfZ0h2wPIGoAAF55Vo1STTqisRMB8yPw2Z0qGs4UJODEsFF8qpgaLGPKw== +"@commercetools-uikit/spacings-stack@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-stack/-/spacings-stack-19.16.0.tgz#6803847446014b2ad1e3caa948c1734db9de674a" + integrity sha512-lrUaG4X6E2An1PU5E7ZrJ9Oeg1Ey+0oIRhTe18+Qdb5VhVbjyjnaU41z+fAibVjrkQxCzw3HYYhPaLoU+qej9w== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/spacings-inset@19.10.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-inset/-/spacings-inset-19.10.0.tgz#cb0d46476e6517a3b6288c9bf1f10d5d18fddb5a" - integrity sha512-4rMJhu7L3nTSO4igxY8BzLRjyG9K1BrBLYlzetqjf00+7nCTysESiJJD7rCPwOcbzIQZDrd7JmvNDZXZm++lTg== +"@commercetools-uikit/spacings@19.16.0", "@commercetools-uikit/spacings@^19.16.0", "@commercetools-uikit/spacings@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings/-/spacings-19.16.0.tgz#a5e78071c4bcde64ed0f34a63c6b9b13f0055783" + integrity sha512-fzEZv0wJtFJTaIyIT1VrFPd2AOwsOcthw8c/pN5+uHpqLPGHokpaY+lxoDcH/KMrzKgGdNCR/Z7a1gp8rQsCfw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" - "@emotion/react" "^11.10.5" - prop-types "15.8.1" - -"@commercetools-uikit/spacings-stack@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-stack/-/spacings-stack-18.5.0.tgz#e3bcc98e537d96a6d6a73c48d9b735c8b1c94e52" - integrity sha512-UzqoqINkRLf8kP3RA8CrThT+pFVVe7PVf+AXjNqgJxPFXOph9WWJaSmKS20OQbEbb3DCaz/Oe1+tQjTT39x1pw== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/react" "^11.10.5" - prop-types "15.8.1" - -"@commercetools-uikit/spacings-stack@19.10.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings-stack/-/spacings-stack-19.10.0.tgz#4be22e8ad8df8bdea31d60b0cd7b852ea96f457f" - integrity sha512-C/16mFBp2THrDjeyU1Y8MzOplF+gCdt2Xa6uzvH+ty005GUBNysTaecGPwFK0ZKkn+MvXVpD2/Oox5CuaFQV0w== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" - "@emotion/react" "^11.10.5" - prop-types "15.8.1" - -"@commercetools-uikit/spacings@18.5.0", "@commercetools-uikit/spacings@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings/-/spacings-18.5.0.tgz#ed0970fffb67595c94af8f17071ce1461e505dc3" - integrity sha512-raViM0EXaI2hJPArf1T6mRA2UbpDIT628WgjF9pOnqSfZGba+6SG274djeZ7Oi9I24hKBTFO3isYrcxwsT5Rog== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/spacings-inset" "18.5.0" - "@commercetools-uikit/spacings-inset-squish" "18.5.0" - "@commercetools-uikit/spacings-stack" "18.5.0" - -"@commercetools-uikit/spacings@19.10.0", "@commercetools-uikit/spacings@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/spacings/-/spacings-19.10.0.tgz#652cc7f9c14d7ce1f6499dbf54ab50e96ab5646b" - integrity sha512-FvqTe6bdPJXkB4IL8qJ1/cDU463tbK077QCacIBmVI4Z5o2ScvqRsTvFat30bkt6G3L9dA0R2utqyRCdiZsDSw== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/spacings-inline" "19.10.0" - "@commercetools-uikit/spacings-inset" "19.10.0" - "@commercetools-uikit/spacings-inset-squish" "19.10.0" - "@commercetools-uikit/spacings-stack" "19.10.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/spacings-inset" "19.16.0" + "@commercetools-uikit/spacings-inset-squish" "19.16.0" + "@commercetools-uikit/spacings-stack" "19.16.0" "@commercetools-uikit/stamp@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/stamp/-/stamp-19.10.0.tgz#366da906f2f562ec9610985e48bcc39dee28244a" - integrity sha512-4QWX/hxM9SGAAYmEba1S9aPgxqtBHJMuNP7hWo8Hfz0QfyvRUIzWqPMUX0eHQldUt8no45I2EULXEloIuOi80A== + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/stamp/-/stamp-19.16.0.tgz#967923cdc306526fac15b1c9ec6ae61e7216b279" + integrity sha512-EfTpaPIWUnxuqzZCXxueE44YCQKcxpLc42MTl/xMioFQnCU1282o0X2Iy7y0QBDz0FeO6lGWiqIaWAPYLeqQ2Q== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/spacings-inline" "19.10.0" - "@commercetools-uikit/text" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" prop-types "15.8.1" -"@commercetools-uikit/text-field@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/text-field/-/text-field-18.5.0.tgz#702f19af89a0d4c28ae6aeeed45ed8e0d894f166" - integrity sha512-uwIrj5CuDRwYkRZUPvfz+aNIfb7IJ6xSLoYpxyzI4zrWoVu4HHXThjFk2qA7HF4m4ctdQdpnc8iMib4IjPXMcw== +"@commercetools-uikit/tag@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/tag/-/tag-19.16.0.tgz#3ee3f5d02a0276112bb1d1761d9528ac4fc7a80d" + integrity sha512-yOMmtkmVMlNQI29Xc1/rcp4sUXmwkoniTnnkpDriztqQZIeS41LcGtSzPMY1pIb5LCA4D4iZrqrubSkNW9pA/g== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/field-errors" "18.5.0" - "@commercetools-uikit/field-label" "18.5.0" - "@commercetools-uikit/field-warnings" "18.5.0" - "@commercetools-uikit/spacings-stack" "18.5.0" - "@commercetools-uikit/text-input" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/spacings" "19.16.0" + "@commercetools-uikit/text" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" react-intl "^6.3.2" -"@commercetools-uikit/text-input@18.5.0", "@commercetools-uikit/text-input@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/text-input/-/text-input-18.5.0.tgz#e61bcdeefa99367096c22966cda40f1f7351172c" - integrity sha512-KJ1wxms5HHc3vfLkHDNSJBNjF0ZeRbqI7nX/VQLgfWMdDB3ovB5WgMmCAzkiF8fsR7idekJK0NzEb2WtWbSBIg== +"@commercetools-uikit/text-field@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/text-field/-/text-field-19.16.0.tgz#49751c4e19ceca5c4e0abc48943420c9cfbf9393" + integrity sha512-lJqR7A0kNUhTRS7EFtt4S1UvKlLvltA4yIoEiZJ5DAm7jx3qzvUIozx3OoOBDHhIMYHlvUXwLEoS1MPS/W2KSw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/input-utils" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/field-errors" "19.16.0" + "@commercetools-uikit/field-label" "19.16.0" + "@commercetools-uikit/field-warnings" "19.16.0" + "@commercetools-uikit/messages" "19.16.0" + "@commercetools-uikit/spacings-stack" "19.16.0" + "@commercetools-uikit/text-input" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" prop-types "15.8.1" + react-intl "^6.3.2" -"@commercetools-uikit/text@18.5.0", "@commercetools-uikit/text@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/text/-/text-18.5.0.tgz#b70d9d28082e39874a054ab3b66d3ec04cdd0157" - integrity sha512-SWbQZTMFhJgd/91iigLGMeg4eIaFqDH/fDj4qMt+QxLRsi9yss26QtbnR1QYvF+RJXbQri3qgzXs3YxWnExb5w== +"@commercetools-uikit/text-input@19.16.0", "@commercetools-uikit/text-input@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/text-input/-/text-input-19.16.0.tgz#d05ae0de265bba0a4bbfdb1993c02d786c919584" + integrity sha512-h0WglWBCuZqT+dN2gWObM/7R3avZ/YaoZr+idtwKHGVpD59LNxacNcySJUeLYT53dAEOGwGWW+U87bg7e2hrqw== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/input-utils" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" - lodash "4.17.21" + "@emotion/styled" "^11.10.5" prop-types "15.8.1" - warning "4.0.3" -"@commercetools-uikit/text@19.10.0", "@commercetools-uikit/text@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/text/-/text-19.10.0.tgz#38860299324e423222cd0ee7a00adfc8f777288c" - integrity sha512-DXCiCZ35OreZEMqkd5rM9pKZ1SF/qIRcAs8/2X8JdK39R7gNgUajs0NTucRkZtY2DJDFm5Gba24mfLj7BTdmRg== +"@commercetools-uikit/text@19.16.0", "@commercetools-uikit/text@^19.16.0", "@commercetools-uikit/text@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/text/-/text-19.16.0.tgz#36c8c0d982da5ca63a64076ef64028e8e9a7fbdf" + integrity sha512-o7p8NbLP733YJNqpmZty1I25nNf1pBgLr1qF/m4Y6RVE3vapS3w11DLOEeimBl2vKMz/a9GpI6yOGbp/IdpHew== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" lodash "4.17.21" prop-types "15.8.1" warning "4.0.3" -"@commercetools-uikit/time-input@^18.4.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/time-input/-/time-input-18.5.0.tgz#1bf8e896d200643fb02d9fbbbd6e6548b3697111" - integrity sha512-96Y/lBjlGZHCp3q8Pnrd4roI/XhKOSF+lhANmgxKfIGCsGbldAaCrK243YmQnTc3e4cYEhEBLHabdFOMpaq+EQ== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/accessible-button" "18.5.0" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/icons" "18.5.0" - "@commercetools-uikit/input-utils" "18.5.0" - "@commercetools-uikit/spacings-inline" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" - "@emotion/is-prop-valid" "1.2.1" - "@emotion/react" "^11.10.5" - "@emotion/styled" "^11.10.5" - prop-types "15.8.1" - -"@commercetools-uikit/tooltip@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/tooltip/-/tooltip-18.5.0.tgz#28d62c899e67ef642918339fba449e95f32db690" - integrity sha512-MBu9EvSu6Q16sNY7lAS+ls9nzFyVuvShlGcjHLgpN6IMqovprqJK1PPD7XPz7SwMqSvIr7JIQo38NwzsqEr/Rw== +"@commercetools-uikit/time-input@^19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/time-input/-/time-input-19.16.0.tgz#2b96e8abe504f24b5ca9831602e2f9310975e4f0" + integrity sha512-GmIs2M6cKyPHlZgM2CzTr8Q9sARczJNeZ2IIFsLW1CNSo5OYg/D8xoEAZZNd3NJo7Bpi9AH3y/y9GFpKidqaNg== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "18.5.0" - "@commercetools-uikit/design-system" "18.5.0" - "@commercetools-uikit/hooks" "18.5.0" - "@commercetools-uikit/utils" "18.5.0" + "@commercetools-uikit/accessible-button" "19.16.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/icons" "19.16.0" + "@commercetools-uikit/input-utils" "19.16.0" + "@commercetools-uikit/spacings-inline" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" + "@emotion/is-prop-valid" "1.3.1" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" - lodash "4.17.21" prop-types "15.8.1" - react-is "17.0.2" - use-popper "1.1.6" -"@commercetools-uikit/tooltip@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/tooltip/-/tooltip-19.10.0.tgz#c0533574b0ee90b47a8133a9d23fc9658624e41e" - integrity sha512-Ihc+ef0uHMjNoX8/86khWJFOJ2Oq3e9pt6vmNHOGl3g6yQC5toNpEyhQE9T/GHaItwo7d5NtO+AWyM+7CZEt5A== +"@commercetools-uikit/tooltip@19.16.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/tooltip/-/tooltip-19.16.0.tgz#9c4a56a9fca61d71970bb3a9cb784e0f51144f51" + integrity sha512-tSlfV6UJzy0P4rMeIBmOs3Z8XVkFkwVQhZEYxpSFxL3n/qZOkBNg7isp52IKLRuHSSdRNlHet3wPuO6hzbTmCQ== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@commercetools-uikit/constraints" "19.10.0" - "@commercetools-uikit/design-system" "19.10.0" - "@commercetools-uikit/hooks" "19.10.0" - "@commercetools-uikit/utils" "19.10.0" + "@commercetools-uikit/constraints" "19.16.0" + "@commercetools-uikit/design-system" "19.16.0" + "@commercetools-uikit/hooks" "19.16.0" + "@commercetools-uikit/utils" "19.16.0" "@emotion/react" "^11.10.5" "@emotion/styled" "^11.10.5" lodash "4.17.21" @@ -2963,23 +2720,14 @@ react-is "17.0.2" use-popper "1.1.6" -"@commercetools-uikit/utils@18.5.0": - version "18.5.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/utils/-/utils-18.5.0.tgz#baa4fe9f756a057d1b21a042119e49b27331e951" - integrity sha512-khbHbTrG9K56B744lPGAwZiWXmlHwa5DFPs6ZmLg2vekGfp/6Q6Al98IPV2VRHvksxbd76fdrgcA+h2Be4ogoQ== - dependencies: - "@babel/runtime" "^7.20.13" - "@babel/runtime-corejs3" "^7.20.13" - "@emotion/is-prop-valid" "1.2.1" - -"@commercetools-uikit/utils@19.10.0", "@commercetools-uikit/utils@^19.9.0": - version "19.10.0" - resolved "https://registry.yarnpkg.com/@commercetools-uikit/utils/-/utils-19.10.0.tgz#610f1d023c3cad5507528c97bd7c439f949fd37c" - integrity sha512-OrNeVJMbQ9guZJhsO5rgu9xBw7JUGx0vWGsvR9dwX9J75maj4yUT8dvf5a30Ii2D6rpu3sNqhd/G33zGAS1ZlA== +"@commercetools-uikit/utils@19.16.0", "@commercetools-uikit/utils@^19.9.0": + version "19.16.0" + resolved "https://registry.yarnpkg.com/@commercetools-uikit/utils/-/utils-19.16.0.tgz#aa43edf4d544d76e3406dd92fa499862171aa23c" + integrity sha512-nPd86tlopUz0Sr0cVYYFH+PQ74kLoOzOy7WCf2Rb9+D8K+Cd589TgJRI1Xo7T1/RpZw2ryTbNUsPidtF+3k+zA== dependencies: "@babel/runtime" "^7.20.13" "@babel/runtime-corejs3" "^7.20.13" - "@emotion/is-prop-valid" "1.2.2" + "@emotion/is-prop-valid" "1.3.1" "@commercetools/api-request-builder@6.0.0": version "6.0.0" @@ -2992,15 +2740,15 @@ integrity sha512-kHlVST/Ax8GFpG9vpcUR5wKBGBoY2tZDA87kSC3nxhgk2+szZfv7MMMaAt0EIz2thpyO7oJv9NyPY/3XrrNIXQ== "@commercetools/platform-sdk@^7.0.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@commercetools/platform-sdk/-/platform-sdk-7.11.0.tgz#44df4574a5e02fca1cfbfb7a138f84758d034002" - integrity sha512-8vlgiK6w8NewUZ60HUDJzdNUzDp2ByO+8fAH7aUTkt+suXYbG3Jl/k8brgX8JOn2AR4k7kC8g7sEHV6JUN8KzA== + version "7.20.0" + resolved "https://registry.yarnpkg.com/@commercetools/platform-sdk/-/platform-sdk-7.20.0.tgz#6e5e484381c64dd2ca9aaf0923ee8372ea45685b" + integrity sha512-Dv/abLO3yuJmt/MT4zeqodAJhBzZZNSyULKSZCUgy42VTt6UC9Sg5Iud8ghJzezlsuTWF/VvtUP/Ow61CJeFQA== dependencies: "@commercetools/sdk-client-v2" "^2.5.0" "@commercetools/sdk-middleware-auth" "^7.0.0" "@commercetools/sdk-middleware-http" "^7.0.0" "@commercetools/sdk-middleware-logger" "^3.0.0" - "@commercetools/ts-client" "^2.0.2" + "@commercetools/ts-client" "^2.1.2" "@commercetools/sdk-client-v2@^2.5.0": version "2.5.0" @@ -3037,10 +2785,10 @@ resolved "https://registry.yarnpkg.com/@commercetools/sdk-middleware-logger/-/sdk-middleware-logger-3.0.0.tgz#4bfc7441d485b3f1046001f44200d12926accb84" integrity sha512-DhMXAA2yIch/AaGxy7st85Z1HFmeLtHWGkr9z5rX4xKjan4PHGB/IE5saAR+SNGHhs6+1Lp8vZEHDo3tFqVLmg== -"@commercetools/sync-actions@^5.15.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@commercetools/sync-actions/-/sync-actions-5.18.0.tgz#d1901c0898bd6ddb2c7bb340592671751e6954d5" - integrity sha512-JSdXQuq3OEu7zpSU9R0IbXXmF90Bxq7/yM7CNKgkzvtwZeu9jasVcyttfEAON0BPJNrwHhXNaE9WMe3WuzYpvA== +"@commercetools/sync-actions@^5.19.2": + version "5.19.2" + resolved "https://registry.yarnpkg.com/@commercetools/sync-actions/-/sync-actions-5.19.2.tgz#93cf5bd624feeabe56517299b3c54b13593eb906" + integrity sha512-9CrqaSxhZ2+TIcfr1Jvatj1Mme85rYkWtcAevrA/wqYbTkU095hQMHu1cIJ3vH4zkKXtq6ORL0k1DXVLgy8lXA== dependencies: fast-equals "^2.0.0" jsondiffpatch "^0.4.0" @@ -3054,16 +2802,14 @@ lodash.uniqwith "^4.5.0" lodash.without "^4.4.0" -"@commercetools/ts-client@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@commercetools/ts-client/-/ts-client-2.0.3.tgz#bdf2a1c9275b1331e362d9c2466ec95f09c015d8" - integrity sha512-8S/wV56cyaXf5SbSdHtYqcFhZRFlM2N/nWgyD8wh84GuqYTJDKv5N1woKNOZVvajQZsnuy3DJDMSFzLG+EuDfw== +"@commercetools/ts-client@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@commercetools/ts-client/-/ts-client-2.1.2.tgz#8b813350d06881e079bd56dccccb1321cc73a630" + integrity sha512-gTRMsrDb5XxhP7q+BJfV96QgQJrMqcQMgmKxzZwoXfnT4BwDgLW4B3fP0oJ4QX8OAZnMVgWr7GAr0Dck4xDnBg== dependencies: abort-controller "3.0.0" - async-mutex "^0.5.0" buffer "^6.0.3" node-fetch "^2.6.1" - uuid "10.0.0" "@discoveryjs/json-ext@0.5.7": version "0.5.7" @@ -3120,32 +2866,13 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== -"@emotion/is-prop-valid@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" - integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== - dependencies: - "@emotion/memoize" "^0.8.1" - -"@emotion/is-prop-valid@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337" - integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== - dependencies: - "@emotion/memoize" "^0.8.1" - -"@emotion/is-prop-valid@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz#bd84ba972195e8a2d42462387581560ef780e4e2" - integrity sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ== +"@emotion/is-prop-valid@1.3.1", "@emotion/is-prop-valid@^1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240" + integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw== dependencies: "@emotion/memoize" "^0.9.0" -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== - "@emotion/memoize@^0.9.0": version "0.9.0" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" @@ -3166,14 +2893,14 @@ hoist-non-react-statics "^3.3.1" "@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0", "@emotion/serialize@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.1.tgz#490b660178f43d2de8e92b278b51079d726c05c3" - integrity sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA== + version "1.3.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a" + integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA== dependencies: "@emotion/hash" "^0.9.2" "@emotion/memoize" "^0.9.0" "@emotion/unitless" "^0.10.0" - "@emotion/utils" "^1.4.0" + "@emotion/utils" "^1.4.1" csstype "^3.0.2" "@emotion/sheet@^1.4.0": @@ -3203,10 +2930,10 @@ resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf" integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw== -"@emotion/utils@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.0.tgz#262f1d02aaedb2ec91c83a0955dd47822ad5fbdd" - integrity sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ== +"@emotion/utils@^1.4.0", "@emotion/utils@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad" + integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA== "@emotion/weak-memoize@^0.4.0": version "0.4.0" @@ -3334,16 +3061,16 @@ integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== "@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== "@eslint/eslintrc@^0.4.3": version "0.4.3" @@ -3375,10 +3102,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== "@faker-js/faker@^8.0.0": version "8.4.1" @@ -3386,24 +3113,24 @@ integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== "@floating-ui/core@^1.6.0": - version "1.6.7" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12" - integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g== + version "1.6.8" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12" + integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA== dependencies: - "@floating-ui/utils" "^0.2.7" + "@floating-ui/utils" "^0.2.8" "@floating-ui/dom@^1.0.1": - version "1.6.10" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f" - integrity sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A== + version "1.6.12" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.12.tgz#6333dcb5a8ead3b2bf82f33d6bc410e95f54e556" + integrity sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w== dependencies: "@floating-ui/core" "^1.6.0" - "@floating-ui/utils" "^0.2.7" + "@floating-ui/utils" "^0.2.8" -"@floating-ui/utils@^0.2.7": - version "0.2.7" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e" - integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA== +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== "@flopflip/adapter-utilities@14.0.2": version "14.0.2" @@ -3525,29 +3252,30 @@ launchdarkly-js-client-sdk "3.4.0" "@formatjs/cli-lib@^6.3.8": - version "6.4.2" - resolved "https://registry.yarnpkg.com/@formatjs/cli-lib/-/cli-lib-6.4.2.tgz#1face8f7b051df9090a03fffaa6de17176603ac1" - integrity sha512-Khj1fVZgubtI6FNGmmQGiEg6Kfc2zBZhsJjkCmoofubbDq2IV4yV89uVpdNyroG8mzHUkXlM8yUh0cWzR4Z/Bg== + version "6.6.6" + resolved "https://registry.yarnpkg.com/@formatjs/cli-lib/-/cli-lib-6.6.6.tgz#1259057f98d42762a81456ba0d387b06c99b5f54" + integrity sha512-yWcW2fJB7wLblOPED+1NfaUU0dHBt/UZSsw774lh/oxKrr+rOfFTHciqTMif1H533mRcxkPtIZf/WdPsgzqgXA== dependencies: - "@formatjs/icu-messageformat-parser" "2.7.8" - "@formatjs/ts-transformer" "3.13.14" + "@formatjs/icu-messageformat-parser" "2.9.4" + "@formatjs/icu-skeleton-parser" "1.8.8" + "@formatjs/ts-transformer" "3.13.23" "@types/estree" "^1.0.0" - "@types/fs-extra" "^9.0.1" - "@types/json-stable-stringify" "^1.0.32" - "@types/node" "14 || 16 || 17" - chalk "^4.0.0" - commander "8" - fast-glob "^3.2.7" - fs-extra "10" - json-stable-stringify "^1.0.1" - loud-rejection "^2.2.0" - tslib "^2.4.0" + "@types/fs-extra" "9 || 10 || 11" + "@types/json-stable-stringify" "1" + "@types/node" "14 || 16 || 17 || 18 || 20 || 22" + chalk "4" + commander "12" + fast-glob "3" + fs-extra "9 || 10 || 11" + json-stable-stringify "1" + loud-rejection "2" + tslib "2" typescript "5" "@formatjs/cli@^6.2.7": - version "6.2.12" - resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-6.2.12.tgz#5295e4f6351ed563bcd49fb6479905165098bcd4" - integrity sha512-bt1NEgkeYN8N9zWcpsPu3fZ57vv+biA+NtIQBlyOZnCp1bcvh+vNTXvmwF4C5qxqDtCylpOIb3yi3Ktgp4v0JQ== + version "6.3.11" + resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-6.3.11.tgz#b14af6121a9afbe7c841e410b6057758952fc82c" + integrity sha512-TonnLTxrSLoD/ZMNz+XrswN8sTwGBxvq0ff7Tmh7Wx3Mw7U0h1p+bXfevHfHp/5ANra8tfHUd9c3InYOOIp4XQ== "@formatjs/ecma402-abstract@1.18.3": version "1.18.3" @@ -3565,12 +3293,21 @@ "@formatjs/intl-localematcher" "0.5.4" tslib "^2.4.0" -"@formatjs/fast-memoize@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz#33bd616d2e486c3e8ef4e68c99648c196887802b" - integrity sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA== +"@formatjs/ecma402-abstract@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.4.tgz#355e42d375678229d46dc8ad7a7139520dd03e7b" + integrity sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg== dependencies: - tslib "^2.4.0" + "@formatjs/fast-memoize" "2.2.3" + "@formatjs/intl-localematcher" "0.5.8" + tslib "2" + +"@formatjs/fast-memoize@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz#74e64109279d5244f9fc281f3ae90c407cece823" + integrity sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA== + dependencies: + tslib "2" "@formatjs/icu-messageformat-parser@2.7.8": version "2.7.8" @@ -3581,6 +3318,15 @@ "@formatjs/icu-skeleton-parser" "1.8.2" tslib "^2.4.0" +"@formatjs/icu-messageformat-parser@2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.4.tgz#52501fbdc122a86097644f03ae1117b9ced00872" + integrity sha512-Tbvp5a9IWuxUcpWNIW6GlMQYEc4rwNHR259uUFoKWNN1jM9obf9Ul0e+7r7MvFOBNcN+13K7NuKCKqQiAn1QEg== + dependencies: + "@formatjs/ecma402-abstract" "2.2.4" + "@formatjs/icu-skeleton-parser" "1.8.8" + tslib "2" + "@formatjs/icu-skeleton-parser@1.8.2": version "1.8.2" resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz#2252c949ae84ee66930e726130ea66731a123c9f" @@ -3589,14 +3335,22 @@ "@formatjs/ecma402-abstract" "2.0.0" tslib "^2.4.0" -"@formatjs/intl-displaynames@6.6.8": - version "6.6.8" - resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.6.8.tgz#2f5afac8df83167f5a6ef8543600eaf1ef99c885" - integrity sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g== +"@formatjs/icu-skeleton-parser@1.8.8": + version "1.8.8" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.8.tgz#a16eff7fd040acf096fb1853c99527181d38cf90" + integrity sha512-vHwK3piXwamFcx5YQdCdJxUQ1WdTl6ANclt5xba5zLGDv5Bsur7qz8AD7BevaKxITwpgDeU0u8My3AIibW9ywA== dependencies: - "@formatjs/ecma402-abstract" "2.0.0" - "@formatjs/intl-localematcher" "0.5.4" - tslib "^2.4.0" + "@formatjs/ecma402-abstract" "2.2.4" + tslib "2" + +"@formatjs/intl-displaynames@6.8.5": + version "6.8.5" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.8.5.tgz#e9cd778764209534795f2a579d0269b26631d1ae" + integrity sha512-85b+GdAKCsleS6cqVxf/Aw/uBd+20EM0wDpgaxzHo3RIR3bxF4xCJqH/Grbzx8CXurTgDDZHPdPdwJC+May41w== + dependencies: + "@formatjs/ecma402-abstract" "2.2.4" + "@formatjs/intl-localematcher" "0.5.8" + tslib "2" "@formatjs/intl-enumerator@1.4.6": version "1.4.6" @@ -3605,21 +3359,28 @@ dependencies: tslib "^2.4.0" -"@formatjs/intl-getcanonicallocales@2.3.0", "@formatjs/intl-getcanonicallocales@^2.2.1": +"@formatjs/intl-getcanonicallocales@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.3.0.tgz#b6c6fa1c664e30a61f27fa6399a76159d82a5842" integrity sha512-BOXbLwqQ7nKua/l7tKqDLRN84WupDXFDhGJQMFvsMVA2dKuOdRaWTxWpL3cJ7qPkoNw11Jf+Xpj4OSPBBvW0eQ== dependencies: tslib "^2.4.0" -"@formatjs/intl-listformat@7.5.7", "@formatjs/intl-listformat@^7.4.1": - version "7.5.7" - resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz#125e05105fabd1ae5f11881d6ab74484f2098ee4" - integrity sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g== +"@formatjs/intl-getcanonicallocales@^2.2.1": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.5.3.tgz#97bf9e536578c49836b6c74ab83b539f9148f2a4" + integrity sha512-I/OKMbzrwkD6sA4jsjRuIrCs7Zdzlw54WEBQTROU2545zx8gCV3X9987XxzH82kvQGgLcPAElUP7ul7cKJh53Q== dependencies: - "@formatjs/ecma402-abstract" "2.0.0" - "@formatjs/intl-localematcher" "0.5.4" - tslib "^2.4.0" + tslib "2" + +"@formatjs/intl-listformat@7.7.5", "@formatjs/intl-listformat@^7.4.1": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.7.5.tgz#e7d9fd66b648bbe878f9c64fcba756f1634a7794" + integrity sha512-Wzes10SMNeYgnxYiKsda4rnHP3Q3II4XT2tZyOgnH5fWuHDtIkceuWlRQNsvrI3uiwP4hLqp2XdQTCsfkhXulg== + dependencies: + "@formatjs/ecma402-abstract" "2.2.4" + "@formatjs/intl-localematcher" "0.5.8" + tslib "2" "@formatjs/intl-locale@^3.3.3": version "3.4.6" @@ -3638,48 +3399,55 @@ dependencies: tslib "^2.4.0" -"@formatjs/intl-numberformat@^8.7.1": - version "8.10.3" - resolved "https://registry.yarnpkg.com/@formatjs/intl-numberformat/-/intl-numberformat-8.10.3.tgz#abc97cc6a7b7f1b20da9f07a976b5589c1192ab8" - integrity sha512-lH3liLMeIjZ19Zxt8RRPnBcpPweS1YNSXRURDiFfvFmRlDZUOd8+GlcVyECcPZPkIoSH/p4lfGrnaUzepxJ92g== - dependencies: - "@formatjs/ecma402-abstract" "2.0.0" - "@formatjs/intl-localematcher" "0.5.4" - tslib "^2.4.0" - -"@formatjs/intl-pluralrules@^5.2.5": - version "5.2.14" - resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-5.2.14.tgz#7477bd2aa9bfde9e543d839707eff5460eb08026" - integrity sha512-l6Ev7aOGXJSh5EPDEqzsbyufdCCKXZk993QXRQebLsB0TXRhIyF4alqjdMEatLwIigK/Mka8kiVIOLeFP5Cj9Q== +"@formatjs/intl-localematcher@0.5.8": + version "0.5.8" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.8.tgz#b11bbd04bd3551f7cadcb1ef1e231822d0e3c97e" + integrity sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg== dependencies: - "@formatjs/ecma402-abstract" "2.0.0" - "@formatjs/intl-localematcher" "0.5.4" - tslib "^2.4.0" + tslib "2" -"@formatjs/intl@2.10.4": - version "2.10.4" - resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.10.4.tgz#e1819e0858fb05ca65923a020f346bc74e894e92" - integrity sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw== +"@formatjs/intl-numberformat@^8.7.1": + version "8.14.5" + resolved "https://registry.yarnpkg.com/@formatjs/intl-numberformat/-/intl-numberformat-8.14.5.tgz#e7f699e7ae4338d758636eeee61952b80bddb755" + integrity sha512-UP7Y+t2orvEbFB8EYmmSIbfam1CjhhYWIV7diWBXWilGjrXH7zxIrpgbG22wWwfkEAu8TU8OB/rzIha66Tg1vQ== dependencies: - "@formatjs/ecma402-abstract" "2.0.0" - "@formatjs/fast-memoize" "2.2.0" - "@formatjs/icu-messageformat-parser" "2.7.8" - "@formatjs/intl-displaynames" "6.6.8" - "@formatjs/intl-listformat" "7.5.7" - intl-messageformat "10.5.14" - tslib "^2.4.0" + "@formatjs/ecma402-abstract" "2.2.4" + "@formatjs/intl-localematcher" "0.5.8" + tslib "2" -"@formatjs/ts-transformer@3.13.14": - version "3.13.14" - resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-3.13.14.tgz#1c183157cf3a6fbc128c0c492fbf6cd4a2e55a7f" - integrity sha512-TP/R54lxQ9Drzzimxrrt6yBT/xBofTgYl5wSTpyKe3Aq9vIBVcFmS6EOqycj0X34KGu3EpDPGO0ng8ZQZGLIFg== - dependencies: - "@formatjs/icu-messageformat-parser" "2.7.8" - "@types/json-stable-stringify" "^1.0.32" - "@types/node" "14 || 16 || 17" - chalk "^4.0.0" - json-stable-stringify "^1.0.1" - tslib "^2.4.0" +"@formatjs/intl-pluralrules@^5.2.5": + version "5.3.5" + resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-5.3.5.tgz#df6bb644e9703b5d2466618d412b96cce42be554" + integrity sha512-ahtSZ82E5yEVbHAm22jbIOxtB4nPlAS3xMsbdEkwO1ZXEi2mOsiPFpDJ5F5Duq6uSggldHHh1kcKUjDLgGb1vg== + dependencies: + "@formatjs/ecma402-abstract" "2.2.4" + "@formatjs/intl-localematcher" "0.5.8" + tslib "2" + +"@formatjs/intl@2.10.15": + version "2.10.15" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.10.15.tgz#c592507512d7827c760b74bb8afc37629f89523a" + integrity sha512-i6+xVqT+6KCz7nBfk4ybMXmbKO36tKvbMKtgFz9KV+8idYFyFbfwKooYk8kGjyA5+T5f1kEPQM5IDLXucTAQ9g== + dependencies: + "@formatjs/ecma402-abstract" "2.2.4" + "@formatjs/fast-memoize" "2.2.3" + "@formatjs/icu-messageformat-parser" "2.9.4" + "@formatjs/intl-displaynames" "6.8.5" + "@formatjs/intl-listformat" "7.7.5" + intl-messageformat "10.7.7" + tslib "2" + +"@formatjs/ts-transformer@3.13.23": + version "3.13.23" + resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-3.13.23.tgz#df03323fbb3f2c9393084fbcab1106aa279199e4" + integrity sha512-9ufpij2uHlc/yzb2WDOswaslTQQ7nOIE7aDLWErmc7Kpm5uPU6MihSuEa//DVoNoOD+fywYkbqsZnDjvXeLuAQ== + dependencies: + "@formatjs/icu-messageformat-parser" "2.9.4" + "@types/json-stable-stringify" "1" + "@types/node" "14 || 16 || 17 || 18 || 20 || 22" + chalk "4" + json-stable-stringify "1" + tslib "2" typescript "5" "@graphql-tools/batch-execute@^7.1.2": @@ -3863,12 +3631,12 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" + "@humanwhocodes/object-schema" "^2.0.3" debug "^4.3.1" minimatch "^3.0.5" @@ -3891,7 +3659,7 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@humanwhocodes/object-schema@^2.0.2": +"@humanwhocodes/object-schema@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== @@ -3901,44 +3669,38 @@ resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== -"@inquirer/confirm@^3.0.0": - version "3.1.22" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-3.1.22.tgz#23990624c11f60c6f7a5b0558c7505c35076a037" - integrity sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg== +"@inquirer/confirm@^5.0.0": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.0.2.tgz#2b9dcf6b7da5f518c74abe4aeaf3173253d83c93" + integrity sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA== dependencies: - "@inquirer/core" "^9.0.10" - "@inquirer/type" "^1.5.2" + "@inquirer/core" "^10.1.0" + "@inquirer/type" "^3.0.1" -"@inquirer/core@^9.0.10": - version "9.0.10" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.0.10.tgz#4270191e2ad3bea6223530a093dd9479bcbc7dd0" - integrity sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA== +"@inquirer/core@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.1.0.tgz#c5fdc34c4cafd7248da29a3c3b3120fe6e1c45be" + integrity sha512-I+ETk2AL+yAVbvuKx5AJpQmoaWhpiTFOg/UJb7ZkMAK4blmtG8ATh5ct+T/8xNld0CZG/2UhtkdMwpgvld92XQ== dependencies: - "@inquirer/figures" "^1.0.5" - "@inquirer/type" "^1.5.2" - "@types/mute-stream" "^0.0.4" - "@types/node" "^22.1.0" - "@types/wrap-ansi" "^3.0.0" + "@inquirer/figures" "^1.0.8" + "@inquirer/type" "^3.0.1" ansi-escapes "^4.3.2" - cli-spinners "^2.9.2" cli-width "^4.1.0" - mute-stream "^1.0.0" + mute-stream "^2.0.0" signal-exit "^4.1.0" strip-ansi "^6.0.1" wrap-ansi "^6.2.0" yoctocolors-cjs "^2.1.2" -"@inquirer/figures@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.5.tgz#57f9a996d64d3e3345d2a3ca04d36912e94f8790" - integrity sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA== +"@inquirer/figures@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.8.tgz#d9e414a1376a331a0e71b151fea27c48845788b0" + integrity sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg== -"@inquirer/type@^1.5.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.2.tgz#15f5e4a4dae02c4203650cb07c8a000cdd423939" - integrity sha512-w9qFkumYDCNyDZmNQjf/n6qQuvQ4dMC3BJesY4oF+yr0CxR5vxujflAVeIcS6U336uzi9GM0kAfZlLrZ9UTkpA== - dependencies: - mute-stream "^1.0.0" +"@inquirer/type@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.1.tgz#619ce9f65c3e114d8e39c41822bed3440d20b478" + integrity sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -4366,16 +4128,16 @@ resolved "https://registry.yarnpkg.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz#9ceecc94b49fbaa15666e38ae8587f64acce007d" integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== -"@mswjs/interceptors@^0.29.0": - version "0.29.1" - resolved "https://registry.yarnpkg.com/@mswjs/interceptors/-/interceptors-0.29.1.tgz#e77fc58b5188569041d0440b25c9e9ebb1ccd60a" - integrity sha512-3rDakgJZ77+RiQUuSK69t1F0m8BQKA8Vh5DCS5V0DWvNY67zob2JhhQrhCO0AKLGINTRSFd1tBaHcJTkhefoSw== +"@mswjs/interceptors@^0.37.0": + version "0.37.1" + resolved "https://registry.yarnpkg.com/@mswjs/interceptors/-/interceptors-0.37.1.tgz#fe30692c18318b0dba8aa36b390cb0a482fd81a7" + integrity sha512-SvE+tSpcX884RJrPCskXxoS965Ky/pYABDEhWW6oeSRhpUDLrS5nTvT5n1LLSDVDYvty4imVmXsy+3/ROVuknA== dependencies: "@open-draft/deferred-promise" "^2.2.0" "@open-draft/logger" "^0.3.0" "@open-draft/until" "^2.0.0" is-node-process "^1.2.0" - outvariant "^1.2.1" + outvariant "^1.4.3" strict-event-emitter "^0.5.1" "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": @@ -4464,9 +4226,9 @@ config-chain "^1.1.11" "@polka/url@^1.0.0-next.24": - version "1.0.0-next.25" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" - integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== + version "1.0.0-next.28" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.28.tgz#d45e01c4a56f143ee69c54dd6b12eade9e270a73" + integrity sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw== "@react-hook/latest@1.0.3", "@react-hook/latest@^1.0.2": version "1.0.3" @@ -4505,7 +4267,7 @@ "@rollup/pluginutils" "^5.0.1" graphql-tag "^2.12.6" -"@rollup/pluginutils@5.1.0", "@rollup/pluginutils@^5.0.1": +"@rollup/pluginutils@5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== @@ -4514,6 +4276,20 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/pluginutils@^5.0.1": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.3.tgz#3001bf1a03f3ad24457591f2c259c8e514e0dbdf" + integrity sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^4.0.2" + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + "@rushstack/eslint-patch@^1.3.3": version "1.10.4" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1" @@ -4528,6 +4304,15 @@ "@sentry/types" "7.117.0" "@sentry/utils" "7.117.0" +"@sentry-internal/feedback@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.119.1.tgz#98285dc9dba0ab62369d758124901b00faf58697" + integrity sha512-EPyW6EKZmhKpw/OQUPRkTynXecZdYl4uhZwdZuGqnGMAzswPOgQvFrkwsOuPYvoMfXqCH7YuRqyJrox3uBOrTA== + dependencies: + "@sentry/core" "7.119.1" + "@sentry/types" "7.119.1" + "@sentry/utils" "7.119.1" + "@sentry-internal/replay-canvas@7.117.0": version "7.117.0" resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.117.0.tgz#d6b3b711453c88e040f31ebab1d4bc627b4a6505" @@ -4538,6 +4323,16 @@ "@sentry/types" "7.117.0" "@sentry/utils" "7.117.0" +"@sentry-internal/replay-canvas@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.119.1.tgz#b1413fb37734d609b0745ac24d49ddf9d63b9c51" + integrity sha512-O/lrzENbMhP/UDr7LwmfOWTjD9PLNmdaCF408Wx8SDuj7Iwc+VasGfHg7fPH4Pdr4nJON6oh+UqoV4IoG05u+A== + dependencies: + "@sentry/core" "7.119.1" + "@sentry/replay" "7.119.1" + "@sentry/types" "7.119.1" + "@sentry/utils" "7.119.1" + "@sentry-internal/tracing@7.117.0": version "7.117.0" resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.117.0.tgz#c7d2357dae8d7ea2bc130e4513ac4ffc8dc7553c" @@ -4547,6 +4342,15 @@ "@sentry/types" "7.117.0" "@sentry/utils" "7.117.0" +"@sentry-internal/tracing@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.119.1.tgz#500d50d451bfd0ce6b185e9f112208229739ab03" + integrity sha512-cI0YraPd6qBwvUA3wQdPGTy8PzAoK0NZiaTN1LM3IczdPegehWOaEG5GVTnpGnTsmBAzn1xnBXNBhgiU4dgcrQ== + dependencies: + "@sentry/core" "7.119.1" + "@sentry/types" "7.119.1" + "@sentry/utils" "7.119.1" + "@sentry/browser@7.117.0": version "7.117.0" resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.117.0.tgz#3030073f360974dadcf5a5f2e1542497b3be2482" @@ -4561,6 +4365,20 @@ "@sentry/types" "7.117.0" "@sentry/utils" "7.117.0" +"@sentry/browser@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.119.1.tgz#260470dd7fd18de366017c3bf23a252a24d2ff05" + integrity sha512-aMwAnFU4iAPeLyZvqmOQaEDHt/Dkf8rpgYeJ0OEi50dmP6AjG+KIAMCXU7CYCCQDn70ITJo8QD5+KzCoZPYz0A== + dependencies: + "@sentry-internal/feedback" "7.119.1" + "@sentry-internal/replay-canvas" "7.119.1" + "@sentry-internal/tracing" "7.119.1" + "@sentry/core" "7.119.1" + "@sentry/integrations" "7.119.1" + "@sentry/replay" "7.119.1" + "@sentry/types" "7.119.1" + "@sentry/utils" "7.119.1" + "@sentry/core@7.117.0": version "7.117.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.117.0.tgz#eebdb6e700d5fbdf3102c4abfb4ff92ef79ae9a5" @@ -4569,6 +4387,14 @@ "@sentry/types" "7.117.0" "@sentry/utils" "7.117.0" +"@sentry/core@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.119.1.tgz#63e949cad167a0ee5e52986c93b96ff1d6a05b57" + integrity sha512-YUNnH7O7paVd+UmpArWCPH4Phlb5LwrkWVqzFWqL3xPyCcTSof2RL8UmvpkTjgYJjJ+NDfq5mPFkqv3aOEn5Sw== + dependencies: + "@sentry/types" "7.119.1" + "@sentry/utils" "7.119.1" + "@sentry/integrations@7.117.0": version "7.117.0" resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.117.0.tgz#4613dae3bc1d257c3c870461327fd4f70dbda229" @@ -4579,6 +4405,16 @@ "@sentry/utils" "7.117.0" localforage "^1.8.1" +"@sentry/integrations@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.119.1.tgz#9fc17aa9fcb942fbd2fc12eecd77a0f316897960" + integrity sha512-CGmLEPnaBqbUleVqrmGYjRjf5/OwjUXo57I9t0KKWViq81mWnYhaUhRZWFNoCNQHns+3+GPCOMvl0zlawt+evw== + dependencies: + "@sentry/core" "7.119.1" + "@sentry/types" "7.119.1" + "@sentry/utils" "7.119.1" + localforage "^1.8.1" + "@sentry/react@7.117.0": version "7.117.0" resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.117.0.tgz#0a6e729f5d17782a02a48728821536ede569bc8d" @@ -4600,11 +4436,26 @@ "@sentry/types" "7.117.0" "@sentry/utils" "7.117.0" +"@sentry/replay@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.119.1.tgz#117cf493a3008a39943b7d571d451c6218542847" + integrity sha512-4da+ruMEipuAZf35Ybt2StBdV1S+oJbSVccGpnl9w6RoeQoloT4ztR6ML3UcFDTXeTPT1FnHWDCyOfST0O7XMw== + dependencies: + "@sentry-internal/tracing" "7.119.1" + "@sentry/core" "7.119.1" + "@sentry/types" "7.119.1" + "@sentry/utils" "7.119.1" + "@sentry/types@7.117.0": version "7.117.0" resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.117.0.tgz#c4d89aba487c05f4e5cbfa2f1c65180b536393b4" integrity sha512-5dtdulcUttc3F0Te7ekZmpSp/ebt/CA71ELx0uyqVGjWsSAINwskFD77sdcjqvZWek//WjiYX1+GRKlpJ1QqsA== +"@sentry/types@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.119.1.tgz#f9c3c12e217c9078a6d556c92590e42a39b750dd" + integrity sha512-4G2mcZNnYzK3pa2PuTq+M2GcwBRY/yy1rF+HfZU+LAPZr98nzq2X3+mJHNJoobeHRkvVh7YZMPi4ogXiIS5VNQ== + "@sentry/utils@7.117.0": version "7.117.0" resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.117.0.tgz#ac367a6f623bd09440b39d947437009c0ffe52b2" @@ -4612,6 +4463,13 @@ dependencies: "@sentry/types" "7.117.0" +"@sentry/utils@7.119.1": + version "7.119.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.119.1.tgz#08b28fa8170987a60e149e2102e83395a95e9a89" + integrity sha512-ju/Cvyeu/vkfC5/XBV30UNet5kLEicZmXSyuLwZu95hEbL+foPdxN+re7pCI/eNqfe3B2vz7lvz5afLVOlQ2Hg== + dependencies: + "@sentry/types" "7.119.1" + "@sheerun/mutationobserver-shim@0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" @@ -4766,84 +4624,84 @@ "@svgr/plugin-jsx" "^6.5.1" "@svgr/plugin-svgo" "^6.5.1" -"@swc/core-darwin-arm64@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.22.tgz#2ce216c4bb61627ff9689213e690ffc64ed02114" - integrity sha512-B2Bh2W+C7ALdGwDxRWAJ+UtNExfozvwyayGiNkbR3wmDKXXeQfhGM5MK+QYUWKu7UQ6ATq69OyZrxofDobKUug== - -"@swc/core-darwin-x64@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.22.tgz#78d028d72756193a1bedf3cc0766aede1b290878" - integrity sha512-s34UQntnQ6tL9hS9aX3xG7OfGhpmy05FEEndbHaooGO8O+L5k8uWxhE5KhYCOC0N803sGdZg6YZmKtYrWN/YxA== - -"@swc/core-linux-arm-gnueabihf@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.22.tgz#f95e45179e362dd5cfc3c9b8083af33e430195d9" - integrity sha512-SE69+oos1jLOXx5YdMH//Qc5zQc2xYukajB+0BWmkcFd/S/cCanGWYtdSzYausm8af2Fw1hPJMNIfndJLnBDFw== - -"@swc/core-linux-arm64-gnu@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.22.tgz#8058a7c18385cadf56ca7d2db4d6fa41e52f4bd3" - integrity sha512-59FzDW/ojgiTj4dlnv3Z3ESuVlzhSAq9X12CNYh4/WTCNA8BoJqOnWMRQKspWtoNlnVviFLMvpek0pGXHndEBA== - -"@swc/core-linux-arm64-musl@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.22.tgz#8d29b9574ad3ff615fcba85b6e661d510f48186e" - integrity sha512-cMQMI8YRO/XR3OrYuiUlWksNsJOZSkA6gSLNyH6eHTw+FOAzv05oJ4SFYe6s1WesrOqRwhpez6y5H6OIP/EKzg== - -"@swc/core-linux-x64-gnu@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.22.tgz#ad863612d32c00ec28b3dc3fc1a8418ca9c94f2b" - integrity sha512-639kA7MXrWqWYfwuSJ+XTg21VYb/5o99R1zJrndoEjEX6m7Wza/sXssQKU5jbbkPoSEKVKNP3n/gazLWiUKgiQ== - -"@swc/core-linux-x64-musl@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.22.tgz#421740384a738631b1bbc6202eeb5489ed5e356b" - integrity sha512-f3zfGgY8EJQUOk3ve25ZTkNkhB/kHo9QlN2r+0exaE1g9W7X8IS6J8pWzF3hJrV2P9dBi6ofMOt+opVA89JKHA== - -"@swc/core-win32-arm64-msvc@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.22.tgz#ba62979f394faabe8a4c964e5590169269d8170c" - integrity sha512-p/Fav5U+LtTJD/tbbS0dKK8SVVAhXo5Jdm1TDeBPJ4BEIVguYBZEXgD3CW9wY4K34g1hscpiz2Q2rktfhFj1+A== - -"@swc/core-win32-ia32-msvc@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.22.tgz#7fe30501e853298a552c2bd89306cc41d15f95c8" - integrity sha512-HbmfasaCNTqeCTvDjleYj+jJZQ6MlraiVOdhW55KtbA9mAVQdPBq6DDAvR7VOero3wUNYUM/e36otFKgEJI5Rg== - -"@swc/core-win32-x64-msvc@1.7.22": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.22.tgz#8be5c1f89c61c0d6412093398274b3cbc1b4b52f" - integrity sha512-lppIveE+hpe7WXny/9cUT+T6sBM/ND0E+dviKWJ5jFBISj2KWomlSJGUjYEsRGJVPnTEc8uOlKK7etmXBhQx9A== +"@swc/core-darwin-arm64@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.2.tgz#98b60a56229c4341c1263723f985e04f3f82d499" + integrity sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A== + +"@swc/core-darwin-x64@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.9.2.tgz#6bb1be573878acf42aa6abd6b602ef0136cc00de" + integrity sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ== + +"@swc/core-linux-arm-gnueabihf@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.2.tgz#e63f57f2e214f06d711bed830d53af0597749647" + integrity sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg== + +"@swc/core-linux-arm64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.2.tgz#cb26240fe5769c1675ac75717ec836e99a7f7e93" + integrity sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA== + +"@swc/core-linux-arm64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.2.tgz#0e4733e4e4398bee0c030a4e97279f78a65d4e61" + integrity sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA== + +"@swc/core-linux-x64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz#6b4b86d06537004cc4477915b67f7d94d1b6ba33" + integrity sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg== + +"@swc/core-linux-x64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.2.tgz#d6de84dbdcf69b1fdb45c8ae232b7d23ba92c7e2" + integrity sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg== + +"@swc/core-win32-arm64-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.2.tgz#a5c477f0296e499890f55cfaa7c0100152b1900b" + integrity sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw== + +"@swc/core-win32-ia32-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.2.tgz#66bbfea8cfcf6b602b8fb0d9ee788e92c8a736ed" + integrity sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ== + +"@swc/core-win32-x64-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.2.tgz#f609fefac8f412b445cb0a2bfec73a657e41d4db" + integrity sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw== "@swc/core@^1.5.7": - version "1.7.22" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.22.tgz#fe7d515bba08fdd29937eae6dc40077459634087" - integrity sha512-Asn79WKqyjEuO2VEeSnVjn2YiRMToRhFJwOsQeqftBvwWMn1FGUuzVcXtkQFBk37si8Gh2Vkk/+p0u4K5NxDig== + version "1.9.2" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.9.2.tgz#226bdc5033ba0af85c0bf814b16bdc1df0070d35" + integrity sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg== dependencies: "@swc/counter" "^0.1.3" - "@swc/types" "^0.1.12" + "@swc/types" "^0.1.15" optionalDependencies: - "@swc/core-darwin-arm64" "1.7.22" - "@swc/core-darwin-x64" "1.7.22" - "@swc/core-linux-arm-gnueabihf" "1.7.22" - "@swc/core-linux-arm64-gnu" "1.7.22" - "@swc/core-linux-arm64-musl" "1.7.22" - "@swc/core-linux-x64-gnu" "1.7.22" - "@swc/core-linux-x64-musl" "1.7.22" - "@swc/core-win32-arm64-msvc" "1.7.22" - "@swc/core-win32-ia32-msvc" "1.7.22" - "@swc/core-win32-x64-msvc" "1.7.22" + "@swc/core-darwin-arm64" "1.9.2" + "@swc/core-darwin-x64" "1.9.2" + "@swc/core-linux-arm-gnueabihf" "1.9.2" + "@swc/core-linux-arm64-gnu" "1.9.2" + "@swc/core-linux-arm64-musl" "1.9.2" + "@swc/core-linux-x64-gnu" "1.9.2" + "@swc/core-linux-x64-musl" "1.9.2" + "@swc/core-win32-arm64-msvc" "1.9.2" + "@swc/core-win32-ia32-msvc" "1.9.2" + "@swc/core-win32-x64-msvc" "1.9.2" "@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/types@^0.1.12": - version "0.1.12" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.12.tgz#7f632c06ab4092ce0ebd046ed77ff7557442282f" - integrity sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA== +"@swc/types@^0.1.15": + version "0.1.15" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.15.tgz#9a3b3873d93382750b823aaeabca787bd3fa7c96" + integrity sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw== dependencies: "@swc/counter" "^0.1.3" @@ -4935,6 +4793,13 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== +"@types/axios@^0.14.4": + version "0.14.4" + resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.4.tgz#174e3a05fe7677f13bc719f0d2a427f5defacedf" + integrity sha512-9JgOaunvQdsQ/qW2OPmE5+hCeUB52lQSolecrFrthct55QekhmXEwT203s20RL+UHtCQc15y3VXpby9E7Kkh/g== + dependencies: + axios "*" + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.12", "@types/babel__core@^7.1.14", "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" @@ -5008,6 +4873,11 @@ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== +"@types/debounce-promise@^3.1.6": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@types/debounce-promise/-/debounce-promise-3.1.9.tgz#b59346fe5c24636ebe0fb88f2f7e41b888b1cd7c" + integrity sha512-awNxydYSU+E2vL7EiOAMtiSOfL5gUM5X4YSE2A92qpxDJQ/rXz6oMPYBFDcDywlUmvIDI6zsqgq17cGm5CITQw== + "@types/dompurify@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-2.4.0.tgz#fd9706392a88e0e0e6d367f3588482d817df0ab9" @@ -5015,7 +4885,7 @@ dependencies: "@types/trusted-types" "*" -"@types/eslint-scope@^3.7.3": +"@types/eslint-scope@^3.7.7": version "3.7.7" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== @@ -5031,22 +4901,42 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.5" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" - integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz#3c9997ae9d00bc236e45c6374e84f2596458d9db" + integrity sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/send" "*" -"@types/express@*", "@types/express@^4.17.13": +"@types/express-serve-static-core@^4.17.33": + version "4.19.6" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" + integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c" + integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/express@^4.17.13": version "4.17.21" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -5056,11 +4946,12 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/fs-extra@^9.0.1": - 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== +"@types/fs-extra@9 || 10 || 11": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45" + integrity sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ== dependencies: + "@types/jsonfile" "*" "@types/node" "*" "@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": @@ -5075,7 +4966,7 @@ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== -"@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1": +"@types/hoist-non-react-statics@3", "@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1": version "3.3.5" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg== @@ -5125,9 +5016,9 @@ "@types/istanbul-lib-report" "*" "@types/jest@*": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -5146,33 +5037,33 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/json-stable-stringify@^1.0.32": - version "1.0.36" - resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.36.tgz#fe6c6001a69ff8160a772da08779448a333c7ddd" - integrity sha512-b7bq23s4fgBB76n34m2b3RBf6M369B0Z9uRR8aHTMd8kZISRkmDEpPD8hhpYvDFzr3bJCPES96cm3Q6qRNDbQw== +"@types/json-stable-stringify@1": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz#41393e6b7a9a67221607346af4a79783aeb28aea" + integrity sha512-ESTsHWB72QQq+pjUFIbEz9uSCZppD31YrVkbt2rnUciTYEvcwN6uZIhX5JZeBHqRlFJ41x/7MewCs7E2Qux6Cg== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/jsonfile@*": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702" + integrity sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ== + dependencies: + "@types/node" "*" + "@types/lodash@^4.14.198", "@types/lodash@^4.17.0": - version "4.17.7" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.7.tgz#2f776bcb53adc9e13b2c0dfd493dfcbd7de43612" - integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA== + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.13.tgz#786e2d67cfd95e32862143abe7463a7f90c300eb" + integrity sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg== "@types/mime@^1": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/mute-stream@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478" - integrity sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow== - dependencies: - "@types/node" "*" - "@types/node-fetch@2.6.11": version "2.6.11" resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" @@ -5188,17 +5079,12 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^22.1.0": - version "22.5.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.1.tgz#de01dce265f6b99ed32b295962045d10b5b99560" - integrity sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw== +"@types/node@*", "@types/node@14 || 16 || 17 || 18 || 20 || 22": + version "22.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" + integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== dependencies: - undici-types "~6.19.2" - -"@types/node@14 || 16 || 17": - version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + undici-types "~6.19.8" "@types/parse-json@^4.0.0": version "4.0.2" @@ -5219,14 +5105,14 @@ kleur "^3.0.3" "@types/prop-types@*", "@types/prop-types@^15.7.5": - version "15.7.12" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" - integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== "@types/qs@*": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== + version "6.9.17" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a" + integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ== "@types/raf-schd@^4.0.1": version "4.0.3" @@ -5238,6 +5124,13 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== +"@types/react-beautiful-dnd@^13.1.3": + version "13.1.8" + resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-13.1.8.tgz#f52d3ea07e1e19159d6c3c4a48c8da3d855e60b4" + integrity sha512-E3TyFsro9pQuK4r8S/OL6G99eq7p8v29sX0PM7oT8Z+PJfZvSQTx4zTQbUJ+QZXioAF0e7TGBEcA1XhYhCweyQ== + dependencies: + "@types/react" "*" + "@types/react-dom@<18", "@types/react-dom@<18.0.0", "@types/react-dom@^17.0.19": version "17.0.25" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.25.tgz#e0e5b3571e1069625b3a3da2b279379aa33a0cb5" @@ -5260,9 +5153,9 @@ "@types/react" "*" "@types/react-redux@^7.1.20", "@types/react-redux@^7.1.26": - version "7.1.33" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.33.tgz#53c5564f03f1ded90904e3c90f77e4bd4dc20b15" - integrity sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg== + version "7.1.34" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.34.tgz#83613e1957c481521e6776beeac4fd506d11bd0e" + integrity sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" @@ -5294,9 +5187,9 @@ "@types/react" "*" "@types/react@*", "@types/react@16 || 17 || 18", "@types/react@<18", "@types/react@^17", "@types/react@^17.0.80": - version "17.0.80" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.80.tgz#a5dfc351d6a41257eb592d73d3a85d3b7dbcbb41" - integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== + version "17.0.83" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.83.tgz#b477c56387b74279281149dcf5ba2a1e2216d131" + integrity sha512-l0m4ArKJvmFtR4e8UmKrj1pB4tUgOhJITf+mADyF/p69Ts1YAR/E+G9XEM0mHXKVRa1dQNHseyyDNzeuAXfXQw== dependencies: "@types/prop-types" "*" "@types/scheduler" "^0.16" @@ -5415,15 +5308,10 @@ dependencies: "@types/node" "*" -"@types/wrap-ansi@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" - integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g== - "@types/ws@^8.5.5": - version "8.5.12" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" - integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== + version "8.5.13" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20" + integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA== dependencies: "@types/node" "*" @@ -5560,125 +5448,125 @@ "@types/babel__core" "^7.20.5" react-refresh "^0.14.2" -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.12.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== "@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" "@xtuc/long" "4.2.2" "@wry/caches@^1.0.0": @@ -5738,7 +5626,7 @@ abort-controller@3.0.0: dependencies: event-target-shim "^5.0.0" -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: +accepts@~1.3.4, 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== @@ -5778,9 +5666,9 @@ acorn-walk@^7.1.1: integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.0.0, acorn-walk@^8.0.2: - version "8.3.3" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" - integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== dependencies: acorn "^8.11.0" @@ -5789,10 +5677,10 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.1.0, acorn@^8.11.0, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +acorn@^8.0.4, acorn@^8.1.0, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== address@^1.0.1, address@^1.1.2: version "1.2.2" @@ -5903,9 +5791,9 @@ ansi-regex@^5.0.1: 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== + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== ansi-styles@^3.2.1: version "3.2.1" @@ -5956,19 +5844,17 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.1.3, aria-query@~5.1.3: +aria-query@5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: deep-equal "^2.0.5" -aria-query@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" +aria-query@^5.0.0, aria-query@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" @@ -5988,7 +5874,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8: +array-includes@^3.1.6, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -6040,7 +5926,7 @@ array.prototype.findlast@^1.2.5: es-object-atoms "^1.0.0" es-shim-unscopables "^1.0.2" -array.prototype.findlastindex@^1.2.3: +array.prototype.findlastindex@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== @@ -6107,13 +5993,6 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-mutex@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.5.0.tgz#353c69a0b9e75250971a64ac203b0ebfddd75482" - integrity sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA== - dependencies: - tslib "^2.4.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -6143,17 +6022,24 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axe-core@^4.9.1: - version "4.10.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.0.tgz#d9e56ab0147278272739a000880196cdfe113b59" - integrity sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g== +axe-core@^4.10.0: + version "4.10.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.2.tgz#85228e3e1d8b8532a27659b332e39b7fa0e022df" + integrity sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w== -axobject-query@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" - integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== +axios@*, axios@^1.7.7: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== dependencies: - deep-equal "^2.0.5" + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axobject-query@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== babel-eslint@^10.1.0: version "10.1.0" @@ -6261,12 +6147,12 @@ babel-plugin-macros@^3.0.1, babel-plugin-macros@^3.1.0: resolve "^1.19.0" babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.11" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + version "0.4.12" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz#ca55bbec8ab0edeeef3d7b8ffd75322e210879a9" + integrity sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.2" + "@babel/helper-define-polyfill-provider" "^0.6.3" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.10.6: @@ -6278,11 +6164,11 @@ babel-plugin-polyfill-corejs3@^0.10.6: core-js-compat "^3.38.0" babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + version "0.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" + integrity sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" + "@babel/helper-define-polyfill-provider" "^0.6.3" babel-plugin-preval@^5.1.0: version "5.1.0" @@ -6366,10 +6252,10 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -6379,15 +6265,15 @@ body-parser@1.20.2: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" bonjour-service@^1.0.11: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" - integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== + version "1.3.0" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" + integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== dependencies: fast-deep-equal "^3.1.3" multicast-dns "^7.2.5" @@ -6417,15 +6303,15 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.23.1, browserslist@^4.23.3: - version "4.23.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.2: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" node-releases "^2.0.18" - update-browserslist-db "^1.1.0" + update-browserslist-db "^1.1.1" bser@2.1.1: version "2.1.1" @@ -6537,12 +6423,12 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646: - version "1.0.30001655" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz#0ce881f5a19a2dcfda2ecd927df4d5c1684b982f" - integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001669: + version "1.0.30001680" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz#5380ede637a33b9f9f1fc6045ea99bd142f3da5e" + integrity sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA== -chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: +chalk@4, chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -6625,9 +6511,9 @@ ci-info@^3.2.0: integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.0.tgz#677de7ed7efff67cc40c9bf1897fea79d41b5215" - integrity sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g== + version "1.4.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== classnames@^2.3.2: version "2.5.1" @@ -6641,11 +6527,6 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" -cli-spinners@^2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - cli-width@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" @@ -6734,10 +6615,10 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@8, commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@12: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== commander@^2.19.0, commander@^2.20.0: version "2.20.3" @@ -6749,6 +6630,11 @@ commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + common-tags@1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" @@ -6759,7 +6645,7 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compressible@~2.0.16: +compressible@~2.0.18: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== @@ -6767,16 +6653,16 @@ compressible@~2.0.16: 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== + version "1.7.5" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.5.tgz#fdd256c0a642e39e314c478f6c2cd654edd74c93" + integrity sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q== dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" + bytes "3.1.2" + compressible "~2.0.18" debug "2.6.9" + negotiator "~0.6.4" on-headers "~1.0.2" - safe-buffer "5.1.2" + safe-buffer "5.2.1" vary "~1.1.2" compute-scroll-into-view@^1.0.17: @@ -6844,32 +6730,32 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== -cookie@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== -core-js-compat@^3.37.1, core-js-compat@^3.38.0: - version "3.38.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" - integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== +core-js-compat@^3.38.0, core-js-compat@^3.38.1: + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.39.0.tgz#b12dccb495f2601dc860bdbe7b4e3ffa8ba63f61" + integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw== dependencies: - browserslist "^4.23.3" + browserslist "^4.24.2" core-js-pure@^3.23.3, core-js-pure@^3.30.2: - version "3.38.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.38.1.tgz#e8534062a54b7221344884ba9b52474be495ada3" - integrity sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ== + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.39.0.tgz#aa0d54d70a15bdc13e7c853db87c10abc30d68f3" + integrity sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg== core-js@^3.32.2: - version "3.38.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.1.tgz#aa375b79a286a670388a1a363363d53677c0383e" - integrity sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw== + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83" + integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g== core-util-is@~1.0.0: version "1.0.3" @@ -6954,14 +6840,21 @@ cross-spawn@^5.1.0: which "^1.2.9" 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== + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" +css-box-model@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" + integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== + dependencies: + tiny-invariant "^1.0.6" + css-declaration-sorter@^6.3.1: version "6.4.1" resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" @@ -7215,6 +7108,11 @@ debounce-fn@4.0.0: dependencies: mimic-fn "^3.0.0" +debounce-promise@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/debounce-promise/-/debounce-promise-3.1.2.tgz#320fb8c7d15a344455cd33cee5ab63530b6dc7c5" + integrity sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg== + debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" @@ -7228,11 +7126,11 @@ debug@2.6.9, debug@^2.6.0: ms "2.0.0" debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: - ms "2.1.2" + ms "^2.1.3" debug@^3.2.7: version "3.2.7" @@ -7362,11 +7260,6 @@ dequal@1.0.0: resolved "https://registry.yarnpkg.com/dequal/-/dequal-1.0.0.tgz#41c6065e70de738541c82cdbedea5292277a017e" integrity sha512-/Nd1EQbQbI9UbSHrMiKZjFLrXSnU328iQdZKPQf78XQI6C+gutkFUeoHpG5J08Ioa6HeRbRNFpSIclh1xyG0mw== -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -7531,20 +7424,10 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" -dompurify@2.4.7: - version "2.4.7" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.7.tgz#277adeb40a2c84be2d42a8bcd45f582bfa4d0cfc" - integrity sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ== - -dompurify@2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.5.tgz#0540a05b8020d4691ee9c6083fb23b2c919276fc" - integrity sha512-FgbqnEPiv5Vdtwt6Mxl7XSylttCC03cqP5ldNT2z+Kj0nLxPHJH4+1Cyf5Jasxhw93Rl4Oo11qRoUV72fmya2Q== - -dompurify@^2.4.7: - version "2.5.6" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.6.tgz#8402b501611eaa7fb3786072297fcbe2787f8592" - integrity sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ== +dompurify@2.5.7, dompurify@^2.4.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.7.tgz#6e0d36b9177db5a99f18ade1f28579db5ab839d7" + integrity sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q== domutils@1.5.1: version "1.5.1" @@ -7617,10 +7500,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.5.4: - version "1.5.13" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" - integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== +electron-to-chromium@^1.5.41: + version "1.5.63" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.63.tgz#69444d592fbbe628d129866c2355691ea93eda3e" + integrity sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA== emittery@^0.10.2: version "0.10.2" @@ -7662,7 +7545,12 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.15.0, enhanced-resolve@^5.17.0, enhanced-resolve@^5.17.1: +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +enhanced-resolve@^5.15.0, enhanced-resolve@^5.17.1: version "5.17.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== @@ -7688,7 +7576,7 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.4.0: +entities@^4.4.0, entities@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== @@ -7772,9 +7660,9 @@ error-stack-parser@^2.0.6: stackframe "^1.3.4" es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + version "1.23.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.5.tgz#f4599a4946d57ed467515ed10e4f157289cd52fb" + integrity sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ== dependencies: array-buffer-byte-length "^1.0.1" arraybuffer.prototype.slice "^1.0.3" @@ -7791,7 +7679,7 @@ es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23 function.prototype.name "^1.1.6" get-intrinsic "^1.2.4" get-symbol-description "^1.0.2" - globalthis "^1.0.3" + globalthis "^1.0.4" gopd "^1.0.1" has-property-descriptors "^1.0.2" has-proto "^1.0.3" @@ -7807,10 +7695,10 @@ es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23 is-string "^1.0.7" is-typed-array "^1.1.13" is-weakref "^1.0.2" - object-inspect "^1.13.1" + object-inspect "^1.13.3" object-keys "^1.1.1" object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" + regexp.prototype.flags "^1.5.3" safe-array-concat "^1.1.2" safe-regex-test "^1.0.3" string.prototype.trim "^1.2.9" @@ -7855,10 +7743,10 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-iterator-helpers@^1.0.19: - version "1.0.19" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" - integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== +es-iterator-helpers@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz#2f1a3ab998b30cb2d10b195b587c6d9ebdebf152" + integrity sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q== dependencies: call-bind "^1.0.7" define-properties "^1.2.1" @@ -7867,12 +7755,13 @@ es-iterator-helpers@^1.0.19: es-set-tostringtag "^2.0.3" function-bind "^1.1.2" get-intrinsic "^1.2.4" - globalthis "^1.0.3" + globalthis "^1.0.4" + gopd "^1.0.1" has-property-descriptors "^1.0.2" has-proto "^1.0.3" has-symbols "^1.0.3" internal-slot "^1.0.7" - iterator.prototype "^1.1.2" + iterator.prototype "^1.1.3" safe-array-concat "^1.1.2" es-module-lexer@^1.2.1: @@ -7940,7 +7829,7 @@ esbuild@^0.18.10: "@esbuild/win32-ia32" "0.18.20" "@esbuild/win32-x64" "0.18.20" -escalade@^3.1.1, escalade@^3.1.2: +escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== @@ -8028,10 +7917,10 @@ eslint-import-resolver-typescript@^3.6.0, eslint-import-resolver-typescript@^3.6 is-bun-module "^1.0.2" is-glob "^4.0.3" -eslint-module-utils@^2.8.0, eslint-module-utils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.2.tgz#2ecad69d71e1fa81f17f7f24d5d3e46b168de663" - integrity sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg== +eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" @@ -8061,26 +7950,28 @@ eslint-plugin-graphql@^4.0.0: lodash.without "^4.4.0" eslint-plugin-import@^2.22.0, eslint-plugin-import@^2.28.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" array.prototype.flat "^1.3.2" array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" + eslint-module-utils "^2.12.0" + hasown "^2.0.2" + is-core-module "^2.15.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" semver "^6.3.1" + string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" eslint-plugin-jest-dom@^4.0.3: @@ -8100,26 +7991,25 @@ eslint-plugin-jest@^27.2.3: "@typescript-eslint/utils" "^5.10.0" eslint-plugin-jsx-a11y@^6.7.1: - version "6.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8" - integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g== + version "6.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" + integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== dependencies: - aria-query "~5.1.3" + aria-query "^5.3.2" array-includes "^3.1.8" array.prototype.flatmap "^1.3.2" ast-types-flow "^0.0.8" - axe-core "^4.9.1" - axobject-query "~3.1.1" + axe-core "^4.10.0" + axobject-query "^4.1.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.19" hasown "^2.0.2" jsx-ast-utils "^3.3.5" language-tags "^1.0.9" minimatch "^3.1.2" object.fromentries "^2.0.8" safe-regex-test "^1.0.3" - string.prototype.includes "^2.0.0" + string.prototype.includes "^2.0.1" eslint-plugin-node@^11.1.0: version "11.1.0" @@ -8151,16 +8041,16 @@ eslint-plugin-react-hooks@^4.1.0, eslint-plugin-react-hooks@^4.6.0: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.20.6, eslint-plugin-react@^7.33.2: - version "7.35.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz#00b1e4559896710e58af6358898f2ff917ea4c41" - integrity sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA== + version "7.37.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz#cd0935987876ba2900df2f58339f6d92305acc7a" + integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" - es-iterator-helpers "^1.0.19" + es-iterator-helpers "^1.1.0" estraverse "^5.3.0" hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" @@ -8304,15 +8194,15 @@ eslint@^7.7.0: v8-compile-cache "^2.0.3" eslint@^8.57.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" @@ -8476,36 +8366,36 @@ expect@^29.0.0: jest-util "^29.7.0" express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + version "4.21.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281" + integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.6.0" + cookie "0.7.1" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.2.0" + finalhandler "1.3.1" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" - qs "6.11.0" + qs "6.13.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.2" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -8542,7 +8432,7 @@ fast-equals@2.0.4, fast-equals@^2.0.0: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-2.0.4.tgz#3add9410585e2d7364c2deeb6a707beadb24b927" integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w== -fast-glob@^3.1.1, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.2: +fast-glob@3, fast-glob@^3.1.1, fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -8564,9 +8454,9 @@ fast-levenshtein@^2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-uri@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" - integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== fast-url-parser@1.1.3: version "1.1.3" @@ -8623,13 +8513,13 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== dependencies: debug "2.6.9" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" on-finished "2.4.1" parseurl "~1.3.3" @@ -8692,14 +8582,14 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== -follow-redirects@^1.0.0: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== +follow-redirects@^1.0.0, follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== for-each@^0.3.3: version "0.3.3" @@ -8732,7 +8622,7 @@ form-data-encoder@^2.1.2: resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== -form-data@4.0.0, form-data@^4.0.0: +form-data@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== @@ -8742,9 +8632,18 @@ form-data@4.0.0, form-data@^4.0.0: mime-types "^2.1.12" form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.2.tgz#83ad9ced7c03feaad97e293d6f6091011e1659c8" + integrity sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -8779,7 +8678,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-extra@10, fs-extra@10.1.0: +fs-extra@10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== @@ -8788,6 +8687,15 @@ fs-extra@10, fs-extra@10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" +"fs-extra@9 || 10 || 11": + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -8863,9 +8771,9 @@ get-caller-file@^2.0.5: integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-east-asian-width@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" - integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" + integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" @@ -8898,9 +8806,9 @@ get-symbol-description@^1.0.2: get-intrinsic "^1.2.4" get-tsconfig@^4.7.5: - version "4.8.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.0.tgz#125dc13a316f61650a12b20c97c11b8fd996fedd" - integrity sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw== + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== dependencies: resolve-pkg-maps "^1.0.0" @@ -8963,7 +8871,7 @@ globals@^13.19.0, globals@^13.20.0, globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" -globalthis@1.0.4, globalthis@^1.0.3: +globalthis@1.0.4, globalthis@^1.0.3, globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== @@ -9078,6 +8986,11 @@ graphql@16.8.2: resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.8.2.tgz#54771c7ff195da913f5e70af8044a026d32eca2a" integrity sha512-cvVIBILwuoSyD54U4cF/UXDh5yAobhNV/tPygI4lZhgOIJQE/WLWC4waBRb4I6bDVYb3OVx3lfHbaQOEoUD5sg== +graphql@^16.8.1: + version "16.9.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.9.0.tgz#1c310e63f16a49ce1fbb230bd0a000e99f6f115f" + integrity sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw== + gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -9173,7 +9086,7 @@ history@4.10.1, history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@3, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -9323,9 +9236,9 @@ http-proxy-agent@^5.0.0: debug "4" http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6" + integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -9484,15 +9397,15 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -intl-messageformat@10.5.14: - version "10.5.14" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.14.tgz#e5bb373f8a37b88fbe647d7b941f3ab2a37ed00a" - integrity sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w== +intl-messageformat@10.7.7: + version "10.7.7" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.7.7.tgz#42085e1664729d02240a03346e31a2540b1112a0" + integrity sha512-F134jIoeYMro/3I0h08D0Yt4N9o9pjddU/4IIxMMURqbAtI2wu70X8hvG1V48W49zXHXv3RKSF/po+0fDfsGjA== dependencies: - "@formatjs/ecma402-abstract" "2.0.0" - "@formatjs/fast-memoize" "2.2.0" - "@formatjs/icu-messageformat-parser" "2.7.8" - tslib "^2.4.0" + "@formatjs/ecma402-abstract" "2.2.4" + "@formatjs/fast-memoize" "2.2.3" + "@formatjs/icu-messageformat-parser" "2.9.4" + tslib "2" intl@1.2.5: version "1.2.5" @@ -9565,9 +9478,9 @@ is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: has-tostringtag "^1.0.0" is-bun-module@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.1.0.tgz#a66b9830869437f6cdad440ba49ab6e4dc837269" - integrity sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.2.1.tgz#495e706f42e29f086fd5fe1ac3c51f106062b9fc" + integrity sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q== dependencies: semver "^7.6.3" @@ -9583,7 +9496,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.13.0, is-core-module@^2.13.1: +is-core-module@^2.13.0, is-core-module@^2.15.1: version "2.15.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== @@ -9886,10 +9799,10 @@ iterall@^1.2.1: resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== +iterator.prototype@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.3.tgz#016c2abe0be3bbdb8319852884f60908ac62bf9c" + integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ== dependencies: define-properties "^1.2.1" get-intrinsic "^1.2.1" @@ -10269,9 +10182,9 @@ jest-resolve@^27.5.1: slash "^3.0.0" jest-runner-eslint@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/jest-runner-eslint/-/jest-runner-eslint-2.2.0.tgz#defa330b06f47cde663de04373e3ae0ffdb1c55f" - integrity sha512-uR0kS/PCwCybIFh1yvbJSr3ajmusrueO8vnA4H3ItTpKCoYpQ9k2j2COrR1rdb4MnnbVBczrodCChrcJ/Hq3AQ== + version "2.2.1" + resolved "https://registry.yarnpkg.com/jest-runner-eslint/-/jest-runner-eslint-2.2.1.tgz#3cb214f84eeab3848af81c5842359e82073a3aef" + integrity sha512-BSAB65hGhtr/Kmb7tSkfqFmK9LYwCMK8L1xcp+XaSToPFqr7sY1jleMZUeDhV0ITA33pW+JUCx5a02veVD2Q2w== dependencies: chalk "^4.0.0" cosmiconfig "^7.0.0" @@ -10663,15 +10576,10 @@ jsdom@^21.1.2: ws "^8.13.0" xml-name-validator "^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 sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +jsesc@^3.0.2, jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== json-buffer@3.0.1: version "3.0.1" @@ -10708,7 +10616,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stable-stringify@^1.0.1: +json-stable-stringify@1: version "1.1.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== @@ -10809,9 +10717,9 @@ language-tags@^1.0.9: language-subtag-registry "^0.3.20" launch-editor@^2.6.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.8.1.tgz#3bda72af213ec9b46b170e39661916ec66c2f463" - integrity sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA== + version "2.9.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.9.1.tgz#253f173bd441e342d4344b4dae58291abb425047" + integrity sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w== dependencies: picocolors "^1.0.0" shell-quote "^1.8.1" @@ -11031,7 +10939,7 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^2.2.0: +loud-rejection@2: version "2.2.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c" integrity sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ== @@ -11122,7 +11030,7 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" -memoize-one@5.2.1: +memoize-one@5.2.1, memoize-one@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== @@ -11132,10 +11040,10 @@ memoize-one@^6.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: version "2.0.0" @@ -11269,9 +11177,9 @@ moment-locales-webpack-plugin@1.2.0: lodash.difference "^4.5.0" moment-timezone@^0.5.40: - version "0.5.45" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.45.tgz#cb685acd56bac10e69d93c536366eb65aa6bcf5c" - integrity sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ== + version "0.5.46" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.46.tgz#a21aa6392b3c6b3ed916cd5e95858a28d893704a" + integrity sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw== dependencies: moment "^2.29.4" @@ -11295,36 +11203,33 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -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.1.1: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== msw@^2.2.3: - version "2.4.1" - resolved "https://registry.yarnpkg.com/msw/-/msw-2.4.1.tgz#bb0ead0311de39d5847ff0836b9dd67e7bba02b8" - integrity sha512-HXcoQPzYTwEmVk+BGIcRa0vLabBT+J20SSSeYh/QfajaK5ceA6dlD4ZZjfz2dqGEq4vRNCPLP6eXsB94KllPFg== + version "2.6.5" + resolved "https://registry.yarnpkg.com/msw/-/msw-2.6.5.tgz#0d4ec95e6170aff26fcb0734ec1258c1e2bb617d" + integrity sha512-PnlnTpUlOrj441kYQzzFhzMzMCGFT6a2jKUBG7zSpLkYS5oh8Arrbc0dL8/rNAtxaoBy0EVs2mFqj2qdmWK7lQ== dependencies: - "@bundled-es-modules/cookie" "^2.0.0" + "@bundled-es-modules/cookie" "^2.0.1" "@bundled-es-modules/statuses" "^1.0.1" "@bundled-es-modules/tough-cookie" "^0.1.6" - "@inquirer/confirm" "^3.0.0" - "@mswjs/interceptors" "^0.29.0" + "@inquirer/confirm" "^5.0.0" + "@mswjs/interceptors" "^0.37.0" + "@open-draft/deferred-promise" "^2.2.0" "@open-draft/until" "^2.1.0" "@types/cookie" "^0.6.0" "@types/statuses" "^2.0.4" chalk "^4.1.2" + graphql "^16.8.1" headers-polyfill "^4.0.2" is-node-process "^1.2.0" - outvariant "^1.4.2" - path-to-regexp "^6.2.0" + outvariant "^1.4.3" + path-to-regexp "^6.3.0" strict-event-emitter "^0.5.1" - type-fest "^4.9.0" + type-fest "^4.26.1" yargs "^17.7.2" multicast-dns@^7.2.5: @@ -11335,10 +11240,10 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -mute-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" - integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== +mute-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" + integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== nanoid@^3.3.7: version "3.3.7" @@ -11370,6 +11275,11 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -11459,19 +11369,19 @@ nth-check@~1.0.1: boolbase "~1.0.0" nwsapi@^2.2.0, nwsapi@^2.2.2, nwsapi@^2.2.4: - version "2.2.12" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" - integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== + version "2.2.13" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.13.tgz#e56b4e98960e7a040e5474536587e599c4ff4655" + integrity sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ== object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.13.1, object-inspect@^1.7.0: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== +object-inspect@^1.13.1, object-inspect@^1.13.3, object-inspect@^1.7.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5: version "1.1.6" @@ -11515,7 +11425,7 @@ object.fromentries@^2.0.7, object.fromentries@^2.0.8: es-abstract "^1.23.2" es-object-atoms "^1.0.0" -object.groupby@^1.0.1: +object.groupby@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== @@ -11616,7 +11526,7 @@ optionator@^0.9.1, optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -outvariant@^1.2.1, outvariant@^1.4.0, outvariant@^1.4.2: +outvariant@^1.4.0, outvariant@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.4.3.tgz#221c1bfc093e8fec7075497e7799fdbf43d14873" integrity sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA== @@ -11727,11 +11637,11 @@ parse5@^3.0.1: "@types/node" "*" parse5@^7.0.0, parse5@^7.1.1, parse5@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + version "7.2.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" + integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== dependencies: - entities "^4.4.0" + entities "^4.5.0" parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" @@ -11776,10 +11686,10 @@ path-parse@^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 sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path-to-regexp@2.2.1: version "2.2.1" @@ -11787,16 +11697,16 @@ path-to-regexp@2.2.1: integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + version "1.9.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.9.0.tgz#5dc0753acbf8521ca2e0f137b4578b917b10cf24" + integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g== dependencies: isarray "0.0.1" -path-to-regexp@^6.2.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz#324377a83e5049cbecadc5554d6a63a9a4866b36" - integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== +path-to-regexp@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" + integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== path-type@^4.0.0: version "4.0.0" @@ -11808,16 +11718,21 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -12005,20 +11920,20 @@ postcss-modules-extract-imports@^3.1.0: integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== postcss-modules-local-by-default@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" - integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz#b0db6bc81ffc7bdc52eb0f84d6ca0bedf0e36d21" + integrity sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q== dependencies: icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^7.0.0" postcss-value-parser "^4.1.0" postcss-modules-scope@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" - integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== + version "3.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" + integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== dependencies: - postcss-selector-parser "^6.0.4" + postcss-selector-parser "^7.0.0" postcss-modules-values@^4.0.0: version "4.0.0" @@ -12121,7 +12036,7 @@ postcss-reporter@7.1.0: picocolors "^1.0.0" thenby "^1.3.4" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: +postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: version "6.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== @@ -12129,6 +12044,14 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz#41bd8b56f177c093ca49435f65731befe25d6b9c" + integrity sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-svgo@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" @@ -12159,13 +12082,13 @@ postcss@8.4.38: source-map-js "^1.2.0" postcss@^8.3.5, postcss@^8.4.27, postcss@^8.4.33: - version "8.4.41" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" - integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== dependencies: nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" + picocolors "^1.1.1" + source-map-js "^1.2.1" prelude-ls@^1.2.1: version "1.2.1" @@ -12282,40 +12205,47 @@ proxy-addr@~2.0.7: 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== + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + version "1.10.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.10.0.tgz#1450f7e16f922c3beeb7bd9db3f312635018fa15" + integrity sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA== + dependencies: + punycode "^2.3.1" punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== -punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0: +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0, punycode@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -qs@^6.12.3: +qs@6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: side-channel "^1.0.6" +qs@^6.12.3: + version "6.13.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e" + integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg== + dependencies: + side-channel "^1.0.6" + qss@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/qss/-/qss-2.0.3.tgz#630b38b120931b52d04704f3abfb0f861604a9ec" @@ -12341,7 +12271,7 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -raf-schd@^4.0.3: +raf-schd@^4.0.2, raf-schd@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a" integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== @@ -12403,6 +12333,19 @@ rc@1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-beautiful-dnd@13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz#b0f3087a5840920abf8bb2325f1ffa46d8c4d0a2" + integrity sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ== + dependencies: + "@babel/runtime" "^7.9.2" + css-box-model "^1.2.0" + memoize-one "^5.1.1" + raf-schd "^4.0.2" + react-redux "^7.2.0" + redux "^4.0.4" + use-memo-one "^1.1.1" + react-dev-utils@12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" @@ -12465,20 +12408,20 @@ react-from-dom@0.6.2: integrity sha512-qvWWTL/4xw4k/Dywd41RBpLQUSq97csuv15qrxN+izNeLYlD9wn5W8LspbfYe5CWbaSdkZ72BsaYBPQf2x4VbQ== react-intl@^6.3.2, react-intl@^6.6.2: - version "6.6.8" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.6.8.tgz#cb60c90502d0025caf9f86ec298cdc4348da17c2" - integrity sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA== - dependencies: - "@formatjs/ecma402-abstract" "2.0.0" - "@formatjs/icu-messageformat-parser" "2.7.8" - "@formatjs/intl" "2.10.4" - "@formatjs/intl-displaynames" "6.6.8" - "@formatjs/intl-listformat" "7.5.7" - "@types/hoist-non-react-statics" "^3.3.1" + version "6.8.9" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.8.9.tgz#ef36b2a19a0eb97afbeaeab9679273fcbf2ea261" + integrity sha512-TUfj5E7lyUDvz/GtovC9OMh441kBr08rtIbgh3p0R8iF3hVY+V2W9Am7rb8BpJ/29BH1utJOqOOhmvEVh3GfZg== + dependencies: + "@formatjs/ecma402-abstract" "2.2.4" + "@formatjs/icu-messageformat-parser" "2.9.4" + "@formatjs/intl" "2.10.15" + "@formatjs/intl-displaynames" "6.8.5" + "@formatjs/intl-listformat" "7.7.5" + "@types/hoist-non-react-statics" "3" "@types/react" "16 || 17 || 18" - hoist-non-react-statics "^3.3.2" - intl-messageformat "10.5.14" - tslib "^2.4.0" + hoist-non-react-statics "3" + intl-messageformat "10.7.7" + tslib "2" react-is@17.0.2, react-is@^17.0.1, react-is@^17.0.2: version "17.0.2" @@ -12510,7 +12453,7 @@ react-modal@3.16.1: react-lifecycles-compat "^3.0.0" warning "^4.0.3" -react-redux@7.2.9: +react-redux@7.2.9, react-redux@^7.2.0: version "7.2.9" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== @@ -12575,6 +12518,21 @@ react-select@5.8.0: react-transition-group "^4.3.0" use-isomorphic-layout-effect "^1.1.2" +react-select@5.8.1: + version "5.8.1" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.8.1.tgz#3284a93b7633b5e893306b2a8007ea0f793e62b9" + integrity sha512-RT1CJmuc+ejqm5MPgzyZujqDskdvB9a9ZqrdnVLsvAHjJ3Tj0hELnLeVPQlmYdVKCdCpxanepl6z7R5KhXhWzg== + dependencies: + "@babel/runtime" "^7.12.0" + "@emotion/cache" "^11.4.0" + "@emotion/react" "^11.8.1" + "@floating-ui/dom" "^1.0.1" + "@types/react-transition-group" "^4.4.0" + memoize-one "^6.0.0" + prop-types "^15.6.0" + react-transition-group "^4.3.0" + use-isomorphic-layout-effect "^1.1.2" + react-test-renderer@^16.0.0-0: version "16.14.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" @@ -12689,7 +12647,7 @@ redux@4.2.0: dependencies: "@babel/runtime" "^7.9.2" -redux@^4.0.0, redux@^4.2.1: +redux@^4.0.0, redux@^4.0.4, redux@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197" integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w== @@ -12725,10 +12683,10 @@ reflect.ownkeys@^1.1.4: es-set-tostringtag "^2.0.1" globalthis "^1.0.3" -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== dependencies: regenerate "^1.4.2" @@ -12749,30 +12707,30 @@ regenerator-transform@^0.15.2: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2, regexp.prototype.flags@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== dependencies: - call-bind "^1.0.6" + call-bind "^1.0.7" define-properties "^1.2.1" es-errors "^1.3.0" - set-function-name "^2.0.1" + set-function-name "^2.0.2" regexpp@^3.0.0, 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.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== +regexpu-core@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.1.1.tgz#b469b245594cb2d088ceebc6369dceb8c00becac" + integrity sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw== dependencies: - "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.11.0" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" @@ -12790,12 +12748,17 @@ registry-url@^6.0.0: dependencies: rc "1.2.8" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.11.0: + version "0.11.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.11.2.tgz#7404ad42be00226d72bcf1f003f1f441861913d8" + integrity sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA== dependencies: - jsesc "~0.5.0" + jsesc "~3.0.2" rehackt@^0.1.0: version "0.1.0" @@ -12942,10 +12905,20 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup-plugin-visualizer@^5.12.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" + integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== + dependencies: + open "^8.4.0" + picomatch "^2.3.1" + source-map "^0.7.4" + yargs "^17.5.1" + rollup@^3.27.1: - version "3.29.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + version "3.29.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.5.tgz#8a2e477a758b520fb78daf04bca4c522c1da8a54" + integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w== optionalDependencies: fsevents "~2.3.2" @@ -12979,16 +12952,16 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -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.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== +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-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" @@ -13106,10 +13079,10 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semve resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" @@ -13159,15 +13132,15 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== dependencies: - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.18.0" + send "0.19.0" set-function-length@^1.2.1: version "1.2.2" @@ -13318,10 +13291,10 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" -source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.0, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" @@ -13341,7 +13314,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~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.4: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== @@ -13410,9 +13383,9 @@ statuses@2.0.1, statuses@^2.0.1: integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== std-env@^3.0.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" - integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + version "3.8.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5" + integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w== stop-iteration-iterator@^1.0.0: version "1.0.0" @@ -13465,13 +13438,14 @@ string-width@^7.0.0: get-east-asian-width "^1.0.0" strip-ansi "^7.1.0" -string.prototype.includes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" - integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg== +string.prototype.includes@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" + integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" string.prototype.matchall@^4.0.11: version "4.0.11" @@ -13748,9 +13722,9 @@ terser-webpack-plugin@5.3.10, terser-webpack-plugin@^5.3.10: terser "^5.26.0" terser@^5.10.0, terser@^5.26.0: - version "5.31.6" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.6.tgz#c63858a0f0703988d0266a82fcbf2d7ba76422b1" - integrity sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg== + version "5.36.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.36.0.tgz#8b0dbed459ac40ff7b4c9fd5a3a2029de105180e" + integrity sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -13802,7 +13776,7 @@ tiny-case@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== -tiny-invariant@1.3.3, tiny-invariant@^1.0.2: +tiny-invariant@1.3.3, tiny-invariant@^1.0.2, tiny-invariant@^1.0.6: version "1.3.3" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== @@ -13817,11 +13791,6 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -13914,16 +13883,16 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@2, tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tslib@^1.8.0, tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" - integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== - tslib@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" @@ -13978,10 +13947,10 @@ type-fest@^2.19.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-fest@^4.9.0: - version "4.26.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.0.tgz#703f263af10c093cd6277d079e26b9e17d517c4b" - integrity sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw== +type-fest@^4.26.1: + version "4.27.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.27.0.tgz#57329aae32e7b27b942b961e3ef861f0873c4b1b" + integrity sha512-3IMSWgP7C5KSQqmo1wjhKrwsvXAtF33jO3QY+Uy++ia7hqvgSK6iXbbg5PbDBc1P2ZbNEDgejOrN4YooXvhwCw== type-is@~1.6.18: version "1.6.18" @@ -14043,9 +14012,9 @@ typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" typescript@5, typescript@^5.2.2, typescript@^5.4.2: - version "5.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== uglify-js@3.18.0: version "3.18.0" @@ -14067,7 +14036,7 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undici-types@~6.19.2: +undici-types@~6.19.8: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== @@ -14078,9 +14047,9 @@ unfetch@4.2.0: integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== 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== + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" @@ -14091,9 +14060,9 @@ unicode-match-property-ecmascript@^2.0.0: unicode-property-aliases-ecmascript "^2.0.0" unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" + integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" @@ -14127,13 +14096,13 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" + escalade "^3.2.0" + picocolors "^1.1.0" uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" @@ -14182,6 +14151,11 @@ use-latest@^1.2.1: dependencies: use-isomorphic-layout-effect "^1.1.1" +use-memo-one@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" + integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ== + use-popper@1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/use-popper/-/use-popper-1.1.6.tgz#51d578084d92dd941dda466dea4cb0c3d2c5379b" @@ -14210,11 +14184,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - uuid@9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" @@ -14271,10 +14240,15 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vite-bundle-analyzer@0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/vite-bundle-analyzer/-/vite-bundle-analyzer-0.12.1.tgz#0a429384ab327ad6ab08e3f0aa29e4cf0693969f" + integrity sha512-mIYwsDvTYCqXAUtOZIL3f7NdwWUeL/MlNFhOJzlTdcZE4pye6h06IEnOvWhnc/e+HM4oVVNxuRHZt0Rz6VO7EA== + vite@~4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.3.tgz#d88a4529ea58bae97294c7e2e6f0eab39a50fb1a" - integrity sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg== + version "4.5.5" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.5.tgz#639b9feca5c0a3bfe3c60cb630ef28bf219d742e" + integrity sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ== dependencies: esbuild "^0.18.10" postcss "^8.4.27" @@ -14429,12 +14403,11 @@ webpack-sources@^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@5.92.0: - version "5.92.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.92.0.tgz#cc114c71e6851d220b1feaae90159ed52c876bdf" - integrity sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA== +webpack@5.94.0: + version "5.94.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f" + integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== dependencies: - "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" "@webassemblyjs/ast" "^1.12.1" "@webassemblyjs/wasm-edit" "^1.12.1" @@ -14443,7 +14416,7 @@ webpack@5.92.0: acorn-import-attributes "^1.9.5" browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.0" + enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" @@ -14460,17 +14433,17 @@ webpack@5.92.0: webpack-sources "^3.2.3" webpack@^5: - version "5.94.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f" - integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== + version "5.96.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.96.1.tgz#3676d1626d8312b6b10d0c18cc049fba7ac01f0c" + integrity sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA== dependencies: - "@types/estree" "^1.0.5" + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" "@webassemblyjs/ast" "^1.12.1" "@webassemblyjs/wasm-edit" "^1.12.1" "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-attributes "^1.9.5" - browserslist "^4.21.10" + acorn "^8.14.0" + browserslist "^4.24.0" chrome-trace-event "^1.0.2" enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" @@ -14752,7 +14725,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.7.2: +yargs@^17.5.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== diff --git a/src/.DS_Store b/src/.DS_Store deleted file mode 100644 index dbd07c1..0000000 Binary files a/src/.DS_Store and /dev/null differ diff --git a/validation-service/.env.example b/validation-service/.env.example new file mode 100644 index 0000000..563a2e2 --- /dev/null +++ b/validation-service/.env.example @@ -0,0 +1,5 @@ +CTP_CLIENT_ID= +CTP_CLIENT_SECRET= +CTP_PROJECT_KEY= +CTP_SCOPE= +CTP_REGION= \ No newline at end of file diff --git a/validation-service/.eslintignore b/validation-service/.eslintignore new file mode 100644 index 0000000..66ba005 --- /dev/null +++ b/validation-service/.eslintignore @@ -0,0 +1,4 @@ +node_modules +build/ +.nvmrc +.env \ No newline at end of file diff --git a/validation-service/.eslintrc.cjs b/validation-service/.eslintrc.cjs new file mode 100644 index 0000000..8c19aef --- /dev/null +++ b/validation-service/.eslintrc.cjs @@ -0,0 +1,20 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 2020, + }, + plugins: ['@typescript-eslint'], + extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], + rules: { + '@typescript-eslint/no-unused-vars': 'error', + 'no-undef': 'error', + 'no-console': 'error', + 'no-const-assign': 'error', + }, + env: { + es6: true, + jest: true, + node: true, //adds things like process to global + }, +}; diff --git a/validation-service/.gitignore b/validation-service/.gitignore new file mode 100644 index 0000000..2eea525 --- /dev/null +++ b/validation-service/.gitignore @@ -0,0 +1 @@ +.env \ No newline at end of file diff --git a/validation-service/.nvmrc b/validation-service/.nvmrc new file mode 100644 index 0000000..c946e1d --- /dev/null +++ b/validation-service/.nvmrc @@ -0,0 +1 @@ +v20.9.0 \ No newline at end of file diff --git a/validation-service/.prettierrc b/validation-service/.prettierrc new file mode 100644 index 0000000..137a280 --- /dev/null +++ b/validation-service/.prettierrc @@ -0,0 +1,14 @@ +{ + "trailingComma": "es5", + "singleQuote": true, + "parser": "typescript", + "printWidth": 80, + "overrides": [ + { + "files": "*.json", + "options": { + "parser": "json" + } + } + ] +} \ No newline at end of file diff --git a/validation-service/LICENSE b/validation-service/LICENSE new file mode 100644 index 0000000..05574e5 --- /dev/null +++ b/validation-service/LICENSE @@ -0,0 +1,7 @@ +Copyright + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/validation-service/README.md b/validation-service/README.md new file mode 100644 index 0000000..42dc47d --- /dev/null +++ b/validation-service/README.md @@ -0,0 +1,23 @@ +# Validation Service + +This is a Node.js-Express app that exposes a single endpoint to validate and create/update custom objects in Commercetools platform. The endpoint is accessible at `/validate` + +## API + +### POST /validate + +Validate a custom object and create or update it in Commercetools platform. + +#### Request body + +The request body should contain the custom object to be validated and created/updated in the following format: +``` +{ + "container": "Configuration", + "key": "abandoned", + "value": "{\"Name\":\"123ERER\",\"Key\":\"Chevy\",\"Value\":\"\"}", + "schemaType": "Configuration" +} +``` +The value field should be a JSON string. Refere to [custom object values](https://docs.commercetools.com/api/graphql#create-product-attributes-custom-fields-and-custom-objects) for more information. + diff --git a/validation-service/jest.config.cjs b/validation-service/jest.config.cjs new file mode 100644 index 0000000..f25629c --- /dev/null +++ b/validation-service/jest.config.cjs @@ -0,0 +1,8 @@ +module.exports = { + displayName: 'Tests Typescript Application - Service', + moduleDirectories: ['node_modules', 'src'], + testMatch: ['**/tests/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)'], + preset: 'ts-jest', + testEnvironment: 'node', + setupFiles: ['./jest.setup.js'] +}; diff --git a/validation-service/jest.setup.js b/validation-service/jest.setup.js new file mode 100644 index 0000000..6e9cead --- /dev/null +++ b/validation-service/jest.setup.js @@ -0,0 +1,5 @@ +process.env.CTP_CLIENT_ID = 'FxxqwjxxxbHIdGxxxv4qRxxx'; +process.env.CTP_CLIENT_SECRET = '7gIln_xxxztzDwxt9bOiEC5cRnZiqJmX'; +process.env.CTP_PROJECT_KEY = 'us-store'; +process.env.CTP_SCOPE = 'manage_project:us-store'; +process.env.CTP_REGION = 'us-central1.gcp'; diff --git a/validation-service/package.json b/validation-service/package.json new file mode 100644 index 0000000..7d848a0 --- /dev/null +++ b/validation-service/package.json @@ -0,0 +1,53 @@ +{ + "name": "service-typescript", + "description": "", + "version": "1.0.0", + "main": "index.js", + "private": true, + "scripts": { + "start": "node build/index.js", + "start:dev": "concurrently -k \"tsc --watch\" \"nodemon -q build/index.js\"", + "build": "rimraf ./build && tsc", + "lint": "eslint . --ext .ts", + "format": "prettier --write '**/*.{js,ts}'", + "test": "jest --config jest.config.cjs", + "test:watch": "jest --watch", + "connector:post-deploy": "node build/connector/post-deploy.js", + "connector:pre-undeploy": "node build/connector/pre-undeploy.js" + }, + "author": "", + "license": "MIT", + "devDependencies": { + "@tsconfig/recommended": "^1.0.3", + "@types/cors": "^2.8.17", + "@types/express": "^4.17.14", + "@types/jest": "^29.0.3", + "@types/node": "^18.7.18", + "@types/node-fetch": "^2.6.11", + "@types/validator": "^13.7.10", + "@typescript-eslint/eslint-plugin": "^5.46.0", + "@typescript-eslint/parser": "^5.46.0", + "concurrently": "^8.2.0", + "eslint": "^8.46.0", + "jest": "^29.6.2", + "nodemon": "^3.0.1", + "prettier": "^3.0.1", + "rimraf": "^5.0.1", + "ts-jest": "^29.1.1", + "typescript": "^5.1.6" + }, + "dependencies": { + "@apollo/client": "^3.11.10", + "@commercetools-backend/loggers": "^21.19.0", + "@commercetools/platform-sdk": "^4.0.0", + "@commercetools/sdk-client-v2": "^2.0.0", + "body-parser": "^1.20.2", + "cors": "^2.8.5", + "dotenv": "^16.3.1", + "express": "^4.18.2", + "graphql": "^16.9.0", + "graphql-request": "^7.1.2", + "validator": "^13.11.0" + }, + "packageManager": "yarn@1.22.21" +} diff --git a/validation-service/src/api/success.api.ts b/validation-service/src/api/success.api.ts new file mode 100644 index 0000000..391f758 --- /dev/null +++ b/validation-service/src/api/success.api.ts @@ -0,0 +1,21 @@ +import { UpdateAction } from '@commercetools/sdk-client-v2'; +import { Response } from 'express'; +import { ResponseInterfaceSuccess } from '../interfaces/response.interface'; + +/** + * Send a success response to the client + * + * @param {Response} response Express response + * @param {number} statusCode The status code of the operation + * @param {Array} updateActions The update actions that were made in the process + * @returns Success response with 200 status code and the update actions array + */ +export const apiSuccess = ( + statusCode: number, + result: any, + response: Response +) => { + response.status(statusCode).json({ + result, + }); +}; diff --git a/validation-service/src/client/apollo.client.ts b/validation-service/src/client/apollo.client.ts new file mode 100644 index 0000000..8d3623f --- /dev/null +++ b/validation-service/src/client/apollo.client.ts @@ -0,0 +1,81 @@ +import { DocumentNode, print } from 'graphql'; +import { readConfiguration } from '../utils/config.utils'; + +// Get token using client credentials flow +async function getAccessToken() { + const config = readConfiguration(); + const response = await fetch( + `https://auth.${config.region}.commercetools.com/oauth/token`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Authorization: `Basic ${Buffer.from( + `${config.clientId}:${config.clientSecret}` + ).toString('base64')}`, + }, + body: `grant_type=client_credentials&scope=${config.scope}`, + } + ); + + const data = await response.json(); + return data.access_token; +} + +const config = readConfiguration(); + +export const getNodeClient = async () => { + const accessToken = await getAccessToken(); + return { + query: async ({ + query, + variables, + }: { + query: DocumentNode; + variables?: Record; + }) => { + const response = await fetch( + `https://api.${config.region}.commercetools.com/${config.projectKey}/graphql`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${accessToken}`, + }, + body: JSON.stringify({ + query: print(query), + variables, + }), + } + ); + + const data = await response.json(); + return data; + }, + mutate: async ({ + mutation, + variables, + }: { + mutation: DocumentNode; + variables?: Record; + }) => { + const response = await fetch( + `https://api.${config.region}.commercetools.com/${config.projectKey}/graphql`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${accessToken}`, + }, + body: JSON.stringify({ + query: print(mutation), + variables, + }), + } + ); + + const data = await response.json(); + return data; + }, + }; +}; diff --git a/validation-service/src/controllers/service.controller.ts b/validation-service/src/controllers/service.controller.ts new file mode 100644 index 0000000..9993ef7 --- /dev/null +++ b/validation-service/src/controllers/service.controller.ts @@ -0,0 +1,34 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import { Request, Response } from 'express'; +import { apiSuccess } from '../api/success.api'; +import CustomError from '../errors/custom.error'; +import { getNodeClient } from '../client/apollo.client'; +import { CustomObjectController } from '../shared-code'; + +export const post = async (request: Request, response: Response) => { + // Deserialize the action and resource from the body + const { container, key, value, schemaType } = request.body; + + if (!container || !key || !value || !schemaType) { + throw new CustomError(400, 'Bad request - Missing body parameters.'); + } + + const client = await getNodeClient(); + const customObjectController = new CustomObjectController(client); + + try { + const result = await customObjectController.createOrUpdateCustomObject( + container, + key, + value, + schemaType + ); + apiSuccess(200, result, response); + return result; + } catch (error) { + response.status(400).json({ + // @ts-ignore + message: error.message, + }); + } +}; diff --git a/validation-service/src/errors/custom.error.ts b/validation-service/src/errors/custom.error.ts new file mode 100644 index 0000000..9e0215f --- /dev/null +++ b/validation-service/src/errors/custom.error.ts @@ -0,0 +1,26 @@ +type ErrorItem = { + statusCode: number | string; + message: string; + referencedBy?: string; +}; + +class CustomError extends Error { + statusCode: number | string; + message: string; + errors?: ErrorItem[]; + + constructor( + statusCode: number | string, + message: string, + errors?: ErrorItem[] + ) { + super(message); + this.statusCode = statusCode; + this.message = message; + if (errors) { + this.errors = errors; + } + } +} + +export default CustomError; diff --git a/validation-service/src/index.ts b/validation-service/src/index.ts new file mode 100644 index 0000000..2aeeb79 --- /dev/null +++ b/validation-service/src/index.ts @@ -0,0 +1,85 @@ +import cors from 'cors'; +import * as dotenv from 'dotenv'; +dotenv.config(); + +import express, { Express } from 'express'; +import bodyParser from 'body-parser'; + +// Import routes +import ServiceRoutes from './routes/service.route'; + +// Import logger +import { logger } from './utils/logger.utils'; + +import { readConfiguration } from './utils/config.utils'; + +const ALLOWED_ORIGINS = [ + 'localhost:3000', + 'localhost:3001', + 'commercetools.com', +]; + +// Read env variables +readConfiguration(); + +const PORT = 8080; + +// Create the express app +const app: Express = express(); +app.disable('x-powered-by'); + +// Define configurations +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); + +// CORS configuration +const corsOptions = { + origin: ( + origin: string | undefined, + callback: (err: Error | null, allow?: boolean) => void + ) => { + // Allow requests with no origin (like mobile apps or curl requests) + if (!origin) { + callback(null, true); + return; + } + + // Extract domain from origin + const domain = origin.replace(/^https?:\/\//, '').split(':')[0]; + + // Check if domain matches any allowed origin or is a subdomain of allowed origins + const isAllowed = ALLOWED_ORIGINS.some((allowedOrigin) => { + // Remove protocol and port if present + const cleanAllowedOrigin = allowedOrigin + .replace(/^https?:\/\//, '') + .split(':')[0]; + + return ( + domain === cleanAllowedOrigin || // Exact match + domain.endsWith('.' + cleanAllowedOrigin) // Subdomain match + ); + }); + + if (isAllowed) { + callback(null, true); + } else { + callback(new Error('Not allowed by CORS')); + } + }, + credentials: true, // Allow credentials + methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], + allowedHeaders: ['Content-Type'], +}; + +// Apply CORS middleware +app.use(cors(corsOptions)); + +// Define routes +app.use('/validation', ServiceRoutes); + +// Listen the application +const server = app.listen(PORT, () => { + logger.info(`⚡️ Service application listening on port ${PORT}`); +}); + +export default server; diff --git a/validation-service/src/interfaces/config.interface.ts b/validation-service/src/interfaces/config.interface.ts new file mode 100644 index 0000000..cbaf35e --- /dev/null +++ b/validation-service/src/interfaces/config.interface.ts @@ -0,0 +1,8 @@ +export interface Config { + clientId: string; + clientSecret: string; + projectKey: string; + scope: string; + region: string; + port: string; +} diff --git a/validation-service/src/interfaces/resource.interface.ts b/validation-service/src/interfaces/resource.interface.ts new file mode 100644 index 0000000..0dbda1d --- /dev/null +++ b/validation-service/src/interfaces/resource.interface.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface Resource {} diff --git a/validation-service/src/interfaces/response.interface.ts b/validation-service/src/interfaces/response.interface.ts new file mode 100644 index 0000000..8bcaf4e --- /dev/null +++ b/validation-service/src/interfaces/response.interface.ts @@ -0,0 +1,9 @@ +import { UpdateAction } from '@commercetools/sdk-client-v2'; + +export interface ResponseInterfaceSuccess { + actions: Array; +} + +export interface ResponseInterfaceError { + errors: Array; +} diff --git a/validation-service/src/routes/service.route.ts b/validation-service/src/routes/service.route.ts new file mode 100644 index 0000000..fb5e663 --- /dev/null +++ b/validation-service/src/routes/service.route.ts @@ -0,0 +1,17 @@ +import { Router } from 'express'; +import { logger } from '../utils/logger.utils'; +import { post } from '../controllers/service.controller'; + +const serviceRouter = Router(); + +serviceRouter.post('/', (req, res, next) => { + logger.info('Service post message received'); + + try { + post(req, res); + } catch (error) { + next(error); + } +}); + +export default serviceRouter; diff --git a/validation-service/src/shared-code/constants/map-types.ts b/validation-service/src/shared-code/constants/map-types.ts new file mode 100644 index 0000000..ebe417e --- /dev/null +++ b/validation-service/src/shared-code/constants/map-types.ts @@ -0,0 +1,17 @@ +export const referenceTypeToSingleValueMap: Record = { + 'cart-discount': 'cartDiscount', + 'product-discount': 'productDiscount', + 'customer-group': 'customerGroup', + 'discount-code': 'discountCode', + 'key-value-document': 'customObject', + 'product-type': 'productType', + 'tax-category': 'taxCategory', + 'shopping-list': 'shoppingList', + 'shipping-method': 'shippingMethod', + type: 'typeDefinition', + 'product-price': 'standalonePrice', + }; + + export const referenceTypeSkipKey: string[] = [ + 'order' + ] \ No newline at end of file diff --git a/validation-service/src/shared-code/custom-object.controller.ts b/validation-service/src/shared-code/custom-object.controller.ts new file mode 100644 index 0000000..554f50e --- /dev/null +++ b/validation-service/src/shared-code/custom-object.controller.ts @@ -0,0 +1,504 @@ +import { ApolloContextValue } from '@apollo/client'; +import { AttributeSchema, CustomObject, Schema } from './types/validator'; +import Create from './queries/create-custom-object'; +import Get from './queries/get-custom-object'; +import { GraphQLClient } from './types/graphql'; +import { referenceTypeToSingleValueMap } from './constants/map-types'; +import { getEntityById } from './queries/get-entity-by-id'; +import { getEntityByKey } from './queries/get-entity-by-key'; + +const SCHEMA_CONTAINER = 'mc-custom-object-schema'; +export class CustomObjectController { + private apolloClient?: GraphQLClient; + private context?: ApolloContextValue; + + constructor( + apolloClient?: GraphQLClient, + context?: ApolloContextValue & { target: string } + ) { + this.apolloClient = apolloClient; + this.context = context; + } + + async fetchCustomObject( + container: string, + key: string + ): Promise { + try { + const response = await this.apolloClient + ?.query({ + query: Get, + variables: { container, key }, + ...(this.context && { context: this.context }), + }) + .then((res) => { + return res.data as { customObject: CustomObject }; + }); + return response?.customObject; + } catch (error) { + console.error('Error fetching custom object:', error); + return undefined; + } + } + + async createOrUpdateCustomObject( + container: string, + key: string, + value: string, + schemaType: string + ): Promise { + const jsonValue = JSON.parse(value); + await this.validateObjectBySchemaType(jsonValue, schemaType); + + const response = await this.apolloClient + ?.mutate({ + mutation: Create, + variables: { + draft: { + container, + key, + value, + }, + }, + ...(this.context && { context: this.context }), + }) + .then((res) => { + return res.data as CustomObject; + }); + + return response; + } + + private async validateObjectBySchemaType( + value: Record, + schemaType: string + ): Promise { + if (schemaType === SCHEMA_CONTAINER) { + return; + } + const schemaObject = await this.fetchCustomObject( + SCHEMA_CONTAINER, + schemaType + ); + + if (!schemaObject) { + throw new Error(`Schema not found for type: ${schemaType}`); + } + await this.validateObjectSchema(schemaObject.value, value); + } + + private async validateObjectSchema( + schema: Schema, + value: Record + ) { + for (const attributeSchema of schema.attributes) { + const attributeValue = value[attributeSchema.name]; + + if (attributeSchema.required && attributeValue === undefined) { + throw new Error(`Required attribute missing: ${attributeSchema.name}`); + } + + if (attributeValue != null) { + await this.validateAttribute(attributeSchema, attributeValue); + } + } + } + + public async validateAttribute( + schema: AttributeSchema, + value: any + ): Promise { + switch (schema.type) { + case 'Boolean': + await this.validateBoolean(schema, value); + break; + case 'String': + await this.validateString(schema, value); + break; + case 'LocalizedString': + await this.validateLocalizedString(schema, value); + break; + case 'Number': + await this.validateNumber(schema, value); + break; + case 'Date': + await this.validateDate(schema, value); + break; + case 'Enum': + await this.validateEnum(schema, value); + break; + case 'LocalizedEnum': + await this.validateLocalizedEnum(schema, value); + break; + case 'Money': + await this.validateMoney(schema, value); + break; + case 'Time': + await this.validateTime(schema, value); + break; + case 'DateTime': + await this.validateDateTime(schema, value); + break; + case 'Reference': + await this.validateReference(schema, value); + break; + case 'Object': + await this.validateObject(schema, value); + break; + default: + throw new Error(`Unsupported type for attribute: ${schema.name}`); + } + } + + private async validateSet( + schema: AttributeSchema, + value: any, + cbFuncName: string + ): Promise { + if (!schema.required && (typeof value === 'undefined' || value === null)) { + return; + } else if (!Array.isArray(value)) { + throw new Error( + `Invalid type for set attribute: ${ + schema.name + }. Expected Array, got ${typeof value}` + ); + } + for (const item of value) { + // @ts-ignore + this[cbFuncName] && + // @ts-ignore + (await this[cbFuncName]( + { + ...schema, + set: false, + }, + item + )); + } + } + + private async validateBoolean( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateBoolean'); + } else { + if (schema.required && typeof value !== 'boolean') { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected Boolean, got ${typeof value}` + ); + } + } + } + + private async validateString( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateString'); + } else { + if (schema.required && typeof value !== 'string') { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected String, got ${typeof value}` + ); + } + } + } + + private async validateNumber( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateNumber'); + } else { + if (schema.required && typeof value !== 'number') { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected Number, got ${typeof value}` + ); + } + } + } + + private async validateEnum( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateEnum'); + } else { + if (!schema.required && !value) { + return; + } + + if (!schema.enum?.some((enumValue) => enumValue.value === value)) { + throw new Error( + `Invalid enum value for attribute: ${schema.name}. Value: ${value}` + ); + } + + if (schema.required && typeof value !== 'string') { + throw new Error( + `Invalid type for enum attribute: ${ + schema.name + }. Expected String, got ${typeof value}` + ); + } + } + } + private async validateLocalizedEnum( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateLocalizedEnum'); + } else { + if (!schema.required && !value) { + return; + } + + if (!schema.lenum?.some((enumValue) => enumValue.value === value)) { + throw new Error( + `Invalid enum value for attribute: ${schema.name}. Value: ${value}` + ); + } + + if (schema.required && typeof value !== 'string') { + throw new Error( + `Invalid type for enum attribute: ${ + schema.name + }. Expected String, got ${typeof value}` + ); + } + } + } + + private async validateReference( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateReference'); + } else { + if (!schema.required && !value) { + return; + } + if (typeof value !== 'object' || !value) { + throw new Error( + `Invalid type for reference attribute: ${ + schema.name + }. Expected object, got ${typeof value}` + ); + } + + const referenceValue = value as Record; + const typeId = referenceValue.typeId as string; + const id = referenceValue.id as string; + const key = referenceValue.key as string; + + if (!typeId) { + throw new Error( + `Invalid reference value for attribute: ${schema.name}. Missing typeId` + ); + } + if (schema.required && !id && !key) { + throw new Error( + `Invalid reference value for attribute: ${schema.name}. Missing id or key` + ); + } + + if (!schema.reference || typeId !== schema.reference.type) { + throw new Error( + `Invalid reference type for attribute: ${schema.name}. Expected ${schema.reference?.type}, got ${typeId}` + ); + } + await this.validateReferenceValue(typeId, id, key); + } + } + + private async validateMoney( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateMoney'); + } else { + if (!schema.required && !value) { + return; + } + if ( + typeof value.amount !== 'string' || + typeof value.currencyCode !== 'string' + ) { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected Money, got ${typeof value}` + ); + } + if (isNaN(parseInt(value.amount))) { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected amount, got ${typeof value.amount}` + ); + } + } + } + private async validateTime( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateTime'); + } else { + if (!schema.required && !value) { + return; + } + + const timeRegex = /^([01]?[0-9]|2[0-3]):[0-5][0-9] ([AP]M)$/; + if (typeof value !== 'string' || !value.match(timeRegex)) { + throw new Error( + `Invalid value for attribute: ${schema.name}. Expected Time in format HH:mm AM/PM, got ${value}` + ); + } + } + } + private async validateDateTime( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateDateTime'); + } else { + if (!schema.required && !value) { + return; + } + const dateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/; + if (typeof value !== 'string' || !value.match(dateTimeRegex)) { + throw new Error( + `Invalid value for attribute: ${schema.name}. Expected DateTime in format yyyy-mm-ddTHH:mm:ss.sssZ, got ${value}` + ); + } + } + } + private async validateDate( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateDate'); + } else { + if (!schema.required && !value) { + return; + } + const dateRegex = /^\d{4}-\d{2}-\d{2}$/; + if (typeof value !== 'string' || !value.match(dateRegex)) { + throw new Error( + `Invalid value for attribute: ${schema.name}. Expected Date in format MM/DD/YYYY, got ${value}` + ); + } + } + } + + private async validateLocalizedString( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateLocalizedString'); + } else { + if (!schema.required && !value) { + return; + } + if (typeof value !== 'object' || value === null) { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected LocalizedString, got ${typeof value}` + ); + } + if (Object.keys(value).length === 0) { + throw new Error( + `Invalid type for attribute: ${schema.name}. Expected LocalizedString is empty` + ); + } + if (schema.required) { + if ( + !Object.keys(value).some( + (key) => typeof value[key] !== undefined || value[key] !== '' + ) + ) { + throw new Error(`Required attribute missing: ${schema.name}`); + } + } + } + } + + private async validateObject( + schema: AttributeSchema, + value: any + ): Promise { + if (schema.set) { + await this.validateSet(schema, value, 'validateObject'); + } else { + if (!schema.required && !value) { + return; + } + if (typeof value !== 'object' || !value) { + throw new Error( + `Invalid type for attribute: ${ + schema.name + }. Expected Object, got ${typeof value}` + ); + } + if (schema.attributes?.length) { + await this.validateObjectSchema( + { + attributes: schema.attributes, + }, + value + ); + } + } + } + + private async validateReferenceValue( + typeId: string, + id?: string, + key?: string + ): Promise { + if (!id && !key){ + return; + } + const singleValueQueryDataObject = referenceTypeToSingleValueMap[typeId] + ? referenceTypeToSingleValueMap[typeId] + : typeId; + + const query = id + ? getEntityById(singleValueQueryDataObject) + : getEntityByKey(singleValueQueryDataObject); + + await this.apolloClient + ?.query({ + query: query, + variables: id ? { id } : { key }, + ...(this.context && { context: this.context }), + }).then((res) => { + if (!(res.data as any)[singleValueQueryDataObject]) { + throw new Error( + `Invalid reference value for attribute: ${typeId}. The expected ${typeId} was not found` + ); + } + }); + } +} diff --git a/validation-service/src/shared-code/index.ts b/validation-service/src/shared-code/index.ts new file mode 100644 index 0000000..7a7740b --- /dev/null +++ b/validation-service/src/shared-code/index.ts @@ -0,0 +1,2 @@ +export { CustomObjectController } from './custom-object.controller'; +export { referenceTypeToSingleValueMap } from './constants/map-types'; diff --git a/validation-service/src/shared-code/queries/create-custom-object.ts b/validation-service/src/shared-code/queries/create-custom-object.ts new file mode 100644 index 0000000..7440df9 --- /dev/null +++ b/validation-service/src/shared-code/queries/create-custom-object.ts @@ -0,0 +1,12 @@ +import gql from 'graphql-tag'; + +export default gql` + mutation UpdateCustomObject($draft: CustomObjectDraft!) { + createOrUpdateCustomObject(draft: $draft) { + id + version + key + container + } + } +`; diff --git a/validation-service/src/shared-code/queries/get-custom-object.ts b/validation-service/src/shared-code/queries/get-custom-object.ts new file mode 100644 index 0000000..ae57073 --- /dev/null +++ b/validation-service/src/shared-code/queries/get-custom-object.ts @@ -0,0 +1,13 @@ +import gql from 'graphql-tag'; + +export default gql` + query customObject($key: String!, $container: String!) { + customObject(key: $key, container: $container) { + id + lastModifiedAt + container + key + value + } + } +`; diff --git a/validation-service/src/shared-code/queries/get-entity-by-id.ts b/validation-service/src/shared-code/queries/get-entity-by-id.ts new file mode 100644 index 0000000..4e68c6a --- /dev/null +++ b/validation-service/src/shared-code/queries/get-entity-by-id.ts @@ -0,0 +1,14 @@ +import gql from "graphql-tag" +import { referenceTypeSkipKey } from "../constants/map-types" + +export const getEntityById = (type: string) => { + const skipKey = referenceTypeSkipKey.includes(type) + return gql` + query ${type}($id: String!) { + ${type}(id: $id) { + id + ${skipKey ? '' : 'key'} + } + } + ` +} \ No newline at end of file diff --git a/validation-service/src/shared-code/queries/get-entity-by-key.ts b/validation-service/src/shared-code/queries/get-entity-by-key.ts new file mode 100644 index 0000000..f9395a3 --- /dev/null +++ b/validation-service/src/shared-code/queries/get-entity-by-key.ts @@ -0,0 +1,12 @@ +import gql from "graphql-tag" + +export const getEntityByKey = (type: string) => { + return gql` + query ${type}($key: String!) { + ${type}(key: $key) { + id + key + } + } + ` +} \ No newline at end of file diff --git a/validation-service/src/shared-code/specs/custom-object.controller.boolean.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.boolean.spec.ts new file mode 100644 index 0000000..7c06dba --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.boolean.spec.ts @@ -0,0 +1,126 @@ +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateAttribute', () => { + describe('Boolean', () => { + const testCases = [ + { + schema: { + name: 'test', + type: 'Boolean', + set: false, + required: false, + }, + value: true, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Boolean', + set: false, + required: false, + }, + value: false, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Boolean', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: false, required: true }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Boolean', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: false }, + value: [true], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: false }, + value: [false], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: false }, + value: [true, false], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [], + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [true], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [false], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [true, false], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [true, true], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'Boolean', set: true, required: true }, + value: [false, false], + shouldThrowError: false, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'fail' : 'pass'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute( + schema as AttributeSchema, + value + ); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.date-time.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.date-time.spec.ts new file mode 100644 index 0000000..d17c680 --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.date-time.spec.ts @@ -0,0 +1,212 @@ +// valication-service/src/controllers/custom-object.controller.date-time.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateDateTime', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: '2022-01-01T12:34:56.999Z', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: '2022-01-01T12:34:56Z', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: false, + }, + value: 'random string', + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: true, + }, + value: '2022-01-01T12:34:56.000Z', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: false, + required: true, + }, + value: 'invalid date format', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: false, + }, + value: ['2022-01-01T12:34:56.000Z'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: false, + }, + value: ['invalid date format'], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: ['2022-01-01T12:34:56.333Z'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: ['invalid date'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'DateTime', + set: true, + required: true, + }, + value: [''], + shouldThrowError: true, + }, + ]; + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.date.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.date.spec.ts new file mode 100644 index 0000000..455b35a --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.date.spec.ts @@ -0,0 +1,193 @@ +// valication-service/src/controllers/custom-object.controller.date.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateDate', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: false, + }, + value: '2022-01-01', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: false, + }, + value: 'invalid date format', + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: true, + }, + value: '2022-01-01', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Date', + set: false, + required: true, + }, + value: 'invalid date format', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: false, + }, + value: ['2022-01-01'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: false, + }, + value: ['invalid date format'], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: true, + }, + value: ['2022-01-01'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Date', + set: true, + required: true, + }, + value: ['invalid date format'], + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.enum.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.enum.spec.ts new file mode 100644 index 0000000..7e6b45b --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.enum.spec.ts @@ -0,0 +1,173 @@ +// valication-service/src/controllers/custom-object.controller.enum.spec.ts + +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateEnum', () => { + const enumValues = [ + { value: 'option1' }, + { value: 'option2' }, + { value: 'option3' }, + ]; + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: false, + enum: enumValues, + }, + value: 'option1', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: false, + enum: enumValues, + }, + value: 'invalid', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: false, + enum: enumValues, + }, + value: undefined, + shouldThrowError: false, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: true, + enum: enumValues, + }, + value: 'option1', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: true, + enum: enumValues, + }, + value: 'invalid', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: false, + required: true, + enum: enumValues, + }, + value: undefined, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: false, + enum: enumValues, + }, + value: ['option1', 'option2'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: false, + enum: enumValues, + }, + value: ['invalid'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: false, + enum: enumValues, + }, + value: undefined, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: true, + enum: enumValues, + }, + value: ['option1', 'option2'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: true, + enum: enumValues, + }, + value: ['invalid'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Enum', + set: true, + required: true, + enum: enumValues, + }, + value: undefined, + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.localised-string.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.localised-string.spec.ts new file mode 100644 index 0000000..990e00e --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.localised-string.spec.ts @@ -0,0 +1,266 @@ +// valication-service/src/controllers/custom-object.controller.localized-string.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateLocalizedString', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: { + en: 'hello', + de: 'hallo', + }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: {}, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: false, + }, + value: 'string value', + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: { + en: 'hello', + de: 'hallo', + }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: {}, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: false, + required: true, + }, + value: 'string value', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: [ + { + locale: 'en', + value: 'hello', + }, + { + locale: 'de', + value: 'hallo', + }, + ], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: [ + { + locale: 'en', + value: 'hello', + }, + { + locale: 'en', + value: 'hello again', + }, + ], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: false, + }, + value: 'string value', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: [ + { + en: 'hello', + de: 'hallo', + }, + ], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: [ + { + en: 123, + }, + ], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedString', + set: true, + required: true, + }, + value: 'string value', + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.localized-enum.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.localized-enum.spec.ts new file mode 100644 index 0000000..cea8f33 --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.localized-enum.spec.ts @@ -0,0 +1,191 @@ +// valication-service/src/controllers/custom-object.controller.localized-enum.spec.ts + +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateLocalizedEnum', () => { + const localizedEnumValues = [ + { + value: 'option1', + label: { + en: 'Option 1', + de: 'Option 1 (DE)', + }, + }, + { + value: 'option2', + label: { + en: 'Option 2', + de: 'Option 2 (DE)', + }, + }, + { + value: 'option3', + label: { + en: 'Option 3', + de: 'Option 3 (DE)', + }, + }, + ]; + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: false, + lenum: localizedEnumValues, + }, + value: 'option1', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: false, + lenum: localizedEnumValues, + }, + value: 'invalid', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: false, + lenum: localizedEnumValues, + }, + value: undefined, + shouldThrowError: false, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: true, + lenum: localizedEnumValues, + }, + value: 'option1', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: true, + lenum: localizedEnumValues, + }, + value: 'invalid', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: false, + required: true, + lenum: localizedEnumValues, + }, + value: undefined, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: false, + lenum: localizedEnumValues, + }, + value: ['option1', 'option2'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: false, + lenum: localizedEnumValues, + }, + value: ['invalid'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: false, + lenum: localizedEnumValues, + }, + value: undefined, + shouldThrowError: false, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: true, + lenum: localizedEnumValues, + }, + value: ['option1', 'option2'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: true, + lenum: localizedEnumValues, + }, + value: ['invalid'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'LocalizedEnum', + set: true, + required: true, + lenum: localizedEnumValues, + }, + value: undefined, + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.money.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.money.spec.ts new file mode 100644 index 0000000..6bc78c3 --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.money.spec.ts @@ -0,0 +1,278 @@ +// valication-service/src/controllers/custom-object.controller.money.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateMoney', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { amount: '1000', currencyCode: 'USD' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { amount: 1000, currencyCode: 'USD' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { amount: 'invalid', currencyCode: 'USD' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { amount: '1000' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: false, + }, + value: { currencyCode: 'USD' }, + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: { amount: '1000', currencyCode: 'EUR' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: { amount: 'invalid', currencyCode: 'USD' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: { amount: '1000' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: false, + required: true, + }, + value: { currencyCode: 'USD' }, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [ + { amount: '1000', currencyCode: 'USD' }, + { amount: '2000', currencyCode: 'EUR' }, + ], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [{ amount: 'invalid', currencyCode: 'USD' }], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [{ amount: '1000' }], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: false, + }, + value: [{ currencyCode: 'USD' }], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: [ + { amount: '1000', currencyCode: 'USD' }, + { amount: '2000', currencyCode: 'EUR' }, + ], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: [{ amount: 'invalid', currencyCode: 'USD' }], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Money', + set: true, + required: true, + }, + value: [{ amount: '1000' }], + shouldThrowError: true, + }, + ]; + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${JSON.stringify(value)} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.number.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.number.spec.ts new file mode 100644 index 0000000..8aad096 --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.number.spec.ts @@ -0,0 +1,128 @@ +// valication-service/src/controllers/custom-object.controller.number.spec.ts + +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateNumber', () => { + const testCases = [ + { + schema: { + name: 'test', + type: 'Number', + set: false, + required: false, + }, + value: 42, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Number', + set: false, + required: false, + }, + value: 'hello', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: false, + }, + value: [1, 2, 3], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: false, + }, + value: ['hello', 'world'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Number', + set: true, + required: true, + }, + value: [1], + shouldThrowError: false, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.object.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.object.spec.ts new file mode 100644 index 0000000..f55c6e6 --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.object.spec.ts @@ -0,0 +1,404 @@ +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +const objectSchema: { attributes: AttributeSchema[]; value: any }[] = [ + { + attributes: [ + { + name: 'age', + type: 'Number', + set: false, + required: true, + }, + ], + value: { + age: 25, + }, + }, + { + attributes: [ + { + name: 'names', + type: 'String', + set: true, + required: true, + }, + ], + value: { + names: ['John', 'Smith'], + }, + }, +]; + +describe('CustomObjectController - validateObject', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = () => + objectSchema + .map((item) => [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: item.value, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: {}, + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: 'string value', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: 123, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: false, + attributes: item.attributes, + }, + value: true, + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: item.value, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: {}, + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: 'string value', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: 123, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: false, + required: true, + attributes: item.attributes, + }, + value: true, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [item.value], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [], + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: ['string value'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [123], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [true], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: false, + attributes: item.attributes, + }, + value: [{}], + shouldThrowError: true, + }, + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [item.value], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [], + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [{}], + shouldThrowError: true, // missing required attribute 'age' + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: ['string value'], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [123], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: [true], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Object', + set: true, + required: true, + attributes: item.attributes, + }, + value: 'string value', + shouldThrowError: true, + }, + ]) + .reduce((a, b) => a.concat(b), []); + + testCases().forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.reference.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.reference.spec.ts new file mode 100644 index 0000000..15c729b --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.reference.spec.ts @@ -0,0 +1,252 @@ +// valication-service/src/controllers/custom-object.controller.reference.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateReference', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: { typeId: 'product', id: '123' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: { typeId: 'product', key: '123' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: { typeId: 'category', id: '123' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: { typeId: 'product', productId: '123' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: false, + reference: { type: 'product' }, + }, + value: [{ typeId: 'product', id: '123' }], + shouldThrowError: true, + }, + + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: { typeId: 'product', id: '123' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: { typeId: 'product', key: '123' }, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: { typeId: 'product', productId: '123' }, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: false, + required: true, + reference: { type: 'product' }, + }, + value: undefined, + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: [{ typeId: 'product', id: '123' }], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: [{ typeId: 'product', key: '123' }], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: false, + reference: { type: 'product' }, + }, + value: [{ typeId: 'category', id: '123' }], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: true, + reference: { type: 'product' }, + }, + value: [{ typeId: 'product', id: '123' }], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: true, + reference: { type: 'product' }, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Reference', + set: true, + required: true, + reference: { type: 'product' }, + }, + value: undefined, + shouldThrowError: true, + }, + ]; + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.string.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.string.spec.ts new file mode 100644 index 0000000..77c6b5a --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.string.spec.ts @@ -0,0 +1,101 @@ +import { AttributeSchema } from '../types/validator'; +import { CustomObjectController } from '../custom-object.controller'; + +describe('CustomObjectController', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + describe('validateAttribute', () => { + describe('String', () => { + const testCases = [ + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: 'test', + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: '', + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: null, + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: false, required: true }, + value: null, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: false, required: true }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: false, required: false }, + value: ['test'], + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: true, required: false }, + value: ['test'], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: true, required: false }, + value: [], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: true, required: false }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: true, required: true }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: true, required: true }, + value: [], + shouldThrowError: true, + }, + { + schema: { name: 'test', type: 'String', set: true, required: true }, + value: ['test'], + shouldThrowError: false, + }, + { + schema: { name: 'test', type: 'String', set: true, required: true }, + value: [''], + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${value} attribute`, async () => { + try { + await controller.validateAttribute( + schema as AttributeSchema, + value + ); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); + }); + }); +}); diff --git a/validation-service/src/shared-code/specs/custom-object.controller.time.spec.ts b/validation-service/src/shared-code/specs/custom-object.controller.time.spec.ts new file mode 100644 index 0000000..3549820 --- /dev/null +++ b/validation-service/src/shared-code/specs/custom-object.controller.time.spec.ts @@ -0,0 +1,212 @@ +// valication-service/src/controllers/custom-object.controller.time.spec.ts + +import { CustomObjectController } from '../custom-object.controller'; +import { AttributeSchema } from '../types/validator'; + +describe('CustomObjectController - validateTime', () => { + let controller: CustomObjectController; + + beforeEach(() => { + controller = new CustomObjectController(); + }); + + const testCases = [ + // schema.set = false, schema.required = false + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: '12:34 AM', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: null, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: 'invalid time format', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: '22:34 AM', + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: false, + }, + value: '10:34', + shouldThrowError: true, + }, + // schema.set = false, schema.required = true + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: true, + }, + value: '12:34 PM', + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: true, + }, + value: null, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: false, + required: true, + }, + value: 'invalid time format', + shouldThrowError: true, + }, + + // schema.set = true, schema.required = false + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: false, + }, + value: ['12:34 AM'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: false, + }, + value: [], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: false, + }, + value: undefined, + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: false, + }, + value: ['55:42 PM'], + shouldThrowError: true, + }, + + // schema.set = true, schema.required = true + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: true, + }, + value: ['12:34 PM'], + shouldThrowError: false, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: true, + }, + value: [], + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: true, + }, + value: undefined, + shouldThrowError: true, + }, + { + schema: { + name: 'test', + type: 'Time', + set: true, + required: true, + }, + value: [{ value: 'invalid time format' }], + shouldThrowError: true, + }, + ]; + + testCases.forEach(({ schema, value, shouldThrowError }) => { + it(`should ${shouldThrowError ? 'pass' : 'fail'} validation for ${schema.set ? 'set' : 'non-set'}, required ${schema.required ? 'true' : 'false'} and value: ${typeof value === 'object' ? JSON.stringify(value) : value} attribute`, async () => { + try { + await controller.validateAttribute(schema as AttributeSchema, value); + expect(shouldThrowError).toBe(false); + } catch (error) { + expect(shouldThrowError).toBe(true); + } + }); + }); +}); diff --git a/validation-service/src/shared-code/types/graphql.ts b/validation-service/src/shared-code/types/graphql.ts new file mode 100644 index 0000000..d6b57da --- /dev/null +++ b/validation-service/src/shared-code/types/graphql.ts @@ -0,0 +1,14 @@ +import { DocumentNode } from 'graphql'; + +export interface GraphQLClient { + query(options: { + query: DocumentNode; + variables?: Record; + context?: any; + }): Promise<{ data: T }>; + mutate(options: { + mutation: DocumentNode; + variables?: Record; + context?: any; + }): Promise<{ data: T }>; +} diff --git a/validation-service/src/shared-code/types/index.types.ts b/validation-service/src/shared-code/types/index.types.ts new file mode 100644 index 0000000..4e2d9ae --- /dev/null +++ b/validation-service/src/shared-code/types/index.types.ts @@ -0,0 +1,17 @@ +export type Message = { + code: string; + message: string; + referencedBy: string; +}; + +export type ValidatorCreator = ( + path: string[], + message: Message, + overrideConfig?: object +) => [string[], [[(o: object) => boolean, string, [object]]]]; + +export type ValidatorFunction = (o: object) => boolean; + +export type Wrapper = ( + validator: ValidatorFunction +) => (value: object) => boolean; diff --git a/validation-service/src/shared-code/types/validator.ts b/validation-service/src/shared-code/types/validator.ts new file mode 100644 index 0000000..3c60f13 --- /dev/null +++ b/validation-service/src/shared-code/types/validator.ts @@ -0,0 +1,59 @@ +// Types for schema structure +export type AttributeType = + | 'Boolean' + | 'String' + | 'Number' + | 'Date' + | 'Enum' + | 'Reference' + | 'Money' + | 'LocalizedString' + | 'Time' + | 'DateTime' + | 'LocalizedEnum' + | 'Object'; + +export interface EnumValue { + value: string; + label: string; +} +export interface LEnumValue { + value: string; + label: Record; +} + +export interface ReferenceType { + by: string; + type: string; +} + +export interface AttributeSchema { + name: string; + type: AttributeType; + set: boolean; + required: boolean; + enum?: EnumValue[]; + lenum?: LEnumValue[]; + reference?: ReferenceType; + attributes?: AttributeSchema[]; +} + +export interface Schema { + attributes: AttributeSchema[]; +} + +export interface CustomObject { + id: string; + container: string; + key: string; + value: T; + version: number; + createdAt: string; + lastModifiedAt: string; +} + +export interface CustomObjectDraft { + container: string; + key: string; + value: T; +} diff --git a/validation-service/src/types/index.types.ts b/validation-service/src/types/index.types.ts new file mode 100644 index 0000000..4e2d9ae --- /dev/null +++ b/validation-service/src/types/index.types.ts @@ -0,0 +1,17 @@ +export type Message = { + code: string; + message: string; + referencedBy: string; +}; + +export type ValidatorCreator = ( + path: string[], + message: Message, + overrideConfig?: object +) => [string[], [[(o: object) => boolean, string, [object]]]]; + +export type ValidatorFunction = (o: object) => boolean; + +export type Wrapper = ( + validator: ValidatorFunction +) => (value: object) => boolean; diff --git a/validation-service/src/types/validator.ts b/validation-service/src/types/validator.ts new file mode 100644 index 0000000..3c60f13 --- /dev/null +++ b/validation-service/src/types/validator.ts @@ -0,0 +1,59 @@ +// Types for schema structure +export type AttributeType = + | 'Boolean' + | 'String' + | 'Number' + | 'Date' + | 'Enum' + | 'Reference' + | 'Money' + | 'LocalizedString' + | 'Time' + | 'DateTime' + | 'LocalizedEnum' + | 'Object'; + +export interface EnumValue { + value: string; + label: string; +} +export interface LEnumValue { + value: string; + label: Record; +} + +export interface ReferenceType { + by: string; + type: string; +} + +export interface AttributeSchema { + name: string; + type: AttributeType; + set: boolean; + required: boolean; + enum?: EnumValue[]; + lenum?: LEnumValue[]; + reference?: ReferenceType; + attributes?: AttributeSchema[]; +} + +export interface Schema { + attributes: AttributeSchema[]; +} + +export interface CustomObject { + id: string; + container: string; + key: string; + value: T; + version: number; + createdAt: string; + lastModifiedAt: string; +} + +export interface CustomObjectDraft { + container: string; + key: string; + value: T; +} diff --git a/validation-service/src/utils/assert.utils.ts b/validation-service/src/utils/assert.utils.ts new file mode 100644 index 0000000..b7cff04 --- /dev/null +++ b/validation-service/src/utils/assert.utils.ts @@ -0,0 +1,19 @@ +export function assert(condition: unknown, message: string): asserts condition { + if (!condition) { + throw new Error(`Assertion failed: ${message}`); + } +} + +export function assertError( + value: unknown, + message?: string +): asserts value is Error { + assert(value instanceof Error, message ?? 'Invalid error value'); +} + +export function assertString( + value: unknown, + message?: string +): asserts value is string { + assert(typeof value === 'string', message ?? 'Invalid string value'); +} diff --git a/validation-service/src/utils/config.utils.ts b/validation-service/src/utils/config.utils.ts new file mode 100644 index 0000000..f40b030 --- /dev/null +++ b/validation-service/src/utils/config.utils.ts @@ -0,0 +1,31 @@ +import CustomError from '../errors/custom.error'; +import envValidators from '../validators/env.validators'; +import { getValidateMessages } from '../validators/helpers.validators'; + +/** + * Read the configuration env vars + * (Add yours accordingly) + * + * @returns The configuration with the correct env vars + */ +export const readConfiguration = () => { + const envVars = { + clientId: process.env.CTP_CLIENT_ID as string, + clientSecret: process.env.CTP_CLIENT_SECRET as string, + projectKey: process.env.CTP_PROJECT_KEY as string, + scope: process.env.CTP_SCOPE, + region: process.env.CTP_REGION as string, + }; + + const validationErrors = getValidateMessages(envValidators, envVars); + + if (validationErrors.length) { + throw new CustomError( + 'InvalidEnvironmentVariablesError', + 'Invalid Environment Variables please check your .env file', + validationErrors + ); + } + + return envVars; +}; diff --git a/validation-service/src/utils/logger.utils.ts b/validation-service/src/utils/logger.utils.ts new file mode 100644 index 0000000..794f32b --- /dev/null +++ b/validation-service/src/utils/logger.utils.ts @@ -0,0 +1,3 @@ +import { createApplicationLogger } from '@commercetools-backend/loggers'; + +export const logger = createApplicationLogger(); diff --git a/validation-service/src/validators/env.validators.ts b/validation-service/src/validators/env.validators.ts new file mode 100644 index 0000000..5f27625 --- /dev/null +++ b/validation-service/src/validators/env.validators.ts @@ -0,0 +1,55 @@ +import { + optional, + standardString, + standardKey, + region, +} from './helpers.validators'; + +/** + * Create here your own validators + */ +const envValidators = [ + standardString( + ['clientId'], + { + code: 'InValidClientId', + message: 'Client id should be 24 characters.', + referencedBy: 'environmentVariables', + }, + { min: 24, max: 24 } + ), + + standardString( + ['clientSecret'], + { + code: 'InvalidClientSecret', + message: 'Client secret should be 32 characters.', + referencedBy: 'environmentVariables', + }, + { min: 32, max: 32 } + ), + + standardKey(['projectKey'], { + code: 'InvalidProjectKey', + message: 'Project key should be a valid string.', + referencedBy: 'environmentVariables', + }), + + optional(standardString)( + ['scope'], + { + code: 'InvalidScope', + message: 'Scope should be at least 2 characters long.', + referencedBy: 'environmentVariables', + }, + { min: 2, max: undefined } + ), + + region(['region'], { + code: 'InvalidRegion', + message: 'Not a valid region.', + referencedBy: 'environmentVariables', + }), +]; + +export default envValidators; diff --git a/validation-service/src/validators/helpers.validators.ts b/validation-service/src/validators/helpers.validators.ts new file mode 100644 index 0000000..07b7053 --- /dev/null +++ b/validation-service/src/validators/helpers.validators.ts @@ -0,0 +1,149 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck + +import validator from 'validator'; +import { ValidatorCreator, Wrapper } from '../types/index.types'; + +/** + * File used to create helpers to validate the fields + */ + +const required: Wrapper = + (fn) => + (value, ...args) => + !(value === undefined || value === null) && fn(...[String(value), ...args]); + +export const standardString: ValidatorCreator = ( + path, + message, + overrideConfig = {} +) => [ + path, + [ + [ + required(validator.isLength), + message, + [{ min: 2, max: 20, ...overrideConfig }], + ], + ], +]; + +export const standardEmail: ValidatorCreator = (path, message) => [ + path, + [[required(validator.isEmail), message]], +]; + +export const standardNaturalNumber = (path, message) => [ + path, + [ + [ + required((value) => + validator.isNumeric(String(value), { no_symbols: true }) + ), + message, + ], + ], +]; + +export const standardKey = (path, message) => [ + path, + [ + [ + required( + (value) => + validator.isLength(String(value), { min: 2 }) && + /^[a-zA-Z0-9-_]+$/.test(value) + ), + + message, + ], + ], +]; + +export const standardUrl = (path, message, overrideOptions = {}) => [ + path, + [ + [ + required(validator.isURL), + message, + [ + { + require_protocol: true, + require_valid_protocol: true, + protocols: ['http', 'https'], + require_host: true, + require_port: false, + allow_protocol_relative_urls: false, + allow_fragments: false, + allow_query_components: true, + validate_length: true, + ...overrideOptions, + }, + ], + ], + ], +]; + +export const getValidateMessages = (validatorConfigs, item) => + validatorConfigs.flatMap(([path, validators]) => { + return validators.reduce((acc, [validatorFn, message, args = []]) => { + const valueToValidate = path.reduce((val, property) => { + return val[property]; + }, item); + if (!validatorFn(...[valueToValidate, ...args])) { + return acc.concat(message); + } + return acc; + }, []); + }); + +export const optional = + (fn) => + (...args) => { + const [path, validators] = fn(...args); + return [ + path, + validators.map(([fn, message, validatorArgs]) => [ + (value, ...args) => + value === undefined ? true : fn(...[value, ...args]), + message, + validatorArgs, + ]), + ]; + }; + +export const array = + (fn) => + (...args) => { + const [path, validators] = fn(...args); + return [ + path, + validators.map(([fn, message, validatorArgs]) => [ + (value, ...args) => + Array.isArray(value) && + value.every((value) => fn(...[value, ...args])), + message, + validatorArgs, + ]), + ]; + }; + +export const region: ValidatorCreator = (path, message) => [ + path, + [ + [ + required( + required((value) => + validator.isIn(value, [ + 'us-central1.gcp', + 'us-east-2.aws', + 'europe-west1.gcp', + 'eu-central-1.aws', + 'australia-southeast1.gcp', + ]) + ) + ), + message, + ], + ], +]; diff --git a/validation-service/tsconfig.json b/validation-service/tsconfig.json new file mode 100644 index 0000000..fb87b83 --- /dev/null +++ b/validation-service/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@tsconfig/recommended/tsconfig.json", + "exclude": ["node_modules", "**/*.spec.ts"], + "compilerOptions": { + "resolveJsonModule": true, + "outDir": "./build", + "rootDir": "./src", + "inlineSourceMap": true + } +} diff --git a/validation-service/yarn.lock b/validation-service/yarn.lock new file mode 100644 index 0000000..9663eb5 --- /dev/null +++ b/validation-service/yarn.lock @@ -0,0 +1,4216 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@apollo/client@^3.11.10": + version "3.11.10" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.11.10.tgz#e16ae82ea9b16536ffd109847d24f9293fab5c4d" + integrity sha512-IfGc+X4il0rDqVQBBWdxIKM+ciDCiDzBq9+Bg9z4tJMi87uF6po4v+ddiac1wP0ARgVPsFwEIGxK7jhN4pW8jg== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + "@wry/caches" "^1.0.0" + "@wry/equality" "^0.5.6" + "@wry/trie" "^0.5.0" + graphql-tag "^2.12.6" + hoist-non-react-statics "^3.3.2" + optimism "^0.18.0" + prop-types "^15.7.2" + rehackt "^0.1.0" + response-iterator "^0.2.6" + symbol-observable "^4.0.0" + ts-invariant "^0.10.3" + tslib "^2.3.0" + zen-observable-ts "^1.2.5" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/compat-data@^7.25.9": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" + integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" + integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== + dependencies: + "@babel/parser" "^7.26.2" + "@babel/types" "^7.26.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== + dependencies: + "@babel/types" "^7.26.0" + +"@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-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + 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-import-attributes@^7.24.7": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@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== + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/runtime-corejs3@^7.20.13": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz#5af6bed16073eb4a0191233d61e158a5c768c430" + integrity sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w== + dependencies: + core-js-pure "^3.30.2" + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.20.13", "@babel/runtime@^7.21.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.25.9", "@babel/template@^7.3.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.3": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + 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== + +"@colors/colors@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + +"@commercetools-backend/loggers@^21.19.0": + version "21.25.2" + resolved "https://registry.yarnpkg.com/@commercetools-backend/loggers/-/loggers-21.25.2.tgz#d7b3f70106d7c033cacd3dbe4e711c3edd6cfe22" + integrity sha512-+aw9ai7bNzgBBRn9bgCAKCApNavsZCpKqhuOC5KWBngaN/eao8kvuLs8Rs17MGlqkZWD+Smtt67K44LV5nZDpA== + dependencies: + "@babel/runtime" "^7.20.13" + "@babel/runtime-corejs3" "^7.20.13" + "@sentry/node" "7.43.0" + "@types/triple-beam" "1.3.2" + express-winston "4.2.0" + fast-safe-stringify "2.1.1" + lodash "4.17.21" + logform "2.5.1" + triple-beam "1.3.0" + winston "3.8.2" + +"@commercetools/platform-sdk@^4.0.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@commercetools/platform-sdk/-/platform-sdk-4.11.0.tgz#501310f8143376939ee31c9b15b9c5db9c5bdf41" + integrity sha512-ftcq6mCxzpIG9wmGpTED6KQCApk4nyURh81J3PRP3d48oCLOrkZSyzDDfvflGoVZQeIcox+YdtyqZoryFrRtmQ== + dependencies: + "@commercetools/sdk-client-v2" "^2.1.6" + "@commercetools/sdk-middleware-auth" "^7.0.0" + "@commercetools/sdk-middleware-http" "^7.0.0" + "@commercetools/sdk-middleware-logger" "^3.0.0" + +"@commercetools/sdk-client-v2@^2.0.0", "@commercetools/sdk-client-v2@^2.1.6": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@commercetools/sdk-client-v2/-/sdk-client-v2-2.5.0.tgz#3fe33f733d059472896f4fd0820cf899a30cd150" + integrity sha512-v1y++O6yllG+IRTYm9jPE8s667+GapnysyGIf8NJDZbVwhvcanixZL4d20imXjCpOr4u1iZrgRftc90mgYqblw== + dependencies: + buffer "^6.0.3" + node-fetch "^2.6.1" + +"@commercetools/sdk-middleware-auth@^7.0.0": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@commercetools/sdk-middleware-auth/-/sdk-middleware-auth-7.0.1.tgz#20260740a423589d9210747e460f8ca917b3787b" + integrity sha512-XLRm+o3Yd0mkVoyzsOA98PUu0U0ajQdBHMhZ8N2XMOtL4OY8zsgT8ap5JneXV8zWZNiwIYYAYoUDwBlLZh2lAQ== + dependencies: + node-fetch "^2.6.7" + +"@commercetools/sdk-middleware-http@^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@commercetools/sdk-middleware-http/-/sdk-middleware-http-7.0.4.tgz#ea4522c45d6fc436ff82e1d6a9d969192289821f" + integrity sha512-YpBDTA1NqjfwqPxrll6FzDc0A7hLSRwd9OLGMlPcvUG2Je1ks8Pe34pLdPqz7jgdURwfFXRBmXxPhezDzMbnZA== + +"@commercetools/sdk-middleware-logger@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@commercetools/sdk-middleware-logger/-/sdk-middleware-logger-3.0.0.tgz#4bfc7441d485b3f1046001f44200d12926accb84" + integrity sha512-DhMXAA2yIch/AaGxy7st85Z1HFmeLtHWGkr9z5rX4xKjan4PHGB/IE5saAR+SNGHhs6+1Lp8vZEHDo3tFqVLmg== + +"@dabh/diagnostics@^2.0.2": + 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" + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@graphql-typed-document-node/core@^3.1.1", "@graphql-typed-document-node/core@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@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", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@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", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@sentry/core@7.43.0": + version "7.43.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.43.0.tgz#c78e79399172738c96e3b388244258153c49215f" + integrity sha512-zvMZgEi7ptLBwDnd+xR/u4zdSe5UzS4S3ZhoemdQrn1PxsaVySD/ptyzLoGSZEABqlRxGHnQrZ78MU1hUDvKuQ== + dependencies: + "@sentry/types" "7.43.0" + "@sentry/utils" "7.43.0" + tslib "^1.9.3" + +"@sentry/node@7.43.0": + version "7.43.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.43.0.tgz#bcb553486ffe3f1413063e9125fd34f9d84277d2" + integrity sha512-oXaTBq6Bk8Qwsd46hhRU2MLEnjYqWI41nPJmXyAWkDSYQTP7sUe1qM8bCUdsRpPwQh955Vq9qCRfgMbN4lEoAQ== + dependencies: + "@sentry/core" "7.43.0" + "@sentry/types" "7.43.0" + "@sentry/utils" "7.43.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/types@7.43.0": + version "7.43.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.43.0.tgz#e621257601e9db2a39cdd3bd75e67fe338ed51eb" + integrity sha512-5XxCWqYWJNoS+P6Ie2ZpUDxLRCt7FTEzmlQkCdjW6MFWOX26hAbF/wEuOTYAFKZXMIXOz0Egofik1e8v1Cg6/A== + +"@sentry/utils@7.43.0": + version "7.43.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.43.0.tgz#ad16efb86b94ffe6dca2ed2b299d5230ba6d815b" + integrity sha512-f78YfMLcgNU7+suyWFCuQhQlneXXMS+egb0EFZh7iU7kANUPRX5T4b+0C+fwaPm5gA6XfGYskr4ZnzQJLOlSqg== + dependencies: + "@sentry/types" "7.43.0" + tslib "^1.9.3" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@tsconfig/recommended@^1.0.3": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.8.tgz#16483d57b56bbbd32b8c3af0eff1a40c32d006fa" + integrity sha512-TotjFaaXveVUdsrXCdalyF6E5RyG6+7hHHQVZonQtdlk1rJZ1myDIvPUUKPhoYv+JAzThb2lQJh9+9ZfF46hsA== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== + dependencies: + "@babel/types" "^7.20.7" + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/cors@^2.8.17": + version "2.8.17" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" + integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== + dependencies: + "@types/node" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.19.6" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" + integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@^4.17.14": + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.0.3": + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/node-fetch@^2.6.11": + version "2.6.12" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" + integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + +"@types/node@*": + version "22.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" + integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== + dependencies: + undici-types "~6.19.8" + +"@types/node@^18.7.18": + version "18.19.64" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.64.tgz#122897fb79f2a9ec9c979bded01c11461b2b1478" + integrity sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ== + dependencies: + undici-types "~5.26.4" + +"@types/qs@*": + version "6.9.17" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a" + integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/semver@^7.3.12": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/triple-beam@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8" + integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g== + +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + +"@types/validator@^13.7.10": + version "13.12.2" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.12.2.tgz#760329e756e18a4aab82fc502b51ebdfebbe49f5" + integrity sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^5.46.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.46.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@wry/caches@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@wry/caches/-/caches-1.0.1.tgz#8641fd3b6e09230b86ce8b93558d44cf1ece7e52" + integrity sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA== + dependencies: + tslib "^2.3.0" + +"@wry/context@^0.7.0": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.4.tgz#e32d750fa075955c4ab2cfb8c48095e1d42d5990" + integrity sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ== + dependencies: + tslib "^2.3.0" + +"@wry/equality@^0.5.6": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" + integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.4.3.tgz#077d52c22365871bf3ffcbab8e95cb8bc5689af4" + integrity sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.5.0.tgz#11e783f3a53f6e4cd1d42d2d1323f5bc3fa99c94" + integrity sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA== + dependencies: + tslib "^2.3.0" + +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.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.12.4: + 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-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-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.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +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" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +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" + +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: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +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== + +async@^3.2.3: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.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-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@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-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +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.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== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +body-parser@1.20.3, body-parser@^1.20.2: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +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" + +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: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.24.0: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== + dependencies: + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" + node-releases "^2.0.18" + update-browserslist-db "^1.1.1" + +bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.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@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +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== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001669: + version "1.0.30001680" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz#5380ede637a33b9f9f1fc6045ea99bd142f3da5e" + integrity sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA== + +chalk@^2.4.2: + 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.0.0, chalk@^4.0.2, chalk@^4.1.2: + 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" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chokidar@^3.5.2: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + 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" + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +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 sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +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.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +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.3" + color-string "^1.6.0" + +colorspace@1.1.x: + 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.1.3" + text-hex "1.0.x" + +combined-stream@^1.0.8: + 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" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concurrently@^8.2.0: + version "8.2.2" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784" + integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg== + dependencies: + chalk "^4.1.2" + date-fns "^2.30.0" + lodash "^4.17.21" + rxjs "^7.8.1" + shell-quote "^1.8.1" + spawn-command "0.0.2" + supports-color "^8.1.1" + tree-kill "^1.2.2" + yargs "^17.7.2" + +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, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +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== + +core-js-pure@^3.30.2: + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.39.0.tgz#aa0d54d70a15bdc13e7c853db87c10abc30d68f3" + integrity sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg== + +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" + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +date-fns@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.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, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +dedent@^1.0.0: + version "1.5.3" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + +deep-is@^0.1.3: + 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.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +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.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +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" + +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" + +dotenv@^16.3.1: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.5.41: + version "1.5.63" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.63.tgz#69444d592fbbe628d129866c2355691ea93eda3e" + integrity sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +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== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +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-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +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 sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +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" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.46.0: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0: + 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.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + 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.1.0, 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 sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +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" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +express-winston@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/express-winston/-/express-winston-4.2.0.tgz#e9d535d52aa4c125a54a29cce132ae2e3633f4fa" + integrity sha512-EMD74g63nVHi7pFleQw7KHCxiA1pjF5uCwbCfzGqmFxs9KvlDPIVS3cMGpULm6MshExMT9TjC3SqmRGB9kb7yw== + dependencies: + chalk "^2.4.2" + lodash "^4.17.21" + +express@^4.18.2: + version "4.21.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281" + integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.10" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +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.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + 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.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.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== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-safe-stringify@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.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== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== + +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" + integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + 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" + 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 sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +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.1.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^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-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.2: + 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@^10.3.7: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + 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== + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + 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" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +graphql-request@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-7.1.2.tgz#52d7fd6d8d08c9f0b00c84a091376ce9fbdfa945" + integrity sha512-+XE3iuC55C2di5ZUrB4pjgwe+nIQBuXVIK9J98wrVwojzDW3GMdSBZfxUk8l4j9TieIpjpggclxhNEU9ebGF8w== + dependencies: + "@graphql-typed-document-node/core" "^3.2.0" + +graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@^16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.9.0.tgz#1c310e63f16a49ce1fbb230bd0a000e99f6f115f" + integrity sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +hasown@^2.0.0, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +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-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 "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + 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== + +iconv-lite@0.4.24: + 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" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== + +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +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" + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, 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== + +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== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.13.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +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== + dependencies: + is-extglob "^2.1.1" + +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-inside@^3.0.3: + 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-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== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + 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-instrument@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.6.2: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +"js-tokens@^3.0.0 || ^4.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" + +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" + +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +json-buffer@3.0.1: + version "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-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-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 sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + +leven@^3.1.0: + version "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" + +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== + +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" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@4.17.21, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +logform@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" + integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg== + dependencies: + "@colors/colors" "1.5.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + +logform@^2.4.0, logform@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1" + integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +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 sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +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== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +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== + +node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +nodemon@^3.0.1: + version "3.1.7" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.7.tgz#07cb1f455f8bece6a499e0d72b5e029485521a54" + integrity sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ== + dependencies: + chokidar "^3.5.2" + debug "^4" + ignore-by-default "^1.0.1" + minimatch "^3.1.2" + pstree.remy "^1.1.8" + semver "^7.5.3" + simple-update-notifier "^2.0.0" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.5" + +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@^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" + +object-assign@^4, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1: + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + +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" + +optimism@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.18.0.tgz#e7bb38b24715f3fdad8a9a7fc18e999144bbfa63" + integrity sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ== + dependencies: + "@wry/caches" "^1.0.0" + "@wry/context" "^0.7.0" + "@wry/trie" "^0.4.3" + tslib "^2.3.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + 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.5" + +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-limit@^3.0.2, p-limit@^3.1.0: + 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@^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-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +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.2.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" + +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 sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== + +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@^1.0.0, picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@^3.0.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prompts@^2.0.1: + 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.5" + +prop-types@^15.7.2: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +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" + +pstree.remy@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pure-rand@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== + +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + +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== + +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.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +readable-stream@^3.4.0, readable-stream@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + 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" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +rehackt@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/rehackt/-/rehackt-0.1.0.tgz#a7c5e289c87345f70da8728a7eb878e5d03c696b" + integrity sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + 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.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +response-iterator@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" + integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== + +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== + +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" + +rimraf@^5.0.1: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + +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@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +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-stable-stringify@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +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== + +shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +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== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +simple-update-notifier@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" + integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== + dependencies: + semver "^7.5.3" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +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" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spawn-command@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width-cjs@npm:string-width@^4.2.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@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.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" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", 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.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^5.3.0, supports-color@^5.5.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.1: + 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== + +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-hex@1.0.x: + version "1.0.0" + 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: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +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== + +touch@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" + integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +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== + +triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + +ts-invariant@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" + integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== + dependencies: + tslib "^2.1.0" + +ts-jest@^29.1.1: + version "29.2.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" + integrity sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.6.3" + yargs-parser "^21.1.1" + +tslib@^1.8.1, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0, tslib@^2.3.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.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-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + 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" + +typescript@^5.1.6: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~6.19.8: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +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 sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + +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" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +validator@^13.11.0: + version "13.12.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.12.0.tgz#7d78e76ba85504da3fee4fd1922b385914d4b35f" + integrity sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^2.0.1: + 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" + +winston-transport@^4.5.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9" + integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A== + dependencies: + logform "^2.7.0" + readable-stream "^3.6.2" + triple-beam "^1.3.0" + +winston@3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50" + integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew== + dependencies: + "@colors/colors" "1.5.0" + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.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.5.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.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" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +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@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.3.1, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + 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.1.1" + +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== + +zen-observable-ts@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" + integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== + dependencies: + zen-observable "0.8.15" + +zen-observable@0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==