diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index ffc10dc2e..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,617 +0,0 @@ -version: 2.1 -orbs: - owasp: entur/owasp@0.0.10 - node: circleci/node@5.0.3 - -executors: - android: - parameters: - resource_class: - default: xlarge - type: string - environment: - NODE_OPTIONS: --max_old_space_size=12000 - NODE_ENV: production - BABEL_ENV: production - docker: - - image: cimg/android:2022.09.2-node - working_directory: ~/mattermost-mobile - resource_class: <> - - ios: - parameters: - resource_class: - default: medium - type: string - environment: - NODE_OPTIONS: --max_old_space_size=12000 - NODE_ENV: production - BABEL_ENV: production - macos: - xcode: "14.2.0" - working_directory: ~/mattermost-mobile - shell: /bin/bash --login -o pipefail - resource_class: <> - -commands: - checkout-private: - description: "Checkout the private repo with build env vars" - steps: - - add_ssh_keys: - fingerprints: - - "03:1c:a7:07:35:bc:57:e4:1d:6c:e1:2c:4b:be:09:6d" - - run: - name: Clone the mobile private repo - command: git clone git@github.com:mattermost/mattermost-mobile-private.git ~/mattermost-mobile-private - - fastlane-dependencies: - description: "Get Fastlane dependencies" - parameters: - for: - type: string - steps: - - restore_cache: - name: Restore Fastlane cache - key: v1-gems-<< parameters.for >>-{{ checksum "fastlane/Gemfile.lock" }}-{{ arch }} - - run: - working_directory: fastlane - name: Download Fastlane dependencies - command: bundle install --path vendor/bundle - - save_cache: - name: Save Fastlane cache - key: v1-gems-<< parameters.for >>-{{ checksum "fastlane/Gemfile.lock" }}-{{ arch }} - paths: - - fastlane/vendor/bundle - - gradle-dependencies: - description: "Get Gradle dependencies" - steps: - - restore_cache: - name: Restore Gradle cache - key: v1-gradle-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }} - - run: - working_directory: android - name: Download Gradle dependencies - command: ./gradlew dependencies - - save_cache: - name: Save Gradle cache - paths: - - ~/.gradle - key: v1-gradle-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }} - - assets: - description: "Generate app assets" - steps: - - restore_cache: - name: Restore assets cache - key: v1-assets-{{ checksum "assets/base/config.json" }}-{{ arch }} - - run: - name: Generate assets - command: node ./scripts/generate-assets.js - - run: - name: Compass Icons - environment: - COMPASS_ICONS: "node_modules/@mattermost/compass-icons/font/compass-icons.ttf" - command: | - cp "$COMPASS_ICONS" "assets/fonts/" - cp "$COMPASS_ICONS" "android/app/src/main/assets/fonts" - - save_cache: - name: Save assets cache - key: v1-assets-{{ checksum "assets/base/config.json" }}-{{ arch }} - paths: - - dist - - npm-dependencies: - description: "Get JavaScript dependencies" - steps: - - node/install: - node-version: '18.7.0' - - restore_cache: - name: Restore npm cache - key: v2-npm-{{ checksum "package.json" }}-{{ arch }} - - run: - name: Getting JavaScript dependencies - command: | - NODE_ENV=development npm ci --ignore-scripts - node node_modules/\@sentry/cli/scripts/install.js - - save_cache: - name: Save npm cache - key: v2-npm-{{ checksum "package.json" }}-{{ arch }} - paths: - - node_modules - - run: - name: "Patch dependencies" - command: npx patch-package - - pods-dependencies: - description: "Get cocoapods dependencies" - steps: - - restore_cache: - name: Restore cocoapods specs and pods - key: v1-cocoapods-{{ checksum "ios/Podfile.lock" }}-{{ arch }} - - run: - name: iOS gems - command: npm run ios-gems - - run: - name: Getting cocoapods dependencies - command: npm run pod-install - - save_cache: - name: Save cocoapods specs and pods cache - key: v1-cocoapods-{{ checksum "ios/Podfile.lock" }}-{{ arch }} - paths: - - ios/Pods - - ~/.cocoapods - - build-android: - description: "Build the android app" - steps: - - checkout: - path: ~/mattermost-mobile - - checkout-private - - npm-dependencies - - assets - - fastlane-dependencies: - for: android - - gradle-dependencies - - run: - name: Append Keystore to build Android - command: | - cp ~/mattermost-mobile-private/android/${STORE_FILE} android/app/${STORE_FILE} - echo "" | tee -a android/gradle.properties > /dev/null - echo MATTERMOST_RELEASE_STORE_FILE=${STORE_FILE} | tee -a android/gradle.properties > /dev/null - echo ${STORE_ALIAS} | tee -a android/gradle.properties > /dev/null - echo ${STORE_PASSWORD} | tee -a android/gradle.properties > /dev/null - - run: - name: Jetify android libraries - command: ./node_modules/.bin/jetify - - run: - working_directory: fastlane - name: Run fastlane to build android - no_output_timeout: 30m - command: export TERM=xterm && bundle exec fastlane android build - - build-ios: - description: "Build the iOS app" - steps: - - checkout: - path: ~/mattermost-mobile - - npm-dependencies - - pods-dependencies - - assets - - fastlane-dependencies: - for: ios - - run: - working_directory: fastlane - name: Run fastlane to build iOS - no_output_timeout: 30m - command: | - HOMEBREW_NO_AUTO_UPDATE=1 brew install watchman - export TERM=xterm && bundle exec fastlane ios build - - deploy-to-store: - description: "Deploy build to store" - parameters: - task: - type: string - target: - type: string - file: - type: string - env: - type: string - steps: - - attach_workspace: - at: ~/ - - run: - name: <> - working_directory: fastlane - command: <> bundle exec fastlane <> deploy file:$HOME/mattermost-mobile/<> - - persist: - description: "Persist mattermost-mobile directory" - steps: - - persist_to_workspace: - root: ~/ - paths: - - mattermost-mobile* - - save: - description: "Save binaries artifacts" - parameters: - filename: - type: string - steps: - - run: - name: Copying artifacts - command: | - mkdir /tmp/artifacts; - cp ~/mattermost-mobile/<> /tmp/artifacts; - - store_artifacts: - path: /tmp/artifacts - -jobs: - test: - working_directory: ~/mattermost-mobile - docker: - - image: cimg/node:16.14.2 - steps: - - checkout: - path: ~/mattermost-mobile - - npm-dependencies - - assets - - run: - name: Check styles - command: npm run check - - run: - name: Running Tests - command: npm test - - run: - name: Check i18n - command: ./scripts/precommit/i18n.sh - - check-deps: - parameters: - cve_data_directory: - type: string - default: "~/.owasp/dependency-check-data" - working_directory: ~/mattermost-mobile - executor: owasp/default - environment: - version_url: "https://jeremylong.github.io/DependencyCheck/current.txt" - executable_url: "https://dl.bintray.com/jeremy-long/owasp/dependency-check-VERSION-release.zip" - steps: - - checkout - - restore_cache: - name: Restore npm cache - key: v2-npm-{{ checksum "package.json" }}-{{ arch }} - - run: - name: Checkout config - command: cd .. && git clone https://github.com/mattermost/security-automation-config - - run: - name: Install Go - command: sudo apt-get update && sudo apt-get install golang - - owasp/with_commandline: - steps: - # Taken from https://github.com/entur/owasp-orb/blob/master/src/%40orb.yml#L349-L361 - - owasp/generate_cache_keys: - cache_key: commmandline-default-cache-key-v7 - - owasp/restore_owasp_cache - - run: - name: Update OWASP Dependency-Check Database - command: | - if ! ~/.owasp/dependency-check/bin/dependency-check.sh --data << parameters.cve_data_directory >> --updateonly; then - # Update failed, probably due to a bad DB version; delete cached DB and try again - rm -rv ~/.owasp/dependency-check-data/*.db - ~/.owasp/dependency-check/bin/dependency-check.sh --data << parameters.cve_data_directory >> --updateonly - fi - - owasp/store_owasp_cache: - cve_data_directory: <> - - run: - name: Run OWASP Dependency-Check Analyzer - command: | - ~/.owasp/dependency-check/bin/dependency-check.sh \ - --data << parameters.cve_data_directory >> --format ALL --noupdate --enableExperimental \ - --propertyfile ../security-automation-config/dependency-check/dependencycheck.properties \ - --suppression ../security-automation-config/dependency-check/suppression.xml \ - --suppression ../security-automation-config/dependency-check/suppression.$CIRCLE_PROJECT_REPONAME.xml \ - --scan './**/*' || true - - owasp/collect_reports: - persist_to_workspace: false - - run: - name: Post results to Mattermost - command: go run ../security-automation-config/dependency-check/post_results.go - - build-android-beta: - executor: android - steps: - - build-android - - persist - - save: - filename: "*.apk" - - build-android-release: - executor: android - steps: - - build-android - - persist - - save: - filename: "*.apk" - - build-android-pr: - executor: android - environment: - BRANCH_TO_BUILD: ${CIRCLE_BRANCH} - steps: - - build-android - - save: - filename: "*.apk" - - build-android-unsigned: - executor: android - steps: - - checkout: - path: ~/mattermost-mobile - - npm-dependencies - - assets - - fastlane-dependencies: - for: android - - gradle-dependencies - - run: - name: Jetify Android libraries - command: ./node_modules/.bin/jetify - - run: - working_directory: fastlane - name: Run fastlane to build unsigned android - no_output_timeout: 30m - command: bundle exec fastlane android unsigned - - persist - - save: - filename: "*.apk" - - build-ios-beta: - executor: - name: ios - resource_class: large - steps: - - build-ios - - persist - - save: - filename: "*.ipa" - - build-ios-release: - executor: ios - steps: - - build-ios - - persist - - save: - filename: "*.ipa" - - build-ios-pr: - executor: ios - environment: - BRANCH_TO_BUILD: ${CIRCLE_BRANCH} - steps: - - build-ios - - save: - filename: "*.ipa" - - build-ios-unsigned: - executor: ios - steps: - - checkout: - path: ~/mattermost-mobile - - npm-dependencies - - pods-dependencies - - assets - - fastlane-dependencies: - for: ios - - run: - working_directory: fastlane - name: Run fastlane to build unsigned iOS - no_output_timeout: 30m - command: | - HOMEBREW_NO_AUTO_UPDATE=1 brew install watchman - bundle exec fastlane ios unsigned - - persist_to_workspace: - root: ~/ - paths: - - mattermost-mobile/*.ipa - - save: - filename: "*.ipa" - - build-ios-simulator: - executor: ios - steps: - - checkout: - path: ~/mattermost-mobile - - npm-dependencies - - pods-dependencies - - assets - - fastlane-dependencies: - for: ios - - run: - working_directory: fastlane - name: Run fastlane to build unsigned x86_64 iOS app for iPhone simulator - no_output_timeout: 30m - command: | - HOMEBREW_NO_AUTO_UPDATE=1 brew install watchman - bundle exec fastlane ios simulator - - persist_to_workspace: - root: ~/ - paths: - - mattermost-mobile/Mattermost-simulator-x86_64.app.zip - - save: - filename: "Mattermost-simulator-x86_64.app.zip" - - deploy-android-release: - executor: - name: android - resource_class: medium - steps: - - deploy-to-store: - task: "Deploy to Google Play" - target: android - file: "*.apk" - env: "SUPPLY_TRACK=beta" - - deploy-android-beta: - executor: - name: android - resource_class: medium - steps: - - deploy-to-store: - task: "Deploy to Google Play" - target: android - file: "*.apk" - env: "SUPPLY_TRACK=alpha" - - deploy-ios-release: - executor: ios - steps: - - deploy-to-store: - task: "Deploy to TestFlight" - target: ios - file: "*.ipa" - env: "" - - deploy-ios-beta: - executor: ios - steps: - - deploy-to-store: - task: "Deploy to TestFlight" - target: ios - file: "*.ipa" - env: "" - - github-release: - executor: - name: android - resource_class: medium - steps: - - attach_workspace: - at: ~/ - - run: - name: Create GitHub release - working_directory: fastlane - command: bundle exec fastlane github - -workflows: - version: 2 - build: - jobs: - - test - # - check-deps: - # context: sast-webhook - # requires: - # - test - - - build-android-release: - context: mattermost-mobile-android-release - requires: - - test - filters: - branches: - only: - - /^build-release-\d+$/ - - /^build-android-release-\d+$/ - - deploy-android-release: - context: mattermost-mobile-android-release - requires: - - build-android-release - filters: - branches: - only: - - /^build-release-\d+$/ - - /^build-android-release-\d+$/ - - - build-android-beta: - context: mattermost-mobile-android-beta - filters: - branches: - only: - - /^build-\d+$/ - - /^build-android-\d+$/ - - /^build-android-beta-\d+$/ - - deploy-android-beta: - context: mattermost-mobile-android-beta - requires: - - build-android-beta - filters: - branches: - only: - - /^build-\d+$/ - - /^build-android-\d+$/ - - /^build-android-beta-\d+$/ - - - build-ios-release: - context: mattermost-mobile-ios-release - requires: - - test - filters: - branches: - only: - - /^build-release-\d+$/ - - /^build-ios-release-\d+$/ - - deploy-ios-release: - context: mattermost-mobile-ios-release - requires: - - build-ios-release - filters: - branches: - only: - - /^build-release-\d+$/ - - /^build-ios-release-\d+$/ - - - build-ios-beta: - context: mattermost-mobile-ios-beta - filters: - branches: - only: - - /^build-\d+$/ - - /^build-ios-\d+$/ - - /^build-ios-beta-\d+$/ - - deploy-ios-beta: - context: mattermost-mobile-ios-beta - requires: - - build-ios-beta - filters: - branches: - only: - - /^build-\d+$/ - - /^build-ios-\d+$/ - - /^build-ios-beta-\d+$/ - - - build-android-pr: - context: mattermost-mobile-android-pr - requires: - - test - filters: - branches: - only: /^(build|android)-pr-.*/ - - build-ios-pr: - context: mattermost-mobile-ios-pr - requires: - - test - filters: - branches: - only: /^(build|ios)-pr-.*/ - - - build-android-unsigned: - context: mattermost-mobile-unsigned - requires: - - test - filters: - tags: - only: /^v(\d+\.)(\d+\.)(\d+)(.*)?$/ - branches: - only: unsigned - - build-ios-unsigned: - context: mattermost-mobile-unsigned - requires: - - test - filters: - tags: - only: /^v(\d+\.)(\d+\.)(\d+)(.*)?$/ - branches: - only: unsigned - - build-ios-simulator: - context: mattermost-mobile-unsigned - requires: - - test - filters: - branches: - only: - - /^build-\d+$/ - - /^build-release-\d+$/ - - /^build-ios-sim-\d+$/ - - - github-release: - context: mattermost-mobile-unsigned - requires: - - build-android-unsigned - - build-ios-unsigned - filters: - tags: - only: /^v(\d+\.)(\d+\.)(\d+)(.*)?$/ - branches: - only: unsigned diff --git a/.github/actions/prepare-android-build/action.yaml b/.github/actions/prepare-android-build/action.yaml new file mode 100644 index 000000000..44dab693b --- /dev/null +++ b/.github/actions/prepare-android-build/action.yaml @@ -0,0 +1,49 @@ +name: prepare-android-build +description: Action to prepare environment for android build + +inputs: + sign: + description: Flag to enable android package signing + default: "true" + +runs: + using: composite + steps: + - name: ci/prepare-mobile-build + uses: ./.github/actions/prepare-mobile-build + + # Disable this since we are not caching anything for now + # - name: ci/install-gradle-dependencies + # shell: bash + # working-directory: android + # run: | + # echo "::group::install-gradle-dependencies" + # ./gradlew dependencies + # echo "::endgroup::" + + - name: ci/jetify-android-libraries + shell: bash + run: | + echo "::group::jetify-android-libraries" + ./node_modules/.bin/jetify + echo "::endgroup::" + + - name: ci/checkout-private-repo + if: ${{ inputs.sign == 'true' }} + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + with: + repository: mattermost/mattermost-mobile-private + token: ${{ env.MATTERMOST_BUILD_GH_TOKEN }} + path: ${{ github.workspace }}/mattermost-mobile-private + + - name: ci/append-keystore-to-android-build-for-signing + if: ${{ inputs.sign == 'true' }} + shell: bash + run: | + echo "::group::append-keystore-to-android-build-for-signing" + cp ${{ github.workspace }}/mattermost-mobile-private/android/${STORE_FILE} android/app/${STORE_FILE} + echo "" | tee -a android/gradle.properties > /dev/null + echo MATTERMOST_RELEASE_STORE_FILE=${STORE_FILE} | tee -a android/gradle.properties > /dev/null + echo ${STORE_ALIAS} | tee -a android/gradle.properties > /dev/null + echo ${STORE_PASSWORD} | tee -a android/gradle.properties > /dev/null + echo "::endgroup::" diff --git a/.github/actions/prepare-ios-build/action.yaml b/.github/actions/prepare-ios-build/action.yaml new file mode 100644 index 000000000..9c4a1dbb7 --- /dev/null +++ b/.github/actions/prepare-ios-build/action.yaml @@ -0,0 +1,25 @@ +name: prepare-ios-build +description: Action to prepare environment for ios build + +runs: + using: composite + steps: + - name: ci/install-os-deps + env: + HOMEBREW_NO_AUTO_UPDATE: "1" + shell: bash + run: | + echo "::group::install-os-deps" + brew install watchman + echo "::endgroup::" + + - name: ci/prepare-mobile-build + uses: ./.github/actions/prepare-mobile-build + + - name: ci/install-pods-dependencies + shell: bash + run: | + echo "::group::install-pods-dependencies" + npm run ios-gems + npm run pod-install + echo "::endgroup::" diff --git a/.github/actions/prepare-mobile-build/action.yaml b/.github/actions/prepare-mobile-build/action.yaml new file mode 100644 index 000000000..d45291dad --- /dev/null +++ b/.github/actions/prepare-mobile-build/action.yaml @@ -0,0 +1,20 @@ +name: prepare-mobile-build +description: Action to prepare environment for mobile build + +runs: + using: composite + steps: + - uses: ruby/setup-ruby@9669f3ee51dc3f4eda8447ab696b3ab19a90d14b # v1.144.0 + with: + ruby-version: "2.7.7" + + - name: ci/setup-fastlane-dependencies + shell: bash + run: | + echo "::group::setup-fastlane-dependencies" + bundle install + echo "::endgroup::" + working-directory: ./fastlane + + - name: ci/prepare-node-deps + uses: ./.github/actions/prepare-node-deps diff --git a/.github/actions/prepare-node-deps/action.yaml b/.github/actions/prepare-node-deps/action.yaml new file mode 100644 index 000000000..22967d7d6 --- /dev/null +++ b/.github/actions/prepare-node-deps/action.yaml @@ -0,0 +1,46 @@ +name: deps +description: Common deps for mobile repo + +runs: + using: composite + steps: + - name: ci/setup-node + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + with: + node-version: "${{ env.NODE_VERSION }}" + cache: "npm" + cache-dependency-path: package-lock.json + + - name: ci/install-npm-dependencies + shell: bash + env: + NODE_ENV: development + run: | + echo "::group::install-npm-dependencies" + npm ci --ignore-scripts + node node_modules/\@sentry/cli/scripts/install.js + echo "::endgroup::" + + - name: ci/patch-npm-dependencies + shell: bash + run: | + echo "::group::patch-npm-dependencies" + npx patch-package + echo "::endgroup::" + + - name: ci/generate-assets + shell: bash + run: | + echo "::group::generate-assets" + node ./scripts/generate-assets.js + echo "::endgroup::" + + - name: ci/import-compass-icon + shell: bash + env: + COMPASS_ICONS: "node_modules/@mattermost/compass-icons/font/compass-icons.ttf" + run: | + echo "::group::import-compass-icon" + cp "$COMPASS_ICONS" "assets/fonts/" + cp "$COMPASS_ICONS" "android/app/src/main/assets/fonts" + echo "::endgroup::" diff --git a/.github/actions/test/action.yaml b/.github/actions/test/action.yaml new file mode 100644 index 000000000..4ee3d61c3 --- /dev/null +++ b/.github/actions/test/action.yaml @@ -0,0 +1,27 @@ +name: test +description: Common tests for mobile repo + +runs: + using: composite + steps: + - name: ci/prepare-node-deps + uses: ./.github/actions/prepare-node-deps + + - name: ci/check-styles + shell: bash + run: | + echo "::group::check-styles" + npm run check + echo "::endgroup::" + - name: ci/run-tests + shell: bash + run: | + echo "::group::run-tests" + npm test + echo "::endgroup::" + - name: ci/check-i18n + shell: bash + run: | + echo "::group::check-i18n" + ./scripts/precommit/i18n.sh + echo "::endgroup::" diff --git a/.github/workflows/build-android-beta.yml b/.github/workflows/build-android-beta.yml new file mode 100644 index 000000000..4aa661dff --- /dev/null +++ b/.github/workflows/build-android-beta.yml @@ -0,0 +1,61 @@ +--- +name: build-android-beta + +on: + push: + branches: + - build-beta-[0-9]+ + - build-android-[0-9]+ + - build-android-beta-[0-9]+ + +env: + NODE_VERSION: 18.7.0 + TERM: xterm + +jobs: + test: + runs-on: ubuntu-22.04 + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + - name: ci/test + uses: ./.github/actions/test + + build-and-deploy-android-beta: + runs-on: ubuntu-22.04 + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-android-build + uses: ./.github/actions/prepare-android-build + env: + STORE_FILE: "${{ secrets.MM_MOBILE_STORE_FILE }}" + STORE_ALIAS: "${{ secrets.MM_MOBILE_STORE_ALIAS }}" + STORE_PASSWORD: "${{ secrets.MM_MOBILE_STORE_PASSWORD }}" + MATTERMOST_BUILD_GH_TOKEN: "${{ secrets.MATTERMOST_BUILD_GH_TOKEN }}" + + - name: ci/build-and-deploy-android-beta + env: + AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_BETA_AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_BETA_AWS_SECRET_ACCESS_KEY }}" + MATTERMOST_WEBHOOK_URL: "${{ secrets.MM_MOBILE_BETA_MATTERMOST_WEBHOOK_URL }}" + SENTRY_AUTH_TOKEN: "${{ secrets.MM_MOBILE_SENTRY_AUTH_TOKEN }}" + SENTRY_DSN_ANDROID: ${{ secrets.MM_MOBILE_BETA_SENTRY_DSN_ANDROID }} + SUPPLY_JSON_KEY: ${{ github.workspace }}/mattermost-mobile-private/android/mattermost-credentials.json + run: | + echo "::group::Build" + bundle exec fastlane android build --env android.beta + echo "::endgroup::" + echo "::group::Deploy to Play Store" + bundle exec fastlane android deploy file:"${{ github.workspace }}/*.apk" --env android.beta + echo "::endgroup::" + working-directory: ./fastlane + + - name: ci/upload-android-beta-build + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: android-build-beta-${{ github.run_id }} + path: "*.apk" diff --git a/.github/workflows/build-android-release.yml b/.github/workflows/build-android-release.yml new file mode 100644 index 000000000..0dbdf6dfa --- /dev/null +++ b/.github/workflows/build-android-release.yml @@ -0,0 +1,60 @@ +--- +name: build-android-release + +on: + push: + branches: + - build-release-[0-9]+ + - build-release-android-[0-9]+ + +env: + NODE_VERSION: 18.7.0 + TERM: xterm + +jobs: + test: + runs-on: ubuntu-22.04 + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + - name: ci/test + uses: ./.github/actions/test + + build-and-deploy-android-release: + runs-on: ubuntu-22.04 + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-android-build + uses: ./.github/actions/prepare-android-build + env: + STORE_FILE: "${{ secrets.MM_MOBILE_STORE_FILE }}" + STORE_ALIAS: "${{ secrets.MM_MOBILE_STORE_ALIAS }}" + STORE_PASSWORD: "${{ secrets.MM_MOBILE_STORE_PASSWORD }}" + MATTERMOST_BUILD_GH_TOKEN: "${{ secrets.MATTERMOST_BUILD_GH_TOKEN }}" + + - name: ci/build-and-deploy-android-release + env: + AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_RELEASE_AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_RELEASE_AWS_SECRET_ACCESS_KEY }}" + MATTERMOST_WEBHOOK_URL: "${{ secrets.MM_MOBILE_RELEASE_MATTERMOST_WEBHOOK_URL }}" + SENTRY_AUTH_TOKEN: "${{ secrets.MM_MOBILE_SENTRY_AUTH_TOKEN }}" + SENTRY_DSN_ANDROID: ${{ secrets.MM_MOBILE_RELEASE_SENTRY_DSN_ANDROID }} + SUPPLY_JSON_KEY: ${{ github.workspace }}/mattermost-mobile-private/android/mattermost-credentials.json + run: | + echo "::group::Build" + bundle exec fastlane android build --env android.release + echo "::endgroup::" + echo "::group::Deploy to Play Store" + bundle exec fastlane android deploy file:"${{ github.workspace }}/*.apk" --env android.release + echo "::endgroup::" + working-directory: ./fastlane + + - name: ci/upload-android-release-build + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: android-build-release-${{ github.run_id }} + path: "*.apk" diff --git a/.github/workflows/build-ios-beta.yml b/.github/workflows/build-ios-beta.yml new file mode 100644 index 000000000..6ba35bd56 --- /dev/null +++ b/.github/workflows/build-ios-beta.yml @@ -0,0 +1,99 @@ +--- +name: build-ios-beta + +on: + push: + branches: + - build-beta-[0-9]+ + - build-beta-ios-[0-9]+ + - build-beta-sim-[0-9]+ + +env: + NODE_VERSION: 18.7.0 + TERM: xterm + +jobs: + test: + runs-on: ubuntu-22.04 + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + - name: ci/test + uses: ./.github/actions/test + + build-ios-simulator: + runs-on: macos-12 + if: ${{ !contains(github.ref_name, 'beta-ios') }} + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-ios-build + uses: ./.github/actions/prepare-ios-build + + - name: ci/build-ios-simulator + env: + TAG: "${{ github.ref_name }}" + AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_BETA_AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_BETA_AWS_SECRET_ACCESS_KEY }}" + MATTERMOST_WEBHOOK_URL: "${{ secrets.MM_MOBILE_BETA_MATTERMOST_WEBHOOK_URL }}" + GITHUB_TOKEN: "${{ secrets.MM_MOBILE_GITHUB_TOKEN }}" + run: bundle exec fastlane ios simulator --env ios.simulator + working-directory: ./fastlane + + - name: ci/upload-ios-pr-simulator + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: ios-build-simulator-${{ github.run_id }} + path: Mattermost-simulator-x86_64.app.zip + + build-and-deploy-ios-beta: + runs-on: macos-12 + if: ${{ !contains(github.ref_name, 'beta-sim') }} + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/output-ssh-private-key + shell: bash + run: | + SSH_KEY_PATH=~/.ssh/id_ed25519 + mkdir -p ~/.ssh + echo -e '${{ secrets.MM_MOBILE_PRIVATE_DEPLOY_KEY }}' > ${SSH_KEY_PATH} + chmod 0600 ${SSH_KEY_PATH} + ssh-keygen -y -f ${SSH_KEY_PATH} > ${SSH_KEY_PATH}.pub + + - name: ci/prepare-ios-build + uses: ./.github/actions/prepare-ios-build + + - name: ci/build-and-deploy-ios-beta + env: + AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_BETA_AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_BETA_AWS_SECRET_ACCESS_KEY }}" + MATTERMOST_WEBHOOK_URL: "${{ secrets.MM_MOBILE_BETA_MATTERMOST_WEBHOOK_URL }}" + FASTLANE_TEAM_ID: "${{ secrets.MM_MOBILE_FASTLANE_TEAM_ID }}" + IOS_API_ISSUER_ID: "${{ secrets.MM_MOBILE_IOS_API_ISSUER_ID }}" + IOS_API_KEY: "${{ secrets.MM_MOBILE_IOS_API_KEY }}" + IOS_API_KEY_ID: "${{ secrets.MM_MOBILE_IOS_API_KEY_ID }}" + MATCH_GIT_URL: "${{ secrets.MM_MOBILE_MATCH_GIT_URL }}" + MATCH_PASSWORD: "${{ secrets.MM_MOBILE_MATCH_PASSWORD }}" + SENTRY_AUTH_TOKEN: "${{ secrets.MM_MOBILE_SENTRY_AUTH_TOKEN }}" + SENTRY_DSN_IOS: "${{ secrets.MM_MOBILE_BETA_SENTRY_DSN_IOS }}" + run: | + echo "::group::Build" + bundle exec fastlane ios build --env ios.beta + echo "::endgroup::" + echo "::group::Deploy to TestFlight" + bundle exec fastlane ios deploy file:"${{ github.workspace }}/*.ipa" --env ios.beta + echo "::endgroup::" + working-directory: ./fastlane + + - name: ci/upload-ios-beta-build + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: ios-build-beta-${{ github.run_id }} + path: "*.ipa" diff --git a/.github/workflows/build-ios-release.yml b/.github/workflows/build-ios-release.yml new file mode 100644 index 000000000..2616500e8 --- /dev/null +++ b/.github/workflows/build-ios-release.yml @@ -0,0 +1,99 @@ +--- +name: build-ios-release + +on: + push: + branches: + - build-release-[0-9]+ + - build-release-ios-[0-9]+ + - build-release-sim-[0-9]+ + +env: + NODE_VERSION: 18.7.0 + TERM: xterm + +jobs: + test: + runs-on: ubuntu-22.04 + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + - name: ci/test + uses: ./.github/actions/test + + build-and-deploy-ios-release: + runs-on: macos-12 + if: ${{ !contains(github.ref_name, 'release-sim') }} + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-ios-build + uses: ./.github/actions/prepare-ios-build + + - name: ci/output-ssh-private-key + shell: bash + run: | + SSH_KEY_PATH=~/.ssh/id_ed25519 + mkdir -p ~/.ssh + echo -e '${{ secrets.MM_MOBILE_PRIVATE_DEPLOY_KEY }}' > ${SSH_KEY_PATH} + chmod 0600 ${SSH_KEY_PATH} + ssh-keygen -y -f ${SSH_KEY_PATH} > ${SSH_KEY_PATH}.pub + + - name: ci/build-and-deploy-ios-release + env: + AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_RELEASE_AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_RELEASE_AWS_SECRET_ACCESS_KEY }}" + MATTERMOST_WEBHOOK_URL: "${{ secrets.MM_MOBILE_RELEASE_MATTERMOST_WEBHOOK_URL }}" + FASTLANE_TEAM_ID: "${{ secrets.MM_MOBILE_FASTLANE_TEAM_ID }}" + IOS_API_ISSUER_ID: "${{ secrets.MM_MOBILE_IOS_API_ISSUER_ID }}" + IOS_API_KEY: "${{ secrets.MM_MOBILE_IOS_API_KEY }}" + IOS_API_KEY_ID: "${{ secrets.MM_MOBILE_IOS_API_KEY_ID }}" + MATCH_GIT_URL: "${{ secrets.MM_MOBILE_MATCH_GIT_URL }}" + MATCH_PASSWORD: "${{ secrets.MM_MOBILE_MATCH_PASSWORD }}" + SENTRY_AUTH_TOKEN: "${{ secrets.MM_MOBILE_SENTRY_AUTH_TOKEN }}" + SENTRY_DSN_IOS: ${{ secrets.MM_MOBILE_RELEASE_SENTRY_DSN_IOS }} + run: | + echo "::group::Build" + bundle exec fastlane ios build --env ios.release + echo "::endgroup::" + echo "::group::Deploy to TestFlight" + bundle exec fastlane ios deploy file:"${{ github.workspace }}/*.ipa" --env ios.release + echo "::endgroup::" + working-directory: ./fastlane + + - name: ci/upload-ios-release-build + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: ios-build-release-${{ github.run_id }} + path: "*.ipa" + + build-ios-simulator: + runs-on: macos-12 + if: ${{ !contains(github.ref_name , 'release-ios') }} + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-ios-build + uses: ./.github/actions/prepare-ios-build + + - name: ci/build-ios-simulator + env: + TAG: "${{ github.ref_name }}" + AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_BETA_AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_BETA_AWS_SECRET_ACCESS_KEY }}" + MATTERMOST_WEBHOOK_URL: "${{ secrets.MM_MOBILE_BETA_MATTERMOST_WEBHOOK_URL }}" + GITHUB_TOKEN: "${{ secrets.MM_MOBILE_GITHUB_TOKEN }}" + run: bundle exec fastlane ios simulator --env ios.simulator + working-directory: ./fastlane + + - name: ci/upload-ios-pr-simulator + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: ios-build-simulator-${{ github.run_id }} + path: Mattermost-simulator-x86_64.app.zip diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml new file mode 100644 index 000000000..8f6997109 --- /dev/null +++ b/.github/workflows/build-pr.yml @@ -0,0 +1,95 @@ +--- +name: build-pr +on: + push: + branches: + - build-pr-* + - build-pr-android-* + - build-pr-ios-* + +env: + NODE_VERSION: 18.7.0 + TERM: xterm + +jobs: + test: + runs-on: ubuntu-22.04 + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + - name: ci/test + uses: ./.github/actions/test + + build-ios-pr: + runs-on: macos-12 + if: ${{ !contains(github.ref_name, 'android') }} + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-ios-build + uses: ./.github/actions/prepare-ios-build + + - name: ci/output-ssh-private-key + shell: bash + run: | + SSH_KEY_PATH=~/.ssh/id_ed25519 + mkdir -p ~/.ssh + echo -e '${{ secrets.MM_MOBILE_PRIVATE_DEPLOY_KEY }}' > ${SSH_KEY_PATH} + chmod 0600 ${SSH_KEY_PATH} + ssh-keygen -y -f ${SSH_KEY_PATH} > ${SSH_KEY_PATH}.pub + + - name: ci/build-ios-pr + env: + BRANCH_TO_BUILD: "${{ github.ref_name }}" + AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_PR_AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_PR_AWS_SECRET_ACCESS_KEY }}" + FASTLANE_TEAM_ID: "${{ secrets.MM_MOBILE_FASTLANE_TEAM_ID }}" + IOS_API_ISSUER_ID: "${{ secrets.MM_MOBILE_IOS_API_ISSUER_ID }}" + IOS_API_KEY: "${{ secrets.MM_MOBILE_IOS_API_KEY }}" + IOS_API_KEY_ID: "${{ secrets.MM_MOBILE_IOS_API_KEY_ID }}" + MATCH_GIT_URL: "${{ secrets.MM_MOBILE_MATCH_GIT_URL }}" + MATCH_PASSWORD: "${{ secrets.MM_MOBILE_MATCH_PASSWORD }}" + MATTERMOST_WEBHOOK_URL: "${{ secrets.MM_MOBILE_PR_MATTERMOST_WEBHOOK_URL }}" + run: bundle exec fastlane ios build --env ios.pr + working-directory: ./fastlane + + - name: ci/upload-ios-pr-build + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: ios-build-pr-${{ github.run_id }} + path: "*.ipa" + + build-android-pr: + runs-on: ubuntu-22.04 + if: ${{ !contains(github.ref_name, 'ios') }} + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-android-build + uses: ./.github/actions/prepare-android-build + env: + STORE_FILE: "${{ secrets.MM_MOBILE_STORE_FILE }}" + STORE_ALIAS: "${{ secrets.MM_MOBILE_STORE_ALIAS }}" + STORE_PASSWORD: "${{ secrets.MM_MOBILE_STORE_PASSWORD }}" + MATTERMOST_BUILD_GH_TOKEN: "${{ secrets.MATTERMOST_BUILD_GH_TOKEN }}" + + - name: ci/build-android-pr + env: + BRANCH_TO_BUILD: "${{ github.ref_name }}" + AWS_ACCESS_KEY_ID: "${{ secrets.MM_MOBILE_PR_AWS_ACCESS_KEY_ID }}" + AWS_SECRET_ACCESS_KEY: "${{ secrets.MM_MOBILE_PR_AWS_SECRET_ACCESS_KEY }}" + MATTERMOST_WEBHOOK_URL: "${{ secrets.MM_MOBILE_PR_MATTERMOST_WEBHOOK_URL }}" + run: bundle exec fastlane android build --env android.pr + working-directory: ./fastlane + + - name: ci/upload-android-pr-build + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: android-build-pr-${{ github.run_id }} + path: "*.apk" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..33892f949 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,17 @@ +--- +name: ci +on: + pull_request: + +env: + NODE_VERSION: 18.7.0 + TERM: xterm + +jobs: + test: + runs-on: ubuntu-22.04 + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + - name: ci/test + uses: ./.github/actions/test diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml new file mode 100644 index 000000000..5cb16f632 --- /dev/null +++ b/.github/workflows/github-release.yml @@ -0,0 +1,100 @@ +--- +name: github-release +on: + push: + tags: + - v[0-9]+.[0-9]+.[0-9]+* + +jobs: + test: + runs-on: ubuntu-22.04 + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + - name: ci/test + uses: ./.github/actions/test + + build-ios-unsigned: + runs-on: macos-12 + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-ios-build + uses: ./.github/actions/prepare-ios-build + + - name: ci/output-ssh-private-key + shell: bash + run: | + SSH_KEY_PATH=~/.ssh/id_ed25519 + mkdir -p ~/.ssh + echo -e '${{ secrets.MM_MOBILE_PRIVATE_DEPLOY_KEY }}' > ${SSH_KEY_PATH} + chmod 0600 ${SSH_KEY_PATH} + ssh-keygen -y -f ${SSH_KEY_PATH} > ${SSH_KEY_PATH}.pub + + - name: ci/build-ios-unsigned + env: + TAG: "${{ github.ref_name }}" + GITHUB_TOKEN: "${{ secrets.MM_MOBILE_GITHUB_TOKEN }}" + run: bundle exec fastlane ios unsigned + working-directory: ./fastlane + + - name: ci/upload-ios-unsigned + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + path: Mattermost-unsigned.ipa + name: Mattermost-unsigned.ipa + + build-android-unsigned: + runs-on: ubuntu-22.04 + needs: + - test + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - name: ci/prepare-android-build + uses: ./.github/actions/prepare-android-build + with: + sign: false + + - name: ci/build-android-beta + env: + TAG: "${{ github.ref_name }}" + GITHUB_TOKEN: "${{ secrets.MM_MOBILE_GITHUB_TOKEN }}" + run: bundle exec fastlane android unsigned + working-directory: ./fastlane + + - name: ci/upload-android-unsigned-build + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + path: Mattermost-unsigned.apk + name: Mattermost-unsigned.apk + + release: + runs-on: ubuntu-22.04 + needs: + - build-ios-unsigned + - build-android-unsigned + steps: + - name: ci/checkout-repo + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + + - uses: ruby/setup-ruby@9669f3ee51dc3f4eda8447ab696b3ab19a90d14b # v1.144.0 + with: + ruby-version: "2.7" + + - name: release/setup-fastlane-dependencies + run: bundle install + working-directory: ./fastlane + + - name: ci/download-artifacts + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + + - name: release/create-github-release + env: + GITHUB_TOKEN: "${{ secrets.MM_MOBILE_GITHUB_TOKEN }}" + run: bundle exec fastlane github + working-directory: ./fastlane diff --git a/.gitignore b/.gitignore index 578a65aac..600fc0dfa 100644 --- a/.gitignore +++ b/.gitignore @@ -103,6 +103,7 @@ detox/detox_pixel_* # Bundle artifact *.jsbundle +.bundle #editor-settings .vscode diff --git a/android/app/build.gradle b/android/app/build.gradle index 2e5e9c4a9..5503ee62f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -110,8 +110,8 @@ android { applicationId "com.mattermost.rnbeta" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 473 - versionName "2.5.0" + versionCode 476 + versionName "2.5.1" testBuildType System.getProperty('testBuildType', 'debug') testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } diff --git a/android/app/src/main/java/com/mattermost/helpers/DatabaseHelper.kt b/android/app/src/main/java/com/mattermost/helpers/DatabaseHelper.kt index d299415be..fcbb53aaf 100644 --- a/android/app/src/main/java/com/mattermost/helpers/DatabaseHelper.kt +++ b/android/app/src/main/java/com/mattermost/helpers/DatabaseHelper.kt @@ -39,7 +39,7 @@ class DatabaseHelper { private fun setDefaultDatabase(context: Context) { val databaseName = "app.db" val databasePath = Uri.fromFile(context.filesDir).toString() + "/" + databaseName - defaultDatabase = Database(databasePath, context) + defaultDatabase = Database.getInstance(databasePath, context) } internal fun JSONObject.toMap(): Map = keys().asSequence().associateWith { it -> diff --git a/android/app/src/main/java/com/mattermost/helpers/database_extension/General.kt b/android/app/src/main/java/com/mattermost/helpers/database_extension/General.kt index aefe81369..5c8e46152 100644 --- a/android/app/src/main/java/com/mattermost/helpers/database_extension/General.kt +++ b/android/app/src/main/java/com/mattermost/helpers/database_extension/General.kt @@ -57,7 +57,7 @@ fun DatabaseHelper.getDatabaseForServer(context: Context?, serverUrl: String): D if (cursor.count == 1) { cursor.moveToFirst() val databasePath = cursor.getString(0) - return Database(databasePath, context!!) + return Database.getInstance(databasePath, context!!) } } } catch (e: Exception) { diff --git a/app/actions/remote/channel.ts b/app/actions/remote/channel.ts index 212e19c83..9d1f429b6 100644 --- a/app/actions/remote/channel.ts +++ b/app/actions/remote/channel.ts @@ -7,7 +7,6 @@ import {DeviceEventEmitter} from 'react-native'; import {addChannelToDefaultCategory, storeCategories} from '@actions/local/category'; import {markChannelAsViewed, removeCurrentUserFromChannel, setChannelDeleteAt, storeMyChannelsForTeam, switchToChannel} from '@actions/local/channel'; import {switchToGlobalThreads} from '@actions/local/thread'; -import {getIsCRTEnabled} from '@app/queries/servers/thread'; import {loadCallForChannel} from '@calls/actions/calls'; import {DeepLink, Events, General, Preferences, Screens} from '@constants'; import DatabaseManager from '@database/manager'; @@ -20,6 +19,7 @@ import {prepareMyChannelsForTeam, getChannelById, getChannelByName, getMyChannel import {queryDisplayNamePreferences} from '@queries/servers/preference'; import {getCommonSystemValues, getConfig, getCurrentChannelId, getCurrentTeamId, getCurrentUserId, getLicense, setCurrentChannelId, setCurrentTeamAndChannelId} from '@queries/servers/system'; import {getNthLastChannelFromTeam, getMyTeamById, getTeamByName, queryMyTeams, removeChannelFromTeamHistory} from '@queries/servers/team'; +import {getIsCRTEnabled} from '@queries/servers/thread'; import {getCurrentUser} from '@queries/servers/user'; import {dismissAllModalsAndPopToRoot} from '@screens/navigation'; import EphemeralStore from '@store/ephemeral_store'; diff --git a/app/actions/remote/groups.ts b/app/actions/remote/groups.ts index e402226b3..50d6a5fca 100644 --- a/app/actions/remote/groups.ts +++ b/app/actions/remote/groups.ts @@ -17,7 +17,7 @@ export const fetchGroupsForAutocomplete = async (serverUrl: string, query: strin try { const {operator, database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); const license = await getLicense(database); - if (!license || !license.IsLicensed) { + if (!license || license.IsLicensed !== 'true') { return []; } @@ -40,7 +40,7 @@ export const fetchGroupsByNames = async (serverUrl: string, names: string[], fet try { const {operator, database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); const license = await getLicense(database); - if (!license || !license.IsLicensed) { + if (!license || license.IsLicensed !== 'true') { return []; } @@ -70,7 +70,7 @@ export const fetchGroupsForChannel = async (serverUrl: string, channelId: string try { const {operator, database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); const license = await getLicense(database); - if (!license || !license.IsLicensed) { + if (!license || license.IsLicensed !== 'true') { return {groups: [], groupChannels: []}; } @@ -102,7 +102,7 @@ export const fetchGroupsForTeam = async (serverUrl: string, teamId: string, fetc try { const {operator, database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); const license = await getLicense(database); - if (!license || !license.IsLicensed) { + if (!license || license.IsLicensed !== 'true') { return {groups: [], groupTeams: []}; } @@ -133,7 +133,7 @@ export const fetchGroupsForMember = async (serverUrl: string, userId: string, fe try { const {operator, database} = DatabaseManager.getServerDatabaseAndOperator(serverUrl); const license = await getLicense(database); - if (!license || !license.IsLicensed) { + if (!license || license.IsLicensed !== 'true') { return {groups: [], groupMemberships: []}; } diff --git a/app/actions/remote/post.ts b/app/actions/remote/post.ts index 7a5add8e6..3c26ff0ac 100644 --- a/app/actions/remote/post.ts +++ b/app/actions/remote/post.ts @@ -339,7 +339,7 @@ export const fetchPostsForUnreadChannels = async (serverUrl: string, channels: C const promises = []; for (const member of memberships) { const channel = channels.find((c) => c.id === member.channel_id); - if (channel && (channel.total_msg_count - member.msg_count) > 0 && channel.id !== excludeChannelId) { + if (channel && !channel.delete_at && (channel.total_msg_count - member.msg_count) > 0 && channel.id !== excludeChannelId) { promises.push(fetchPostsForChannel(serverUrl, channel.id)); } } diff --git a/app/components/files/image_file.tsx b/app/components/files/image_file.tsx index f935fcc6e..ac48ffd1f 100644 --- a/app/components/files/image_file.tsx +++ b/app/components/files/image_file.tsx @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import React, {useCallback, useMemo, useState} from 'react'; -import {type StyleProp, StyleSheet, useWindowDimensions, View, type ViewStyle} from 'react-native'; +import {StyleSheet, useWindowDimensions, View} from 'react-native'; import LinearGradient from 'react-native-linear-gradient'; import {buildFilePreviewUrl, buildFileThumbnailUrl} from '@actions/remote/file'; @@ -59,15 +59,6 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => ({ imagePreview: { ...StyleSheet.absoluteFillObject, }, - smallImageBorder: { - borderRadius: 5, - }, - smallImageOverlay: { - justifyContent: 'center', - alignItems: 'center', - borderRadius: 4, - position: 'absolute', - }, singleSmallImageWrapper: { height: SMALL_IMAGE_MAX_HEIGHT, width: SMALL_IMAGE_MAX_WIDTH, @@ -117,56 +108,9 @@ const ImageFile = ({ return props; }; - const imageDimensions = getImageDimensions(); - if (imageDimensions && (imageDimensions.height <= SMALL_IMAGE_MAX_HEIGHT || imageDimensions.width <= SMALL_IMAGE_MAX_WIDTH)) { - let wrapperStyle: StyleProp = style.fileImageWrapper; - if (isSingleImage) { - wrapperStyle = style.singleSmallImageWrapper; - - if (file.width > SMALL_IMAGE_MAX_WIDTH) { - wrapperStyle = [wrapperStyle, {width: '100%'}]; - } - } - - image = ( - - ); - - if (failed) { - image = ( - - ); - } - - return ( - - {!isSingleImage && } - - {image} - - - ); + let imageDimensions = getImageDimensions(); + if (isSingleImage && (!imageDimensions || (imageDimensions?.height === 0 && imageDimensions?.width === 0))) { + imageDimensions = style.singleSmallImageWrapper; } image = ( diff --git a/app/screens/channel/header/other_mentions_badge/index.tsx b/app/components/other_mentions_badge/index.tsx similarity index 87% rename from app/screens/channel/header/other_mentions_badge/index.tsx rename to app/components/other_mentions_badge/index.tsx index 3beda4db7..0556af363 100644 --- a/app/screens/channel/header/other_mentions_badge/index.tsx +++ b/app/components/other_mentions_badge/index.tsx @@ -1,10 +1,12 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import React, {useEffect, useState} from 'react'; +import React, {useEffect, useRef, useState} from 'react'; import {StyleSheet, View} from 'react-native'; import Badge from '@components/badge'; +import {Screens} from '@constants'; +import {useServerUrl} from '@context/server'; import {subscribeAllServers} from '@database/subscription/servers'; import {subscribeMentionsByServer} from '@database/subscription/unreads'; @@ -27,9 +29,9 @@ const styles = StyleSheet.create({ }, }); -const subscriptions: Map = new Map(); - const OtherMentionsBadge = ({channelId}: Props) => { + const currentServerUrl = useServerUrl(); + const subscriptions: Map = useRef(new Map()).current; const [count, setCount] = useState(0); const updateCount = () => { @@ -50,7 +52,10 @@ const OtherMentionsBadge = ({channelId}: Props) => { } } - unreads.mentions = mentions + threadMentionCount; + unreads.mentions = mentions; + if (serverUrl !== currentServerUrl || channelId !== Screens.GLOBAL_THREADS) { + unreads.mentions += threadMentionCount; + } subscriptions.set(serverUrl, unreads); updateCount(); } diff --git a/app/components/post_draft/send_handler/send_handler.tsx b/app/components/post_draft/send_handler/send_handler.tsx index dd901b59a..cc0f15ce6 100644 --- a/app/components/post_draft/send_handler/send_handler.tsx +++ b/app/components/post_draft/send_handler/send_handler.tsx @@ -166,7 +166,7 @@ export default function SendHandler({ const sendCommand = useCallback(async () => { if (value.trim().startsWith('/call')) { - const {handled, error} = await handleCallsSlashCommand(value.trim(), serverUrl, channelId, currentUserId, intl); + const {handled, error} = await handleCallsSlashCommand(value.trim(), serverUrl, channelId, rootId, currentUserId, intl); if (handled) { setSendingMessage(false); clearDraft(); diff --git a/app/components/post_list/post_list.tsx b/app/components/post_list/post_list.tsx index b55cd7f59..cd7ae4ed9 100644 --- a/app/components/post_list/post_list.tsx +++ b/app/components/post_list/post_list.tsx @@ -198,7 +198,7 @@ const PostList = ({ const viewableItemsMap = viewableItems.reduce((acc: Record, {item, isViewable}) => { if (isViewable && item.type === 'post') { - acc[`${location}-${item.value.id}`] = true; + acc[`${location}-${item.value.currentPost.id}`] = true; } return acc; }, {}); diff --git a/app/components/progressive_image/index.tsx b/app/components/progressive_image/index.tsx index 4d0279fa8..e22c8ffd1 100644 --- a/app/components/progressive_image/index.tsx +++ b/app/components/progressive_image/index.tsx @@ -7,6 +7,7 @@ import FastImage, {type ResizeMode} from 'react-native-fast-image'; import Animated, {interpolate, useAnimatedStyle, useDerivedValue, useSharedValue, withTiming} from 'react-native-reanimated'; import {useTheme} from '@context/theme'; +import {emptyFunction} from '@utils/general'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; import Thumbnail from './thumbnail'; @@ -153,8 +154,9 @@ const ProgressiveImage = ({ + {Boolean(thumbnailUri) && + } {image} ); diff --git a/app/database/operator/base_data_operator/index.ts b/app/database/operator/base_data_operator/index.ts index 5fa132318..8089c7658 100644 --- a/app/database/operator/base_data_operator/index.ts +++ b/app/database/operator/base_data_operator/index.ts @@ -186,11 +186,11 @@ export default class BaseDataOperator { try { if (models.length > 0) { await this.database.write(async (writer) => { - await writer.batch(models); + await writer.batch(...models); }, description); } } catch (e) { - logWarning('batchRecords error ', e as Error); + logWarning('batchRecords error ', description, e as Error); } } diff --git a/app/init/push_notifications.ts b/app/init/push_notifications.ts index c869be891..132332da1 100644 --- a/app/init/push_notifications.ts +++ b/app/init/push_notifications.ts @@ -16,8 +16,8 @@ import {requestNotifications} from 'react-native-permissions'; import {storeDeviceToken} from '@actions/app/global'; import {markChannelAsViewed} from '@actions/local/channel'; +import {updateThread} from '@actions/local/thread'; import {backgroundNotification, openNotification} from '@actions/remote/notifications'; -import {markThreadAsRead} from '@actions/remote/thread'; import {Device, Events, Navigation, PushNotification, Screens} from '@constants'; import DatabaseManager from '@database/manager'; import {DEFAULT_LOCALE, getLocalizedMessage, t} from '@i18n'; @@ -90,7 +90,12 @@ class PushNotifications { if (isCRTEnabled && payload.root_id) { const thread = await getThreadById(database, payload.root_id); if (thread?.isFollowing) { - markThreadAsRead(serverUrl, payload.team_id, payload.root_id); + const data: Partial = { + unread_mentions: 0, + unread_replies: 0, + last_viewed_at: Date.now(), + }; + updateThread(serverUrl, payload.root_id, data); } } else { markChannelAsViewed(serverUrl, payload.channel_id); diff --git a/app/managers/global_event_handler.ts b/app/managers/global_event_handler.ts index 51568a8c2..377e03c8e 100644 --- a/app/managers/global_event_handler.ts +++ b/app/managers/global_event_handler.ts @@ -2,11 +2,9 @@ // See LICENSE.txt for license information. import {Alert, DeviceEventEmitter, Linking, NativeEventEmitter, NativeModules} from 'react-native'; -import RNLocalize from 'react-native-localize'; import semver from 'semver'; import {switchToChannelById} from '@actions/remote/channel'; -import {autoUpdateTimezone} from '@actions/remote/user'; import LocalConfig from '@assets/config.json'; import {Device, Events, Sso} from '@constants'; import {MIN_REQUIRED_VERSION} from '@constants/supported_server'; @@ -14,13 +12,12 @@ import DatabaseManager from '@database/manager'; import {DEFAULT_LOCALE, getTranslations, t} from '@i18n'; import {getServerCredentials} from '@init/credentials'; import * as analytics from '@managers/analytics'; -import {getAllServers, getActiveServerUrl} from '@queries/app/servers'; +import {getActiveServerUrl} from '@queries/app/servers'; import {queryTeamDefaultChannel} from '@queries/servers/channel'; import {getCommonSystemValues} from '@queries/servers/system'; import {getTeamChannelHistory} from '@queries/servers/team'; import {setScreensOrientation} from '@screens/navigation'; import {handleDeepLink} from '@utils/deep_link'; -import {logError} from '@utils/log'; type LinkingCallbackArg = {url: string}; @@ -33,19 +30,6 @@ class GlobalEventHandler { constructor() { DeviceEventEmitter.addListener(Events.SERVER_VERSION_CHANGED, this.onServerVersionChanged); DeviceEventEmitter.addListener(Events.CONFIG_CHANGED, this.onServerConfigChanged); - RNLocalize.addEventListener('change', async () => { - try { - const servers = await getAllServers(); - for (const server of servers) { - if (server.url && server.lastActiveAt > 0) { - autoUpdateTimezone(server.url); - } - } - } catch (e) { - logError('Localize change', e); - } - }); - splitViewEmitter.addListener('SplitViewChanged', this.onSplitViewChanged); Linking.addEventListener('url', this.onDeepLink); } diff --git a/app/products/calls/actions/calls.test.ts b/app/products/calls/actions/calls.test.ts index 6d975e50e..9b3b018a3 100644 --- a/app/products/calls/actions/calls.test.ts +++ b/app/products/calls/actions/calls.test.ts @@ -89,6 +89,13 @@ jest.mock('@queries/servers/thread', () => ({ })); jest.mock('@calls/alerts'); +jest.mock('react-native-navigation', () => ({ + Navigation: { + pop: jest.fn(() => Promise.resolve({ + catch: jest.fn(), + })), + }, +})); const addFakeCall = (serverUrl: string, channelId: string) => { const call = { diff --git a/app/products/calls/actions/calls.ts b/app/products/calls/actions/calls.ts index cb0c227b1..4f560a143 100644 --- a/app/products/calls/actions/calls.ts +++ b/app/products/calls/actions/calls.ts @@ -3,7 +3,6 @@ import {Alert} from 'react-native'; import InCallManager from 'react-native-incall-manager'; -import {Navigation} from 'react-native-navigation'; import {forceLogoutIfNecessary} from '@actions/remote/session'; import {updateThreadFollowing} from '@actions/remote/thread'; @@ -24,7 +23,7 @@ import { getCurrentCall, getChannelsWithCalls, } from '@calls/state'; -import {General, Preferences, Screens} from '@constants'; +import {General, Preferences} from '@constants'; import Calls from '@constants/calls'; import DatabaseManager from '@database/manager'; import {getTeammateNameDisplaySetting} from '@helpers/api/preference'; @@ -34,8 +33,6 @@ import {queryDisplayNamePreferences} from '@queries/servers/preference'; import {getConfig, getLicense} from '@queries/servers/system'; import {getThreadById} from '@queries/servers/thread'; import {getCurrentUser, getUserById} from '@queries/servers/user'; -import {dismissAllModalsAndPopToScreen} from '@screens/navigation'; -import NavigationStore from '@store/navigation_store'; import {getFullErrorMessage} from '@utils/errors'; import {logDebug} from '@utils/log'; import {displayUsername, getUserIdFromChannelName, isSystemAdmin} from '@utils/user'; @@ -211,6 +208,7 @@ export const joinCall = async ( userId: string, hasMicPermission: boolean, title?: string, + rootId?: string, ): Promise<{ error?: unknown; data?: string }> => { // Edge case: calls was disabled when app loaded, and then enabled, but app hasn't // reconnected its websocket since then (i.e., hasn't called batchLoadCalls yet) @@ -229,7 +227,7 @@ export const joinCall = async ( try { connection = await newConnection(serverUrl, channelId, () => { myselfLeftCall(); - }, setScreenShareURL, hasMicPermission, title); + }, setScreenShareURL, hasMicPermission, title, rootId); } catch (error) { await forceLogoutIfNecessary(serverUrl, error); return {error}; @@ -271,16 +269,6 @@ export const leaveCall = () => { } }; -export const leaveCallPopCallScreen = async () => { - leaveCall(); - - // Need to pop the call screen, if it's somewhere in the stack. - if (NavigationStore.getScreensInStack().includes(Screens.CALL)) { - await dismissAllModalsAndPopToScreen(Screens.CALL, 'Call'); - Navigation.pop(Screens.CALL).catch(() => null); - } -}; - export const muteMyself = () => { if (connection) { connection.mute(); @@ -430,7 +418,7 @@ export const stopCallRecording = async (serverUrl: string, callId: string) => { }; // handleCallsSlashCommand will return true if the slash command was handled -export const handleCallsSlashCommand = async (value: string, serverUrl: string, channelId: string, currentUserId: string, intl: IntlShape): +export const handleCallsSlashCommand = async (value: string, serverUrl: string, channelId: string, rootId: string, currentUserId: string, intl: IntlShape): Promise<{ handled?: boolean; error?: string }> => { const tokens = value.split(' '); if (tokens.length < 2 || tokens[0] !== '/call') { @@ -451,15 +439,17 @@ export const handleCallsSlashCommand = async (value: string, serverUrl: string, }; } const title = tokens.length > 2 ? tokens.slice(2).join(' ') : undefined; - await leaveAndJoinWithAlert(intl, serverUrl, channelId, title); + await leaveAndJoinWithAlert(intl, serverUrl, channelId, title, rootId); return {handled: true}; } - case 'join': - await leaveAndJoinWithAlert(intl, serverUrl, channelId); + case 'join': { + const title = tokens.length > 2 ? tokens.slice(2).join(' ') : undefined; + await leaveAndJoinWithAlert(intl, serverUrl, channelId, title, rootId); return {handled: true}; + } case 'leave': if (getCurrentCall()?.channelId === channelId) { - await leaveCallPopCallScreen(); + await leaveCall(); return {handled: true}; } return { diff --git a/app/products/calls/alerts.ts b/app/products/calls/alerts.ts index f3e89d595..22bf8b78c 100644 --- a/app/products/calls/alerts.ts +++ b/app/products/calls/alerts.ts @@ -3,8 +3,7 @@ import {Alert} from 'react-native'; -import {hasMicrophonePermission, joinCall, unmuteMyself} from '@calls/actions'; -import {leaveCallPopCallScreen} from '@calls/actions/calls'; +import {hasMicrophonePermission, joinCall, leaveCall, unmuteMyself} from '@calls/actions'; import {hasBluetoothPermission} from '@calls/actions/permissions'; import { getCallsConfig, @@ -73,6 +72,7 @@ export const leaveAndJoinWithAlert = async ( joinServerUrl: string, joinChannelId: string, title?: string, + rootId?: string, ) => { let leaveChannelName = ''; let joinChannelName = ''; @@ -133,13 +133,13 @@ export const leaveAndJoinWithAlert = async ( id: 'mobile.leave_and_join_confirmation', defaultMessage: 'Leave & Join', }), - onPress: () => doJoinCall(joinServerUrl, joinChannelId, joinChannelIsDMorGM, newCall, intl, title), + onPress: () => doJoinCall(joinServerUrl, joinChannelId, joinChannelIsDMorGM, newCall, intl, title, rootId), style: 'cancel', }, ], ); } else { - doJoinCall(joinServerUrl, joinChannelId, joinChannelIsDMorGM, newCall, intl, title); + doJoinCall(joinServerUrl, joinChannelId, joinChannelIsDMorGM, newCall, intl, title, rootId); } }; @@ -150,6 +150,7 @@ const doJoinCall = async ( newCall: boolean, intl: IntlShape, title?: string, + rootId?: string, ) => { const {formatMessage} = intl; @@ -198,7 +199,7 @@ const doJoinCall = async ( const hasPermission = await hasMicrophonePermission(); setMicPermissionsGranted(hasPermission); - const res = await joinCall(serverUrl, channelId, user.id, hasPermission, title); + const res = await joinCall(serverUrl, channelId, user.id, hasPermission, title, rootId); if (res.error) { const seeLogs = formatMessage({id: 'mobile.calls_see_logs', defaultMessage: 'See server logs'}); errorAlert(res.error?.toString() || seeLogs, intl); @@ -265,7 +266,7 @@ export const recordingAlert = (isHost: boolean, intl: IntlShape) => { defaultMessage: 'Leave', }), onPress: async () => { - await leaveCallPopCallScreen(); + await leaveCall(); }, style: 'destructive', }, diff --git a/app/products/calls/connection/connection.ts b/app/products/calls/connection/connection.ts index 99a6b6ff6..0dd69a3d2 100644 --- a/app/products/calls/connection/connection.ts +++ b/app/products/calls/connection/connection.ts @@ -31,6 +31,7 @@ export async function newConnection( setScreenShareURL: (url: string) => void, hasMicPermission: boolean, title?: string, + rootId?: string, ) { let peer: RTCPeer | null = null; let stream: MediaStream; @@ -323,6 +324,7 @@ export async function newConnection( ws.send('join', { channelID, title, + threadID: rootId, }); } }); diff --git a/app/products/calls/screens/call_screen/call_screen.tsx b/app/products/calls/screens/call_screen/call_screen.tsx index 53b7f4577..9161aab3e 100644 --- a/app/products/calls/screens/call_screen/call_screen.tsx +++ b/app/products/calls/screens/call_screen/call_screen.tsx @@ -4,7 +4,6 @@ import React, {useCallback, useEffect, useMemo, useState} from 'react'; import {useIntl} from 'react-intl'; import { - DeviceEventEmitter, Keyboard, type LayoutChangeEvent, type LayoutRectangle, @@ -40,7 +39,7 @@ import {getHandsRaised, makeCallsTheme, sortParticipants} from '@calls/utils'; import CompassIcon from '@components/compass_icon'; import FormattedText from '@components/formatted_text'; import SlideUpPanelItem, {ITEM_HEIGHT} from '@components/slide_up_panel_item'; -import {Calls, Preferences, Screens, WebsocketEvents} from '@constants'; +import {Calls, Preferences, Screens} from '@constants'; import {useServerUrl} from '@context/server'; import {useTheme} from '@context/theme'; import DatabaseManager from '@database/manager'; @@ -56,7 +55,6 @@ import { popTopScreen, setScreensOrientation, } from '@screens/navigation'; -import NavigationStore from '@store/navigation_store'; import {freezeOtherScreens} from '@utils/gallery'; import {bottomSheetSnapPoint} from '@utils/helpers'; import {mergeNavigationOptions} from '@utils/navigation'; @@ -504,16 +502,6 @@ const CallScreen = ({ popTopScreen(componentId); }); - useEffect(() => { - const listener = DeviceEventEmitter.addListener(WebsocketEvents.CALLS_CALL_END, ({channelId}) => { - if (channelId === currentCall?.channelId && NavigationStore.getVisibleScreen() === componentId) { - Navigation.pop(componentId); - } - }); - - return () => listener.remove(); - }, []); - useEffect(() => { const didDismissListener = Navigation.events().registerComponentDidDisappearListener(async ({componentId: screen}) => { if (componentId === screen) { @@ -550,13 +538,6 @@ const CallScreen = ({ }, []); if (!currentCall || !myParticipant) { - // Note: this happens because the screen is "rendered", even after the screen has been popped, and the - // currentCall will have already been set to null when those extra renders run. We probably don't ever need - // to pop, but just in case. - if (NavigationStore.getVisibleScreen() === componentId) { - // ignore the error because the call screen has likely already been popped async - Navigation.pop(componentId).catch(() => null); - } return null; } diff --git a/app/products/calls/state/actions.test.ts b/app/products/calls/state/actions.test.ts index ad3adb4da..a53457658 100644 --- a/app/products/calls/state/actions.test.ts +++ b/app/products/calls/state/actions.test.ts @@ -75,6 +75,14 @@ jest.mock('@queries/servers/thread', () => ({ })), })); +jest.mock('react-native-navigation', () => ({ + Navigation: { + pop: jest.fn(() => Promise.resolve({ + catch: jest.fn(), + })), + }, +})); + const call1: Call = { participants: { 'user-1': {id: 'user-1', muted: false, raisedHand: 0}, diff --git a/app/products/calls/state/actions.ts b/app/products/calls/state/actions.ts index 8e7b711c3..2872f32e7 100644 --- a/app/products/calls/state/actions.ts +++ b/app/products/calls/state/actions.ts @@ -2,6 +2,7 @@ // See LICENSE.txt for license information. import {mosThreshold} from '@mattermost/calls/lib/rtc_monitor'; +import {Navigation} from 'react-native-navigation'; import {updateThreadFollowing} from '@actions/remote/thread'; import {needsRecordingAlert} from '@calls/alerts'; @@ -27,7 +28,7 @@ import { DefaultCurrentCall, type ReactionStreamEmoji, } from '@calls/types/calls'; -import {Calls} from '@constants'; +import {Calls, Screens} from '@constants'; import DatabaseManager from '@database/manager'; import {getChannelById} from '@queries/servers/channel'; import {getThreadById} from '@queries/servers/thread'; @@ -217,6 +218,10 @@ export const newCurrentCall = (serverUrl: string, channelId: string, myUserId: s export const myselfLeftCall = () => { setCurrentCall(null); + + // Remove the call screen, and in some situations it needs to be removed twice before actually being removed. + Navigation.pop(Screens.CALL).catch(() => null); + Navigation.pop(Screens.CALL).catch(() => null); }; export const callStarted = async (serverUrl: string, call: Call) => { diff --git a/app/screens/bottom_sheet/index.tsx b/app/screens/bottom_sheet/index.tsx index 89dbdbfee..a6967043d 100644 --- a/app/screens/bottom_sheet/index.tsx +++ b/app/screens/bottom_sheet/index.tsx @@ -4,6 +4,7 @@ import BottomSheetM, {BottomSheetBackdrop, type BottomSheetBackdropProps, type BottomSheetFooterProps} from '@gorhom/bottom-sheet'; import React, {type ReactNode, useCallback, useEffect, useMemo, useRef} from 'react'; import {DeviceEventEmitter, type Handle, InteractionManager, Keyboard, type StyleProp, View, type ViewStyle} from 'react-native'; +import {GestureHandlerRootView} from 'react-native-gesture-handler'; import {Events} from '@constants'; import {useTheme} from '@context/theme'; @@ -38,6 +39,7 @@ const PADDING_TOP_TABLET = 8; export const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => { return { + container: {flex: 1}, bottomSheet: { backgroundColor: theme.centerChannelBg, borderTopStartRadius: 24, @@ -197,25 +199,27 @@ const BottomSheet = ({ } return ( - - {renderContainerContent()} - + + + {renderContainerContent()} + + ); }; diff --git a/app/screens/channel/header/header.tsx b/app/screens/channel/header/header.tsx index 0a7a779e5..7d83a064a 100644 --- a/app/screens/channel/header/header.tsx +++ b/app/screens/channel/header/header.tsx @@ -11,6 +11,7 @@ import CompassIcon from '@components/compass_icon'; import CustomStatusEmoji from '@components/custom_status/custom_status_emoji'; import NavigationHeader from '@components/navigation_header'; import {ITEM_HEIGHT} from '@components/option_item'; +import OtherMentionsBadge from '@components/other_mentions_badge'; import RoundedHeaderContext from '@components/rounded_header_context'; import {General, Screens} from '@constants'; import {useTheme} from '@context/theme'; @@ -23,7 +24,6 @@ import {preventDoubleTap} from '@utils/tap'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; import {typography} from '@utils/typography'; -import OtherMentionsBadge from './other_mentions_badge'; import QuickActions, {MARGIN, SEPARATOR_HEIGHT} from './quick_actions'; import type {HeaderRightButton} from '@components/navigation_header/header'; diff --git a/app/screens/custom_status_clear_after/index.tsx b/app/screens/custom_status_clear_after/index.tsx index 1964fcd1c..9a09992fa 100644 --- a/app/screens/custom_status_clear_after/index.tsx +++ b/app/screens/custom_status_clear_after/index.tsx @@ -68,7 +68,7 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => { class ClearAfterModal extends NavigationComponent { private backListener: NativeEventSubscription | undefined; constructor(props: Props) { - super(props); + super({...props, componentName: 'ClearAfterModal'}); const options: Options = { topBar: { diff --git a/app/screens/edit_profile/edit_profile.tsx b/app/screens/edit_profile/edit_profile.tsx index 7925b1de5..6edb8e098 100644 --- a/app/screens/edit_profile/edit_profile.tsx +++ b/app/screens/edit_profile/edit_profile.tsx @@ -155,7 +155,6 @@ const EditProfile = ({ } close(); - return; } catch (e) { resetScreen(e); } diff --git a/app/screens/global_threads/global_threads.tsx b/app/screens/global_threads/global_threads.tsx index fac693f78..3102a6065 100644 --- a/app/screens/global_threads/global_threads.tsx +++ b/app/screens/global_threads/global_threads.tsx @@ -8,7 +8,9 @@ import {type Edge, SafeAreaView} from 'react-native-safe-area-context'; import {setGlobalThreadsTab} from '@actions/local/systems'; import NavigationHeader from '@components/navigation_header'; +import OtherMentionsBadge from '@components/other_mentions_badge'; import RoundedHeaderContext from '@components/rounded_header_context'; +import {Screens} from '@constants'; import {useServerUrl} from '@context/server'; import useAndroidHardwareBackHandler from '@hooks/android_back_handler'; import {useIsTablet} from '@hooks/device'; @@ -49,6 +51,14 @@ const GlobalThreads = ({componentId, globalThreadsTab}: Props) => { return {flex: 1, marginTop}; }, [defaultHeight]); + const headerLeftComponent = useMemo(() => { + if (isTablet) { + return undefined; + } + + return (); + }, [isTablet]); + useEffect(() => { mounted.current = true; return () => { @@ -85,6 +95,7 @@ const GlobalThreads = ({componentId, globalThreadsTab}: Props) => { defaultMessage: 'Threads', }) } + leftComponent={headerLeftComponent} /> diff --git a/app/screens/home/index.tsx b/app/screens/home/index.tsx index 4dcec104b..1304f89d3 100644 --- a/app/screens/home/index.tsx +++ b/app/screens/home/index.tsx @@ -9,12 +9,16 @@ import {DeviceEventEmitter, Platform} from 'react-native'; import HWKeyboardEvent from 'react-native-hw-keyboard-event'; import {enableFreeze, enableScreens} from 'react-native-screens'; +import {autoUpdateTimezone} from '@actions/remote/user'; import ServerVersion from '@components/server_version'; import {Events, Screens} from '@constants'; import {useTheme} from '@context/theme'; +import {useAppState} from '@hooks/device'; +import {getAllServers} from '@queries/app/servers'; import {findChannels, popToRoot} from '@screens/navigation'; import NavigationStore from '@store/navigation_store'; import {handleDeepLink} from '@utils/deep_link'; +import {logError} from '@utils/log'; import {alertChannelArchived, alertChannelRemove, alertTeamRemove} from '@utils/navigation'; import {notificationError} from '@utils/notification'; @@ -40,9 +44,23 @@ type HomeProps = LaunchProps & { const Tab = createBottomTabNavigator(); +const updateTimezoneIfNeeded = async () => { + try { + const servers = await getAllServers(); + for (const server of servers) { + if (server.url && server.lastActiveAt > 0) { + autoUpdateTimezone(server.url); + } + } + } catch (e) { + logError('Localize change', e); + } +}; + export default function HomeScreen(props: HomeProps) { const theme = useTheme(); const intl = useIntl(); + const appState = useAppState(); useEffect(() => { const listener = DeviceEventEmitter.addListener(Events.NOTIFICATION_ERROR, (value: 'Team' | 'Channel' | 'Post' | 'Connection') => { @@ -95,6 +113,12 @@ export default function HomeScreen(props: HomeProps) { }; }, [intl.locale]); + useEffect(() => { + if (appState === 'active') { + updateTimezoneIfNeeded(); + } + }, [appState]); + useEffect(() => { if (props.launchType === 'deeplink') { const deepLink = props.extra as DeepLinkWithData; diff --git a/app/screens/home/recent_mentions/recent_mentions.tsx b/app/screens/home/recent_mentions/recent_mentions.tsx index 42dcf2170..c2ab358cb 100644 --- a/app/screens/home/recent_mentions/recent_mentions.tsx +++ b/app/screens/home/recent_mentions/recent_mentions.tsx @@ -115,7 +115,7 @@ const RecentMentionsScreen = ({appsEnabled, customEmojiNames, mentions, currentT const viewableItemsMap = viewableItems.reduce((acc: Record, {item, isViewable}) => { if (isViewable && item.type === 'post') { - acc[`${Screens.MENTIONS}-${item.value.id}`] = true; + acc[`${Screens.MENTIONS}-${item.value.currentPost.id}`] = true; } return acc; }, {}); diff --git a/app/screens/home/saved_messages/saved_messages.tsx b/app/screens/home/saved_messages/saved_messages.tsx index 12628123b..4685e3980 100644 --- a/app/screens/home/saved_messages/saved_messages.tsx +++ b/app/screens/home/saved_messages/saved_messages.tsx @@ -110,7 +110,7 @@ function SavedMessages({appsEnabled, posts, currentTimezone, customEmojiNames, i const viewableItemsMap = viewableItems.reduce((acc: Record, {item, isViewable}) => { if (isViewable && item.type === 'post') { - acc[`${Screens.SAVED_MESSAGES}-${item.value.id}`] = true; + acc[`${Screens.SAVED_MESSAGES}-${item.value.currentPost.id}`] = true; } return acc; }, {}); diff --git a/app/screens/index.tsx b/app/screens/index.tsx index 6eb227ef1..22d0f8c0c 100644 --- a/app/screens/index.tsx +++ b/app/screens/index.tsx @@ -72,7 +72,10 @@ Navigation.setLazyComponentRegistrator((screenName) => { break; case Screens.BOTTOM_SHEET: screen = withServerDatabase(require('@screens/bottom_sheet').default); - break; + Navigation.registerComponent(Screens.BOTTOM_SHEET, () => + withSafeAreaInsets(withManagedConfig(screen)), + ); + return; case Screens.BROWSE_CHANNELS: screen = withServerDatabase(require('@screens/browse_channels').default); break; diff --git a/app/screens/pinned_messages/pinned_messages.tsx b/app/screens/pinned_messages/pinned_messages.tsx index c8e4a4c1b..65d5de9c4 100644 --- a/app/screens/pinned_messages/pinned_messages.tsx +++ b/app/screens/pinned_messages/pinned_messages.tsx @@ -87,7 +87,7 @@ function SavedMessages({ const viewableItemsMap = viewableItems.reduce((acc: Record, {item, isViewable}) => { if (isViewable && item.type === 'post') { - acc[`${Screens.PINNED_MESSAGES}-${item.value.id}`] = true; + acc[`${Screens.PINNED_MESSAGES}-${item.value.currentPost.id}`] = true; } return acc; }, {}); diff --git a/app/utils/errors.ts b/app/utils/errors.ts index f0451c048..f0f013541 100644 --- a/app/utils/errors.ts +++ b/app/utils/errors.ts @@ -28,7 +28,8 @@ export function isErrorWithDetails(obj: unknown): obj is {details: Error} { return ( typeof obj === 'object' && obj !== null && - 'details' in obj + 'details' in obj && + typeof obj.details !== 'undefined' ); } diff --git a/app/utils/file/index.ts b/app/utils/file/index.ts index 8b1e124cc..0edde674f 100644 --- a/app/utils/file/index.ts +++ b/app/utils/file/index.ts @@ -495,11 +495,14 @@ export const hasWriteStoragePermission = async (intl: IntlShape) => { }, {applicationName}, ); - const text = intl.formatMessage({ - id: 'mobile.write_storage_permission_denied_description', - defaultMessage: - 'Save files to your device. Open Settings to grant {applicationName} write access to files on this device.', - }); + const text = intl.formatMessage( + { + id: 'mobile.write_storage_permission_denied_description', + defaultMessage: + 'Save files to your device. Open Settings to grant {applicationName} write access to files on this device.', + }, + {applicationName}, + ); Alert.alert(title, text, [ { diff --git a/assets/base/i18n/en.json b/assets/base/i18n/en.json index d3f8a7ca9..8d287c6ae 100644 --- a/assets/base/i18n/en.json +++ b/assets/base/i18n/en.json @@ -952,7 +952,11 @@ "settings.save": "Save", "share_extension.channel_error": "You are not a member of a team on the selected server. Select another server or open Mattermost to join a team.", "share_extension.channel_label": "Channel", + "share_extension.channels_screen.title": "Select channel", "share_extension.count_limit": "You can only share {count, number} {count, plural, one {file} other {files}} on this server", + "share_extension.error_screen.description": "There was an error when attempting to share the content to {applicationName}.", + "share_extension.error_screen.label": "An error ocurred", + "share_extension.error_screen.reason": "Reason: {reason}", "share_extension.file_limit.multiple": "Each file must be less than {size}", "share_extension.file_limit.single": "File must be less than {size}", "share_extension.max_resolution": "Image exceeds maximum dimensions of 7680 x 4320 px", @@ -960,7 +964,7 @@ "share_extension.multiple_label": "{count, number} attachments", "share_extension.server_label": "Server", "share_extension.servers_screen.title": "Select server", - "share_extension.share_screen.title": "Share to Mattermost", + "share_extension.share_screen.title": "Share to {applicationName}", "share_extension.upload_disabled": "File uploads are disabled for the selected server", "share_feedback.button.no": "No, thanks", "share_feedback.button.yes": "Yes", diff --git a/babel.config.js b/babel.config.js index 2cd4cb21d..5d80d564c 100644 --- a/babel.config.js +++ b/babel.config.js @@ -11,7 +11,6 @@ module.exports = { ['@babel/plugin-proposal-decorators', {legacy: true}], ['@babel/plugin-transform-flow-strip-types'], ['@babel/plugin-proposal-class-properties', {loose: true}], - ['@babel/plugin-proposal-private-property-in-object', {loose: true}], ['module-resolver', { root: ['.'], alias: { diff --git a/detox/package-lock.json b/detox/package-lock.json index 114b44966..6cccc80b0 100644 --- a/detox/package-lock.json +++ b/detox/package-lock.json @@ -7,21 +7,21 @@ "name": "mattermost-mobile-e2e", "devDependencies": { "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/plugin-transform-modules-commonjs": "7.21.2", - "@babel/plugin-transform-runtime": "7.21.4", - "@babel/preset-env": "7.21.4", + "@babel/plugin-transform-modules-commonjs": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.5", + "@babel/preset-env": "7.22.5", "@jest/test-sequencer": "29.5.0", - "@types/jest": "29.5.1", + "@types/jest": "29.5.2", "@types/tough-cookie": "4.0.2", - "@types/uuid": "9.0.1", - "aws-sdk": "2.1361.0", - "axios": "1.3.6", + "@types/uuid": "9.0.2", + "aws-sdk": "2.1398.0", + "axios": "1.4.0", "axios-cookiejar-support": "4.0.6", "babel-jest": "29.5.0", "babel-plugin-module-resolver": "5.0.0", "client-oauth2": "4.3.3", "deepmerge": "4.3.1", - "detox": "20.7.0", + "detox": "20.9.1", "form-data": "4.0.0", "jest": "29.5.0", "jest-circus": "29.5.0", @@ -29,15 +29,15 @@ "jest-html-reporters": "3.1.4", "jest-junit": "16.0.0", "jest-stare": "2.5.0", - "junit-report-merger": "6.0.1", + "junit-report-merger": "6.0.2", "moment-timezone": "0.5.43", "recursive-readdir": "2.2.3", "sanitize-filename": "1.6.3", "shelljs": "0.8.5", - "tough-cookie": "4.1.2", + "tough-cookie": "4.1.3", "ts-jest": "29.1.0", - "tslib": "2.5.0", - "typescript": "5.0.4", + "tslib": "2.5.3", + "typescript": "5.1.3", "uuid": "9.0.0", "xml2js": "0.5.0" } @@ -56,21 +56,21 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", - "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", + "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -107,12 +107,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", - "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", + "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", "dev": true, "dependencies": { - "@babel/types": "^7.21.4", + "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -136,38 +136,37 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", - "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", + "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-validator-option": "^7.21.0", + "@babel/compat-data": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", "browserslist": "^4.21.3", "lru-cache": "^5.1.1", "semver": "^6.3.0" @@ -180,19 +179,20 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz", - "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", + "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-member-expression-to-functions": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -202,13 +202,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", + "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -218,9 +219,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", + "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", @@ -235,125 +236,113 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", - "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", "dev": true, "dependencies": { - "@babel/types": "^7.21.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "dependencies": { - "@babel/types": "^7.21.4" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", + "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", + "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -363,95 +352,95 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", - "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", + "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "dependencies": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", + "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", + "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -472,12 +461,12 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -486,9 +475,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -498,12 +487,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -513,14 +502,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -529,24 +518,6 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", @@ -563,198 +534,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", - "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", - "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, "engines": { "node": ">=6.9.0" }, @@ -854,12 +638,27 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1024,13 +823,47 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", - "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", + "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { "node": ">=6.9.0" @@ -1040,14 +873,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", - "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1057,12 +890,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1072,12 +905,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", - "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1086,20 +919,53 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", - "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", + "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", + "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", "globals": "^11.1.0" }, "engines": { @@ -1110,13 +976,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", - "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1126,12 +992,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", - "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1141,13 +1007,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1157,12 +1023,28 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", + "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1172,13 +1054,29 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", + "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1188,12 +1086,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", - "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1203,14 +1101,30 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", + "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1220,12 +1134,28 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", + "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1235,12 +1165,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1250,13 +1180,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", - "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1266,14 +1196,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", - "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1283,15 +1213,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1301,13 +1231,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1317,13 +1247,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1333,12 +1263,63 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", + "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", + "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", + "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1348,13 +1329,46 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", + "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", + "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1364,12 +1378,46 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", - "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", + "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -1379,12 +1427,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1394,12 +1442,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", + "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.1" }, "engines": { @@ -1410,12 +1458,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1425,16 +1473,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz", - "integrity": "sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.5.tgz", + "integrity": "sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", "semver": "^6.3.0" }, "engines": { @@ -1445,12 +1493,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1460,13 +1508,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", - "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1476,12 +1524,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1491,12 +1539,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1506,12 +1554,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1521,12 +1569,28 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1536,13 +1600,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1551,39 +1615,43 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", - "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", - "@babel/plugin-proposal-async-generator-functions": "^7.20.7", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.21.0", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", + "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@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.20.0", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@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", @@ -1593,44 +1661,61 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.20.7", - "@babel/plugin-transform-async-to-generator": "^7.20.7", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.21.0", - "@babel/plugin-transform-classes": "^7.21.0", - "@babel/plugin-transform-computed-properties": "^7.20.7", - "@babel/plugin-transform-destructuring": "^7.21.3", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.21.0", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.20.11", - "@babel/plugin-transform-modules-commonjs": "^7.21.2", - "@babel/plugin-transform-modules-systemjs": "^7.20.11", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.21.3", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.20.5", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.20.7", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.5", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.5", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.21.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "core-js-compat": "^3.30.2", "semver": "^6.3.0" }, "engines": { @@ -1656,10 +1741,16 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", + "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", "dev": true, "dependencies": { "regenerator-runtime": "^0.13.11" @@ -1669,33 +1760,33 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", - "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", + "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.4", - "@babel/types": "^7.21.4", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1704,13 +1795,13 @@ } }, "node_modules/@babel/types": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", - "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2676,9 +2767,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", + "version": "29.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", + "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -2710,9 +2801,9 @@ "dev": true }, "node_modules/@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", + "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", "dev": true }, "node_modules/@types/yargs": { @@ -2847,9 +2938,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1361.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1361.0.tgz", - "integrity": "sha512-0tuFnHCzK2YExbYkXR2sFSMW415GwlPtghBtC1VQto0aJxcSA/Ez0Bqya4R5dY8htbPr5Y2OKCG5QD3hAy+eew==", + "version": "2.1398.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1398.0.tgz", + "integrity": "sha512-jiHAhKPPKDHZdwsbY9FD/WfX9RfQ7+7eKvXyXr7BYf0JIShok4TWan/iLdNWCtU0BhXYl+bfG9W0pG4rwJ9Ivg==", "dev": true, "dependencies": { "buffer": "4.9.2", @@ -2877,9 +2968,9 @@ } }, "node_modules/axios": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz", - "integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -3045,13 +3136,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", + "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", "dev": true, "dependencies": { "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", + "@babel/helper-define-polyfill-provider": "^0.4.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -3059,25 +3150,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", + "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.4.0", + "core-js-compat": "^3.30.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", + "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -3509,14 +3600,17 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/co": { @@ -3584,12 +3678,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", - "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", + "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4" + "browserslist": "^4.21.5" }, "funding": { "type": "opencollective", @@ -3700,9 +3794,9 @@ } }, "node_modules/detox": { - "version": "20.7.0", - "resolved": "https://registry.npmjs.org/detox/-/detox-20.7.0.tgz", - "integrity": "sha512-lBS//hl8NbusNx4E2Bucb8UciNPS9HhW1ejUIiEDgYuGQnuM33GcyQ6I4wXi4YUdrDYO2obpwxe/qLUg9DkVng==", + "version": "20.9.1", + "resolved": "https://registry.npmjs.org/detox/-/detox-20.9.1.tgz", + "integrity": "sha512-o7x9fHhOoVDZK1069RgefqIxY0B53eAnk7N5/3D8qEa8N0YmvylqzAqeYVtnzHYkveZb1pkcruzKC9jomWTEnw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3713,8 +3807,8 @@ "chalk": "^4.0.0", "child-process-promise": "^2.2.0", "execa": "^5.1.1", - "find-up": "^4.1.0", - "fs-extra": "^4.0.2", + "find-up": "^5.0.0", + "fs-extra": "^11.0.0", "funpermaproxy": "^1.1.0", "glob": "^8.0.3", "ini": "^1.3.4", @@ -3722,7 +3816,7 @@ "lodash": "^4.17.11", "multi-sort-stream": "^1.0.3", "multipipe": "^4.0.0", - "node-ipc": "^9.2.1", + "node-ipc": "9.2.1", "proper-lockfile": "^3.0.2", "resolve-from": "^5.0.0", "sanitize-filename": "^1.6.1", @@ -3737,8 +3831,8 @@ "trace-event-lib": "^1.3.1", "which": "^1.3.1", "ws": "^7.0.0", - "yargs": "^16.0.3", - "yargs-parser": "^20.2.9", + "yargs": "^17.0.0", + "yargs-parser": "^21.0.0", "yargs-unparser": "^2.0.0" }, "bin": { @@ -3805,6 +3899,22 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/detox/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/detox/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3814,6 +3924,21 @@ "node": ">=8" } }, + "node_modules/detox/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/detox/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -3826,6 +3951,21 @@ "node": ">=10" } }, + "node_modules/detox/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/detox/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -4230,14 +4370,17 @@ } }, "node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, "node_modules/fs.realpath": { @@ -5070,20 +5213,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -5141,15 +5270,6 @@ "node": ">=12" } }, - "node_modules/jest-cli/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/jest-config": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", @@ -5565,27 +5685,6 @@ "node": ">=12" } }, - "node_modules/jest-html-reporters/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jest-html-reporters/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/jest-junit": { "version": "16.0.0", "resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-16.0.0.tgz", @@ -6386,20 +6485,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-stare/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/jest-stare/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -6457,15 +6542,6 @@ "node": ">=12" } }, - "node_modules/jest-stare/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/jest-util": { "version": "29.5.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", @@ -6881,23 +6957,26 @@ } }, "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/junit-report-merger": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/junit-report-merger/-/junit-report-merger-6.0.1.tgz", - "integrity": "sha512-A+6+nrmYV7qIUNiCPRWdy973kbdqV+4PeLk11XaFcWxVRj0xhtTrbuFDlVgRY6qhtbBfaaczWxsCa+JEhdiOAg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/junit-report-merger/-/junit-report-merger-6.0.2.tgz", + "integrity": "sha512-Jk9PXeaJhbgo3aUNza2r24JgxYzLUtCk2kwrub8fbmDuWUdXhT/nfbM2MlU3JQiFbjVud1bzBWdzr9/GGBWfmA==", "dev": true, "dependencies": { "commander": "~10.0.0", "fast-glob": "~3.2.11", - "xmlbuilder2": "3.0.1" + "xmlbuilder2": "3.1.1" }, "bin": { "jrm": "cli.js", @@ -7895,14 +7974,14 @@ } }, "node_modules/regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" @@ -7911,12 +7990,6 @@ "node": ">=4" } }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "node_modules/regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -8614,9 +8687,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "dependencies": { "psl": "^1.1.33", @@ -8741,19 +8814,10 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", "dev": true }, "node_modules/type-detect": { @@ -8778,16 +8842,16 @@ } }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -8831,12 +8895,12 @@ } }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, "node_modules/update-browserslist-db": { @@ -9108,34 +9172,20 @@ } }, "node_modules/xmlbuilder2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.0.1.tgz", - "integrity": "sha512-BpZMcl56Qz72wZqAlaMyhtfOR5DsWhZZ3j/vUJf5eMKkySgEvBAv7ztC+pa+oUa4Y5aGGzB24C+t5ZLJyarrog==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", + "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", "dev": true, "dependencies": { "@oozcitak/dom": "1.15.10", "@oozcitak/infra": "1.0.8", "@oozcitak/util": "8.3.8", - "@types/node": "*", - "js-yaml": "3.14.0" + "js-yaml": "3.14.1" }, "engines": { "node": ">=12.0" } }, - "node_modules/xmlbuilder2/node_modules/js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -9152,30 +9202,30 @@ "dev": true }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-unparser": { @@ -9230,18 +9280,18 @@ } }, "@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.5" } }, "@babel/compat-data": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", - "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", + "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", "dev": true }, "@babel/core": { @@ -9268,12 +9318,12 @@ } }, "@babel/generator": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", - "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", + "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", "dev": true, "requires": { - "@babel/types": "^7.21.4", + "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -9293,67 +9343,68 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.5" } }, "@babel/helper-compilation-targets": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", - "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", + "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", "dev": true, "requires": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-validator-option": "^7.21.0", + "@babel/compat-data": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", "browserslist": "^4.21.3", "lru-cache": "^5.1.1", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz", - "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", + "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-member-expression-to-functions": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "semver": "^6.3.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", - "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", + "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.0" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", + "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.17.7", @@ -9365,169 +9416,160 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "dev": true }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dev": true, "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", - "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", "dev": true, "requires": { - "@babel/types": "^7.21.0" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "requires": { - "@babel/types": "^7.21.4" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", + "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", + "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/helper-replace-supers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", - "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", + "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "requires": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, "requires": { - "@babel/types": "^7.20.0" + "@babel/types": "^7.22.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", + "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", + "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/helpers": { @@ -9542,52 +9584,40 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" } }, "@babel/plugin-proposal-class-properties": { @@ -9600,132 +9630,12 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", - "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", - "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } + "requires": {} }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.18.6", @@ -9792,12 +9702,21 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-import-meta": { @@ -9908,368 +9827,535 @@ "@babel/helper-plugin-utils": "^7.20.2" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", - "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", - "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" - } - }, - "@babel/plugin-transform-block-scoped-functions": { + "@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", - "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", + "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", + "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", - "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", + "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", - "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", - "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", + "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", + "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", - "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", + "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", + "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", - "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", - "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", + "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", + "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", + "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", + "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", + "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", - "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", + "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", + "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.1" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-runtime": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz", - "integrity": "sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.5.tgz", + "integrity": "sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", "semver": "^6.3.0" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", - "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/preset-env": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", - "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", + "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==", "dev": true, "requires": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", - "@babel/plugin-proposal-async-generator-functions": "^7.20.7", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.21.0", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@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.20.0", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@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", @@ -10279,44 +10365,61 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.20.7", - "@babel/plugin-transform-async-to-generator": "^7.20.7", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.21.0", - "@babel/plugin-transform-classes": "^7.21.0", - "@babel/plugin-transform-computed-properties": "^7.20.7", - "@babel/plugin-transform-destructuring": "^7.21.3", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.21.0", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.20.11", - "@babel/plugin-transform-modules-commonjs": "^7.21.2", - "@babel/plugin-transform-modules-systemjs": "^7.20.11", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.21.3", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.20.5", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.20.7", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.5", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.5", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.21.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "core-js-compat": "^3.30.2", "semver": "^6.3.0" } }, @@ -10333,52 +10436,58 @@ "esutils": "^2.0.2" } }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, "@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", + "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", "dev": true, "requires": { "regenerator-runtime": "^0.13.11" } }, "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/traverse": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", - "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", + "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.4", - "@babel/types": "^7.21.4", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", - "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" } }, @@ -11139,9 +11248,9 @@ } }, "@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", + "version": "29.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", + "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", "dev": true, "requires": { "expect": "^29.0.0", @@ -11173,9 +11282,9 @@ "dev": true }, "@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", + "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==", "dev": true }, "@types/yargs": { @@ -11282,9 +11391,9 @@ "dev": true }, "aws-sdk": { - "version": "2.1361.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1361.0.tgz", - "integrity": "sha512-0tuFnHCzK2YExbYkXR2sFSMW415GwlPtghBtC1VQto0aJxcSA/Ez0Bqya4R5dY8htbPr5Y2OKCG5QD3hAy+eew==", + "version": "2.1398.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1398.0.tgz", + "integrity": "sha512-jiHAhKPPKDHZdwsbY9FD/WfX9RfQ7+7eKvXyXr7BYf0JIShok4TWan/iLdNWCtU0BhXYl+bfG9W0pG4rwJ9Ivg==", "dev": true, "requires": { "buffer": "4.9.2", @@ -11308,9 +11417,9 @@ } }, "axios": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz", - "integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dev": true, "requires": { "follow-redirects": "^1.15.0", @@ -11432,33 +11541,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", + "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", "dev": true, "requires": { "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", + "@babel/helper-define-polyfill-provider": "^0.4.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", + "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.4.0", + "core-js-compat": "^3.30.1" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", + "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.4.0" } }, "babel-preset-current-node-syntax": { @@ -11759,13 +11868,13 @@ } }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, @@ -11824,12 +11933,12 @@ "dev": true }, "core-js-compat": { - "version": "3.27.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", - "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", + "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", "dev": true, "requires": { - "browserslist": "^4.21.4" + "browserslist": "^4.21.5" } }, "core-util-is": { @@ -11912,9 +12021,9 @@ "dev": true }, "detox": { - "version": "20.7.0", - "resolved": "https://registry.npmjs.org/detox/-/detox-20.7.0.tgz", - "integrity": "sha512-lBS//hl8NbusNx4E2Bucb8UciNPS9HhW1ejUIiEDgYuGQnuM33GcyQ6I4wXi4YUdrDYO2obpwxe/qLUg9DkVng==", + "version": "20.9.1", + "resolved": "https://registry.npmjs.org/detox/-/detox-20.9.1.tgz", + "integrity": "sha512-o7x9fHhOoVDZK1069RgefqIxY0B53eAnk7N5/3D8qEa8N0YmvylqzAqeYVtnzHYkveZb1pkcruzKC9jomWTEnw==", "dev": true, "requires": { "ajv": "^8.6.3", @@ -11924,8 +12033,8 @@ "chalk": "^4.0.0", "child-process-promise": "^2.2.0", "execa": "^5.1.1", - "find-up": "^4.1.0", - "fs-extra": "^4.0.2", + "find-up": "^5.0.0", + "fs-extra": "^11.0.0", "funpermaproxy": "^1.1.0", "glob": "^8.0.3", "ini": "^1.3.4", @@ -11933,7 +12042,7 @@ "lodash": "^4.17.11", "multi-sort-stream": "^1.0.3", "multipipe": "^4.0.0", - "node-ipc": "^9.2.1", + "node-ipc": "9.2.1", "proper-lockfile": "^3.0.2", "resolve-from": "^5.0.0", "sanitize-filename": "^1.6.1", @@ -11948,8 +12057,8 @@ "trace-event-lib": "^1.3.1", "which": "^1.3.1", "ws": "^7.0.0", - "yargs": "^16.0.3", - "yargs-parser": "^20.2.9", + "yargs": "^17.0.0", + "yargs-parser": "^21.0.0", "yargs-unparser": "^2.0.0" }, "dependencies": { @@ -11987,12 +12096,31 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -12002,6 +12130,15 @@ "yallist": "^4.0.0" } }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -12302,14 +12439,14 @@ } }, "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, "fs.realpath": { @@ -12886,17 +13023,6 @@ "supports-color": "^7.1.0" } }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -12941,12 +13067,6 @@ "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, @@ -13260,22 +13380,6 @@ "jsonfile": "^6.0.1", "universalify": "^2.0.0" } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true } } }, @@ -13885,17 +13989,6 @@ "supports-color": "^7.1.0" } }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -13940,12 +14033,6 @@ "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, @@ -14255,23 +14342,24 @@ "dev": true }, "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, "junit-report-merger": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/junit-report-merger/-/junit-report-merger-6.0.1.tgz", - "integrity": "sha512-A+6+nrmYV7qIUNiCPRWdy973kbdqV+4PeLk11XaFcWxVRj0xhtTrbuFDlVgRY6qhtbBfaaczWxsCa+JEhdiOAg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/junit-report-merger/-/junit-report-merger-6.0.2.tgz", + "integrity": "sha512-Jk9PXeaJhbgo3aUNza2r24JgxYzLUtCk2kwrub8fbmDuWUdXhT/nfbM2MlU3JQiFbjVud1bzBWdzr9/GGBWfmA==", "dev": true, "requires": { "commander": "~10.0.0", "fast-glob": "~3.2.11", - "xmlbuilder2": "3.0.1" + "xmlbuilder2": "3.1.1" } }, "kleur": { @@ -15040,25 +15128,19 @@ } }, "regexpu-core": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", - "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "requires": { + "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, - "regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", - "dev": true - }, "regjsparser": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", @@ -15588,9 +15670,9 @@ } }, "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "requires": { "psl": "^1.1.33", @@ -15671,19 +15753,13 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", "dev": true }, "type-detect": { @@ -15699,9 +15775,9 @@ "dev": true }, "typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "dev": true }, "unicode-canonical-property-names-ecmascript": { @@ -15733,9 +15809,9 @@ "dev": true }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "update-browserslist-db": { @@ -15942,28 +16018,15 @@ "dev": true }, "xmlbuilder2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.0.1.tgz", - "integrity": "sha512-BpZMcl56Qz72wZqAlaMyhtfOR5DsWhZZ3j/vUJf5eMKkySgEvBAv7ztC+pa+oUa4Y5aGGzB24C+t5ZLJyarrog==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", + "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", "dev": true, "requires": { "@oozcitak/dom": "1.15.10", "@oozcitak/infra": "1.0.8", "@oozcitak/util": "8.3.8", - "@types/node": "*", - "js-yaml": "3.14.0" - }, - "dependencies": { - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } + "js-yaml": "3.14.1" } }, "y18n": { @@ -15979,24 +16042,24 @@ "dev": true }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true }, "yargs-unparser": { diff --git a/detox/package.json b/detox/package.json index 0ffc46290..c39bba13c 100644 --- a/detox/package.json +++ b/detox/package.json @@ -5,21 +5,21 @@ "author": "Mattermost, Inc.", "devDependencies": { "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/plugin-transform-modules-commonjs": "7.21.2", - "@babel/plugin-transform-runtime": "7.21.4", - "@babel/preset-env": "7.21.4", + "@babel/plugin-transform-modules-commonjs": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.5", + "@babel/preset-env": "7.22.5", "@jest/test-sequencer": "29.5.0", - "@types/jest": "29.5.1", + "@types/jest": "29.5.2", "@types/tough-cookie": "4.0.2", - "@types/uuid": "9.0.1", - "aws-sdk": "2.1361.0", - "axios": "1.3.6", + "@types/uuid": "9.0.2", + "aws-sdk": "2.1398.0", + "axios": "1.4.0", "axios-cookiejar-support": "4.0.6", "babel-jest": "29.5.0", "babel-plugin-module-resolver": "5.0.0", "client-oauth2": "4.3.3", "deepmerge": "4.3.1", - "detox": "20.7.0", + "detox": "20.9.1", "form-data": "4.0.0", "jest": "29.5.0", "jest-circus": "29.5.0", @@ -27,15 +27,15 @@ "jest-html-reporters": "3.1.4", "jest-junit": "16.0.0", "jest-stare": "2.5.0", - "junit-report-merger": "6.0.1", + "junit-report-merger": "6.0.2", "moment-timezone": "0.5.43", "recursive-readdir": "2.2.3", "sanitize-filename": "1.6.3", "shelljs": "0.8.5", - "tough-cookie": "4.1.2", + "tough-cookie": "4.1.3", "ts-jest": "29.1.0", - "tslib": "2.5.0", - "typescript": "5.0.4", + "tslib": "2.5.3", + "typescript": "5.1.3", "uuid": "9.0.0", "xml2js": "0.5.0" }, diff --git a/fastlane/.env.android.beta b/fastlane/.env.android.beta new file mode 100644 index 000000000..f9521e021 --- /dev/null +++ b/fastlane/.env.android.beta @@ -0,0 +1,18 @@ +## You invoke this with --env android.beta on the fastlane command +APP_NAME="Mattermost Beta" +APP_SCHEME=mattermost +AWS_BUCKET_NAME=releases.mattermost.com +AWS_FOLDER_NAME=mattermost-mobile-beta +AWS_REGION=us-east-1 +BETA_BUILD=true +BUILD_FOR_RELEASE=true +MAIN_APP_IDENTIFIER=com.mattermost.rnbeta +REPLACE_ASSETS=false +SENTRY_ENABLED=true +SENTRY_ORG=mattermost-mr +SENTRY_PROJECT_ANDROID=mattermost-android-test +SEPARATE_APKS=true +SHOW_ONBOARDING=true +SUPPLY_TRACK=alpha +SUPPLY_PACKAGE_NAME=com.mattermost.rnbeta +SUPPLY_VALIDATE_ONLY=false \ No newline at end of file diff --git a/fastlane/.env.android.pr b/fastlane/.env.android.pr new file mode 100644 index 000000000..a4730d5a7 --- /dev/null +++ b/fastlane/.env.android.pr @@ -0,0 +1,12 @@ +## You invoke this with --env android.pr on the fastlane command +APP_NAME="Mattermost Beta" +APP_SCHEME=mattermost +AWS_BUCKET_NAME=pr-builds.mattermost.com +AWS_FOLDER_NAME=mattermost-mobile +AWS_REGION=us-east-1 +BETA_BUILD=true +BUILD_FOR_RELEASE=true +BUILD_PR=true +MAIN_APP_IDENTIFIER=com.mattermost.rnbeta +REPLACE_ASSETS=false +SHOW_ONBOARDING=true \ No newline at end of file diff --git a/fastlane/.env.android.release b/fastlane/.env.android.release new file mode 100644 index 000000000..1fd349e49 --- /dev/null +++ b/fastlane/.env.android.release @@ -0,0 +1,19 @@ +## You invoke this with --env android.release on the fastlane command +APP_NAME=Mattermost +APP_SCHEME=mattermost +AWS_BUCKET_NAME=releases.mattermost.com +AWS_FOLDER_NAME=mattermost-mobile +AWS_REGION=us-east-1 +BETA_BUILD=false +BUILD_FOR_RELEASE=true +MAIN_APP_IDENTIFIER=com.mattermost.rn +REPLACE_ASSETS=true +SENTRY_ENABLED=true +SENTRY_ORG=mattermost-mr +SENTRY_PROJECT_ANDROID=mattermost-mobile-android +SEPARATE_APKS=true +SHOW_ONBOARDING=true +SHOW_REVIEW=true +SUPPLY_PACKAGE_NAME=com.mattermost.rn +SUPPLY_TRACK=beta +SUPPLY_VALIDATE_ONLY=false \ No newline at end of file diff --git a/fastlane/.env.default b/fastlane/.env.default new file mode 100644 index 000000000..7c393bc96 --- /dev/null +++ b/fastlane/.env.default @@ -0,0 +1,4 @@ +## This is loaded by default for all fastlane executions +BABEL_ENV="production" +NODE_ENV="production" +NODE_OPTIONS="--max_old_space_size=12000" \ No newline at end of file diff --git a/fastlane/.env.ios.beta b/fastlane/.env.ios.beta new file mode 100644 index 000000000..b42f4c4b6 --- /dev/null +++ b/fastlane/.env.ios.beta @@ -0,0 +1,26 @@ +## You invoke this with --env ios.beta on the fastlane command +APP_NAME="Mattermost Beta" +APP_SCHEME=mattermost +AWS_BUCKET_NAME=releases.mattermost.com +AWS_FOLDER_NAME=mattermost-mobile-beta +AWS_REGION=us-east-1 +BETA_BUILD=true +BUILD_FOR_RELEASE=true +EXTENSION_APP_IDENTIFIER=com.mattermost.rnbeta.MattermostShare +IOS_APP_GROUP=group.com.mattermost.rnbeta +IOS_BUILD_EXPORT_METHOD=app-store +IOS_ICLOUD_CONTAINER=iCloud.com.mattermost.rnbeta +MAIN_APP_IDENTIFIER=com.mattermost.rnbeta +MATCH_APP_IDENTIFIER=com.mattermost.rnbeta.NotificationService,com.mattermost.rnbeta.MattermostShare,com.mattermost.rnbeta +MATCH_READONLY=true +MATCH_SHALLOW_CLONE=true +MATCH_SKIP_DOCS=true +MATCH_TYPE=appstore +NOTIFICATION_SERVICE_IDENTIFIER=com.mattermost.rnbeta.NotificationService +PILOT_SKIP_WAITING_FOR_BUILD_PROCESSING=true +REPLACE_ASSETS=false +SENTRY_ENABLED=true +SENTRY_ORG=mattermost-mr +SENTRY_PROJECT_IOS=mattermost-ios-test +SHOW_ONBOARDING=true +SYNC_PROVISIONING_PROFILES=true \ No newline at end of file diff --git a/fastlane/.env.ios.pr b/fastlane/.env.ios.pr new file mode 100644 index 000000000..1a2af10da --- /dev/null +++ b/fastlane/.env.ios.pr @@ -0,0 +1,24 @@ +## You invoke this with --env ios.pr on the fastlane command +APP_NAME="Mattermost Beta" +APP_SCHEME=mattermost +AWS_BUCKET_NAME=pr-builds.mattermost.com +AWS_FOLDER_NAME=mattermost-mobile +AWS_REGION=us-east-1 +BETA_BUILD=true +BUILD_FOR_RELEASE=true +BUILD_PR=true +EXTENSION_APP_IDENTIFIER=com.mattermost.rnbeta.MattermostShare +IOS_APP_GROUP=group.com.mattermost.rnbeta +IOS_BUILD_EXPORT_METHOD=ad-hoc +IOS_ICLOUD_CONTAINER=iCloud.com.mattermost.rnbeta +MAIN_APP_IDENTIFIER=com.mattermost.rnbeta +MATCH_APP_IDENTIFIER=com.mattermost.rnbeta.NotificationService,com.mattermost.rnbeta.MattermostShare,com.mattermost.rnbeta +MATCH_READONLY=true +MATCH_SHALLOW_CLONE=true +MATCH_SKIP_DOCS=true +MATCH_TYPE=adhoc +NOTIFICATION_SERVICE_IDENTIFIER=com.mattermost.rnbeta.NotificationService +PILOT_SKIP_WAITING_FOR_BUILD_PROCESSING=true +REPLACE_ASSETS=false +SHOW_ONBOARDING=true +SYNC_PROVISIONING_PROFILES=true \ No newline at end of file diff --git a/fastlane/.env.ios.release b/fastlane/.env.ios.release new file mode 100644 index 000000000..f57cdf53d --- /dev/null +++ b/fastlane/.env.ios.release @@ -0,0 +1,26 @@ +## You invoke this with --env ios.release on the fastlane command +APP_NAME=Mattermost +APP_SCHEME=mattermost +AWS_BUCKET_NAME=releases.mattermost.com +AWS_FOLDER_NAME=mattermost-mobile +AWS_REGION=us-east-1 +BUILD_FOR_RELEASE=true +EXTENSION_APP_IDENTIFIER=com.mattermost.rn.MattermostShare +IOS_APP_GROUP=group.com.mattermost +IOS_BUILD_EXPORT_METHOD=app-store +IOS_ICLOUD_CONTAINER=iCloud.com.mattermost.rn +MAIN_APP_IDENTIFIER=com.mattermost.rn +MATCH_APP_IDENTIFIER=com.mattermost.rn.NotificationService,com.mattermost.rn.MattermostShare,com.mattermost.rn +MATCH_READONLY=true +MATCH_SHALLOW_CLONE=true +MATCH_SKIP_DOCS=true +MATCH_TYPE=appstore +NOTIFICATION_SERVICE_IDENTIFIER=com.mattermost.rn.NotificationService +PILOT_SKIP_WAITING_FOR_BUILD_PROCESSING=true +REPLACE_ASSETS=true +SENTRY_ENABLED=true +SENTRY_ORG=mattermost-mr +SENTRY_PROJECT_IOS=mattermost-mobile-ios +SHOW_ONBOARDING=true +SHOW_REVIEW=true +SYNC_PROVISIONING_PROFILES=true \ No newline at end of file diff --git a/fastlane/.env.ios.simulator b/fastlane/.env.ios.simulator new file mode 100644 index 000000000..d39f555f6 --- /dev/null +++ b/fastlane/.env.ios.simulator @@ -0,0 +1,4 @@ +## You invoke this with --env ios.simulator on the fastlane command +AWS_BUCKET_NAME=releases.mattermost.com +AWS_FOLDER_NAME=mattermost-mobile-beta +AWS_REGION=us-east-1 diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 0bb22f549..b68c01d82 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -14,11 +14,11 @@ before_all do ENV['SPACESHIP_SKIP_2FA_UPGRADE'] = '1' is_build_pr = ENV['BUILD_PR'] == 'true' - if is_build_pr && ENV['CIRCLECI'] == 'true' - ENV['BRANCH_TO_BUILD'] = ENV['CIRCLE_BRANCH'] + if is_build_pr && ENV['CI'] == 'true' + ENV['BRANCH_TO_BUILD'] = ENV['GITHUB_REF_NAME'] end - if ENV['CIRCLECI'] != 'true' + if ENV['CI'] != 'true' # Raises an error is git is not clean if ENV['COMMIT_CHANGES_TO_GIT'] == 'true' ensure_git_status_clean @@ -46,9 +46,9 @@ before_all do end after_all do |lane| - if ENV['CIRCLECI'] != 'true' + if ENV['CI'] != 'true' if ENV['RESET_GIT_BRANCH'] == 'true' - branch = ENV['BRANCH_TO_BUILD'] || 'master' + branch = ENV['BRANCH_TO_BUILD'] || 'main' package_id = ENV['MAIN_APP_IDENTIFIER'] || 'com.mattermost.rnbeta' beta_dir = '../android/app/src/main/java/com/mattermost/rnbeta' release_dir = "../android/app/src/main/java/#{package_id.gsub '.', '/'}" @@ -68,7 +68,7 @@ after_all do |lane| sh "git branch -D #{local_branch}" UI.success("Deleted working branch \"#{local_branch}\"") if lane.to_s == 'build_pr' - sh 'git checkout master' + sh 'git checkout main' ## Remove the branch for the PR sh "git branch -D #{branch}" UI.success("Deleted PR branch \"#{branch}\"") @@ -320,7 +320,7 @@ end desc 'Create GitHub release' lane :github do - tag = ENV['CIRCLE_TAG'] || ENV['TAG'] + tag = ENV['GITHUB_REF_NAME'] || ENV['TAG'] if tag version = android_get_version_name(gradle_file: './android/app/build.gradle') @@ -350,8 +350,8 @@ end platform :ios do before_all do - if ENV['CIRCLECI'] == 'true' - setup_circle_ci + if ENV['CI'] == 'true' + setup_ci end end @@ -415,7 +415,7 @@ platform :ios do end lane :update_identifiers do - # Set the name for the app + # Set the name for the app and share extension app_name = ENV['APP_NAME'] || 'Mattermost Beta' update_info_plist( xcodeproj: './ios/Mattermost.xcodeproj', @@ -423,6 +423,12 @@ platform :ios do display_name: app_name ) + update_info_plist( + xcodeproj: './ios/Mattermost.xcodeproj', + plist_path: 'MattermostShare/Info.plist', + display_name: app_name + ) + # Set the notification service extension bundle identifier notification_bundle_id = ENV['NOTIFICATION_SERVICE_IDENTIFIER'] || 'com.mattermost.rnbeta.NotificationService' update_app_identifier( @@ -563,20 +569,27 @@ platform :ios do json = JSON.parse(localization_file) plist_strings = '' + localized_strings = '' json.each do |key, value| - if key.match?('mobile.ios.plist') - unless value.nil? || value.empty? + unless value.nil? || value.empty? + if key.match?('mobile.ios.plist') plist_strings.concat("#{key.split('.').last} = \"#{value}\";\n") + else + value.gsub!('\\', '\\\\\\\\') # How to replace backslash with double backslash https://stackoverflow.com/a/6209532 + value.gsub!('"', '\"') + localized_strings.concat("\"#{key}\" = \"#{value}\";\n") end end end plist_strings.gsub!('{applicationName}', "#{app_name}") + localized_strings.gsub!('{applicationName}', "#{app_name}") language = item.split('.').first project_localization_path = "../ios/Mattermost/i18n/#{language}.lproj" FileUtils.mkdir_p project_localization_path File.write("#{project_localization_path}/InfoPlist.strings", plist_strings) + File.write("#{project_localization_path}/Localizable.strings", localized_strings) end end diff --git a/fastlane/Gemfile b/fastlane/Gemfile index 1e864103e..56b2a8fa1 100644 --- a/fastlane/Gemfile +++ b/fastlane/Gemfile @@ -2,6 +2,7 @@ source "https://rubygems.org" gem "fastlane" gem "nokogiri" +gem "dotenv" plugins_path = File.join(File.dirname(__FILE__), '.', 'Pluginfile') eval(File.read(plugins_path), binding) if File.exist?(plugins_path) diff --git a/fastlane/Gemfile.lock b/fastlane/Gemfile.lock index 6782c3b83..2fb2bec7e 100644 --- a/fastlane/Gemfile.lock +++ b/fastlane/Gemfile.lock @@ -8,17 +8,17 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.752.0) - aws-sdk-core (3.171.0) + aws-partitions (1.777.0) + aws-sdk-core (3.174.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.63.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-kms (1.66.0) + aws-sdk-core (~> 3, >= 3.174.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.121.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-s3 (1.123.1) + aws-sdk-core (~> 3, >= 3.174.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) aws-sigv4 (1.5.2) @@ -36,7 +36,7 @@ GEM unf (>= 0.0.5, < 1.0.0) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.99.0) + excon (0.100.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -65,8 +65,8 @@ GEM faraday-retry (1.0.3) faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.6) - fastlane (2.212.2) + fastimage (2.2.7) + fastlane (2.213.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -90,7 +90,7 @@ GEM json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) - multipart-post (~> 2.0.0) + multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) optparse (~> 0.1.1) plist (>= 3.1.0, < 4.0.0) @@ -111,7 +111,7 @@ GEM fastlane-plugin-find_replace_string (0.1.0) fastlane-plugin-versioning_android (0.1.1) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.39.0) + google-apis-androidpublisher_v3 (0.42.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-core (0.11.0) addressable (~> 2.5, >= 2.5.1) @@ -159,19 +159,19 @@ GEM memoist (0.16.2) mini_magick (4.12.0) mini_mime (1.1.2) - mini_portile2 (2.8.1) + mini_portile2 (2.8.2) multi_json (1.15.0) - multipart-post (2.0.0) + multipart-post (2.3.0) nanaimo (0.3.0) naturally (2.2.1) - nokogiri (1.14.3) - mini_portile2 (~> 2.8.0) + nokogiri (1.15.2) + mini_portile2 (~> 2.8.2) racc (~> 1.4) optparse (0.1.1) os (1.1.4) plist (3.7.0) public_suffix (5.0.1) - racc (1.6.2) + racc (1.7.0) rake (13.0.6) representable (3.2.0) declarative (< 0.1.0) @@ -222,6 +222,7 @@ PLATFORMS ruby DEPENDENCIES + dotenv fastlane fastlane-plugin-android_change_package_identifier fastlane-plugin-android_change_string_app_name diff --git a/ios/Mattermost.xcodeproj/project.pbxproj b/ios/Mattermost.xcodeproj/project.pbxproj index 58da865ea..098672f73 100644 --- a/ios/Mattermost.xcodeproj/project.pbxproj +++ b/ios/Mattermost.xcodeproj/project.pbxproj @@ -62,6 +62,29 @@ 672D98B029F1927F004228D6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 672D988229F1927F004228D6 /* InfoPlist.strings */; }; 672D98B129F1927F004228D6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 672D988529F1927F004228D6 /* InfoPlist.strings */; }; 672D98B229F1927F004228D6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 672D988529F1927F004228D6 /* InfoPlist.strings */; }; + 67AE0FC52A0556A500810C56 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67AE0FC32A0556A500810C56 /* Localizable.strings */; }; + 67FEADD92A0E96DD00DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADD62A0E96DD00DDF4AE /* Localizable.strings */; }; + 67FEADDD2A12602A00DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADDA2A12602A00DDF4AE /* Localizable.strings */; }; + 67FEADE12A12603600DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADDE2A12603600DDF4AE /* Localizable.strings */; }; + 67FEADE52A12603F00DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADE22A12603F00DDF4AE /* Localizable.strings */; }; + 67FEADE92A12604900DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADE62A12604900DDF4AE /* Localizable.strings */; }; + 67FEADED2A12608900DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADEA2A12608900DDF4AE /* Localizable.strings */; }; + 67FEADF12A12609300DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADEE2A12609300DDF4AE /* Localizable.strings */; }; + 67FEADF52A1260A900DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADF22A1260A900DDF4AE /* Localizable.strings */; }; + 67FEADF92A1260B200DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADF62A1260B200DDF4AE /* Localizable.strings */; }; + 67FEAE012A1260C200DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADFE2A1260C200DDF4AE /* Localizable.strings */; }; + 67FEAE052A1260CA00DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE022A1260C900DDF4AE /* Localizable.strings */; }; + 67FEAE092A12611B00DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE062A12611B00DDF4AE /* Localizable.strings */; }; + 67FEAE0D2A12612500DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE0A2A12612500DDF4AE /* Localizable.strings */; }; + 67FEAE112A12613000DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE0E2A12613000DDF4AE /* Localizable.strings */; }; + 67FEAE152A12614F00DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE122A12614F00DDF4AE /* Localizable.strings */; }; + 67FEAE192A12615900DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE162A12615900DDF4AE /* Localizable.strings */; }; + 67FEAE1D2A12616500DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE1A2A12616500DDF4AE /* Localizable.strings */; }; + 67FEAE212A12616F00DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE1E2A12616F00DDF4AE /* Localizable.strings */; }; + 67FEAE252A12618000DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE222A12618000DDF4AE /* Localizable.strings */; }; + 67FEAE292A1261A000DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEAE262A1261A000DDF4AE /* Localizable.strings */; }; + 67FEAE2A2A1261EA00DDF4AE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 67FEADFA2A1260B900DDF4AE /* Localizable.strings */; }; + 67FEAE2C2A127C3600DDF4AE /* NumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FEAE2B2A127C3600DDF4AE /* NumberFormatter.swift */; }; 6C9B1EFD6561083917AF06CF /* libPods-Mattermost.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DEEFB3ED6175724A2653247 /* libPods-Mattermost.a */; }; 7F0F4B0A24BA173900E14C60 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7F0F4B0924BA173900E14C60 /* LaunchScreen.storyboard */; }; 7F151D3E221B062700FAD8F3 /* RuntimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F151D3D221B062700FAD8F3 /* RuntimeUtils.swift */; }; @@ -246,6 +269,29 @@ 672D988029F1927F004228D6 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = InfoPlist.strings; sourceTree = ""; }; 672D988329F1927F004228D6 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = InfoPlist.strings; sourceTree = ""; }; 672D988629F1927F004228D6 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = InfoPlist.strings; sourceTree = ""; }; + 67AE0FC42A0556A500810C56 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = Localizable.strings; sourceTree = ""; }; + 67FEADD72A0E96DD00DDF4AE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Localizable.strings; sourceTree = ""; }; + 67FEADDB2A12602A00DDF4AE /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = Localizable.strings; sourceTree = ""; }; + 67FEADDF2A12603600DDF4AE /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = Localizable.strings; sourceTree = ""; }; + 67FEADE32A12603F00DDF4AE /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = Localizable.strings; sourceTree = ""; }; + 67FEADE72A12604900DDF4AE /* en_AU */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en_AU; path = Localizable.strings; sourceTree = ""; }; + 67FEADEB2A12608900DDF4AE /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Localizable.strings; sourceTree = ""; }; + 67FEADEF2A12609300DDF4AE /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = Localizable.strings; sourceTree = ""; }; + 67FEADF32A1260A900DDF4AE /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Localizable.strings; sourceTree = ""; }; + 67FEADF72A1260B200DDF4AE /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = Localizable.strings; sourceTree = ""; }; + 67FEADFB2A1260B900DDF4AE /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = Localizable.strings; sourceTree = ""; }; + 67FEADFF2A1260C200DDF4AE /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = Localizable.strings; sourceTree = ""; }; + 67FEAE032A1260C900DDF4AE /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = Localizable.strings; sourceTree = ""; }; + 67FEAE072A12611B00DDF4AE /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = Localizable.strings; sourceTree = ""; }; + 67FEAE0B2A12612500DDF4AE /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = Localizable.strings; sourceTree = ""; }; + 67FEAE0F2A12613000DDF4AE /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = Localizable.strings; sourceTree = ""; }; + 67FEAE132A12614F00DDF4AE /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = Localizable.strings; sourceTree = ""; }; + 67FEAE172A12615900DDF4AE /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = Localizable.strings; sourceTree = ""; }; + 67FEAE1B2A12616500DDF4AE /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = Localizable.strings; sourceTree = ""; }; + 67FEAE1F2A12616F00DDF4AE /* zh-CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-CN"; path = Localizable.strings; sourceTree = ""; }; + 67FEAE232A12618000DDF4AE /* zh-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-TW"; path = Localizable.strings; sourceTree = ""; }; + 67FEAE272A1261A000DDF4AE /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = Localizable.strings; sourceTree = ""; }; + 67FEAE2B2A127C3600DDF4AE /* NumberFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberFormatter.swift; sourceTree = ""; }; 6BAF8296411D4657B5A0E8F8 /* libRNReactNativeDocViewer.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNReactNativeDocViewer.a; sourceTree = ""; }; 7F0F4B0924BA173900E14C60 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = SplashScreenResource/LaunchScreen.storyboard; sourceTree = ""; }; 7F151D3D221B062700FAD8F3 /* RuntimeUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RuntimeUtils.swift; path = Mattermost/RuntimeUtils.swift; sourceTree = ""; }; @@ -512,6 +558,7 @@ 672D984529F1927E004228D6 /* de.lproj */ = { isa = PBXGroup; children = ( + 67FEADE22A12603F00DDF4AE /* Localizable.strings */, 672D984629F1927E004228D6 /* InfoPlist.strings */, ); name = de.lproj; @@ -521,6 +568,7 @@ 672D984829F1927E004228D6 /* ja.lproj */ = { isa = PBXGroup; children = ( + 67FEADFE2A1260C200DDF4AE /* Localizable.strings */, 672D984929F1927E004228D6 /* InfoPlist.strings */, ); name = ja.lproj; @@ -530,6 +578,7 @@ 672D984B29F1927E004228D6 /* fa.lproj */ = { isa = PBXGroup; children = ( + 67FEADEE2A12609300DDF4AE /* Localizable.strings */, 672D984C29F1927E004228D6 /* InfoPlist.strings */, ); name = fa.lproj; @@ -539,6 +588,7 @@ 672D984E29F1927F004228D6 /* pl.lproj */ = { isa = PBXGroup; children = ( + 67FEAE0A2A12612500DDF4AE /* Localizable.strings */, 672D984F29F1927F004228D6 /* InfoPlist.strings */, ); name = pl.lproj; @@ -548,6 +598,7 @@ 672D985129F1927F004228D6 /* ar.lproj */ = { isa = PBXGroup; children = ( + 67FEADDA2A12602A00DDF4AE /* Localizable.strings */, 672D985229F1927F004228D6 /* InfoPlist.strings */, ); name = ar.lproj; @@ -557,6 +608,7 @@ 672D985429F1927F004228D6 /* sv.lproj */ = { isa = PBXGroup; children = ( + 67FEAE122A12614F00DDF4AE /* Localizable.strings */, 672D985529F1927F004228D6 /* InfoPlist.strings */, ); name = sv.lproj; @@ -566,6 +618,7 @@ 672D985729F1927F004228D6 /* ru.lproj */ = { isa = PBXGroup; children = ( + 67AE0FC32A0556A500810C56 /* Localizable.strings */, 672D985829F1927F004228D6 /* InfoPlist.strings */, ); name = ru.lproj; @@ -575,6 +628,7 @@ 672D985A29F1927F004228D6 /* ro.lproj */ = { isa = PBXGroup; children = ( + 67FEAE262A1261A000DDF4AE /* Localizable.strings */, 672D985B29F1927F004228D6 /* InfoPlist.strings */, ); name = ro.lproj; @@ -584,6 +638,7 @@ 672D985D29F1927F004228D6 /* bg.lproj */ = { isa = PBXGroup; children = ( + 67FEADDE2A12603600DDF4AE /* Localizable.strings */, 672D985E29F1927F004228D6 /* InfoPlist.strings */, ); name = bg.lproj; @@ -593,6 +648,7 @@ 672D986029F1927F004228D6 /* tr.lproj */ = { isa = PBXGroup; children = ( + 67FEAE162A12615900DDF4AE /* Localizable.strings */, 672D986129F1927F004228D6 /* InfoPlist.strings */, ); name = tr.lproj; @@ -602,6 +658,7 @@ 672D986329F1927F004228D6 /* zh-TW.lproj */ = { isa = PBXGroup; children = ( + 67FEAE222A12618000DDF4AE /* Localizable.strings */, 672D986429F1927F004228D6 /* InfoPlist.strings */, ); name = "zh-TW.lproj"; @@ -611,6 +668,7 @@ 672D986629F1927F004228D6 /* en.lproj */ = { isa = PBXGroup; children = ( + 67FEADD62A0E96DD00DDF4AE /* Localizable.strings */, 672D986729F1927F004228D6 /* InfoPlist.strings */, ); name = en.lproj; @@ -620,6 +678,7 @@ 672D986929F1927F004228D6 /* en_AU.lproj */ = { isa = PBXGroup; children = ( + 67FEADE62A12604900DDF4AE /* Localizable.strings */, 672D986A29F1927F004228D6 /* InfoPlist.strings */, ); name = en_AU.lproj; @@ -629,6 +688,7 @@ 672D986C29F1927F004228D6 /* hu.lproj */ = { isa = PBXGroup; children = ( + 67FEADF62A1260B200DDF4AE /* Localizable.strings */, 672D986D29F1927F004228D6 /* InfoPlist.strings */, ); name = hu.lproj; @@ -638,6 +698,7 @@ 672D986F29F1927F004228D6 /* fr.lproj */ = { isa = PBXGroup; children = ( + 67FEADF22A1260A900DDF4AE /* Localizable.strings */, 672D987029F1927F004228D6 /* InfoPlist.strings */, ); name = fr.lproj; @@ -647,6 +708,7 @@ 672D987229F1927F004228D6 /* ko.lproj */ = { isa = PBXGroup; children = ( + 67FEAE022A1260C900DDF4AE /* Localizable.strings */, 672D987329F1927F004228D6 /* InfoPlist.strings */, ); name = ko.lproj; @@ -656,6 +718,7 @@ 672D987529F1927F004228D6 /* zh-CN.lproj */ = { isa = PBXGroup; children = ( + 67FEAE1E2A12616F00DDF4AE /* Localizable.strings */, 672D987629F1927F004228D6 /* InfoPlist.strings */, ); name = "zh-CN.lproj"; @@ -665,6 +728,7 @@ 672D987829F1927F004228D6 /* es.lproj */ = { isa = PBXGroup; children = ( + 67FEADEA2A12608900DDF4AE /* Localizable.strings */, 672D987929F1927F004228D6 /* InfoPlist.strings */, ); name = es.lproj; @@ -674,6 +738,7 @@ 672D987B29F1927F004228D6 /* it.lproj */ = { isa = PBXGroup; children = ( + 67FEADFA2A1260B900DDF4AE /* Localizable.strings */, 672D987C29F1927F004228D6 /* InfoPlist.strings */, ); name = it.lproj; @@ -683,6 +748,7 @@ 672D987E29F1927F004228D6 /* nl.lproj */ = { isa = PBXGroup; children = ( + 67FEAE062A12611B00DDF4AE /* Localizable.strings */, 672D987F29F1927F004228D6 /* InfoPlist.strings */, ); name = nl.lproj; @@ -692,6 +758,7 @@ 672D988129F1927F004228D6 /* pt-BR.lproj */ = { isa = PBXGroup; children = ( + 67FEAE0E2A12613000DDF4AE /* Localizable.strings */, 672D988229F1927F004228D6 /* InfoPlist.strings */, ); name = "pt-BR.lproj"; @@ -701,6 +768,7 @@ 672D988429F1927F004228D6 /* uk.lproj */ = { isa = PBXGroup; children = ( + 67FEAE1A2A12616500DDF4AE /* Localizable.strings */, 672D988529F1927F004228D6 /* InfoPlist.strings */, ); name = uk.lproj; @@ -784,6 +852,7 @@ 7F7E9F432864E6AF0064BFAF /* Extensions */ = { isa = PBXGroup; children = ( + 67FEAE2B2A127C3600DDF4AE /* NumberFormatter.swift */, 7F7E9F442864E6C60064BFAF /* Color.swift */, 7F7E9F452864E6C60064BFAF /* View.swift */, 7F93AAAD287725660047B89F /* Int64.swift */, @@ -1197,8 +1266,17 @@ 672D98AA29F1927F004228D6 /* InfoPlist.strings in Resources */, 672D989029F1927F004228D6 /* InfoPlist.strings in Resources */, 672D989A29F1927F004228D6 /* InfoPlist.strings in Resources */, + 67FEADF52A1260A900DDF4AE /* Localizable.strings in Resources */, + 67FEADD92A0E96DD00DDF4AE /* Localizable.strings in Resources */, + 67FEAE092A12611B00DDF4AE /* Localizable.strings in Resources */, + 67FEADE52A12603F00DDF4AE /* Localizable.strings in Resources */, 7FD4825E2864DC5800A5B18B /* Metropolis-Regular.ttf in Resources */, + 67FEAE252A12618000DDF4AE /* Localizable.strings in Resources */, + 67FEADF92A1260B200DDF4AE /* Localizable.strings in Resources */, + 67FEAE1D2A12616500DDF4AE /* Localizable.strings in Resources */, 7FD4825F2864DC5800A5B18B /* Metropolis-SemiBold.ttf in Resources */, + 67FEAE0D2A12612500DDF4AE /* Localizable.strings in Resources */, + 67FEADE92A12604900DDF4AE /* Localizable.strings in Resources */, 7FD482602864DC5800A5B18B /* OpenSans-Bold.ttf in Resources */, 7FD482612864DC5800A5B18B /* OpenSans-BoldItalic.ttf in Resources */, 672D988829F1927F004228D6 /* InfoPlist.strings in Resources */, @@ -1207,21 +1285,34 @@ 672D989429F1927F004228D6 /* InfoPlist.strings in Resources */, 672D98A029F1927F004228D6 /* InfoPlist.strings in Resources */, 672D989229F1927F004228D6 /* InfoPlist.strings in Resources */, + 67FEAE292A1261A000DDF4AE /* Localizable.strings in Resources */, 7FD482632864DC5900A5B18B /* OpenSans-ExtraBoldItalic.ttf in Resources */, 672D988E29F1927F004228D6 /* InfoPlist.strings in Resources */, 7FD482642864DC5900A5B18B /* OpenSans-Italic.ttf in Resources */, 672D989C29F1927F004228D6 /* InfoPlist.strings in Resources */, 672D98A229F1927F004228D6 /* InfoPlist.strings in Resources */, 672D988C29F1927F004228D6 /* InfoPlist.strings in Resources */, + 67FEADF12A12609300DDF4AE /* Localizable.strings in Resources */, + 67FEAE112A12613000DDF4AE /* Localizable.strings in Resources */, + 67AE0FC52A0556A500810C56 /* Localizable.strings in Resources */, + 67FEAE152A12614F00DDF4AE /* Localizable.strings in Resources */, 7FD482652864DC5900A5B18B /* OpenSans-Light.ttf in Resources */, 672D98AE29F1927F004228D6 /* InfoPlist.strings in Resources */, + 67FEAE052A1260CA00DDF4AE /* Localizable.strings in Resources */, + 67FEAE2A2A1261EA00DDF4AE /* Localizable.strings in Resources */, + 67FEAE012A1260C200DDF4AE /* Localizable.strings in Resources */, 7FD482662864DC5900A5B18B /* OpenSans-LightItalic.ttf in Resources */, 7FD482672864DC5900A5B18B /* OpenSans-Regular.ttf in Resources */, 672D98B229F1927F004228D6 /* InfoPlist.strings in Resources */, 672D989829F1927F004228D6 /* InfoPlist.strings in Resources */, + 67FEADE12A12603600DDF4AE /* Localizable.strings in Resources */, + 67FEAE192A12615900DDF4AE /* Localizable.strings in Resources */, + 67FEADDD2A12602A00DDF4AE /* Localizable.strings in Resources */, 7FD482682864DC5900A5B18B /* OpenSans-SemiBold.ttf in Resources */, 672D98AC29F1927F004228D6 /* InfoPlist.strings in Resources */, + 67FEAE212A12616F00DDF4AE /* Localizable.strings in Resources */, 7FD482692864DC5900A5B18B /* OpenSans-SemiBoldItalic.ttf in Resources */, + 67FEADED2A12608900DDF4AE /* Localizable.strings in Resources */, 7FD4825C2864DC4200A5B18B /* compass-icons.ttf in Resources */, 7FD482292864D69700A5B18B /* Assets.xcassets in Resources */, 672D98A829F1927F004228D6 /* InfoPlist.strings in Resources */, @@ -1413,6 +1504,7 @@ 7F1EBFCE286F2AE200824AF1 /* MultipleAttachmentView.swift in Sources */, 7F7E9F792864E8160064BFAF /* SearchBarView.swift in Sources */, 7FB50D222856E1AB0035ACB5 /* ShareUIView.swift in Sources */, + 67FEAE2C2A127C3600DDF4AE /* NumberFormatter.swift in Sources */, 7F93AAA828761FA10047B89F /* NoMembershipView.swift in Sources */, 7F7E9F772864E8160064BFAF /* LinkPreview.swift in Sources */, 7F7E9F782864E8160064BFAF /* OptionView.swift in Sources */, @@ -1634,6 +1726,182 @@ name = InfoPlist.strings; sourceTree = ""; }; + 67AE0FC32A0556A500810C56 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67AE0FC42A0556A500810C56 /* ru */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADD62A0E96DD00DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADD72A0E96DD00DDF4AE /* en */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADDA2A12602A00DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADDB2A12602A00DDF4AE /* ar */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADDE2A12603600DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADDF2A12603600DDF4AE /* bg */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADE22A12603F00DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADE32A12603F00DDF4AE /* de */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADE62A12604900DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADE72A12604900DDF4AE /* en_AU */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADEA2A12608900DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADEB2A12608900DDF4AE /* es */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADEE2A12609300DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADEF2A12609300DDF4AE /* fa */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADF22A1260A900DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADF32A1260A900DDF4AE /* fr */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADF62A1260B200DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADF72A1260B200DDF4AE /* hu */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADFA2A1260B900DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADFB2A1260B900DDF4AE /* it */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEADFE2A1260C200DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEADFF2A1260C200DDF4AE /* ja */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE022A1260C900DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE032A1260C900DDF4AE /* ko */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE062A12611B00DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE072A12611B00DDF4AE /* nl */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE0A2A12612500DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE0B2A12612500DDF4AE /* pl */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE0E2A12613000DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE0F2A12613000DDF4AE /* pt-BR */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE122A12614F00DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE132A12614F00DDF4AE /* sv */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE162A12615900DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE172A12615900DDF4AE /* tr */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE1A2A12616500DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE1B2A12616500DDF4AE /* uk */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE1E2A12616F00DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE1F2A12616F00DDF4AE /* zh-CN */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE222A12618000DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE232A12618000DDF4AE /* zh-TW */, + ); + name = Localizable.strings; + sourceTree = ""; + }; + 67FEAE262A1261A000DDF4AE /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 67FEAE272A1261A000DDF4AE /* ro */, + ); + name = Localizable.strings; + sourceTree = ""; + }; 7FC5698A28563FDB000B0905 /* MainInterface.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -1655,7 +1923,7 @@ CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 473; + CURRENT_PROJECT_VERSION = 476; DEVELOPMENT_TEAM = UQ8HT4Q2XM; ENABLE_BITCODE = NO; HEADER_SEARCH_PATHS = ( @@ -1699,7 +1967,7 @@ CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 473; + CURRENT_PROJECT_VERSION = 476; DEVELOPMENT_TEAM = UQ8HT4Q2XM; ENABLE_BITCODE = NO; HEADER_SEARCH_PATHS = ( @@ -1842,14 +2110,12 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 473; + CURRENT_PROJECT_VERSION = 476; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = UQ8HT4Q2XM; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = MattermostShare/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = MattermostShare; - INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved."; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1893,14 +2159,12 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 473; + CURRENT_PROJECT_VERSION = 476; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = UQ8HT4Q2XM; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = MattermostShare/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = MattermostShare; - INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved."; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -2066,7 +2330,7 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/getsentry/sentry-cocoa.git"; requirement = { - branch = 8.4.0; + branch = 8.7.3; kind = branch; }; }; diff --git a/ios/Mattermost.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Mattermost.xcworkspace/xcshareddata/swiftpm/Package.resolved index 97b3c2a7c..a41649fa9 100644 --- a/ios/Mattermost.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ios/Mattermost.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -14,8 +14,8 @@ "package": "Sentry", "repositoryURL": "https://github.com/getsentry/sentry-cocoa.git", "state": { - "branch": "8.4.0", - "revision": "92a6472efc750a4e18bdee21c204942ab0bc4dcd", + "branch": "8.7.3", + "revision": "9cf7d2e514af1600cc2b3c5592e2848c6c5a76d6", "version": null } }, diff --git a/ios/Mattermost/Info.plist b/ios/Mattermost/Info.plist index aa792a5a5..38adab9ab 100644 --- a/ios/Mattermost/Info.plist +++ b/ios/Mattermost/Info.plist @@ -21,7 +21,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.5.0 + 2.5.1 CFBundleSignature ???? CFBundleURLTypes @@ -37,7 +37,7 @@ CFBundleVersion - 473 + 476 ITSAppUsesNonExemptEncryption LSRequiresIPhoneOS diff --git a/ios/Mattermost/i18n/ar.lproj/Localizable.strings b/ios/Mattermost/i18n/ar.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/bg.lproj/Localizable.strings b/ios/Mattermost/i18n/bg.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/de.lproj/Localizable.strings b/ios/Mattermost/i18n/de.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/en.lproj/Localizable.strings b/ios/Mattermost/i18n/en.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/en_AU.lproj/Localizable.strings b/ios/Mattermost/i18n/en_AU.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/es.lproj/Localizable.strings b/ios/Mattermost/i18n/es.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/fa.lproj/Localizable.strings b/ios/Mattermost/i18n/fa.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/fr.lproj/Localizable.strings b/ios/Mattermost/i18n/fr.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/hu.lproj/Localizable.strings b/ios/Mattermost/i18n/hu.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/it.lproj/Localizable.strings b/ios/Mattermost/i18n/it.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/ja.lproj/Localizable.strings b/ios/Mattermost/i18n/ja.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/ko.lproj/Localizable.strings b/ios/Mattermost/i18n/ko.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/nl.lproj/Localizable.strings b/ios/Mattermost/i18n/nl.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/pl.lproj/Localizable.strings b/ios/Mattermost/i18n/pl.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/pt-BR.lproj/Localizable.strings b/ios/Mattermost/i18n/pt-BR.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/ro.lproj/Localizable.strings b/ios/Mattermost/i18n/ro.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/ru.lproj/Localizable.strings b/ios/Mattermost/i18n/ru.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/sv.lproj/Localizable.strings b/ios/Mattermost/i18n/sv.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/tr.lproj/Localizable.strings b/ios/Mattermost/i18n/tr.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/uk.lproj/Localizable.strings b/ios/Mattermost/i18n/uk.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/zh-CN.lproj/Localizable.strings b/ios/Mattermost/i18n/zh-CN.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/Mattermost/i18n/zh-TW.lproj/Localizable.strings b/ios/Mattermost/i18n/zh-TW.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/ios/MattermostShare/Extensions/Int64.swift b/ios/MattermostShare/Extensions/Int64.swift index a816b3606..11eb0bc92 100644 --- a/ios/MattermostShare/Extensions/Int64.swift +++ b/ios/MattermostShare/Extensions/Int64.swift @@ -22,10 +22,7 @@ extension Int64 { let i = floor(log(size) / log(k)) // Format number with thousands separator and everything below 1 giga with no decimal places. - let numberFormatter = NumberFormatter() - numberFormatter.maximumFractionDigits = i < 3 ? 0 : 1 - numberFormatter.numberStyle = .decimal - + let numberFormatter = i < 3 ? NumberFormatter.noFractionDigitsDecimalFormatter : NumberFormatter.oneFractionDigitDecimalFormatter let numberString = numberFormatter.string(from: NSNumber(value: size / pow(k, i))) ?? "Unknown" let suffix = suffixes[Int(i)] return "\(numberString) \(suffix)" diff --git a/ios/MattermostShare/Extensions/NumberFormatter.swift b/ios/MattermostShare/Extensions/NumberFormatter.swift new file mode 100644 index 000000000..37c63e521 --- /dev/null +++ b/ios/MattermostShare/Extensions/NumberFormatter.swift @@ -0,0 +1,25 @@ +// +// NumberFormatter.swift +// MattermostShare +// +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. +// + +import Foundation + +extension NumberFormatter { + static let noFractionDigitsDecimalFormatter: NumberFormatter = { + let numberFormatter = NumberFormatter() + numberFormatter.maximumFractionDigits = 0 + numberFormatter.numberStyle = .decimal + return numberFormatter + }() + + static let oneFractionDigitDecimalFormatter: NumberFormatter = { + let numberFormatter = NumberFormatter() + numberFormatter.maximumFractionDigits = 1 + numberFormatter.numberStyle = .decimal + return numberFormatter + }() +} diff --git a/ios/MattermostShare/Info.plist b/ios/MattermostShare/Info.plist index 44f8452d8..e42a39765 100644 --- a/ios/MattermostShare/Info.plist +++ b/ios/MattermostShare/Info.plist @@ -19,9 +19,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 2.5.0 + 2.5.1 CFBundleVersion - 473 + 476 UIAppFonts OpenSans-Bold.ttf @@ -77,5 +77,7 @@ $(SENTRY_DSN_IOS) SENTRY_ENABLED $(SENTRY_ENABLED) + NSHumanReadableCopyright + Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. diff --git a/ios/MattermostShare/Views/ContentViews/AttachmentsViews/AttachmentsView.swift b/ios/MattermostShare/Views/ContentViews/AttachmentsViews/AttachmentsView.swift index 747a99880..4ec438106 100644 --- a/ios/MattermostShare/Views/ContentViews/AttachmentsViews/AttachmentsView.swift +++ b/ios/MattermostShare/Views/ContentViews/AttachmentsViews/AttachmentsView.swift @@ -15,16 +15,30 @@ struct AttachmentsView: View { var error: String? { if let server = shareViewModel.server { if server.uploadsDisabled { - return "File uploads are disabled for the selected server" + return NSLocalizedString("share_extension.upload_disabled", + value: "File uploads are disabled for the selected server", + comment: "" + ) } let sizeError = attachments.contains { $0.sizeError(server: server)} let resolutionError = attachments.contains { $0.resolutionError(server: server)} if sizeError && attachments.count == 1 { - return "File must be less than \(server.maxFileSize.formattedFileSize)" + return NSLocalizedString("share_extension.file_limit.single", + value: "File must be less than {size}", + comment: "" + ) + .replacingOccurrences(of: "{size}", with: server.maxFileSize.formattedFileSize) } else if sizeError { - return "Each file must be less than \(server.maxFileSize.formattedFileSize)" + return NSLocalizedString("share_extension.file_limit.multiple", + value: "Each file must be less than {size}", + comment: "" + ) + .replacingOccurrences(of: "{size}", with: server.maxFileSize.formattedFileSize) } else if resolutionError { - return "Image exceeds maximum dimensions of 7680 x 4320 px" + return NSLocalizedString("share_extension.max_resolution", + value: "Image exceeds maximum dimensions of 7680 x 4320 px", + comment: "" + ) } } diff --git a/ios/MattermostShare/Views/ContentViews/AttachmentsViews/MultipleAttachmentView.swift b/ios/MattermostShare/Views/ContentViews/AttachmentsViews/MultipleAttachmentView.swift index 6fea9879a..36ded952b 100644 --- a/ios/MattermostShare/Views/ContentViews/AttachmentsViews/MultipleAttachmentView.swift +++ b/ios/MattermostShare/Views/ContentViews/AttachmentsViews/MultipleAttachmentView.swift @@ -65,10 +65,16 @@ struct MultipleAttachmentView: View { } if (attachments.count > 1) { - Text("\(attachments.count) attachments") - .foregroundColor(Color.theme.centerChannelColor.opacity(0.64)) - .font(Font.custom("OpenSans", size: 12)) - .padding(.leading, 20) + Text( + NSLocalizedString("share_extension.multiple_label", + value: "{count, number} attachments", + comment: "" + ) + .replacingOccurrences(of: "{count, number}", with: "\(attachments.count)") + ) + .foregroundColor(Color.theme.centerChannelColor.opacity(0.64)) + .font(Font.custom("OpenSans", size: 12)) + .padding(.leading, 20) } } } diff --git a/ios/MattermostShare/Views/ContentViews/ChannelListView/ChannelListView.swift b/ios/MattermostShare/Views/ContentViews/ChannelListView/ChannelListView.swift index 0221f0d1c..70dea6410 100644 --- a/ios/MattermostShare/Views/ContentViews/ChannelListView/ChannelListView.swift +++ b/ios/MattermostShare/Views/ContentViews/ChannelListView/ChannelListView.swift @@ -16,9 +16,12 @@ struct ChannelListView: View { SearchBarView() if shareViewModel.search.isEmpty { HStack { - Text("RECENT") - .font(Font.custom("OpenSans-SemiBold", size: 12)) - .foregroundColor(Color.theme.centerChannelColor.opacity(0.64)) + Text( + NSLocalizedString("mobile.channel_list.recent", value: "Recent", comment: "") + .uppercased() + ) + .font(Font.custom("OpenSans-SemiBold", size: 12)) + .foregroundColor(Color.theme.centerChannelColor.opacity(0.64)) Spacer() } .padding(.top, 20) diff --git a/ios/MattermostShare/Views/ContentViews/ChannelListView/SearchBarView.swift b/ios/MattermostShare/Views/ContentViews/ChannelListView/SearchBarView.swift index 09f01fb1f..98a65a7fc 100644 --- a/ios/MattermostShare/Views/ContentViews/ChannelListView/SearchBarView.swift +++ b/ios/MattermostShare/Views/ContentViews/ChannelListView/SearchBarView.swift @@ -16,8 +16,10 @@ struct SearchBarView: View { HStack { TextField("", text: $shareViewModel.search) .placeholder(when: shareViewModel.search.isEmpty) { - Text("Find channels...") - .foregroundColor(Color.theme.centerChannelColor.opacity(0.64)) + Text( + NSLocalizedString("channel_list.find_channels", value: "Find channels...", comment: "") + ) + .foregroundColor(Color.theme.centerChannelColor.opacity(0.64)) } .padding(.leading, 40) .padding(.trailing, 30) @@ -59,9 +61,11 @@ struct SearchBarView: View { if isEditing { Button(action: dismissKeyboard) { - Text("Cancel") - .foregroundColor(Color.theme.centerChannelColor) - .font(Font.custom("OpenSans", size: 14)) + Text( + NSLocalizedString("mobile.post.cancel", value: "Cancel", comment: "") + ) + .foregroundColor(Color.theme.centerChannelColor) + .font(Font.custom("OpenSans", size: 14)) } .transition(.move(edge: .trailing)) .animation(.linear(duration: 0.15)) diff --git a/ios/MattermostShare/Views/ContentViews/ContentView.swift b/ios/MattermostShare/Views/ContentViews/ContentView.swift index a8f992a76..c13c68005 100644 --- a/ios/MattermostShare/Views/ContentViews/ContentView.swift +++ b/ios/MattermostShare/Views/ContentViews/ContentView.swift @@ -41,8 +41,8 @@ struct ContentView: View { VStack (spacing: 0) { if shareViewModel.allServers.count > 1 { OptionView( - navigationTitle: "Select server", - label: "Server", + navigationTitle: NSLocalizedString("share_extension.servers_screen.title", value: "Select server", comment: ""), + label: NSLocalizedString("share_extension.server_label", value: "Server", comment: ""), value: shareViewModel.server!.displayName ) { ServerListView() @@ -51,8 +51,8 @@ struct ContentView: View { } if hasChannels { OptionView( - navigationTitle: "Select channel", - label: "Channel", + navigationTitle: NSLocalizedString("share_extension.channels_screen.title", value: "Select channel", comment: ""), + label: NSLocalizedString("share_extension.channel_label", value: "Channel", comment: ""), value: "\(shareViewModel.channel!.displayName) \(shareViewModel.channel!.formattedTeamName)" ) { ChannelListView() @@ -66,10 +66,16 @@ struct ContentView: View { .padding(.bottom, 10) if hasChannels { - FloatingTextField(placeholderText: "Enter a message (optional)", text: $message) + FloatingTextField( + placeholderText: NSLocalizedString("share_extension.message", value: "Enter a message (optional)", comment: ""), + text: $message + ) } else { ErrorLabelView( - error: "You are not a member of a team on the selected server. Select another server or open Mattermost to join a team." + error: NSLocalizedString("share_extension.channel_error", + value: "You are not a member of a team on the selected server. Select another server or open Mattermost to join a team.", + comment: "" + ) ) } diff --git a/ios/MattermostShare/Views/ContentViews/FloatingTextField.swift b/ios/MattermostShare/Views/ContentViews/FloatingTextField.swift index cd0309c8d..fb8b20057 100644 --- a/ios/MattermostShare/Views/ContentViews/FloatingTextField.swift +++ b/ios/MattermostShare/Views/ContentViews/FloatingTextField.swift @@ -53,9 +53,7 @@ struct FloatingTextField: View { } func formatLength(_ value: Int64) -> String { - let formatter = NumberFormatter() - formatter.numberStyle = .decimal - formatter.maximumFractionDigits = 0 + let formatter = NumberFormatter.noFractionDigitsDecimalFormatter let number = NSNumber(value: value) return formatter.string(from: number)! } @@ -64,7 +62,12 @@ struct FloatingTextField: View { VStack (alignment: .leading) { if (error) { ErrorLabelView( - error: "Message must be less than \(formatLength(shareViewModel.server!.maxMessageLength)) characters" + error: NSLocalizedString("mobile.message_length.message", + value: "Your current message is too long. Current character count: {count}/{max}", + comment: "" + ) + .replacingOccurrences(of: "{count}", with: formatLength(Int64(text.count))) + .replacingOccurrences(of: "{max}", with: formatLength(shareViewModel.server!.maxMessageLength)) ) } ZStack(alignment: .topLeading) { diff --git a/ios/MattermostShare/Views/ErrorViews/ErrorSharingView.swift b/ios/MattermostShare/Views/ErrorViews/ErrorSharingView.swift index beb9e3c91..81e529319 100644 --- a/ios/MattermostShare/Views/ErrorViews/ErrorSharingView.swift +++ b/ios/MattermostShare/Views/ErrorViews/ErrorSharingView.swift @@ -22,21 +22,40 @@ struct ErrorSharingView: View { NotificationCenter.default.post(name: Notification.Name("submit"), object: nil, userInfo: nil) } } else { - Text("An error ocurred") - .font(Font.custom("Metropolis-SemiBold", size: 20)) - .foregroundColor(Color.theme.centerChannelColor) - Text("There was an error when attempting to share the content to Mattermost.") - .font(Font.custom("OpenSans", size: 16)) + Text( + NSLocalizedString("share_extension.error_screen.label", value: "An error ocurred", comment: "") + ) + .font(Font.custom("Metropolis-SemiBold", size: 20)) + .foregroundColor(Color.theme.centerChannelColor) + Text( + NSLocalizedString("share_extension.error_screen.description", + value: "There was an error when attempting to share the content to {applicationName}.", + comment: "" + ) + .replacingOccurrences( + of: "{applicationName}", + with: Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String ?? "Mattermost Beta" + ) + ) + .font(Font.custom("OpenSans", size: 16)) .foregroundColor(Color.theme.centerChannelColor.opacity(0.72)) - Text("Reason: \(error)") - .font(Font.custom("OpenSans", size: 12)) - .foregroundColor(Color.theme.centerChannelColor.opacity(0.60)) + Text( + NSLocalizedString("share_extension.error_screen.reason", + value: "Reason: {reason}", + comment: "" + ) + .replacingOccurrences(of: "{reason}", with: error) + ) + .font(Font.custom("OpenSans", size: 12)) + .foregroundColor(Color.theme.centerChannelColor.opacity(0.60)) Button { retrying = true } label: { - Text("Try again") - .font(Font.custom("OpenSans", size: 16)) - .foregroundColor(Color.theme.buttonColor) + Text( + NSLocalizedString("mobile.post.failed_retry", value: "Try again", comment: "") + ) + .font(Font.custom("OpenSans", size: 16)) + .foregroundColor(Color.theme.buttonColor) } .buttonStyle(.borderedProminent) .tint(Color.theme.buttonBg) diff --git a/ios/MattermostShare/Views/ErrorViews/NoMembershipView.swift b/ios/MattermostShare/Views/ErrorViews/NoMembershipView.swift index ed29e5372..0a22264ca 100644 --- a/ios/MattermostShare/Views/ErrorViews/NoMembershipView.swift +++ b/ios/MattermostShare/Views/ErrorViews/NoMembershipView.swift @@ -11,12 +11,22 @@ import SwiftUI struct NoMembershipView: View { var body: some View { VStack (spacing: 8) { - Text("Not a member of any team yet") - .font(Font.custom("Metropolis-SemiBold", size: 20)) - .foregroundColor(Color.theme.centerChannelColor) - Text("To share content, you'll need to be a member of a team on a Mattermost server.") - .font(Font.custom("OpenSans", size: 16)) - .foregroundColor(Color.theme.centerChannelColor.opacity(0.72)) + Text( + NSLocalizedString("extension.no_memberships.title", + value: "Not a member of any team yet", + comment: "" + ) + ) + .font(Font.custom("Metropolis-SemiBold", size: 20)) + .foregroundColor(Color.theme.centerChannelColor) + Text( + NSLocalizedString("extension.no_memberships.description", + value: "To share content, you'll need to be a member of a team on a Mattermost server.", + comment: "" + ) + ) + .font(Font.custom("OpenSans", size: 16)) + .foregroundColor(Color.theme.centerChannelColor.opacity(0.72)) } .padding(.horizontal, 12) } diff --git a/ios/MattermostShare/Views/ErrorViews/NoServersView.swift b/ios/MattermostShare/Views/ErrorViews/NoServersView.swift index 460064441..554321541 100644 --- a/ios/MattermostShare/Views/ErrorViews/NoServersView.swift +++ b/ios/MattermostShare/Views/ErrorViews/NoServersView.swift @@ -11,12 +11,22 @@ import SwiftUI struct NoServersView: View { var body: some View { VStack (spacing: 8) { - Text("Not connected to any servers") - .font(Font.custom("Metropolis-SemiBold", size: 20)) - .foregroundColor(Color.theme.centerChannelColor) - Text("To share content, you'll need to be logged in to a Mattermost server.") - .font(Font.custom("OpenSans", size: 16)) - .foregroundColor(Color.theme.centerChannelColor.opacity(0.72)) + Text( + NSLocalizedString("extension.no_servers.title", + value: "Not connected to any servers", + comment: "" + ) + ) + .font(Font.custom("Metropolis-SemiBold", size: 20)) + .foregroundColor(Color.theme.centerChannelColor) + Text( + NSLocalizedString("extension.no_servers.description", + value: "To share content, you'll need to be logged in to a Mattermost server.", + comment: "" + ) + ) + .font(Font.custom("OpenSans", size: 16)) + .foregroundColor(Color.theme.centerChannelColor.opacity(0.72)) } .padding(.horizontal, 12) } diff --git a/ios/MattermostShare/Views/InitialView.swift b/ios/MattermostShare/Views/InitialView.swift index daee57233..87c2896bf 100644 --- a/ios/MattermostShare/Views/InitialView.swift +++ b/ios/MattermostShare/Views/InitialView.swift @@ -61,7 +61,17 @@ struct InitialView: View { } } .accentColor(.white) - .navigationBarTitle("Share to Mattermost", displayMode: .inline) + .navigationBarTitle( + NSLocalizedString("share_extension.share_screen.title", + value: "Share to {applicationName}", + comment: "" + ) + .replacingOccurrences( + of: "{applicationName}", + with: Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String ?? "Mattermost Beta" + ), + displayMode: .inline + ) .navigationBarItems( leading: CancelButton(attachments: attachments), trailing: PostButton( diff --git a/ios/NotificationService/Info.plist b/ios/NotificationService/Info.plist index f3a4dc488..923652d8d 100644 --- a/ios/NotificationService/Info.plist +++ b/ios/NotificationService/Info.plist @@ -19,9 +19,9 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 2.5.0 + 2.5.1 CFBundleVersion - 473 + 476 NSExtension NSExtensionPointIdentifier diff --git a/ios/Podfile b/ios/Podfile index 96947f5cd..303f94d78 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -46,7 +46,7 @@ target 'Mattermost' do pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi', :modular_headers => true pod 'React-jsc', :path => '../node_modules/react-native/ReactCommon/jsc', :modular_headers => true - pod 'simdjson', path: '../node_modules/@nozbe/simdjson' + pod 'simdjson', path: '../node_modules/@nozbe/simdjson', :modular_headers => true # TODO: Remove this once upstream PR https://github.com/daltoniam/Starscream/pull/871 is merged pod 'Starscream', :git => 'https://github.com/mattermost/Starscream.git', :commit => '9575b6781d1262247096af73617ae3acb2b139a0' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index efdb7cc79..b4b9f4eef 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,21 +1,21 @@ PODS: - Alamofire (5.6.4) - boost (1.76.0) - - BVLinearGradient (2.6.2): + - BVLinearGradient (2.7.2): - React-Core - CocoaAsyncSocket (7.6.5) - CocoaLumberjack (3.8.0): - CocoaLumberjack/Core (= 3.8.0) - CocoaLumberjack/Core (3.8.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.71.7) - - FBReactNativeSpec (0.71.7): + - FBLazyVector (0.71.11) + - FBReactNativeSpec (0.71.11): - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.71.7) - - RCTTypeSafety (= 0.71.7) - - React-Core (= 0.71.7) - - React-jsi (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) + - RCTRequired (= 0.71.11) + - RCTTypeSafety (= 0.71.11) + - React-Core (= 0.71.11) + - React-jsi (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) - Flipper (0.125.0): - Flipper-Folly (~> 2.6) - Flipper-RSocket (~> 1.4) @@ -79,9 +79,9 @@ PODS: - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.71.7): - - hermes-engine/Pre-built (= 0.71.7) - - hermes-engine/Pre-built (0.71.7) + - hermes-engine (0.71.11): + - hermes-engine/Pre-built (= 0.71.11) + - hermes-engine/Pre-built (0.71.11) - HMSegmentedControl (1.5.6) - jail-monkey (2.8.0): - React-Core @@ -118,26 +118,26 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.71.7) - - RCTTypeSafety (0.71.7): - - FBLazyVector (= 0.71.7) - - RCTRequired (= 0.71.7) - - React-Core (= 0.71.7) - - React (0.71.7): - - React-Core (= 0.71.7) - - React-Core/DevSupport (= 0.71.7) - - React-Core/RCTWebSocket (= 0.71.7) - - React-RCTActionSheet (= 0.71.7) - - React-RCTAnimation (= 0.71.7) - - React-RCTBlob (= 0.71.7) - - React-RCTImage (= 0.71.7) - - React-RCTLinking (= 0.71.7) - - React-RCTNetwork (= 0.71.7) - - React-RCTSettings (= 0.71.7) - - React-RCTText (= 0.71.7) - - React-RCTVibration (= 0.71.7) - - React-callinvoker (0.71.7) - - React-Codegen (0.71.7): + - RCTRequired (0.71.11) + - RCTTypeSafety (0.71.11): + - FBLazyVector (= 0.71.11) + - RCTRequired (= 0.71.11) + - React-Core (= 0.71.11) + - React (0.71.11): + - React-Core (= 0.71.11) + - React-Core/DevSupport (= 0.71.11) + - React-Core/RCTWebSocket (= 0.71.11) + - React-RCTActionSheet (= 0.71.11) + - React-RCTAnimation (= 0.71.11) + - React-RCTBlob (= 0.71.11) + - React-RCTImage (= 0.71.11) + - React-RCTLinking (= 0.71.11) + - React-RCTNetwork (= 0.71.11) + - React-RCTSettings (= 0.71.11) + - React-RCTText (= 0.71.11) + - React-RCTVibration (= 0.71.11) + - React-callinvoker (0.71.11) + - React-Codegen (0.71.11): - FBReactNativeSpec - hermes-engine - RCT-Folly @@ -148,246 +148,246 @@ PODS: - React-jsiexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.71.7): + - React-Core (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.7) - - React-cxxreact (= 0.71.7) + - React-Core/Default (= 0.71.11) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/CoreModulesHeaders (0.71.7): + - React-Core/CoreModulesHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/Default (0.71.7): + - React-Core/Default (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/DevSupport (0.71.7): + - React-Core/DevSupport (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.7) - - React-Core/RCTWebSocket (= 0.71.7) - - React-cxxreact (= 0.71.7) + - React-Core/Default (= 0.71.11) + - React-Core/RCTWebSocket (= 0.71.11) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-jsinspector (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-jsinspector (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTActionSheetHeaders (0.71.7): + - React-Core/RCTActionSheetHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTAnimationHeaders (0.71.7): + - React-Core/RCTAnimationHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTBlobHeaders (0.71.7): + - React-Core/RCTBlobHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTImageHeaders (0.71.7): + - React-Core/RCTImageHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTLinkingHeaders (0.71.7): + - React-Core/RCTLinkingHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTNetworkHeaders (0.71.7): + - React-Core/RCTNetworkHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTSettingsHeaders (0.71.7): + - React-Core/RCTSettingsHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTTextHeaders (0.71.7): + - React-Core/RCTTextHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTVibrationHeaders (0.71.7): + - React-Core/RCTVibrationHeaders (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-Core/RCTWebSocket (0.71.7): + - React-Core/RCTWebSocket (0.71.11): - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.71.7) - - React-cxxreact (= 0.71.7) + - React-Core/Default (= 0.71.11) + - React-cxxreact (= 0.71.11) - React-hermes - - React-jsi (= 0.71.7) - - React-jsiexecutor (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-jsi (= 0.71.11) + - React-jsiexecutor (= 0.71.11) + - React-perflogger (= 0.71.11) - Yoga - - React-CoreModules (0.71.7): + - React-CoreModules (0.71.11): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.7) - - React-Codegen (= 0.71.7) - - React-Core/CoreModulesHeaders (= 0.71.7) - - React-jsi (= 0.71.7) + - RCTTypeSafety (= 0.71.11) + - React-Codegen (= 0.71.11) + - React-Core/CoreModulesHeaders (= 0.71.11) + - React-jsi (= 0.71.11) - React-RCTBlob - - React-RCTImage (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) - - React-cxxreact (0.71.7): + - React-RCTImage (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) + - React-cxxreact (0.71.11): - boost (= 1.76.0) - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.7) - - React-jsi (= 0.71.7) - - React-jsinspector (= 0.71.7) - - React-logger (= 0.71.7) - - React-perflogger (= 0.71.7) - - React-runtimeexecutor (= 0.71.7) - - React-hermes (0.71.7): + - React-callinvoker (= 0.71.11) + - React-jsi (= 0.71.11) + - React-jsinspector (= 0.71.11) + - React-logger (= 0.71.11) + - React-perflogger (= 0.71.11) + - React-runtimeexecutor (= 0.71.11) + - React-hermes (0.71.11): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.71.7) + - React-cxxreact (= 0.71.11) - React-jsi - - React-jsiexecutor (= 0.71.7) - - React-jsinspector (= 0.71.7) - - React-perflogger (= 0.71.7) - - React-jsc (0.71.7): - - React-jsc/Fabric (= 0.71.7) - - React-jsi (= 0.71.7) - - React-jsc/Fabric (0.71.7): - - React-jsi (= 0.71.7) - - React-jsi (0.71.7): + - React-jsiexecutor (= 0.71.11) + - React-jsinspector (= 0.71.11) + - React-perflogger (= 0.71.11) + - React-jsc (0.71.11): + - React-jsc/Fabric (= 0.71.11) + - React-jsi (= 0.71.11) + - React-jsc/Fabric (0.71.11): + - React-jsi (= 0.71.11) + - React-jsi (0.71.11): - boost (= 1.76.0) - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.71.7): + - React-jsiexecutor (0.71.11): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.71.7) - - React-jsi (= 0.71.7) - - React-perflogger (= 0.71.7) - - React-jsinspector (0.71.7) - - React-logger (0.71.7): + - React-cxxreact (= 0.71.11) + - React-jsi (= 0.71.11) + - React-perflogger (= 0.71.11) + - React-jsinspector (0.71.11) + - React-logger (0.71.11): - glog - react-native-background-timer (2.4.1): - React-Core - - react-native-cameraroll (5.3.1): + - react-native-cameraroll (5.6.0): - React-Core - react-native-cookies (6.2.1): - React-Core - react-native-create-thumbnail (1.6.4): - React-Core - - react-native-document-picker (8.2.0): + - react-native-document-picker (9.0.1): - React-Core - react-native-emm (1.3.5): - React-Core - react-native-hw-keyboard-event (0.0.4): - React - - react-native-image-picker (5.3.1): + - react-native-image-picker (5.4.2): - React-Core - react-native-in-app-review (4.3.3): - React-Core - - react-native-netinfo (9.3.9): + - react-native-netinfo (9.3.10): - React-Core - - react-native-network-client (1.3.3): + - react-native-network-client (1.3.4): - Alamofire (~> 5.6.4) - React-Core - Starscream (~> 4.0.4) - SwiftyJSON (~> 5.0) - - react-native-notifications (4.3.3): + - react-native-notifications (4.3.5): - React-Core - react-native-paste-input (0.6.2): - React-Core - Swime (= 3.0.6) - - react-native-safe-area-context (4.5.1): + - react-native-safe-area-context (4.5.3): - RCT-Folly - RCTRequired - RCTTypeSafety @@ -398,115 +398,115 @@ PODS: - react-native-video/Video (= 5.2.1) - react-native-video/Video (5.2.1): - React-Core - - react-native-webrtc (111.0.0): + - react-native-webrtc (111.0.1): - JitsiWebRTC (~> 111.0.0) - React-Core - - react-native-webview (12.0.2): + - react-native-webview (13.2.2): - React-Core - - React-perflogger (0.71.7) - - React-RCTActionSheet (0.71.7): - - React-Core/RCTActionSheetHeaders (= 0.71.7) - - React-RCTAnimation (0.71.7): + - React-perflogger (0.71.11) + - React-RCTActionSheet (0.71.11): + - React-Core/RCTActionSheetHeaders (= 0.71.11) + - React-RCTAnimation (0.71.11): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.7) - - React-Codegen (= 0.71.7) - - React-Core/RCTAnimationHeaders (= 0.71.7) - - React-jsi (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) - - React-RCTAppDelegate (0.71.7): + - RCTTypeSafety (= 0.71.11) + - React-Codegen (= 0.71.11) + - React-Core/RCTAnimationHeaders (= 0.71.11) + - React-jsi (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) + - React-RCTAppDelegate (0.71.11): - RCT-Folly - RCTRequired - RCTTypeSafety - React-Core - ReactCommon/turbomodule/core - - React-RCTBlob (0.71.7): + - React-RCTBlob (0.71.11): - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.71.7) - - React-Core/RCTBlobHeaders (= 0.71.7) - - React-Core/RCTWebSocket (= 0.71.7) - - React-jsi (= 0.71.7) - - React-RCTNetwork (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) - - React-RCTImage (0.71.7): + - React-Codegen (= 0.71.11) + - React-Core/RCTBlobHeaders (= 0.71.11) + - React-Core/RCTWebSocket (= 0.71.11) + - React-jsi (= 0.71.11) + - React-RCTNetwork (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) + - React-RCTImage (0.71.11): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.7) - - React-Codegen (= 0.71.7) - - React-Core/RCTImageHeaders (= 0.71.7) - - React-jsi (= 0.71.7) - - React-RCTNetwork (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) - - React-RCTLinking (0.71.7): - - React-Codegen (= 0.71.7) - - React-Core/RCTLinkingHeaders (= 0.71.7) - - React-jsi (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) - - React-RCTNetwork (0.71.7): + - RCTTypeSafety (= 0.71.11) + - React-Codegen (= 0.71.11) + - React-Core/RCTImageHeaders (= 0.71.11) + - React-jsi (= 0.71.11) + - React-RCTNetwork (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) + - React-RCTLinking (0.71.11): + - React-Codegen (= 0.71.11) + - React-Core/RCTLinkingHeaders (= 0.71.11) + - React-jsi (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) + - React-RCTNetwork (0.71.11): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.7) - - React-Codegen (= 0.71.7) - - React-Core/RCTNetworkHeaders (= 0.71.7) - - React-jsi (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) - - React-RCTSettings (0.71.7): + - RCTTypeSafety (= 0.71.11) + - React-Codegen (= 0.71.11) + - React-Core/RCTNetworkHeaders (= 0.71.11) + - React-jsi (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) + - React-RCTSettings (0.71.11): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.71.7) - - React-Codegen (= 0.71.7) - - React-Core/RCTSettingsHeaders (= 0.71.7) - - React-jsi (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) - - React-RCTText (0.71.7): - - React-Core/RCTTextHeaders (= 0.71.7) - - React-RCTVibration (0.71.7): + - RCTTypeSafety (= 0.71.11) + - React-Codegen (= 0.71.11) + - React-Core/RCTSettingsHeaders (= 0.71.11) + - React-jsi (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) + - React-RCTText (0.71.11): + - React-Core/RCTTextHeaders (= 0.71.11) + - React-RCTVibration (0.71.11): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.71.7) - - React-Core/RCTVibrationHeaders (= 0.71.7) - - React-jsi (= 0.71.7) - - ReactCommon/turbomodule/core (= 0.71.7) - - React-runtimeexecutor (0.71.7): - - React-jsi (= 0.71.7) - - ReactCommon/turbomodule/bridging (0.71.7): + - React-Codegen (= 0.71.11) + - React-Core/RCTVibrationHeaders (= 0.71.11) + - React-jsi (= 0.71.11) + - ReactCommon/turbomodule/core (= 0.71.11) + - React-runtimeexecutor (0.71.11): + - React-jsi (= 0.71.11) + - ReactCommon/turbomodule/bridging (0.71.11): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.7) - - React-Core (= 0.71.7) - - React-cxxreact (= 0.71.7) - - React-jsi (= 0.71.7) - - React-logger (= 0.71.7) - - React-perflogger (= 0.71.7) - - ReactCommon/turbomodule/core (0.71.7): + - React-callinvoker (= 0.71.11) + - React-Core (= 0.71.11) + - React-cxxreact (= 0.71.11) + - React-jsi (= 0.71.11) + - React-logger (= 0.71.11) + - React-perflogger (= 0.71.11) + - ReactCommon/turbomodule/core (0.71.11): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.71.7) - - React-Core (= 0.71.7) - - React-cxxreact (= 0.71.7) - - React-jsi (= 0.71.7) - - React-logger (= 0.71.7) - - React-perflogger (= 0.71.7) + - React-callinvoker (= 0.71.11) + - React-Core (= 0.71.11) + - React-cxxreact (= 0.71.11) + - React-jsi (= 0.71.11) + - React-logger (= 0.71.11) + - React-perflogger (= 0.71.11) - ReactNativeExceptionHandler (2.10.10): - React-Core - ReactNativeIncallManager (4.0.1): - React-Core - ReactNativeKeyboardTrackingView (5.7.0): - React - - ReactNativeNavigation (7.32.1): + - ReactNativeNavigation (7.33.4): - HMSegmentedControl - React-Core - React-RCTImage - React-RCTText - - ReactNativeNavigation/Core (= 7.32.1) - - ReactNativeNavigation/Core (7.32.1): + - ReactNativeNavigation/Core (= 7.33.4) + - ReactNativeNavigation/Core (7.33.4): - HMSegmentedControl - React-Core - React-RCTImage - React-RCTText - RNCClipboard (1.11.2): - React-Core - - RNDateTimePicker (7.0.1): + - RNDateTimePicker (7.1.0): - React-Core - RNDeviceInfo (10.6.0): - React-Core @@ -518,21 +518,22 @@ PODS: - React-Core - RNFS (2.20.0): - React-Core - - RNGestureHandler (2.9.0): + - RNGestureHandler (2.12.0): - React-Core - RNKeychain (8.1.1): - React-Core - - RNLocalize (2.2.6): + - RNLocalize (3.0.0): - React-Core - RNPermissions (3.8.0): - React-Core - RNReactNativeHapticFeedback (2.0.3): - React-Core - - RNReanimated (3.1.0): + - RNReanimated (3.3.0): - DoubleConversion - FBLazyVector - FBReactNativeSpec - glog + - hermes-engine - RCT-Folly - RCTRequired - RCTTypeSafety @@ -542,6 +543,7 @@ PODS: - React-Core/RCTWebSocket - React-CoreModules - React-cxxreact + - React-hermes - React-jsi - React-jsiexecutor - React-jsinspector @@ -555,15 +557,15 @@ PODS: - React-RCTText - ReactCommon/turbomodule/core - Yoga - - RNRudderSdk (1.7.0): + - RNRudderSdk (1.7.1): - React - Rudder (~> 1.13) - - RNScreens (3.20.0): + - RNScreens (3.21.0): - React-Core - React-RCTImage - - RNSentry (5.3.1): + - RNSentry (5.6.0): - React-Core - - Sentry/HybridSDK (= 8.4.0) + - Sentry/HybridSDK (= 8.7.3) - RNShare (8.2.2): - React-Core - RNSVG (13.9.0): @@ -577,17 +579,17 @@ PODS: - SDWebImageWebPCoder (0.8.5): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.10) - - Sentry/HybridSDK (8.4.0): - - SentryPrivate (= 8.4.0) - - SentryPrivate (8.4.0) - - simdjson (1.0.0) + - Sentry/HybridSDK (8.7.3): + - SentryPrivate (= 8.7.3) + - SentryPrivate (8.7.3) + - simdjson (3.1.0-wmelon1) - SocketRocket (0.6.0) - Starscream (4.0.4) - SwiftyJSON (5.0.1) - Swime (3.0.6) - - WatermelonDB (0.25.5): + - WatermelonDB (0.26.0): - React - - React-jsi + - simdjson - Yoga (1.14.0) - YogaKit (1.18.1): - Yoga (~> 1.14) @@ -900,12 +902,12 @@ CHECKOUT OPTIONS: SPEC CHECKSUMS: Alamofire: 4e95d97098eacb88856099c4fc79b526a299e48c boost: 57d2868c099736d80fcd648bf211b4431e51a558 - BVLinearGradient: 34a999fda29036898a09c6a6b728b0b4189e1a44 + BVLinearGradient: 252e4a39d23d69d2d89b55b165c8900f7caf93fc CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 CocoaLumberjack: 78abfb691154e2a9df8ded4350d504ee19d90732 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - FBLazyVector: a89a0525bc7ca174675045c2b492b5280d5a2470 - FBReactNativeSpec: 7714e6bc1e9ea23df6c4cb42f0b2fd9c6a3a559c + FBLazyVector: c511d4cd0210f416cb5c289bd5ae6b36d909b048 + FBReactNativeSpec: a911fb22def57aef1d74215e8b6b8761d25c1c54 Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 @@ -917,7 +919,7 @@ SPEC CHECKSUMS: FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: 4438d2b8bf8bebaba1b1ac0451160bab59e491f8 + hermes-engine: 34c863b446d0135b85a6536fa5fd89f48196f848 HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352 jail-monkey: a71b35d482a70ecba844a90f002994012cf12a5d JitsiWebRTC: 80f62908fcf2a1160e0d14b584323fb6e6be630b @@ -926,86 +928,86 @@ SPEC CHECKSUMS: mattermost-react-native-turbo-log: a00b39dafdef7905164110466e7d725f6f079751 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 - RCTRequired: 5a4a30ac20c86eeadd6844a9328f78d4168cf9b2 - RCTTypeSafety: 279fc5861a89f0f37db3a585f27f971485b4b734 - React: 88307a9be3bd0e71a6822271cf28b84a587fb97f - React-callinvoker: 35fb980c454104ebe82f0afb9826830089248e08 - React-Codegen: a8dbde3b7476d5c19437d2adb9e8ea1b426b9595 - React-Core: 385cb6fa78762c6409ff39faeb0dd9ad664b6e84 - React-CoreModules: c2b7db313b04d9b71954ffd55d0c2e46bc40e9fb - React-cxxreact: 845fefb889132e5d004ff818f7a599e32c52e7d6 - React-hermes: 86135f35e1dd2dfccfb97afe96d0c06f6a3970c4 - React-jsc: a2ee2ef9564e9157980fa81e587797e97b582f36 - React-jsi: 39c116aa6c3d6f3d9874eff6998a670b47882a28 - React-jsiexecutor: eaa5f71eb8f6861cf0e57f1a0f52aeb020d9e18e - React-jsinspector: 9885f6f94d231b95a739ef7bb50536fb87ce7539 - React-logger: 3f8ebad1be1bf3299d1ab6d7f971802d7395c7ef + RCTRequired: f6187ec763637e6a57f5728dd9a3bdabc6d6b4e0 + RCTTypeSafety: a01aca2dd3b27fa422d5239252ad38e54e958750 + React: 741b4f5187e7a2137b69c88e65f940ba40600b4b + React-callinvoker: 72ba74b2d5d690c497631191ae6eeca0c043d9cf + React-Codegen: 8a7cda1633e4940de8a710f6bf5cae5dd673546e + React-Core: 72bb19702c465b6451a40501a2879532bec9acee + React-CoreModules: ffd19b082fc36b9b463fedf30955138b5426c053 + React-cxxreact: 8b3dd87e3b8ea96dd4ad5c7bac8f31f1cc3da97f + React-hermes: be95942c3f47fc032da1387360413f00dae0ea68 + React-jsc: 75bfda40ea4032b5018875355ab5ee089ac748bf + React-jsi: 9978e2a64c2a4371b40e109f4ef30a33deaa9bcb + React-jsiexecutor: 18b5b33c5f2687a784a61bc8176611b73524ae77 + React-jsinspector: b6ed4cb3ffa27a041cd440300503dc512b761450 + React-logger: 186dd536128ae5924bc38ed70932c00aa740cd5b react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe - react-native-cameraroll: f3050460fe1708378698c16686bfaa5f34099be2 + react-native-cameraroll: 755bcc628148a90a7c9cf3f817a252be3a601bc5 react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c react-native-create-thumbnail: e022bcdcba8a0b4529a50d3fa1a832ec921be39d - react-native-document-picker: 495c444c0c773c6e83a5d91165890ecb1c0a399a + react-native-document-picker: 2b8f18667caee73a96708a82b284a4f40b30a156 react-native-emm: 5aaacd33453894ec64b9c774f735b6bf1a92b89f react-native-hw-keyboard-event: b517cefb8d5c659a38049c582de85ff43337dc53 - react-native-image-picker: ec9b713e248760bfa0f879f0715391de4651a7cb + react-native-image-picker: 77f552291e993f3fdcdf48cc3c280ef7f11789c8 react-native-in-app-review: db8bb167a5f238e7ceca5c242d6b36ce8c4404a4 - react-native-netinfo: 22c082970cbd99071a4e5aa7a612ac20d66b08f0 - react-native-network-client: 8435c8ba294738b52988144151e6144dbf125ce8 - react-native-notifications: 83b4fd4a127a6c918fc846cae90da60f84819e44 + react-native-netinfo: ccbe1085dffd16592791d550189772e13bf479e2 + react-native-network-client: 35acc439782ee71000497961f624d085f5a7abbb + react-native-notifications: 504143d59f9628c3b0c22fd0ccf34b65b9182d01 react-native-paste-input: 3392800944a47c00dddbff23c31c281482209679 - react-native-safe-area-context: f5549f36508b1b7497434baa0cd97d7e470920d4 + react-native-safe-area-context: b8979f5eda6ed5903d4dbc885be3846ea3daa753 react-native-video: c26780b224543c62d5e1b2a7244a5cd1b50e8253 - react-native-webrtc: a9d4d8ef61adb634e006ffd956c494ad8318d95c - react-native-webview: 203b6a1c7507737f777c91d7e10c30e7e67c1a17 - React-perflogger: 2d505bbe298e3b7bacdd9e542b15535be07220f6 - React-RCTActionSheet: 0e96e4560bd733c9b37efbf68f5b1a47615892fb - React-RCTAnimation: fd138e26f120371c87e406745a27535e2c8a04ef - React-RCTAppDelegate: 4a9fd1230a98dc3d4382f8a934dc9f50834d8335 - React-RCTBlob: 38a7185f06a0ce8153a023e63b406a28d67b955d - React-RCTImage: 92b0966e7c1cadda889e961c474397ad5180e194 - React-RCTLinking: b80f8d0c6e94c54294b0048def51f57eaa9a27af - React-RCTNetwork: 491b0c65ac22edbd6695d12d084b4943103b009b - React-RCTSettings: 97af3e8abe0023349ec015910df3bda1a0380117 - React-RCTText: 33c85753bd714d527d2ae538dc56ec24c6783d84 - React-RCTVibration: 08f132cad9896458776f37c112e71d60aef1c6ae - React-runtimeexecutor: c5c89f8f543842dd864b63ded1b0bbb9c9445328 - ReactCommon: dbfbe2f7f3c5ce4ce44f43f2fd0d5950d1eb67c5 + react-native-webrtc: 2702afae1e59882b423e6077768ca0d1e6fc42ed + react-native-webview: b8ec89966713985111a14d6e4bf98d8b54bced0d + React-perflogger: e706562ab7eb8eb590aa83a224d26fa13963d7f2 + React-RCTActionSheet: 57d4bd98122f557479a3359ad5dad8e109e20c5a + React-RCTAnimation: ccf3ef00101ea74bda73a045d79a658b36728a60 + React-RCTAppDelegate: d0c28a35c65e9a0aef287ac0dafe1b71b1ac180c + React-RCTBlob: 1700b92ece4357af0a49719c9638185ad2902e95 + React-RCTImage: f2e4904566ccccaa4b704170fcc5ae144ca347bf + React-RCTLinking: 52a3740e3651e30aa11dff5a6debed7395dd8169 + React-RCTNetwork: ea0976f2b3ffc7877cd7784e351dc460adf87b12 + React-RCTSettings: ed5ac992b23e25c65c3cc31f11b5c940ae5e3e60 + React-RCTText: c9dfc6722621d56332b4f3a19ac38105e7504145 + React-RCTVibration: f09f08de63e4122deb32506e20ca4cae6e4e14c1 + React-runtimeexecutor: 4817d63dbc9d658f8dc0ec56bd9b83ce531129f0 + ReactCommon: 08723d2ed328c5cbcb0de168f231bc7bae7f8aa1 ReactNativeExceptionHandler: b11ff67c78802b2f62eed0e10e75cb1ef7947c60 ReactNativeIncallManager: 0d2cf9f4d50359728a30c08549762fe67a2efb81 ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306 - ReactNativeNavigation: d79d9d53e6025851936bb8b3d13760b86302a669 + ReactNativeNavigation: ae5df546dc2b8ada3b09385cf83177318e8c9429 RNCClipboard: 3f0451a8100393908bea5c5c5b16f96d45f30bfc - RNDateTimePicker: e073697ac3e8a378968d68ab0581fef542b8af8a + RNDateTimePicker: 7ecd54a97fc3749f38c3c89a171f6cbd52f3c142 RNDeviceInfo: 475a4c447168d0ad4c807e48ef5e0963a0f4eb1b RNFastImage: 0ee8f7e39df8190d3ca3a5b0c4ea0109c0ff132e RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592 RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 - RNGestureHandler: 071d7a9ad81e8b83fe7663b303d132406a7d8f39 + RNGestureHandler: dec4645026e7401a0899f2846d864403478ff6a5 RNKeychain: ff836453cba46938e0e9e4c22e43d43fa2c90333 - RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 + RNLocalize: 5944c97d2fe8150913a51ddd5eab4e23a82bd80d RNPermissions: cf3a9da0e6e6772e66282ca7338e198885ac70e7 RNReactNativeHapticFeedback: afa5bf2794aecbb2dba2525329253da0d66656df - RNReanimated: b1220a0e5168745283ff5d53bfc7d2144b2cee1b - RNRudderSdk: 3b9251e2379775b10078cc7ed6ea59d5262ddff3 - RNScreens: 218801c16a2782546d30bd2026bb625c0302d70f - RNSentry: 68d5b2339fc7cd864e8076279345cc90174fa583 + RNReanimated: 9976fbaaeb8a188c36026154c844bf374b3b7eeb + RNRudderSdk: 70865f8d0746d7e78e27df98c148d1ca0205c551 + RNScreens: d037903436160a4b039d32606668350d2a808806 + RNSentry: 9f0447b3ce13806f544903748de423259ead8552 RNShare: d82e10f6b7677f4b0048c23709bd04098d5aee6c RNSVG: 53c661b76829783cdaf9b7a57258f3d3b4c28315 RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8 Rudder: 41040d4537a178e4e32477b68400f98ca0c354eb SDWebImage: a47aea9e3d8816015db4e523daff50cfd294499d SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d - Sentry: 16d46dd5ca10e7f4469a2611805a3de123188add - SentryPrivate: 2bb4f8d9ff558b25ac70b66c1dedc58a7c43630b - simdjson: c96317b3a50dff3468a42f586ab7ed22c6ab2fd9 + Sentry: c7a86f43510a7d5678d4de28d78c28ab351d295b + SentryPrivate: 2eaabf598a46d4b9b8822aef766df2a84caf2e6f + simdjson: e6bfae9ce4bcdc80452d388d593816f1ca2106f3 SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 Starscream: 5178aed56b316f13fa3bc55694e583d35dd414d9 SwiftyJSON: 2f33a42c6fbc52764d96f13368585094bfd8aa5e Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b - WatermelonDB: 6ae836b52d11281d87187ff2283480e44b111771 - Yoga: d56980c8914db0b51692f55533409e844b66133c + WatermelonDB: cd71a1085182aca9e5d2164b7af9ef2a3aaca571 + Yoga: f7decafdc5e8c125e6fa0da38a687e35238420fa YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 980bb39822b2de4def552692a288a1913387b1fb +PODFILE CHECKSUM: 25f07cb9e5eed8c84db8e8723000e8470c349058 COCOAPODS: 1.11.3 diff --git a/package.json b/package.json index 7b46f5475..75efde17b 100644 --- a/package.json +++ b/package.json @@ -1,152 +1,152 @@ { "name": "mattermost-mobile", - "version": "2.5.0", + "version": "2.5.1", "description": "Mattermost Mobile with React Native", "repository": "git@github.com:mattermost/mattermost-mobile.git", "author": "Mattermost, Inc.", "license": "Apache 2.0", "private": true, "dependencies": { - "@formatjs/intl-datetimeformat": "6.7.0", - "@formatjs/intl-getcanonicallocales": "2.1.0", - "@formatjs/intl-locale": "3.2.1", - "@formatjs/intl-numberformat": "8.4.1", - "@formatjs/intl-pluralrules": "5.2.1", - "@formatjs/intl-relativetimeformat": "11.2.1", - "@gorhom/bottom-sheet": "4.4.5", + "@formatjs/intl-datetimeformat": "6.10.0", + "@formatjs/intl-getcanonicallocales": "2.2.1", + "@formatjs/intl-locale": "3.3.2", + "@formatjs/intl-numberformat": "8.7.0", + "@formatjs/intl-pluralrules": "5.2.4", + "@formatjs/intl-relativetimeformat": "11.2.4", + "@gorhom/bottom-sheet": "4.4.7", "@mattermost/calls": "github:mattermost/calls-common#v0.14.0", "@mattermost/compass-icons": "0.1.36", "@mattermost/react-native-emm": "1.3.5", - "@mattermost/react-native-network-client": "1.3.3", + "@mattermost/react-native-network-client": "1.3.4", "@mattermost/react-native-paste-input": "0.6.2", "@mattermost/react-native-turbo-log": "0.2.3", "@msgpack/msgpack": "2.8.0", - "@nozbe/watermelondb": "0.25.5", - "@nozbe/with-observables": "1.4.1", - "@react-native-camera-roll/camera-roll": "5.3.1", + "@nozbe/watermelondb": "0.26.0", + "@nozbe/with-observables": "1.6.0", + "@react-native-camera-roll/camera-roll": "5.6.0", "@react-native-clipboard/clipboard": "1.11.2", - "@react-native-community/datetimepicker": "7.0.1", - "@react-native-community/netinfo": "9.3.9", + "@react-native-community/datetimepicker": "7.1.0", + "@react-native-community/netinfo": "9.3.10", "@react-native-cookies/cookies": "6.2.1", "@react-navigation/bottom-tabs": "6.5.7", "@react-navigation/native": "6.1.6", "@react-navigation/stack": "6.3.16", - "@rudderstack/rudder-sdk-react-native": "1.7.0", - "@sentry/react-native": "5.3.1", - "@stream-io/flat-list-mvcp": "0.10.2", + "@rudderstack/rudder-sdk-react-native": "1.7.1", + "@sentry/react-native": "5.6.0", + "@stream-io/flat-list-mvcp": "0.10.3", "base-64": "1.0.0", "commonmark": "npm:@mattermost/commonmark@0.30.1-0", "commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#2c660491041f7595f6ce5a05f6dc2e30ca769d3a", - "deep-equal": "2.2.0", + "deep-equal": "2.2.1", "deepmerge": "4.3.1", "emoji-regex": "10.2.1", "fuse.js": "6.6.2", - "html-entities": "2.3.3", + "html-entities": "2.3.6", "jail-monkey": "2.8.0", "mime-db": "1.52.0", "moment-timezone": "0.5.43", "pako": "2.1.0", "react": "18.2.0", "react-freeze": "1.0.3", - "react-intl": "6.4.1", - "react-native": "0.71.7", + "react-intl": "6.4.4", + "react-native": "0.71.11", "react-native-android-open-settings": "1.3.0", "react-native-background-timer": "2.4.1", - "react-native-button": "3.0.1", - "react-native-calendars": "1.1295.0", + "react-native-button": "3.1.0", + "react-native-calendars": "1.1298.0", "react-native-create-thumbnail": "1.6.4", "react-native-device-info": "10.6.0", - "react-native-document-picker": "8.2.0", + "react-native-document-picker": "9.0.1", "react-native-dotenv": "3.4.8", "react-native-elements": "3.4.3", "react-native-exception-handler": "2.10.10", "react-native-fast-image": "8.6.3", "react-native-file-viewer": "2.1.5", "react-native-fs": "2.20.0", - "react-native-gesture-handler": "2.9.0", + "react-native-gesture-handler": "2.12.0", "react-native-haptic-feedback": "2.0.3", "react-native-hw-keyboard-event": "0.0.4", - "react-native-image-picker": "5.3.1", + "react-native-image-picker": "5.4.2", "react-native-in-app-review": "4.3.3", "react-native-incall-manager": "4.0.1", "react-native-keyboard-aware-scroll-view": "0.9.5", "react-native-keyboard-tracking-view": "5.7.0", "react-native-keychain": "8.1.1", - "react-native-linear-gradient": "2.6.2", - "react-native-localize": "2.2.6", + "react-native-linear-gradient": "2.7.2", + "react-native-localize": "3.0.0", "react-native-math-view": "3.9.5", - "react-native-navigation": "7.32.1", - "react-native-notifications": "4.3.3", + "react-native-navigation": "7.33.4", + "react-native-notifications": "4.3.5", "react-native-permissions": "3.8.0", - "react-native-reanimated": "3.1.0", - "react-native-safe-area-context": "4.5.1", - "react-native-screens": "3.20.0", + "react-native-reanimated": "3.3.0", + "react-native-safe-area-context": "4.5.3", + "react-native-screens": "3.21.0", "react-native-section-list-get-item-layout": "2.2.3", - "react-native-shadow-2": "7.0.7", + "react-native-shadow-2": "7.0.8", "react-native-share": "8.2.2", "react-native-svg": "13.9.0", "react-native-vector-icons": "9.2.0", "react-native-video": "5.2.1", "react-native-walkthrough-tooltip": "1.5.0", - "react-native-webrtc": "111.0.0", - "react-native-webview": "12.0.2", + "react-native-webrtc": "111.0.1", + "react-native-webview": "13.2.2", "react-syntax-highlighter": "15.5.0", "readable-stream": "3.6.0", - "semver": "7.5.0", + "semver": "7.5.2", "serialize-error": "11.0.0", "shallow-equals": "1.0.0", "tinycolor2": "1.6.0", "url-parse": "1.5.10" }, "devDependencies": { - "@babel/cli": "7.21.0", - "@babel/core": "7.21.4", - "@babel/eslint-parser": "7.21.3", + "@babel/cli": "7.22.5", + "@babel/core": "7.22.5", + "@babel/eslint-parser": "7.22.5", "@babel/plugin-proposal-class-properties": "7.18.6", - "@babel/plugin-proposal-decorators": "7.21.0", - "@babel/plugin-transform-flow-strip-types": "7.21.0", - "@babel/plugin-transform-runtime": "7.21.4", - "@babel/preset-env": "7.21.4", - "@babel/preset-typescript": "7.21.4", - "@babel/register": "7.21.0", - "@babel/runtime": "7.21.0", + "@babel/plugin-proposal-decorators": "7.22.5", + "@babel/plugin-transform-flow-strip-types": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.5", + "@babel/preset-env": "7.22.5", + "@babel/preset-typescript": "7.22.5", + "@babel/register": "7.22.5", + "@babel/runtime": "7.22.5", "@react-native-community/eslint-config": "3.2.0", "@testing-library/react-hooks": "8.0.1", - "@testing-library/react-native": "12.0.1", + "@testing-library/react-native": "12.1.2", "@types/base-64": "1.0.0", "@types/commonmark": "0.27.6", "@types/commonmark-react-renderer": "4.3.1", "@types/deep-equal": "1.0.1", - "@types/jest": "29.5.1", - "@types/lodash": "4.14.194", + "@types/jest": "29.5.2", + "@types/lodash": "4.14.195", "@types/mime-db": "1.43.1", "@types/pako": "2.0.0", "@types/querystringify": "2.0.0", - "@types/react": "18.0.37", + "@types/react": "18.2.12", "@types/react-native-background-timer": "2.0.0", "@types/react-native-button": "3.0.1", "@types/react-native-dotenv": "0.2.0", "@types/react-native-share": "3.3.3", "@types/react-native-video": "5.0.14", - "@types/react-syntax-highlighter": "15.5.6", + "@types/react-syntax-highlighter": "15.5.7", "@types/react-test-renderer": "18.0.0", "@types/readable-stream": "2.3.15", - "@types/semver": "7.3.13", + "@types/semver": "7.5.0", "@types/shallow-equals": "1.0.0", "@types/tinycolor2": "1.4.3", "@types/tough-cookie": "4.0.2", "@types/url-parse": "1.4.8", - "@types/uuid": "9.0.1", - "@typescript-eslint/eslint-plugin": "5.59.0", - "@typescript-eslint/parser": "5.59.0", - "axios": "1.3.6", + "@types/uuid": "9.0.2", + "@typescript-eslint/eslint-plugin": "5.59.11", + "@typescript-eslint/parser": "5.59.11", + "axios": "1.4.0", "axios-cookiejar-support": "4.0.6", "babel-jest": "29.5.0", "babel-loader": "9.1.2", "babel-plugin-module-resolver": "5.0.0", "deep-freeze": "0.0.1", - "detox": "20.7.0", - "eslint": "8.38.0", + "detox": "20.9.1", + "eslint": "8.42.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.27.5", "eslint-plugin-jest": "27.2.1", @@ -157,17 +157,17 @@ "jest": "29.5.0", "jest-cli": "29.5.0", "jetifier": "2.0.0", - "metro-react-native-babel-preset": "0.76.2", + "metro-react-native-babel-preset": "0.76.6", "mmjstool": "github:mattermost/mattermost-utilities#e65ab00f22628cbdee736fd2e4f192f07225e82d", "mock-async-storage": "2.2.0", - "nock": "13.3.0", - "patch-package": "6.5.1", - "react-devtools-core": "4.27.6", + "nock": "13.3.1", + "patch-package": "7.0.0", + "react-devtools-core": "4.27.8", "react-native-svg-transformer": "1.0.0", "react-test-renderer": "18.2.0", - "tough-cookie": "4.1.2", + "tough-cookie": "4.1.3", "ts-jest": "29.1.0", - "typescript": "5.0.4", + "typescript": "5.1.3", "underscore": "1.13.6", "util": "0.12.5", "uuid": "9.0.0" diff --git a/patches/@nozbe+watermelondb+0.25.5.patch b/patches/@nozbe+watermelondb+0.25.5.patch deleted file mode 100644 index 514f2af36..000000000 --- a/patches/@nozbe+watermelondb+0.25.5.patch +++ /dev/null @@ -1,187 +0,0 @@ -diff --git a/node_modules/@nozbe/watermelondb/Database/index.js b/node_modules/@nozbe/watermelondb/Database/index.js -index 8d71c6f..7a4b570 100644 ---- a/node_modules/@nozbe/watermelondb/Database/index.js -+++ b/node_modules/@nozbe/watermelondb/Database/index.js -@@ -91,7 +91,9 @@ var Database = /*#__PURE__*/function () { - - if (!preparedState) { - (0, _common.invariant)('disposable' !== record._raw._status, "Cannot batch a disposable record"); -- throw new Error("Cannot batch a record that doesn't have a prepared create/update/delete"); -+ //throw new Error("Cannot batch a record that doesn't have a prepared create/update/delete"); -+ console.debug('Trying to batch a record with no prepared state on table', record.constructor.table) -+ return; - } - - var raw = record._raw; -@@ -126,6 +128,10 @@ var Database = /*#__PURE__*/function () { - // subsequent changes to the record don't trip up the invariant - // TODO: What if this fails? - record._preparedState = null; -+ -+ if ('update' === preparedState) { -+ record.__original = null; -+ } - } - - if (!changeNotifications[table]) { -diff --git a/node_modules/@nozbe/watermelondb/Model/index.d.ts b/node_modules/@nozbe/watermelondb/Model/index.d.ts -index 96114ec..ecfe3c1 100644 ---- a/node_modules/@nozbe/watermelondb/Model/index.d.ts -+++ b/node_modules/@nozbe/watermelondb/Model/index.d.ts -@@ -61,6 +61,8 @@ export default class Model { - // database.batch() - prepareUpdate(recordUpdater?: (_: this) => void): this - -+ cancelPrepareUpdate(): void -+ - prepareMarkAsDeleted(): this - - prepareDestroyPermanently(): this -diff --git a/node_modules/@nozbe/watermelondb/Model/index.js b/node_modules/@nozbe/watermelondb/Model/index.js -index b0e3a83..d5e730c 100644 ---- a/node_modules/@nozbe/watermelondb/Model/index.js -+++ b/node_modules/@nozbe/watermelondb/Model/index.js -@@ -81,7 +81,17 @@ var Model = /*#__PURE__*/function () { - _proto.prepareUpdate = function prepareUpdate(recordUpdater = _noop.default) { - var _this = this; - -- (0, _invariant.default)(!this._preparedState, "Cannot update a record with pending changes"); -+ if ('deleted' === this._raw._status) { -+ console.debug("Updating a deleted record in table " + _this.table) -+ return this; -+ } -+ -+ //(0, _invariant.default)(!this._preparedState, "Cannot update a record with pending changes"); -+ if (this._preparedState) { -+ console.debug("Updating a record with pending changes in table " + _this.table) -+ } else { -+ this.__original = Object.assign({}, this._raw); -+ } - - this.__ensureNotDisposable("Model.prepareUpdate()"); - -@@ -91,7 +101,6 @@ var Model = /*#__PURE__*/function () { - this._setRaw((0, _Schema.columnName)('updated_at'), Date.now()); - } // Perform updates - -- - (0, _ensureSync.default)(recordUpdater(this)); - this._isEditing = false; - this._preparedState = 'update'; // TODO: `process.nextTick` doesn't work on React Native -@@ -107,6 +116,21 @@ var Model = /*#__PURE__*/function () { - return this; - }; - -+ _proto.cancelPrepareUpdate = function cancelPrepareUpdate() { -+ var _this = this; -+ -+ if ('test' !== process.env.NODE_ENV && 'undefined' !== typeof process && process) { -+ (0, _invariant.default)('update' === _this._preparedState, "Cannot cancel an update on a model that has not been prepared in table " + _this.table); -+ } -+ this.__changes = null; -+ this._preparedState = null; -+ if (this.__original) { -+ this._raw = this.__original; -+ } -+ this.__original = undefined; -+ }; -+ -+ - _proto.prepareMarkAsDeleted = function prepareMarkAsDeleted() { - (0, _invariant.default)(!this._preparedState, "Cannot mark a record with pending changes as deleted"); - -@@ -118,7 +142,10 @@ var Model = /*#__PURE__*/function () { - }; - - _proto.prepareDestroyPermanently = function prepareDestroyPermanently() { -- (0, _invariant.default)(!this._preparedState, "Cannot destroy permanently a record with pending changes"); -+ //(0, _invariant.default)(!this._preparedState, "Cannot destroy permanently a record with pending changes"); -+ if (this._preparedState) { -+ console.debug("Deleting a record with pending changes in table " + this.table); -+ } - - this.__ensureNotDisposable("Model.prepareDestroyPermanently()"); - -diff --git a/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/Database.kt b/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/Database.kt -index ca31e20..764519f 100644 ---- a/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/Database.kt -+++ b/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/Database.kt -@@ -11,7 +11,7 @@ import java.io.File - class Database( - private val name: String, - private val context: Context, -- private val openFlags: Int = SQLiteDatabase.CREATE_IF_NECESSARY or SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING -+ private val openFlags: Int = SQLiteDatabase.CREATE_IF_NECESSARY - ) { - - private val db: SQLiteDatabase by lazy { -@@ -22,6 +22,21 @@ class Database( - if (name == ":memory:" || name.contains("mode=memory")) { - context.cacheDir.delete() - File(context.cacheDir, name).path -+ } else if (name.contains("/") || name.contains("file")) { -+ // Extracts the database name from the path -+ val dbName = name.substringAfterLast("/") -+ -+ // Extracts the real path where the *.db file will be created -+ val truePath = name.substringAfterLast("file://").substringBeforeLast("/") -+ -+ // Creates the directory -+ if (!truePath.contains("databases")) { -+ val fileObj = File(truePath, "databases") -+ fileObj.mkdir() -+ File("${truePath}/databases", dbName).path -+ } else { -+ File(truePath, dbName).path -+ } - } else { - // On some systems there is some kind of lock on `/databases` folder ¯\_(ツ)_/¯ - context.getDatabasePath("$name.db").path.replace("/databases", "") -diff --git a/node_modules/@nozbe/watermelondb/native/shared/Database.cpp b/node_modules/@nozbe/watermelondb/native/shared/Database.cpp -index 1a1cabf..c4459c8 100644 ---- a/node_modules/@nozbe/watermelondb/native/shared/Database.cpp -+++ b/node_modules/@nozbe/watermelondb/native/shared/Database.cpp -@@ -21,7 +21,7 @@ Database::Database(jsi::Runtime *runtime, std::string path, bool usesExclusiveLo - executeMultiple("pragma temp_store = memory;"); - #endif - -- executeMultiple("pragma journal_mode = WAL;"); -+// executeMultiple("pragma journal_mode = WAL;"); - - #ifdef ANDROID - // NOTE: This was added in an attempt to fix mysterious `database disk image is malformed` issue when using -@@ -54,6 +54,7 @@ void Database::destroy() { - const std::lock_guard lock(mutex_); - - if (isDestroyed_) { -+ db_->markAsDestroyed(); - return; - } - isDestroyed_ = true; -diff --git a/node_modules/@nozbe/watermelondb/native/shared/Sqlite.cpp b/node_modules/@nozbe/watermelondb/native/shared/Sqlite.cpp -index e740c29..6963734 100644 ---- a/node_modules/@nozbe/watermelondb/native/shared/Sqlite.cpp -+++ b/node_modules/@nozbe/watermelondb/native/shared/Sqlite.cpp -@@ -67,6 +67,10 @@ void SqliteDb::destroy() { - } - } - -+void SqliteDb::markAsDestroyed() { -+ isDestroyed_ = true; -+} -+ - SqliteDb::~SqliteDb() { - destroy(); - } -diff --git a/node_modules/@nozbe/watermelondb/native/shared/Sqlite.h b/node_modules/@nozbe/watermelondb/native/shared/Sqlite.h -index 22cffa7..4b74a7f 100644 ---- a/node_modules/@nozbe/watermelondb/native/shared/Sqlite.h -+++ b/node_modules/@nozbe/watermelondb/native/shared/Sqlite.h -@@ -11,6 +11,7 @@ public: - SqliteDb(std::string path); - ~SqliteDb(); - void destroy(); -+ void markAsDestroyed(); - - sqlite3 *sqlite; - diff --git a/patches/@nozbe+watermelondb+0.26.0.patch b/patches/@nozbe+watermelondb+0.26.0.patch new file mode 100644 index 000000000..620fee4b1 --- /dev/null +++ b/patches/@nozbe+watermelondb+0.26.0.patch @@ -0,0 +1,245 @@ +diff --git a/node_modules/@nozbe/watermelondb/Database/index.js b/node_modules/@nozbe/watermelondb/Database/index.js +index fa82516..97ba290 100644 +--- a/node_modules/@nozbe/watermelondb/Database/index.js ++++ b/node_modules/@nozbe/watermelondb/Database/index.js +@@ -91,7 +91,9 @@ var Database = /*#__PURE__*/function () { + var preparedState = record._preparedState; + if (!preparedState) { + (0, _common.invariant)('disposable' !== record._raw._status, "Cannot batch a disposable record"); +- throw new Error("Cannot batch a record that doesn't have a prepared create/update/delete"); ++ // throw new Error("Cannot batch a record that doesn't have a prepared create/update/delete"); ++ console.debug('Trying to batch a record with no prepared state on table', record.constructor.table); ++ return; + } + var raw = record._raw; + var { +@@ -122,6 +124,10 @@ var Database = /*#__PURE__*/function () { + // subsequent changes to the record don't trip up the invariant + // TODO: What if this fails? + record._preparedState = null; ++ ++ if ('update' === preparedState) { ++ record.__original = null; ++ } + } + if (!changeNotifications[table]) { + changeNotifications[table] = []; +diff --git a/node_modules/@nozbe/watermelondb/Model/index.d.ts b/node_modules/@nozbe/watermelondb/Model/index.d.ts +index 96114ec..ecfe3c1 100644 +--- a/node_modules/@nozbe/watermelondb/Model/index.d.ts ++++ b/node_modules/@nozbe/watermelondb/Model/index.d.ts +@@ -61,6 +61,8 @@ export default class Model { + // database.batch() + prepareUpdate(recordUpdater?: (_: this) => void): this + ++ cancelPrepareUpdate(): void ++ + prepareMarkAsDeleted(): this + + prepareDestroyPermanently(): this +diff --git a/node_modules/@nozbe/watermelondb/Model/index.js b/node_modules/@nozbe/watermelondb/Model/index.js +index 10ee0a5..3d0bf77 100644 +--- a/node_modules/@nozbe/watermelondb/Model/index.js ++++ b/node_modules/@nozbe/watermelondb/Model/index.js +@@ -80,7 +80,17 @@ var Model = /*#__PURE__*/function () { + */; + _proto.prepareUpdate = function prepareUpdate(recordUpdater = _noop.default) { + var _this = this; +- (0, _invariant.default)(!this._preparedState, "Cannot update a record with pending changes"); ++ if ('deleted' === this._raw._status) { ++ console.debug("Updating a deleted record in table " + _this.table); ++ return this; ++ } ++ ++ // (0, _invariant.default)(!this._preparedState, "Cannot update a record with pending changes"); ++ if (this._preparedState) { ++ console.debug("Updating a record with pending changes in table " + _this.table) ++ } else { ++ this.__original = Object.assign({}, this._raw); ++ } + this.__ensureNotDisposable("Model.prepareUpdate()"); + this._isEditing = true; + +@@ -125,6 +135,21 @@ var Model = /*#__PURE__*/function () { + }.bind(this)); + } + ++ _proto.cancelPrepareUpdate = function cancelPrepareUpdate() { ++ var _this = this; ++ ++ if ('test' !== process.env.NODE_ENV && 'undefined' !== typeof process && process) { ++ (0, _invariant.default)('update' === _this._preparedState, "Cannot cancel an update on a model that has not been prepared in table " + _this.table); ++ } ++ ++ this.__changes = null; ++ this._preparedState = null; ++ if (this.__original) { ++ this._raw = this.__original; ++ } ++ this.__original = undefined; ++ } ++ + /** + * Prepares record to be marked as deleted + * +@@ -173,7 +198,10 @@ var Model = /*#__PURE__*/function () { + * @see {Database#batch} + */; + _proto.prepareDestroyPermanently = function prepareDestroyPermanently() { +- (0, _invariant.default)(!this._preparedState, "Cannot destroy permanently a record with pending changes"); ++ // (0, _invariant.default)(!this._preparedState, "Cannot destroy permanently a record with pending changes"); ++ if (this._preparedState) { ++ console.debug("Deleting a record with pending changes in table " + this.table); ++ } + this.__ensureNotDisposable("Model.prepareDestroyPermanently()"); + this._raw._status = 'deleted'; + this._preparedState = 'destroyPermanently'; +diff --git a/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/Database.kt b/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/Database.kt +index b7f750d..56dd558 100644 +--- a/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/Database.kt ++++ b/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/Database.kt +@@ -19,8 +19,7 @@ class Database private constructor(private val db: SQLiteDatabase) { + fun getInstance( + name: String, + context: Context, +- openFlags: Int = SQLiteDatabase.CREATE_IF_NECESSARY or +- SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING ++ openFlags: Int = SQLiteDatabase.CREATE_IF_NECESSARY + ): Database = + synchronized(this) { + if (INSTANCES[name]?.isOpen != true) { +@@ -37,8 +36,7 @@ class Database private constructor(private val db: SQLiteDatabase) { + fun buildDatabase( + name: String, + context: Context, +- openFlags: Int = SQLiteDatabase.CREATE_IF_NECESSARY or +- SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING ++ openFlags: Int = SQLiteDatabase.CREATE_IF_NECESSARY + ) = Database(createSQLiteDatabase(name, context, openFlags)) + + private fun createSQLiteDatabase( +@@ -50,6 +48,21 @@ class Database private constructor(private val db: SQLiteDatabase) { + if (name == ":memory:" || name.contains("mode=memory")) { + context.cacheDir.delete() + File(context.cacheDir, name).path ++ } else if (name.contains("/") || name.contains("file")) { ++ // Extracts the database name from the path ++ val dbName = name.substringAfterLast("/") ++ ++ // Extracts the real path where the *.db file will be created ++ val truePath = name.substringAfterLast("file://").substringBeforeLast("/") ++ ++ // Creates the directory ++ if (!truePath.contains("databases")) { ++ val fileObj = File(truePath, "databases") ++ fileObj.mkdir() ++ File("${truePath}/databases", dbName).path ++ } else { ++ File(truePath, dbName).path ++ } + } else { + // On some systems there is some kind of lock on `/databases` folder ¯\_(ツ)_/¯ + context.getDatabasePath("$name.db").path.replace("/databases", "") +diff --git a/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/WMDatabase.java b/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/WMDatabase.java +index 2f170e0..01e7450 100644 +--- a/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/WMDatabase.java ++++ b/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/WMDatabase.java +@@ -11,6 +11,8 @@ import java.util.Arrays; + import java.util.HashMap; + import java.util.Map; + ++import kotlin.text.StringsKt; ++ + public class WMDatabase { + private final SQLiteDatabase db; + +@@ -21,7 +23,7 @@ public class WMDatabase { + public static Map INSTANCES = new HashMap<>(); + + public static WMDatabase getInstance(String name, Context context) { +- return getInstance(name, context, SQLiteDatabase.CREATE_IF_NECESSARY | SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING); ++ return getInstance(name, context, SQLiteDatabase.CREATE_IF_NECESSARY); + } + + public static WMDatabase getInstance(String name, Context context, int openFlags) { +@@ -47,6 +49,22 @@ public class WMDatabase { + if (name.equals(":memory:") || name.contains("mode=memory")) { + context.getCacheDir().delete(); + path = new File(context.getCacheDir(), name).getPath(); ++ } else if (name.contains("/") || name.contains("file")) { ++ // Extracts the database name from the path ++ String dbName = StringsKt.substringAfterLast(name, "/", ""); ++ ++ // Extracts the real path where the *.db file will be created ++ String truePath = StringsKt.substringAfterLast(name, "file://", ""); ++ truePath = StringsKt.substringBeforeLast(truePath, "/", ""); ++ ++ // Creates the directory ++ if (!truePath.contains("databases")) { ++ File fileObj = new File(truePath, "databases"); ++ fileObj.mkdir(); ++ path = new File("" + truePath + "/databases", dbName).getPath(); ++ } else { ++ path = new File(truePath, dbName).getPath(); ++ } + } else { + // On some systems there is some kind of lock on `/databases` folder ¯\_(ツ)_/¯ + path = context.getDatabasePath("" + name + ".db").getPath().replace("/databases", ""); +diff --git a/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/WMDatabaseDriver.java b/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/WMDatabaseDriver.java +index 1534830..d9a5217 100644 +--- a/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/WMDatabaseDriver.java ++++ b/node_modules/@nozbe/watermelondb/native/android/src/main/java/com/nozbe/watermelondb/WMDatabaseDriver.java +@@ -55,11 +55,9 @@ public class WMDatabaseDriver { + + public WMDatabaseDriver(Context context, String dbName, boolean unsafeNativeReuse) { + this.database = unsafeNativeReuse ? WMDatabase.getInstance(dbName, context, +- SQLiteDatabase.CREATE_IF_NECESSARY | +- SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) : ++ SQLiteDatabase.CREATE_IF_NECESSARY) : + WMDatabase.buildDatabase(dbName, context, +- SQLiteDatabase.CREATE_IF_NECESSARY | +- SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING); ++ SQLiteDatabase.CREATE_IF_NECESSARY); + if (BuildConfig.DEBUG) { + this.log = Logger.getLogger("DB_Driver"); + } else { +diff --git a/node_modules/@nozbe/watermelondb/native/shared/Database.cpp b/node_modules/@nozbe/watermelondb/native/shared/Database.cpp +index 8a4e9b4..06acfb1 100644 +--- a/node_modules/@nozbe/watermelondb/native/shared/Database.cpp ++++ b/node_modules/@nozbe/watermelondb/native/shared/Database.cpp +@@ -20,7 +20,7 @@ Database::Database(jsi::Runtime *runtime, std::string path, bool usesExclusiveLo + initSql += "pragma temp_store = memory;"; + #endif + +- initSql += "pragma journal_mode = WAL;"; ++ // initSql += "pragma journal_mode = WAL;"; + + // set timeout before SQLITE_BUSY error is returned + initSql += "pragma busy_timeout = 5000;"; +diff --git a/node_modules/@nozbe/watermelondb/native/shared/Sqlite.cpp b/node_modules/@nozbe/watermelondb/native/shared/Sqlite.cpp +index e08153b..2fca075 100644 +--- a/node_modules/@nozbe/watermelondb/native/shared/Sqlite.cpp ++++ b/node_modules/@nozbe/watermelondb/native/shared/Sqlite.cpp +@@ -72,6 +72,10 @@ void SqliteDb::destroy() { + consoleLog("Database closed."); + } + ++void SqliteDb::markAsDestroyed() { ++ isDestroyed_ = true; ++} ++ + SqliteDb::~SqliteDb() { + destroy(); + } +diff --git a/node_modules/@nozbe/watermelondb/native/shared/Sqlite.h b/node_modules/@nozbe/watermelondb/native/shared/Sqlite.h +index 22cffa7..4b74a7f 100644 +--- a/node_modules/@nozbe/watermelondb/native/shared/Sqlite.h ++++ b/node_modules/@nozbe/watermelondb/native/shared/Sqlite.h +@@ -11,6 +11,7 @@ public: + SqliteDb(std::string path); + ~SqliteDb(); + void destroy(); ++ void markAsDestroyed(); + + sqlite3 *sqlite; + diff --git a/patches/@react-native-community+netinfo+9.3.9.patch b/patches/@react-native-community+netinfo+9.3.10.patch similarity index 100% rename from patches/@react-native-community+netinfo+9.3.9.patch rename to patches/@react-native-community+netinfo+9.3.10.patch diff --git a/patches/@rudderstack+rudder-sdk-react-native+1.7.0.patch b/patches/@rudderstack+rudder-sdk-react-native+1.7.1.patch similarity index 100% rename from patches/@rudderstack+rudder-sdk-react-native+1.7.0.patch rename to patches/@rudderstack+rudder-sdk-react-native+1.7.1.patch diff --git a/patches/@sentry+utils+7.47.0.patch b/patches/@sentry+utils+7.54.0.patch similarity index 100% rename from patches/@sentry+utils+7.47.0.patch rename to patches/@sentry+utils+7.54.0.patch diff --git a/patches/@stream-io+flat-list-mvcp+0.10.2.patch b/patches/@stream-io+flat-list-mvcp+0.10.2.patch deleted file mode 100644 index 302e176fd..000000000 --- a/patches/@stream-io+flat-list-mvcp+0.10.2.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/@stream-io/flat-list-mvcp/android/build.gradle b/node_modules/@stream-io/flat-list-mvcp/android/build.gradle -index 1cad8fd..b0b564f 100644 ---- a/node_modules/@stream-io/flat-list-mvcp/android/build.gradle -+++ b/node_modules/@stream-io/flat-list-mvcp/android/build.gradle -@@ -29,7 +29,7 @@ android { - compileSdkVersion getExtOrIntegerDefault('compileSdkVersion') - buildToolsVersion getExtOrDefault('buildToolsVersion') - defaultConfig { -- minSdkVersion 16 -+ minSdkVersion rootProject.hasProperty('minSdkVersion') ? rootProject.minSdkVersion : 21 - targetSdkVersion getExtOrIntegerDefault('targetSdkVersion') - versionCode 1 - versionName "1.0" diff --git a/patches/@types+react-syntax-highlighter+15.5.6.patch b/patches/@types+react-syntax-highlighter+15.5.7.patch similarity index 100% rename from patches/@types+react-syntax-highlighter+15.5.6.patch rename to patches/@types+react-syntax-highlighter+15.5.7.patch diff --git a/patches/react-native+0.71.7.patch b/patches/react-native+0.71.11.patch similarity index 100% rename from patches/react-native+0.71.7.patch rename to patches/react-native+0.71.11.patch diff --git a/patches/react-native-button+3.0.1.patch b/patches/react-native-button+3.0.1.patch deleted file mode 100644 index d8f5c37b0..000000000 --- a/patches/react-native-button+3.0.1.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff --git a/node_modules/react-native-button/Button.js b/node_modules/react-native-button/Button.js -index b248176..3d2455c 100644 ---- a/node_modules/react-native-button/Button.js -+++ b/node_modules/react-native-button/Button.js -@@ -7,8 +7,8 @@ import { - TouchableOpacity, - TouchableNativeFeedback, - View, -- ViewPropTypes - } from 'react-native'; -+import {ViewPropTypes, TextPropTypes} from 'deprecated-react-native-prop-types'; - - import coalesceNonElementChildren from './coalesceNonElementChildren'; - -@@ -18,12 +18,12 @@ export default class Button extends Component { - static propTypes = { - ...TouchableOpacity.propTypes, - accessibilityLabel: PropTypes.string, -- allowFontScaling: Text.propTypes.allowFontScaling, -+ allowFontScaling: TextPropTypes.allowFontScaling, - containerStyle: ViewPropTypes.style, - disabledContainerStyle: ViewPropTypes.style, - disabled: PropTypes.bool, -- style: Text.propTypes.style, -- styleDisabled: Text.propTypes.style, -+ style: TextPropTypes.style, -+ styleDisabled: TextPropTypes.style, - childGroupStyle: ViewPropTypes.style, - androidBackground: PropTypes.object, - }; -@@ -71,7 +71,6 @@ export default class Button extends Component { - } - - return ( -- - -- -- {this._renderGroupedChildren()} -+ -+ -+ {this._renderGroupedChildren()} -+ - - -- - ); - } - } diff --git a/patches/react-native-button+3.1.0.patch b/patches/react-native-button+3.1.0.patch new file mode 100644 index 000000000..c6d828ea0 --- /dev/null +++ b/patches/react-native-button+3.1.0.patch @@ -0,0 +1,36 @@ +diff --git a/node_modules/react-native-button/Button.js b/node_modules/react-native-button/Button.js +index 05fa1e6..dc9c781 100644 +--- a/node_modules/react-native-button/Button.js ++++ b/node_modules/react-native-button/Button.js +@@ -74,19 +74,19 @@ export default class Button extends Component { + } + + return ( +- +- +- +- {this._renderGroupedChildren()} ++ ++ ++ ++ {this._renderGroupedChildren()} ++ + +- +- ++ + ); + } + } diff --git a/patches/react-native-navigation+7.32.1.patch b/patches/react-native-navigation+7.33.4.patch similarity index 100% rename from patches/react-native-navigation+7.32.1.patch rename to patches/react-native-navigation+7.33.4.patch diff --git a/patches/react-native-notifications+4.3.3.patch b/patches/react-native-notifications+4.3.5.patch similarity index 96% rename from patches/react-native-notifications+4.3.3.patch rename to patches/react-native-notifications+4.3.5.patch index 78a8b20ee..be29889c1 100644 --- a/patches/react-native-notifications+4.3.3.patch +++ b/patches/react-native-notifications+4.3.5.patch @@ -231,31 +231,28 @@ index 0d70024..47b962e 100644 PushNotificationProps asProps(); } diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java -index eade08d..91d42ee 100644 +index ac04274..4ccb427 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java +++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java -@@ -8,6 +8,10 @@ import android.content.Context; - import android.content.Intent; - import android.os.Build; +@@ -10,6 +10,9 @@ import android.os.Build; import android.os.Bundle; -+import android.util.Log; -+ + import android.util.Log; + +import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationManagerCompat; - ++ import com.facebook.react.bridge.ReactContext; import com.wix.reactnativenotifications.core.AppLaunchHelper; -@@ -17,7 +21,9 @@ import com.wix.reactnativenotifications.core.AppLifecycleFacadeHolder; + import com.wix.reactnativenotifications.core.AppLifecycleFacade; +@@ -18,6 +21,7 @@ import com.wix.reactnativenotifications.core.AppLifecycleFacadeHolder; import com.wix.reactnativenotifications.core.InitialNotificationHolder; import com.wix.reactnativenotifications.core.JsIOHelper; import com.wix.reactnativenotifications.core.NotificationIntentAdapter; +import com.wix.reactnativenotifications.core.helpers.ScheduleNotificationHelper; -+import static com.wix.reactnativenotifications.Defs.LOGTAG; import static com.wix.reactnativenotifications.Defs.NOTIFICATION_OPENED_EVENT_NAME; import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_EVENT_NAME; - import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_BACKGROUND_EVENT_NAME; -@@ -28,7 +34,7 @@ public class PushNotification implements IPushNotification { +@@ -30,7 +34,7 @@ public class PushNotification implements IPushNotification { final protected AppLifecycleFacade mAppLifecycleFacade; final protected AppLaunchHelper mAppLaunchHelper; final protected JsIOHelper mJsIOHelper; @@ -264,7 +261,7 @@ index eade08d..91d42ee 100644 final protected AppVisibilityListener mAppVisibilityListener = new AppVisibilityListener() { @Override public void onAppVisible() { -@@ -61,7 +67,7 @@ public class PushNotification implements IPushNotification { +@@ -63,7 +67,7 @@ public class PushNotification implements IPushNotification { } @Override @@ -273,8 +270,8 @@ index eade08d..91d42ee 100644 if (!mAppLifecycleFacade.isAppVisible()) { postNotification(null); notifyReceivedBackgroundToJS(); -@@ -70,6 +76,42 @@ public class PushNotification implements IPushNotification { - } +@@ -87,6 +91,41 @@ public class PushNotification implements IPushNotification { + return mNotificationProps.copy(); } + @Override @@ -312,11 +309,10 @@ index eade08d..91d42ee 100644 + return postNotification(notificationId); + } + -+ - @Override - public void onOpened() { - digestNotification(); -@@ -140,21 +182,22 @@ public class PushNotification implements IPushNotification { + protected int postNotification(Integer notificationId) { + if (mNotificationProps.isDataOnlyPushNotification()) { + return -1; +@@ -142,21 +181,22 @@ public class PushNotification implements IPushNotification { } protected Notification buildNotification(PendingIntent intent) { @@ -344,7 +340,7 @@ index eade08d..91d42ee 100644 String channelId = mNotificationProps.getChannelId(); NotificationChannel channel = notificationManager.getNotificationChannel(channelId); notification.setChannelId(channel != null ? channelId : DEFAULT_CHANNEL_ID); -@@ -163,7 +206,7 @@ public class PushNotification implements IPushNotification { +@@ -165,7 +205,7 @@ public class PushNotification implements IPushNotification { return notification; } @@ -353,7 +349,7 @@ index eade08d..91d42ee 100644 int iconResId = getAppResourceId("notification_icon", "drawable"); if (iconResId != 0) { notification.setSmallIcon(iconResId); -@@ -174,7 +217,7 @@ public class PushNotification implements IPushNotification { +@@ -176,7 +216,7 @@ public class PushNotification implements IPushNotification { setUpIconColor(notification); } @@ -362,7 +358,7 @@ index eade08d..91d42ee 100644 int colorResID = getAppResourceId("colorAccent", "color"); if (colorResID != 0) { int color = mContext.getResources().getColor(colorResID); -@@ -189,7 +232,7 @@ public class PushNotification implements IPushNotification { +@@ -191,7 +231,7 @@ public class PushNotification implements IPushNotification { } protected void postNotification(int id, Notification notification) { diff --git a/patches/react-native-reanimated+3.1.0.patch b/patches/react-native-reanimated+3.3.0.patch similarity index 91% rename from patches/react-native-reanimated+3.1.0.patch rename to patches/react-native-reanimated+3.3.0.patch index f508f5662..5f4cf2898 100644 --- a/patches/react-native-reanimated+3.1.0.patch +++ b/patches/react-native-reanimated+3.3.0.patch @@ -1,8 +1,8 @@ diff --git a/node_modules/react-native-reanimated/src/reanimated2/mutables.ts b/node_modules/react-native-reanimated/src/reanimated2/mutables.ts -index ec14293..3c34327 100644 +index 90de1f1..ae59355 100644 --- a/node_modules/react-native-reanimated/src/reanimated2/mutables.ts +++ b/node_modules/react-native-reanimated/src/reanimated2/mutables.ts -@@ -96,25 +96,25 @@ export function makeMutable( +@@ -95,25 +95,25 @@ export function makeMutable( } return value; }, @@ -46,4 +46,4 @@ index ec14293..3c34327 100644 + // }, modify: (modifier: (value: T) => T) => { runOnUI(() => { - 'worklet'; + mutable.value = modifier(mutable.value); diff --git a/share_extension/screens/channels.tsx b/share_extension/screens/channels.tsx index 7d6e27351..5d361d938 100644 --- a/share_extension/screens/channels.tsx +++ b/share_extension/screens/channels.tsx @@ -1,7 +1,9 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import React, {useMemo, useState} from 'react'; +import {useNavigation} from '@react-navigation/native'; +import React, {useEffect, useMemo, useState} from 'react'; +import {useIntl} from 'react-intl'; import {View} from 'react-native'; import SearchBar from '@components/search'; @@ -39,6 +41,14 @@ const Channels = ({theme}: Props) => { const styles = getStyles(theme); const [term, setTerm] = useState(''); const color = useMemo(() => changeOpacity(theme.centerChannelColor, 0.72), [theme]); + const navigator = useNavigation(); + const intl = useIntl(); + + useEffect(() => { + navigator.setOptions({ + title: intl.formatMessage({id: 'share_extension.channels_screen.title', defaultMessage: 'Select channel'}), + }); + }, [intl.locale]); const cancelButtonProps = useMemo(() => ({ color, diff --git a/share_extension/screens/share.tsx b/share_extension/screens/share.tsx index 4d4431a3d..4a0e64fe7 100644 --- a/share_extension/screens/share.tsx +++ b/share_extension/screens/share.tsx @@ -4,8 +4,9 @@ import withObservables from '@nozbe/with-observables'; import {useNavigation} from '@react-navigation/native'; import React, {useEffect, useMemo} from 'react'; -import {useIntl} from 'react-intl'; +import {defineMessages, useIntl} from 'react-intl'; import {StyleSheet, View} from 'react-native'; +import DeviceInfo from 'react-native-device-info'; import {from as from$} from 'rxjs'; import DatabaseManager from '@database/manager'; @@ -18,6 +19,21 @@ import PostButton from '@share/components/header/post_button'; import {hasChannels} from '@share/queries'; import {setShareExtensionState, useShareExtensionServerUrl} from '@share/state'; +export const errorScreenMessages = defineMessages({ + label: { + id: 'share_extension.error_screen.label', + defaultMessage: 'An error ocurred', + }, + description: { + id: 'share_extension.error_screen.description', + defaultMessage: 'There was an error when attempting to share the content to {applicationName}.', + }, + reason: { + id: 'share_extension.error_screen.reason', + defaultMessage: 'Reason: {reason}', + }, +}); + type Props = { hasChannelMemberships: boolean; initialServerUrl: string; @@ -52,8 +68,14 @@ const ShareScreen = ({hasChannelMemberships, initialServerUrl, files, linkPrevie }, [serverUrl]); useEffect(() => { + const applicationName = DeviceInfo.getApplicationName(); navigator.setOptions({ - title: intl.formatMessage({id: 'share_extension.share_screen.title', defaultMessage: 'Share to Mattermost'}), + title: intl.formatMessage({ + id: 'share_extension.share_screen.title', + defaultMessage: 'Share to {applicationName}', + }, + {applicationName}, + ), }); }, [intl.locale]); diff --git a/test/setup.ts b/test/setup.ts index 741d98567..302862545 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -3,12 +3,16 @@ /* eslint-disable react/no-multi-comp */ +import {setGenerator} from '@nozbe/watermelondb/utils/common/randomId'; import * as ReactNative from 'react-native'; import 'react-native-gesture-handler/jestSetup'; import mockSafeAreaContext from 'react-native-safe-area-context/jest/mock'; +import {v4 as uuidv4} from 'uuid'; import type {ReadDirItem, StatResult} from 'react-native-fs'; +setGenerator(uuidv4); + require('isomorphic-fetch'); const WebViewMock = () => { @@ -19,6 +23,8 @@ jest.mock('react-native-webview', () => ({ WebView: WebViewMock, })); +jest.mock('@nozbe/watermelondb/utils/common/randomId/randomId', () => ({})); + /* eslint-disable no-console */ jest.mock('@database/manager'); jest.doMock('react-native', () => {