From 374f812b98280bbf0d629a829ccfba707e42fab7 Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Mon, 7 Apr 2025 09:30:06 +0800 Subject: [PATCH] Update dependencies (#8721) * update fastlane * update dev dependencies * update to eslint 9+ * update testing-library * update react-intl * update bottom-sheet * update expo * update reanimated * upgrade msgpack * upgrade datepicker * upgrade react-navigation * update sentry * update FlasList * update fuse.js moment-timezone node-html-parser and semver * update gesture-handler * update image-picker * update react-native-keychain * update react-native-localize * update react-native-navigation * update watermelonDB * update react-native-permissions * update react-native-safe-area-context and react-native-screens * update react-native-share and react-native-svg * update react-native-video and react-native-webrtc * update @mattermost/rnutils * update @mattermost/rnshare * update @mattermost/hardware-keyboard * fix isMainActivity * update android dependencies * fix upload file progress indicator * fix entry update config & license * revert to stable version of @sentry/react-native * update react-intl again * update moment-timezone * upgrade @react-native-camera-roll/camera-roll * update @react-native-clipboard/clipboard * update @react-navigation again * update @shopify/flash-list * update eslint * update expo again * update html-entities * update mime-db * update react-native-permissions * Revert "update react-intl again" This reverts commit e8e6d5a60dfa56b82b810cbbd7cdffec7697ffc7. * Revert "update react-intl" This reverts commit c77f329bb38910aeeba03869b72d77a8b0e00ba1. * update react-native-keychain * update and patch react-intl * mend * feedback during review 1 --- .eslintrc.json | 115 - android/app/build.gradle | 18 +- .../rnbeta/CustomPushNotification.kt | 2 +- android/build.gradle | 2 +- android/buildscript-gradle.lockfile | 217 +- app/actions/remote/entry/common.ts | 2 +- app/components/files/files.test.tsx | 24 +- .../markdown/markdown_list/index.tsx | 4 +- app/components/option_item/index.tsx | 16 +- .../quick_actions/file_quick_action/index.tsx | 2 +- .../post_draft/uploads/upload_item/index.tsx | 9 +- app/components/post_list/post/post.test.tsx | 26 +- app/components/post_list/post_list.test.tsx | 8 +- app/components/post_list/post_list.tsx | 4 - .../thread_overview.test.tsx.snap | 8 +- app/components/progress_bar/index.tsx | 5 +- .../server_icon/server_icon.test.tsx | 20 +- app/context/server/index.tsx | 16 +- app/hooks/header.ts | 2 +- app/hooks/useCollapsibleHeader.test.tsx | 12 +- .../calls/connection/websocket_client.test.ts | 2 +- .../calls/connection/websocket_client.ts | 2 +- app/products/calls/state/actions.test.ts | 37 +- .../categories_list/index.test.tsx | 36 +- .../home/channel_list/channel_list.test.tsx | 10 +- app/screens/home/search/search.test.tsx | 35 +- app/utils/helpers.ts | 2 +- app/utils/log.test.ts | 6 + app/utils/log.ts | 15 +- eslint.config.mjs | 143 + eslint/eslint-mattermost.json | 505 --- eslint/eslint-mattermost.mjs | 224 ++ eslint/eslint-react.json | 123 - eslint/eslint-react.mjs | 58 + fastlane/Gemfile.lock | 55 +- ios/Podfile.lock | 172 +- .../hardware-keyboard/android/build.gradle | 2 +- .../MattermostHardwareKeyboardPackage.kt | 8 +- .../@mattermost/rnshare/android/build.gradle | 4 +- .../rnshare/MattermostSharePackage.kt | 8 +- .../java/com/mattermost/rnshare/ShareUtils.kt | 3 +- .../com/mattermost/rnshare/ShareWorker.kt | 9 +- .../@mattermost/rnutils/android/build.gradle | 8 +- .../mattermost/rnutils/RNUtilsModuleImpl.kt | 8 +- .../com/mattermost/rnutils/RNUtilsPackage.kt | 8 +- .../rnutils/helpers/FoldableObserver.kt | 6 +- .../rnutils/helpers/NotificationHelper.kt | 17 +- .../rnutils/helpers/RealPathUtil.kt | 15 +- .../rnutils/helpers/SaveDataTask.kt | 11 +- .../mattermost/rnutils/helpers/SplitView.kt | 2 +- .../android/src/newarch/RNUtilsModule.kt | 2 +- .../android/src/oldarch/RNUtilsModule.kt | 2 +- package-lock.json | 3418 ++++++++++------- package.json | 149 +- ...patch => @gorhom+bottom-sheet+5.1.2.patch} | 0 ...tch => @nozbe+watermelondb+0.28.0-2.patch} | 0 ....patch => @shopify+flash-list+1.7.6.patch} | 0 ...age+2.0.4.patch => expo-image+2.0.6.patch} | 0 ....2.patch => expo-modules-core+2.2.3.patch} | 0 ...atch => expo-video-thumbnails+9.0.3.patch} | 0 ...po+52.0.2.patch => jest-expo+52.0.6.patch} | 0 patches/react-intl+7.1.8.patch | 13 + ...tch => react-native-keychain+10.0.0.patch} | 75 +- ...h => react-native-navigation+7.44.0.patch} | 213 +- ...h => react-native-reanimated+3.17.1.patch} | 0 ...eact-native-safe-area-context+5.3.0.patch} | 0 ....patch => react-native-share+12.0.9.patch} | 0 ...1.patch => react-native-svg+15.11.2.patch} | 0 ...atch => react-native-webrtc+124.0.5.patch} | 0 test/setup.ts | 43 +- types/launch/index.ts | 4 +- types/screens/gallery.ts | 18 +- 72 files changed, 3128 insertions(+), 2855 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs delete mode 100644 eslint/eslint-mattermost.json create mode 100644 eslint/eslint-mattermost.mjs delete mode 100644 eslint/eslint-react.json create mode 100644 eslint/eslint-react.mjs rename patches/{@gorhom+bottom-sheet+5.0.6.patch => @gorhom+bottom-sheet+5.1.2.patch} (100%) rename patches/{@nozbe+watermelondb+0.28.0-1.patch => @nozbe+watermelondb+0.28.0-2.patch} (100%) rename patches/{@shopify+flash-list+1.7.3.patch => @shopify+flash-list+1.7.6.patch} (100%) rename patches/{expo-image+2.0.4.patch => expo-image+2.0.6.patch} (100%) rename patches/{expo-modules-core+2.1.2.patch => expo-modules-core+2.2.3.patch} (100%) rename patches/{expo-video-thumbnails+9.0.2.patch => expo-video-thumbnails+9.0.3.patch} (100%) rename patches/{jest-expo+52.0.2.patch => jest-expo+52.0.6.patch} (100%) create mode 100644 patches/react-intl+7.1.8.patch rename patches/{react-native-keychain+9.2.2.patch => react-native-keychain+10.0.0.patch} (68%) rename patches/{react-native-navigation+7.40.3.patch => react-native-navigation+7.44.0.patch} (70%) rename patches/{react-native-reanimated+3.16.5.patch => react-native-reanimated+3.17.1.patch} (100%) rename patches/{react-native-safe-area-context+5.0.0.patch => react-native-safe-area-context+5.3.0.patch} (100%) rename patches/{react-native-share+12.0.3.patch => react-native-share+12.0.9.patch} (100%) rename patches/{react-native-svg+15.10.1.patch => react-native-svg+15.11.2.patch} (100%) rename patches/{react-native-webrtc+124.0.4.patch => react-native-webrtc+124.0.5.patch} (100%) diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 9ad2bb4cb..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "extends": [ - "./eslint/eslint-mattermost", - "./eslint/eslint-react", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "plugin:react-hooks/recommended" - ], - "parser": "@typescript-eslint/parser", - "plugins": [ - "@typescript-eslint", - "import" - ], - "settings": { - "react": { - "pragma": "React", - "version": "17.0" - } - }, - "env": { - "jest": true - }, - "globals": { - "__DEV__": true - }, - "rules": { - "eol-last": ["error", "always"], - "global-require": 0, - "no-undefined": 0, - "no-shadow": "off", - "react/display-name": [2, { "ignoreTranspilerName": false }], - "react/jsx-filename-extension": 0, - "react-hooks/exhaustive-deps": "warn", - "camelcase": [ - 0, - { - "properties": "never" - } - ], - "@typescript-eslint/ban-types": 0, - "@typescript-eslint/no-non-null-assertion": 0, - "@typescript-eslint/no-unused-vars": [ - 2, - { - "vars": "all", - "args": "after-used" - } - ], - "@typescript-eslint/no-shadow": ["error"], - "@typescript-eslint/no-explicit-any": "warn", - "no-use-before-define": "off", - "@typescript-eslint/no-use-before-define": 0, - "@typescript-eslint/no-var-requires": 0, - "@typescript-eslint/explicit-function-return-type": 0, - "@typescript-eslint/explicit-module-boundary-types": "off", - "no-underscore-dangle": "off", - "indent": [2, 4, {"SwitchCase": 1}], - "key-spacing": [2, { - "singleLine": { - "beforeColon": false, - "afterColon": true - }}], - "@typescript-eslint/member-delimiter-style": 2, - "@typescript-eslint/no-unsafe-declaration-merging": "off", - "import/order": [ - 2, - { - "groups": ["builtin", "external", "parent", "sibling", "index", "type"], - "newlines-between": "always", - "pathGroups": [ - { - "pattern": "{@(@actions|@app|@assets|@calls|@client|@components|@constants|@context|@database|@helpers|@hooks|@init|@managers|@queries|@screens|@selectors|@share|@store|@telemetry|@typings|@test|@utils)/**,@(@constants|@i18n|@store|@websocket)}", - "group": "external", - "position": "after" - }, - { - "pattern": "app/**", - "group": "parent", - "position": "before" - } - ], - "alphabetize": { - "order": "asc", - "caseInsensitive": true - }, - "pathGroupsExcludedImportTypes": ["type"] - } - ] - }, - "overrides": [ - { - "files": ["*.test.js", "*.test.jsx"], - "env": { - "jest": true - } - }, - { - "files": ["detox/e2e/**"], - "globals": { - "by": true, - "detox": true, - "device": true, - "element": true, - "waitFor": true - }, - "rules": { - "func-names": 0, - "import/no-unresolved": 0, - "max-nested-callbacks": 0, - "no-process-env": 0, - "no-unused-expressions": 0 - } - } - ] -} diff --git a/android/app/build.gradle b/android/app/build.gradle index a0916b993..701d73abc 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -202,14 +202,14 @@ dependencies { implementation jscFlavor } - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1' - implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3' + implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.constraintlayout:constraintlayout:2.2.1' implementation "com.google.firebase:firebase-messaging:$firebaseVersion" androidTestImplementation('com.wix:detox:+') - androidTestImplementation 'androidx.test:core:1.6.0' - androidTestImplementation 'androidx.test:runner:1.5.2' + androidTestImplementation 'androidx.test:core:1.6.1' + androidTestImplementation 'androidx.test:runner:1.6.2' androidTestImplementation 'com.wix:detox:20.26.2' // For animated GIF support @@ -231,16 +231,16 @@ dependencies { configurations.all { resolutionStrategy { - force 'androidx.test:core:1.6.0' + force 'androidx.test:core:1.6.1' eachDependency { DependencyResolveDetails details -> if (details.requested.name == 'play-services-base') { - details.useTarget group: details.requested.group, name: details.requested.name, version: '18.2.0' + details.useTarget group: details.requested.group, name: details.requested.name, version: '18.5.0' } if (details.requested.name == 'play-services-tasks') { - details.useTarget group: details.requested.group, name: details.requested.name, version: '18.0.2' + details.useTarget group: details.requested.group, name: details.requested.name, version: '18.2.0' } if (details.requested.name == 'play-services-basement') { - details.useTarget group: details.requested.group, name: details.requested.name, version: '18.2.0' + details.useTarget group: details.requested.group, name: details.requested.name, version: '18.5.0' } if (details.requested.name == 'okhttp') { details.useTarget group: details.requested.group, name: details.requested.name, version: '4.12.0' diff --git a/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotification.kt b/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotification.kt index 2fff04971..db550d16d 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotification.kt +++ b/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotification.kt @@ -105,7 +105,7 @@ class CustomPushNotification( CustomPushNotificationHelper.PUSH_TYPE_MESSAGE, CustomPushNotificationHelper.PUSH_TYPE_SESSION -> { val currentActivityName = mAppLifecycleFacade.runningReactContext?.currentActivity?.componentName?.className ?: "" TurboLog.i("ReactNative", currentActivityName) - if (!mAppLifecycleFacade.isAppVisible() || currentActivityName != "MainActivity") { + if (!mAppLifecycleFacade.isAppVisible() || !currentActivityName.contains("MainActivity")) { var createSummary = type == CustomPushNotificationHelper.PUSH_TYPE_MESSAGE if (type == CustomPushNotificationHelper.PUSH_TYPE_MESSAGE) { channelId?.let { diff --git a/android/build.gradle b/android/build.gradle index 67e3cd8c2..0f4ee6b3f 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -19,7 +19,7 @@ buildscript { dependencies { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") - classpath('com.google.gms:google-services:4.4.0') + classpath('com.google.gms:google-services:4.4.2') classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") // NOTE: Do not place your application dependencies here; they belong diff --git a/android/buildscript-gradle.lockfile b/android/buildscript-gradle.lockfile index 80805c20c..fbd5e94f9 100644 --- a/android/buildscript-gradle.lockfile +++ b/android/buildscript-gradle.lockfile @@ -1,68 +1,68 @@ # This is a Gradle generated file for dependency locking. # Manual edits can break the build and are not advised. # This file is expected to be part of source control. -androidx.databinding:databinding-common:8.2.1=classpath -androidx.databinding:databinding-compiler-common:8.2.1=classpath -com.android.databinding:baseLibrary:8.2.1=classpath -com.android.tools.analytics-library:crash:31.2.1=classpath -com.android.tools.analytics-library:protos:31.2.1=classpath -com.android.tools.analytics-library:shared:31.2.1=classpath -com.android.tools.analytics-library:tracker:31.2.1=classpath +androidx.databinding:databinding-common:8.6.0=classpath +androidx.databinding:databinding-compiler-common:8.6.0=classpath +com.android.databinding:baseLibrary:8.6.0=classpath +com.android.tools.analytics-library:crash:31.6.0=classpath +com.android.tools.analytics-library:protos:31.6.0=classpath +com.android.tools.analytics-library:shared:31.6.0=classpath +com.android.tools.analytics-library:tracker:31.6.0=classpath com.android.tools.build.jetifier:jetifier-core:1.0.0-beta10=classpath com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta10=classpath -com.android.tools.build:aapt2-proto:8.2.1-10154469=classpath -com.android.tools.build:aaptcompiler:8.2.1=classpath -com.android.tools.build:apksig:8.2.1=classpath -com.android.tools.build:apkzlib:8.2.1=classpath -com.android.tools.build:builder-model:8.2.1=classpath -com.android.tools.build:builder-test-api:8.2.1=classpath -com.android.tools.build:builder:8.2.1=classpath -com.android.tools.build:bundletool:1.15.2=classpath -com.android.tools.build:gradle-api:8.2.1=classpath -com.android.tools.build:gradle-settings-api:8.2.1=classpath -com.android.tools.build:gradle:8.2.1=classpath -com.android.tools.build:manifest-merger:31.2.1=classpath +com.android.tools.build:aapt2-proto:8.6.0-11315950=classpath +com.android.tools.build:aaptcompiler:8.6.0=classpath +com.android.tools.build:apksig:8.6.0=classpath +com.android.tools.build:apkzlib:8.6.0=classpath +com.android.tools.build:builder-model:8.6.0=classpath +com.android.tools.build:builder-test-api:8.6.0=classpath +com.android.tools.build:builder:8.6.0=classpath +com.android.tools.build:bundletool:1.16.0=classpath +com.android.tools.build:gradle-api:8.6.0=classpath +com.android.tools.build:gradle-settings-api:8.6.0=classpath +com.android.tools.build:gradle:8.6.0=classpath +com.android.tools.build:manifest-merger:31.6.0=classpath com.android.tools.build:transform-api:2.0.0-deprecated-use-gradle-api=classpath -com.android.tools.ddms:ddmlib:31.2.1=classpath -com.android.tools.layoutlib:layoutlib-api:31.2.1=classpath -com.android.tools.lint:lint-model:31.2.1=classpath -com.android.tools.lint:lint-typedef-remover:31.2.1=classpath -com.android.tools.utp:android-device-provider-ddmlib-proto:31.2.1=classpath -com.android.tools.utp:android-device-provider-gradle-proto:31.2.1=classpath -com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.2.1=classpath -com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.2.1=classpath -com.android.tools.utp:android-test-plugin-host-coverage-proto:31.2.1=classpath -com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.2.1=classpath -com.android.tools.utp:android-test-plugin-host-logcat-proto:31.2.1=classpath -com.android.tools.utp:android-test-plugin-host-retention-proto:31.2.1=classpath -com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.2.1=classpath -com.android.tools:annotations:31.2.1=classpath -com.android.tools:common:31.2.1=classpath -com.android.tools:dvlib:31.2.1=classpath -com.android.tools:repository:31.2.1=classpath -com.android.tools:sdk-common:31.2.1=classpath -com.android.tools:sdklib:31.2.1=classpath -com.android:signflinger:8.2.1=classpath -com.android:zipflinger:8.2.1=classpath +com.android.tools.ddms:ddmlib:31.6.0=classpath +com.android.tools.layoutlib:layoutlib-api:31.6.0=classpath +com.android.tools.lint:lint-model:31.6.0=classpath +com.android.tools.lint:lint-typedef-remover:31.6.0=classpath +com.android.tools.utp:android-device-provider-ddmlib-proto:31.6.0=classpath +com.android.tools.utp:android-device-provider-gradle-proto:31.6.0=classpath +com.android.tools.utp:android-test-plugin-host-additional-test-output-proto:31.6.0=classpath +com.android.tools.utp:android-test-plugin-host-apk-installer-proto:31.6.0=classpath +com.android.tools.utp:android-test-plugin-host-coverage-proto:31.6.0=classpath +com.android.tools.utp:android-test-plugin-host-emulator-control-proto:31.6.0=classpath +com.android.tools.utp:android-test-plugin-host-logcat-proto:31.6.0=classpath +com.android.tools.utp:android-test-plugin-host-retention-proto:31.6.0=classpath +com.android.tools.utp:android-test-plugin-result-listener-gradle-proto:31.6.0=classpath +com.android.tools:annotations:31.6.0=classpath +com.android.tools:common:31.6.0=classpath +com.android.tools:dvlib:31.6.0=classpath +com.android.tools:repository:31.6.0=classpath +com.android.tools:sdk-common:31.6.0=classpath +com.android.tools:sdklib:31.6.0=classpath +com.android:signflinger:8.6.0=classpath +com.android:zipflinger:8.6.0=classpath com.google.android.gms:strict-version-matcher-plugin:1.2.4=classpath com.google.android:annotations:4.1.1.4=classpath -com.google.api.grpc:proto-google-common-protos:2.0.1=classpath +com.google.api.grpc:proto-google-common-protos:2.17.0=classpath com.google.auto.value:auto-value-annotations:1.6.2=classpath com.google.code.findbugs:jsr305:3.0.2=classpath -com.google.code.gson:gson:2.10=classpath +com.google.code.gson:gson:2.10.1=classpath com.google.crypto.tink:tink:1.7.0=classpath com.google.dagger:dagger:2.28.3=classpath -com.google.errorprone:error_prone_annotations:2.11.0=classpath +com.google.errorprone:error_prone_annotations:2.18.0=classpath com.google.flatbuffers:flatbuffers-java:1.12.0=classpath -com.google.gms:google-services:4.4.0=classpath +com.google.gms:google-services:4.4.2=classpath com.google.guava:failureaccess:1.0.1=classpath -com.google.guava:guava:31.1-jre=classpath +com.google.guava:guava:32.0.1-jre=classpath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=classpath -com.google.j2objc:j2objc-annotations:1.3=classpath +com.google.j2objc:j2objc-annotations:2.8=classpath com.google.jimfs:jimfs:1.1=classpath -com.google.protobuf:protobuf-java-util:3.19.3=classpath -com.google.protobuf:protobuf-java:3.19.3=classpath -com.google.testing.platform:core-proto:0.0.8-alpha08=classpath +com.google.protobuf:protobuf-java-util:3.22.3=classpath +com.google.protobuf:protobuf-java:3.22.3=classpath +com.google.testing.platform:core-proto:0.0.9-alpha02=classpath com.googlecode.juniversalchardet:juniversalchardet:1.0.3=classpath com.squareup:javapoet:1.13.0=classpath com.squareup:javawriter:2.5.0=classpath @@ -70,27 +70,27 @@ com.sun.activation:javax.activation:1.2.0=classpath com.sun.istack:istack-commons-runtime:3.0.8=classpath com.sun.xml.fastinfoset:FastInfoset:1.2.16=classpath commons-codec:commons-codec:1.11=classpath -commons-io:commons-io:2.4=classpath +commons-io:commons-io:2.13.0=classpath commons-logging:commons-logging:1.2=classpath -io.grpc:grpc-api:1.45.1=classpath -io.grpc:grpc-context:1.45.1=classpath -io.grpc:grpc-core:1.45.1=classpath -io.grpc:grpc-netty:1.45.1=classpath -io.grpc:grpc-protobuf-lite:1.45.1=classpath -io.grpc:grpc-protobuf:1.45.1=classpath -io.grpc:grpc-stub:1.45.1=classpath -io.netty:netty-buffer:4.1.72.Final=classpath -io.netty:netty-codec-http2:4.1.72.Final=classpath -io.netty:netty-codec-http:4.1.72.Final=classpath -io.netty:netty-codec-socks:4.1.72.Final=classpath -io.netty:netty-codec:4.1.72.Final=classpath -io.netty:netty-common:4.1.72.Final=classpath -io.netty:netty-handler-proxy:4.1.72.Final=classpath -io.netty:netty-handler:4.1.72.Final=classpath -io.netty:netty-resolver:4.1.72.Final=classpath -io.netty:netty-tcnative-classes:2.0.46.Final=classpath -io.netty:netty-transport:4.1.72.Final=classpath -io.perfmark:perfmark-api:0.23.0=classpath +io.grpc:grpc-api:1.57.0=classpath +io.grpc:grpc-context:1.57.0=classpath +io.grpc:grpc-core:1.57.0=classpath +io.grpc:grpc-netty:1.57.0=classpath +io.grpc:grpc-protobuf-lite:1.57.0=classpath +io.grpc:grpc-protobuf:1.57.0=classpath +io.grpc:grpc-stub:1.57.0=classpath +io.netty:netty-buffer:4.1.93.Final=classpath +io.netty:netty-codec-http2:4.1.93.Final=classpath +io.netty:netty-codec-http:4.1.93.Final=classpath +io.netty:netty-codec-socks:4.1.93.Final=classpath +io.netty:netty-codec:4.1.93.Final=classpath +io.netty:netty-common:4.1.93.Final=classpath +io.netty:netty-handler-proxy:4.1.93.Final=classpath +io.netty:netty-handler:4.1.93.Final=classpath +io.netty:netty-resolver:4.1.93.Final=classpath +io.netty:netty-transport-native-unix-common:4.1.93.Final=classpath +io.netty:netty-transport:4.1.93.Final=classpath +io.perfmark:perfmark-api:0.26.0=classpath jakarta.activation:jakarta.activation-api:1.2.1=classpath jakarta.xml.bind:jakarta.xml.bind-api:2.3.2=classpath javax.annotation:javax.annotation-api:1.3.2=classpath @@ -103,52 +103,51 @@ org.apache.commons:commons-compress:1.21=classpath org.apache.httpcomponents:httpclient:4.5.14=classpath org.apache.httpcomponents:httpcore:4.4.16=classpath org.apache.httpcomponents:httpmime:4.5.6=classpath -org.bitbucket.b_c:jose4j:0.7.0=classpath -org.bouncycastle:bcpkix-jdk15on:1.67=classpath -org.bouncycastle:bcprov-jdk15on:1.67=classpath -org.checkerframework:checker-qual:3.12.0=classpath -org.codehaus.mojo:animal-sniffer-annotations:1.19=classpath +org.bitbucket.b_c:jose4j:0.9.5=classpath +org.bouncycastle:bcpkix-jdk18on:1.77=classpath +org.bouncycastle:bcprov-jdk18on:1.77=classpath +org.bouncycastle:bcutil-jdk18on:1.77=classpath +org.checkerframework:checker-qual:3.33.0=classpath +org.codehaus.mojo:animal-sniffer-annotations:1.23=classpath org.glassfish.jaxb:jaxb-runtime:2.3.2=classpath org.glassfish.jaxb:txw2:2.3.2=classpath org.jdom:jdom2:2.0.6=classpath org.jetbrains.intellij.deps:trove4j:1.0.20200330=classpath -org.jetbrains.kotlin:kotlin-android-extensions:1.9.22=classpath -org.jetbrains.kotlin:kotlin-build-tools-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-compiler-runner:1.9.22=classpath -org.jetbrains.kotlin:kotlin-daemon-client:1.9.22=classpath -org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.22=classpath -org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.22=classpath -org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.22=classpath -org.jetbrains.kotlin:kotlin-native-utils:1.9.22=classpath -org.jetbrains.kotlin:kotlin-project-model:1.9.22=classpath -org.jetbrains.kotlin:kotlin-reflect:1.9.0=classpath -org.jetbrains.kotlin:kotlin-scripting-common:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.22=classpath -org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.22=classpath -org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.0=classpath -org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.0=classpath -org.jetbrains.kotlin:kotlin-stdlib:1.9.22=classpath -org.jetbrains.kotlin:kotlin-tooling-core:1.9.22=classpath -org.jetbrains.kotlin:kotlin-util-io:1.9.22=classpath -org.jetbrains.kotlin:kotlin-util-klib:1.9.22=classpath +org.jetbrains.kotlin:kotlin-android-extensions:1.9.24=classpath +org.jetbrains.kotlin:kotlin-build-tools-api:1.9.24=classpath +org.jetbrains.kotlin:kotlin-compiler-embeddable:1.9.24=classpath +org.jetbrains.kotlin:kotlin-compiler-runner:1.9.24=classpath +org.jetbrains.kotlin:kotlin-daemon-client:1.9.24=classpath +org.jetbrains.kotlin:kotlin-daemon-embeddable:1.9.24=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-annotations:1.9.24=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.24=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea-proto:1.9.24=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-idea:1.9.24=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin-model:1.9.24=classpath +org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.24=classpath +org.jetbrains.kotlin:kotlin-gradle-plugins-bom:1.9.24=classpath +org.jetbrains.kotlin:kotlin-klib-commonizer-api:1.9.24=classpath +org.jetbrains.kotlin:kotlin-native-utils:1.9.24=classpath +org.jetbrains.kotlin:kotlin-project-model:1.9.24=classpath +org.jetbrains.kotlin:kotlin-reflect:1.9.20=classpath +org.jetbrains.kotlin:kotlin-scripting-common:1.9.24=classpath +org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:1.9.24=classpath +org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:1.9.24=classpath +org.jetbrains.kotlin:kotlin-scripting-jvm:1.9.24=classpath +org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.20=classpath +org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20=classpath +org.jetbrains.kotlin:kotlin-stdlib:1.9.24=classpath +org.jetbrains.kotlin:kotlin-tooling-core:1.9.24=classpath +org.jetbrains.kotlin:kotlin-util-io:1.9.24=classpath +org.jetbrains.kotlin:kotlin-util-klib:1.9.24=classpath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=classpath -org.jetbrains:annotations:13.0=classpath +org.jetbrains:annotations:23.0.0=classpath org.jvnet.staxex:stax-ex:1.8.1=classpath -org.ow2.asm:asm-analysis:9.2=classpath -org.ow2.asm:asm-commons:9.2=classpath -org.ow2.asm:asm-tree:9.2=classpath -org.ow2.asm:asm-util:9.2=classpath -org.ow2.asm:asm:9.2=classpath +org.ow2.asm:asm-analysis:9.6=classpath +org.ow2.asm:asm-commons:9.6=classpath +org.ow2.asm:asm-tree:9.6=classpath +org.ow2.asm:asm-util:9.6=classpath +org.ow2.asm:asm:9.6=classpath org.slf4j:slf4j-api:1.7.30=classpath org.tensorflow:tensorflow-lite-metadata:0.1.0-rc2=classpath -xerces:xercesImpl:2.12.0=classpath -xml-apis:xml-apis:1.4.01=classpath empty= diff --git a/app/actions/remote/entry/common.ts b/app/actions/remote/entry/common.ts index 0f81057bb..cdc3ac02a 100644 --- a/app/actions/remote/entry/common.ts +++ b/app/actions/remote/entry/common.ts @@ -105,7 +105,7 @@ const entryRest = async (serverUrl: string, teamId?: string, channelId?: string, let lastDisconnectedAt = since || await getLastFullSync(database); const [confResp, prefData] = await Promise.all([ - fetchConfigAndLicense(serverUrl, true, groupLabel), + fetchConfigAndLicense(serverUrl, false, groupLabel), fetchMyPreferences(serverUrl, true, groupLabel), ]); diff --git a/app/components/files/files.test.tsx b/app/components/files/files.test.tsx index 63de3fb5b..fe1ae1eee 100644 --- a/app/components/files/files.test.tsx +++ b/app/components/files/files.test.tsx @@ -1,6 +1,6 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {render, fireEvent} from '@testing-library/react-native'; +import {render, fireEvent, act} from '@testing-library/react-native'; import React, {useMemo, type ComponentProps} from 'react'; import {DeviceEventEmitter, Text, TouchableOpacity, View} from 'react-native'; @@ -408,10 +408,16 @@ describe('Files', () => { expect(getByTestId('1-inViewPort')).toHaveTextContent('false'); expect(getByTestId('2-inViewPort')).toHaveTextContent('false'); - DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'unrelated-event': true}); + act(() => { + DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'unrelated-event': true}); + }); expect(getByTestId('1-inViewPort')).toHaveTextContent('false'); expect(getByTestId('2-inViewPort')).toHaveTextContent('false'); - DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'test-location-test-post-id': true}); + + act(() => { + DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'test-location-test-post-id': true}); + }); + expect(getByTestId('1-inViewPort')).toHaveTextContent('true'); expect(getByTestId('2-inViewPort')).toHaveTextContent('true'); }); @@ -444,7 +450,9 @@ describe('Files', () => { expect(getByTestId('1-inViewPort')).toHaveTextContent('false'); expect(getByTestId('2-inViewPort')).toHaveTextContent('false'); - DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'location1-post1': true}); + act(() => { + DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'location1-post1': true}); + }); expect(getByTestId('1-inViewPort')).toHaveTextContent('false'); expect(getByTestId('2-inViewPort')).toHaveTextContent('false'); @@ -453,11 +461,15 @@ describe('Files', () => { expect(getByTestId('1-inViewPort')).toHaveTextContent('false'); expect(getByTestId('2-inViewPort')).toHaveTextContent('false'); - DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'location2-post1': true}); + act(() => { + DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'location2-post1': true}); + }); expect(getByTestId('1-inViewPort')).toHaveTextContent('false'); expect(getByTestId('2-inViewPort')).toHaveTextContent('false'); - DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'location2-post2': true}); + act(() => { + DeviceEventEmitter.emit(Events.ITEM_IN_VIEWPORT, {'location2-post2': true}); + }); expect(getByTestId('1-inViewPort')).toHaveTextContent('true'); expect(getByTestId('2-inViewPort')).toHaveTextContent('true'); }); diff --git a/app/components/markdown/markdown_list/index.tsx b/app/components/markdown/markdown_list/index.tsx index 2d9b69874..a10211bfd 100644 --- a/app/components/markdown/markdown_list/index.tsx +++ b/app/components/markdown/markdown_list/index.tsx @@ -3,14 +3,14 @@ import React, {type ReactElement} from 'react'; -type MarkdownList = { +type MarkdownListProps = { children: ReactElement[]; ordered: boolean; start: number; tight: boolean; }; -const MarkdownList = ({start = 1, tight, ordered, children}: MarkdownList) => { +const MarkdownList = ({start = 1, tight, ordered, children}: MarkdownListProps) => { let bulletWidth = 15; if (ordered) { const lastNumber = (start + children.length) - 1; diff --git a/app/components/option_item/index.tsx b/app/components/option_item/index.tsx index 855c84c5d..ff66535c2 100644 --- a/app/components/option_item/index.tsx +++ b/app/components/option_item/index.tsx @@ -21,13 +21,13 @@ const TouchableOptionTypes = { SELECT: 'select', }; -const OptionType = { +const OptionTypeConst = { NONE: 'none', TOGGLE: 'toggle', ...TouchableOptionTypes, } as const; -export type OptionType = typeof OptionType[keyof typeof OptionType]; +export type OptionType = typeof OptionTypeConst[keyof typeof OptionTypeConst]; export const ITEM_HEIGHT = 48; const DESCRIPTION_MARGIN_TOP = 2; @@ -182,7 +182,7 @@ const OptionItem = ({ let actionComponent; let radioComponent; - if (type === OptionType.SELECT && selected) { + if (type === OptionTypeConst.SELECT && selected) { actionComponent = ( ); - } else if (type === OptionType.RADIO) { + } else if (type === OptionTypeConst.RADIO) { const radioComponentTestId = selected ? `${testID}.selected` : `${testID}.not_selected`; radioComponent = ( ); - } else if (type === OptionType.TOGGLE) { + } else if (type === OptionTypeConst.TOGGLE) { const trackColor = Platform.select({ ios: {true: theme.buttonBg, false: changeOpacity(theme.centerChannelColor, 0.16)}, default: {true: changeOpacity(theme.buttonBg, 0.32), false: changeOpacity(theme.centerChannelColor, 0.24)}, @@ -217,7 +217,7 @@ const OptionItem = ({ testID={`${testID}.toggled.${selected}.button`} /> ); - } else if (type === OptionType.ARROW) { + } else if (type === OptionTypeConst.ARROW) { actionComponent = ( ); - } else if (type === OptionType.REMOVE) { + } else if (type === OptionTypeConst.REMOVE) { actionComponent = ( )} - {type === OptionType.RADIO && radioComponent} + {type === OptionTypeConst.RADIO && radioComponent} ); - }, [file]); + }, [file, ref, theme.centerChannelColor]); return ( } diff --git a/app/components/post_list/post/post.test.tsx b/app/components/post_list/post/post.test.tsx index 4a8d981e9..a2e830f4e 100644 --- a/app/components/post_list/post/post.test.tsx +++ b/app/components/post_list/post/post.test.tsx @@ -6,7 +6,7 @@ import React, {type ComponentProps} from 'react'; import NetworkManager from '@managers/network_manager'; import PerformanceMetricsManager from '@managers/performance_metrics_manager'; import {getPostById} from '@queries/servers/post'; -import {renderWithEverything} from '@test/intl-test-helper'; +import {renderWithEverything, waitFor} from '@test/intl-test-helper'; import TestHelper from '@test/test_helper'; import Post from './post'; @@ -52,24 +52,30 @@ describe('performance metrics', () => { NetworkManager.invalidateClient(serverUrl); }); - it('do not call the performance metrics if it is not the last post', () => { + it('do not call the performance metrics if it is not the last post', async () => { const props = getBaseProps(); props.isLastPost = false; renderWithEverything(, {database, serverUrl}); - expect(PerformanceMetricsManager.finishLoad).not.toHaveBeenCalled(); - expect(PerformanceMetricsManager.endMetric).not.toHaveBeenCalled(); + await waitFor(() => { + expect(PerformanceMetricsManager.finishLoad).not.toHaveBeenCalled(); + expect(PerformanceMetricsManager.endMetric).not.toHaveBeenCalled(); + }); }); - it('on channel', () => { + it('on channel', async () => { const props = getBaseProps(); renderWithEverything(, {database, serverUrl}); - expect(PerformanceMetricsManager.finishLoad).toHaveBeenCalledWith('CHANNEL', serverUrl); - expect(PerformanceMetricsManager.endMetric).toHaveBeenCalledWith('mobile_channel_switch', serverUrl); + await waitFor(() => { + expect(PerformanceMetricsManager.finishLoad).toHaveBeenCalledWith('CHANNEL', serverUrl); + expect(PerformanceMetricsManager.endMetric).toHaveBeenCalledWith('mobile_channel_switch', serverUrl); + }); }); - it('on thread', () => { + it('on thread', async () => { const props = getBaseProps(); props.location = 'Thread'; renderWithEverything(, {database, serverUrl}); - expect(PerformanceMetricsManager.finishLoad).toHaveBeenCalledWith('THREAD', serverUrl); - expect(PerformanceMetricsManager.endMetric).toHaveBeenCalledWith('mobile_channel_switch', serverUrl); + await waitFor(() => { + expect(PerformanceMetricsManager.finishLoad).toHaveBeenCalledWith('THREAD', serverUrl); + expect(PerformanceMetricsManager.endMetric).toHaveBeenCalledWith('mobile_channel_switch', serverUrl); + }); }); }); diff --git a/app/components/post_list/post_list.test.tsx b/app/components/post_list/post_list.test.tsx index 0015185be..36df645bc 100644 --- a/app/components/post_list/post_list.test.tsx +++ b/app/components/post_list/post_list.test.tsx @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import {act} from '@testing-library/react-native'; -import React from 'react'; +import React, {type ComponentProps} from 'react'; import {DeviceEventEmitter, Platform} from 'react-native'; import * as localPostFunctions from '@actions/local/post'; @@ -11,7 +11,7 @@ import {Events, Screens} from '@constants'; import {renderWithEverything} from '@test/intl-test-helper'; import TestHelper from '@test/test_helper'; -import PostList, {exportedForTesting} from './post_list'; +import PostList from './post_list'; jest.mock('@components/post_list/post', () => 'Post'); jest.mock('@components/post_list/thread_overview', () => 'ThreadOverview'); @@ -31,8 +31,6 @@ jest.mock('@actions/local/post', () => ({ import type {PostModel} from '@database/models/server'; import type Database from '@nozbe/watermelondb/Database'; -const {PostListProps} = exportedForTesting; - describe('components/post_list/PostList', () => { let database: Database; const serverUrl = 'https://server.com'; @@ -68,7 +66,7 @@ describe('components/post_list/PostList', () => { mockPostModel(), ]; - const baseProps: typeof PostListProps = { + const baseProps: ComponentProps = { appsEnabled: false, channelId: 'channel-id', currentTimezone: 'UTC', diff --git a/app/components/post_list/post_list.tsx b/app/components/post_list/post_list.tsx index 46600e1d8..0d9d377fe 100644 --- a/app/components/post_list/post_list.tsx +++ b/app/components/post_list/post_list.tsx @@ -402,8 +402,4 @@ const PostList = ({ ); }; -export const exportedForTesting = { - PostListProps: {} as Props, -}; - export default PostList; diff --git a/app/components/post_list/thread_overview/__snapshots__/thread_overview.test.tsx.snap b/app/components/post_list/thread_overview/__snapshots__/thread_overview.test.tsx.snap index f5efe64d9..6f85ff3b9 100644 --- a/app/components/post_list/thread_overview/__snapshots__/thread_overview.test.tsx.snap +++ b/app/components/post_list/thread_overview/__snapshots__/thread_overview.test.tsx.snap @@ -56,11 +56,9 @@ exports[`ThreadOverview should match snapshot when post is saved and has replies handlerTag={1} handlerType="NativeViewGestureHandler" innerRef={null} - onGestureEvent={[Function]} onGestureHandlerEvent={[Function]} onGestureHandlerStateChange={[Function]} - onHandlerStateChange={[Function]} - rippleColor={0} + rippleColor="transparent" style={ [ undefined, @@ -97,11 +95,9 @@ exports[`ThreadOverview should match snapshot when post is saved and has replies handlerTag={2} handlerType="NativeViewGestureHandler" innerRef={null} - onGestureEvent={[Function]} onGestureHandlerEvent={[Function]} onGestureHandlerStateChange={[Function]} - onHandlerStateChange={[Function]} - rippleColor={0} + rippleColor="transparent" style={ [ undefined, diff --git a/app/components/progress_bar/index.tsx b/app/components/progress_bar/index.tsx index 2298c9601..cccdc157c 100644 --- a/app/components/progress_bar/index.tsx +++ b/app/components/progress_bar/index.tsx @@ -11,6 +11,7 @@ import {changeOpacity} from '@utils/theme'; type ProgressBarProps = { color: string; + containerStyle?: StyleProp; progress: number; withCursor?: boolean; style?: StyleProp; @@ -43,7 +44,7 @@ const styles = StyleSheet.create({ const START_CURSOR_VALUE = 0; const END_CURSOR_VALUE = 1; -const ProgressBar = ({color, progress, withCursor, style, onSeek}: ProgressBarProps) => { +const ProgressBar = ({color, containerStyle, progress, withCursor, style, onSeek}: ProgressBarProps) => { const theme = useTheme(); const widthValue = useSharedValue(0); const progressValue = useSharedValue(progress); @@ -120,7 +121,7 @@ const ProgressBar = ({color, progress, withCursor, style, onSeek}: ProgressBarPr e.stopPropagation()} - style={styles.container} + style={[styles.container, containerStyle]} > { - test('Server Icon Component should match snapshot', () => { + test('Server Icon Component should match snapshot', async () => { const {toJSON} = renderWithIntlAndTheme( { />, ); - expect(toJSON()).toMatchSnapshot(); + await waitFor(() => { + expect(toJSON()).toMatchSnapshot(); + }); }); - test('Server Icon Component should match snapshot with unreads', () => { + test('Server Icon Component should match snapshot with unreads', async () => { const {toJSON} = renderWithIntlAndTheme( { />, ); - expect(toJSON()).toMatchSnapshot(); + await waitFor(() => { + expect(toJSON()).toMatchSnapshot(); + }); }); - test('Server Icon Component should match snapshot with mentions', () => { + test('Server Icon Component should match snapshot with mentions', async () => { const {toJSON} = renderWithIntlAndTheme( { />, ); - expect(toJSON()).toMatchSnapshot(); + await waitFor(() => { + expect(toJSON()).toMatchSnapshot(); + }); }); }); diff --git a/app/context/server/index.tsx b/app/context/server/index.tsx index ae4b47cc3..568ac58c9 100644 --- a/app/context/server/index.tsx +++ b/app/context/server/index.tsx @@ -3,23 +3,23 @@ import React, {createContext} from 'react'; -type Props = { - server: ServerContext; - children: React.ReactNode; -} - type WithServerUrlProps = { serverUrl: string; } type GetProps = C extends React.ComponentType ? P : never -type ServerContext = { +type ServerContextType = { displayName: string; url: string; } -const ServerContext = createContext({displayName: '', url: ''}); +type Props = { + server: ServerContextType; + children: React.ReactNode; +} + +const ServerContext = createContext({displayName: '', url: ''}); const {Provider, Consumer} = ServerContext; function ServerUrlProvider({server, children}: Props) { @@ -32,7 +32,7 @@ export function withServerUrl, P = GetProps> return function ServerUrlComponent(props: JSX.LibraryManagedAttributes) { return ( - {(server: ServerContext) => ( + {(server: ServerContextType) => ( { defaultHeight, largeHeight, headerOffset, - }), [defaultHeight, largeHeight]); + }), [defaultHeight, headerOffset, largeHeight]); }; export const useCollapsibleHeader = (isLargeTitle: boolean, onSnap?: (offset: number) => void) => { diff --git a/app/hooks/useCollapsibleHeader.test.tsx b/app/hooks/useCollapsibleHeader.test.tsx index 98f5044e3..221f6e65d 100644 --- a/app/hooks/useCollapsibleHeader.test.tsx +++ b/app/hooks/useCollapsibleHeader.test.tsx @@ -32,7 +32,9 @@ describe('useCollapsibleHeader', () => { expect(result.current).toEqual({ defaultHeight: ViewConstants.DEFAULT_HEADER_HEIGHT, scrollPaddingTop: LARGE_HEADER_TITLE_HEIGHT, - headerHeight: {value: LARGE_HEADER_TITLE_HEIGHT}, + headerHeight: expect.objectContaining({ + value: LARGE_HEADER_TITLE_HEIGHT, + }), ...commonHookResponse, }); }); @@ -43,7 +45,9 @@ describe('useCollapsibleHeader', () => { expect(result.current).toEqual({ defaultHeight: ViewConstants.DEFAULT_HEADER_HEIGHT, scrollPaddingTop: ViewConstants.DEFAULT_HEADER_HEIGHT, - headerHeight: {value: ViewConstants.DEFAULT_HEADER_HEIGHT}, + headerHeight: expect.objectContaining({ + value: ViewConstants.DEFAULT_HEADER_HEIGHT, + }), ...commonHookResponse, }); }); @@ -56,7 +60,9 @@ describe('useCollapsibleHeader', () => { expect(result.current).toEqual({ defaultHeight: ViewConstants.TABLET_HEADER_HEIGHT, scrollPaddingTop: LARGE_HEADER_TITLE_HEIGHT, - headerHeight: {value: LARGE_HEADER_TITLE_HEIGHT}, + headerHeight: expect.objectContaining({ + value: LARGE_HEADER_TITLE_HEIGHT, + }), ...commonHookResponse, }); }); diff --git a/app/products/calls/connection/websocket_client.test.ts b/app/products/calls/connection/websocket_client.test.ts index 75f7c76bf..e010df83b 100644 --- a/app/products/calls/connection/websocket_client.test.ts +++ b/app/products/calls/connection/websocket_client.test.ts @@ -5,7 +5,7 @@ // eslint-disable-next-line // @ts-nocheck -import {encode} from '@msgpack/msgpack/dist'; +import {encode} from '@msgpack/msgpack'; import DatabaseManager from '@database/manager'; diff --git a/app/products/calls/connection/websocket_client.ts b/app/products/calls/connection/websocket_client.ts index 02a00150f..af203581d 100644 --- a/app/products/calls/connection/websocket_client.ts +++ b/app/products/calls/connection/websocket_client.ts @@ -3,7 +3,7 @@ import {EventEmitter} from 'events'; -import {encode} from '@msgpack/msgpack/dist'; +import {encode} from '@msgpack/msgpack'; import Calls from '@constants/calls'; import DatabaseManager from '@database/manager'; diff --git a/app/products/calls/state/actions.test.ts b/app/products/calls/state/actions.test.ts index 474a505fb..9097bdbec 100644 --- a/app/products/calls/state/actions.test.ts +++ b/app/products/calls/state/actions.test.ts @@ -726,7 +726,7 @@ describe('useCallsState', () => { assert.deepEqual(result.current[1], null); }); - it('setChannelEnabled', () => { + it('setChannelEnabled', async () => { const initialState = { ...DefaultCallsState, enabled: {'channel-1': true, 'channel-2': false}, @@ -734,33 +734,33 @@ describe('useCallsState', () => { // setup const {result} = renderHook(() => useCallsState('server1')); - act(() => setCallsState('server1', initialState)); + await act(async () => setCallsState('server1', initialState)); assert.deepEqual(result.current, initialState); // test setCalls affects enabled: - act(() => setCalls('server1', 'myUserId', {}, {'channel-1': true})); + await act(async () => setCalls('server1', 'myUserId', {}, {'channel-1': true})); assert.deepEqual(result.current.enabled, {'channel-1': true}); // re-setup: - act(() => setCallsState('server1', initialState)); + await act(async () => setCallsState('server1', initialState)); assert.deepEqual(result.current, initialState); // test setChannelEnabled affects enabled: - act(() => setChannelEnabled('server1', 'channel-3', true)); + await act(async () => setChannelEnabled('server1', 'channel-3', true)); assert.deepEqual(result.current.enabled, {'channel-1': true, 'channel-2': false, 'channel-3': true}); - act(() => setChannelEnabled('server1', 'channel-3', false)); + await act(async () => setChannelEnabled('server1', 'channel-3', false)); assert.deepEqual(result.current.enabled, { 'channel-1': true, 'channel-2': false, 'channel-3': false, }); - act(() => setChannelEnabled('server1', 'channel-1', true)); + await act(async () => setChannelEnabled('server1', 'channel-1', true)); assert.deepEqual(result.current.enabled, { 'channel-1': true, 'channel-2': false, 'channel-3': false, }); - act(() => setChannelEnabled('server1', 'channel-1', false)); + await act(async () => setChannelEnabled('server1', 'channel-1', false)); assert.deepEqual(result.current.enabled, { 'channel-1': false, 'channel-2': false, @@ -1510,14 +1510,14 @@ describe('useCallsState', () => { // test: should not ring for same call again await act(async () => { - await setIncomingCalls(initialIncomingCalls); + setIncomingCalls(initialIncomingCalls); await playIncomingCallsRinging('server1', 'call1', 'online'); }); assert.deepEqual(result.current, initialIncomingCalls); // test: should not ring when already ringing await act(async () => { - await setIncomingCalls({ + setIncomingCalls({ ...initialIncomingCalls, currentRingingCallId: 'call2', }); @@ -1534,33 +1534,38 @@ describe('useCallsState', () => { // setup const {result} = renderHook(() => useIncomingCalls()); - await act(async () => { - await setIncomingCalls(initialIncomingCalls); + act(() => { + setIncomingCalls(initialIncomingCalls); }); assert.deepEqual(result.current, initialIncomingCalls); // test going to background - await act(async () => callsOnAppStateChange('background')); + await act(async () => { + await callsOnAppStateChange('background'); + }); assert.deepEqual(result.current, {...initialIncomingCalls, currentRingingCallId: undefined}); // test going to inactive await act(async () => { - await setIncomingCalls(initialIncomingCalls); + setIncomingCalls(initialIncomingCalls); await callsOnAppStateChange('inactive'); + await TestHelper.wait(100); }); assert.deepEqual(result.current, {...initialIncomingCalls, currentRingingCallId: undefined}); // test going to active (should not change state) await act(async () => { - await setIncomingCalls(initialIncomingCalls); + setIncomingCalls(initialIncomingCalls); await callsOnAppStateChange('active'); + await TestHelper.wait(100); }); assert.deepEqual(result.current, initialIncomingCalls); // test previous state await act(async () => { - await setIncomingCalls(initialIncomingCalls); + setIncomingCalls(initialIncomingCalls); await callsOnAppStateChange('active'); + await TestHelper.wait(100); }); assert.deepEqual(result.current, initialIncomingCalls); }); diff --git a/app/screens/home/channel_list/categories_list/index.test.tsx b/app/screens/home/channel_list/categories_list/index.test.tsx index 3f89d5fd5..d08266f95 100644 --- a/app/screens/home/channel_list/categories_list/index.test.tsx +++ b/app/screens/home/channel_list/categories_list/index.test.tsx @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {act} from '@testing-library/react-native'; +import {act, waitFor} from '@testing-library/react-native'; import React from 'react'; import {SYSTEM_IDENTIFIERS} from '@constants/database'; @@ -30,7 +30,7 @@ describe('components/categories_list', () => { }); }); - it('should render', () => { + it('should render', async () => { const wrapper = renderWithEverything( { />, {database}, ); - expect(wrapper.toJSON()).toBeTruthy(); + await waitFor(() => { + expect(wrapper.toJSON()).toBeTruthy(); + }); }); - it('should render channel list with thread menu', () => { + it('should render channel list with thread menu', async () => { jest.useFakeTimers(); const wrapper = renderWithEverything( { act(() => { jest.runAllTimers(); }); - expect(wrapper.toJSON()).toBeTruthy(); jest.useRealTimers(); + await waitFor(() => { + expect(wrapper.toJSON()).toBeTruthy(); + }); }); - it('should render channel list with Draft menu', () => { + it('should render channel list with Draft menu', async () => { const wrapper = renderWithEverything( { />, {database}, ); - expect(wrapper.getByText('Drafts')).toBeTruthy(); + await waitFor(() => { + expect(wrapper.getByText('Drafts')).toBeTruthy(); + }); }); it('should render team error', async () => { @@ -92,16 +98,19 @@ describe('components/categories_list', () => { act(() => { jest.runAllTimers(); }); - expect(wrapper.toJSON()).toMatchSnapshot(); + jest.useRealTimers(); + await waitFor(() => { + expect(wrapper.toJSON()).toMatchSnapshot(); + }); + }); + + it('should render channels error', async () => { await operator.handleSystem({ systems: [{id: SYSTEM_IDENTIFIERS.CURRENT_TEAM_ID, value: TestHelper.basicTeam!.id}], prepareRecordsOnly: false, }); - }); - - it('should render channels error', () => { jest.useFakeTimers(); const wrapper = renderWithEverything( { act(() => { jest.runAllTimers(); }); - expect(wrapper.toJSON()).toMatchSnapshot(); + jest.useRealTimers(); + await waitFor(() => { + expect(wrapper.toJSON()).toMatchSnapshot(); + }); }); }); diff --git a/app/screens/home/channel_list/channel_list.test.tsx b/app/screens/home/channel_list/channel_list.test.tsx index 736b82a92..e752cf22d 100644 --- a/app/screens/home/channel_list/channel_list.test.tsx +++ b/app/screens/home/channel_list/channel_list.test.tsx @@ -4,7 +4,7 @@ import React, {type ComponentProps} from 'react'; import PerformanceMetricsManager from '@managers/performance_metrics_manager'; -import {renderWithEverything} from '@test/intl-test-helper'; +import {renderWithEverything, waitFor} from '@test/intl-test-helper'; import TestHelper from '@test/test_helper'; import ChannelListScreen from './channel_list'; @@ -47,11 +47,11 @@ describe('performance metrics', () => { database = server.database; }); - it('finish load on load', () => { - jest.useFakeTimers(); + it('finish load on load', async () => { const props = getBaseProps(); renderWithEverything(, {database, serverUrl}); - expect(PerformanceMetricsManager.finishLoad).toHaveBeenCalledWith('HOME', serverUrl); - jest.useRealTimers(); + await waitFor(() => { + expect(PerformanceMetricsManager.finishLoad).toHaveBeenCalledWith('HOME', serverUrl); + }); }); }); diff --git a/app/screens/home/search/search.test.tsx b/app/screens/home/search/search.test.tsx index 2a2c38039..343b0d7c4 100644 --- a/app/screens/home/search/search.test.tsx +++ b/app/screens/home/search/search.test.tsx @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {fireEvent, waitFor} from '@testing-library/react-native'; +import {act, fireEvent, waitFor} from '@testing-library/react-native'; import React from 'react'; import {addSearchToTeamSearchHistory} from '@actions/local/team'; @@ -91,7 +91,9 @@ describe('SearchScreen', () => { ); const searchInput = getByTestId('navigation.header.search_bar.search.input'); - fireEvent.changeText(searchInput, 'test search'); + act(() => { + fireEvent.changeText(searchInput, 'test search'); + }); expect(searchInput.props.value).toBe('test search'); }); @@ -102,8 +104,13 @@ describe('SearchScreen', () => { ); const searchInput = getByTestId('navigation.header.search_bar.search.input'); - fireEvent.changeText(searchInput, 'test search'); - fireEvent(searchInput, 'submitEditing'); + await act(async () => { + fireEvent.changeText(searchInput, 'test search'); + }); + + await act(async () => { + fireEvent(searchInput, 'submitEditing'); + }); await waitFor(() => { expect(searchPosts).toHaveBeenCalledWith( @@ -126,7 +133,9 @@ describe('SearchScreen', () => { ); const teamPicker = getByTestId('team_picker.button'); - fireEvent.press(teamPicker); + act(() => { + fireEvent.press(teamPicker); + }); expect(teamPicker).toBeTruthy(); expect(bottomSheet).toHaveBeenCalled(); @@ -139,10 +148,14 @@ describe('SearchScreen', () => { ); const searchInput = getByTestId('navigation.header.search_bar.search.input'); - fireEvent.changeText(searchInput, 'test search'); + act(() => { + fireEvent.changeText(searchInput, 'test search'); + }); const clearButton = getByTestId('navigation.header.search_bar.search.clear.button'); - fireEvent.press(clearButton); + act(() => { + fireEvent.press(clearButton); + }); expect(searchInput.props.value).toBe(''); }); @@ -154,8 +167,12 @@ describe('SearchScreen', () => { ); const searchInput = getByTestId('navigation.header.search_bar.search.input'); - fireEvent.changeText(searchInput, 'test search'); - fireEvent(searchInput, 'submitEditing'); + await act(async () => { + fireEvent.changeText(searchInput, 'test search'); + }); + await act(async () => { + fireEvent(searchInput, 'submitEditing'); + }); await waitFor(() => { expect(addSearchToTeamSearchHistory).toHaveBeenCalledWith( diff --git a/app/utils/helpers.ts b/app/utils/helpers.ts index 1555f0a77..516ed279a 100644 --- a/app/utils/helpers.ts +++ b/app/utils/helpers.ts @@ -157,7 +157,7 @@ export function hasTrailingSpaces(term: string) { export function isMainActivity() { if (Platform.OS === 'android') { const MattermostShare = require('@mattermost/rnshare').default; - return MattermostShare?.getCurrentActivityName() === 'MainActivity'; + return MattermostShare?.getCurrentActivityName().includes('MainActivity'); } return true; diff --git a/app/utils/log.test.ts b/app/utils/log.test.ts index 252c520db..16416b9a9 100644 --- a/app/utils/log.test.ts +++ b/app/utils/log.test.ts @@ -1,6 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import Config from '@assets/config.json'; import keyMirror from '@utils/key_mirror'; import {logError, logWarning, logInfo, logDebug} from './log'; @@ -25,12 +26,17 @@ describe('Logging functions', () => { const Sentry = require('@sentry/react-native'); const SentryLevels = keyMirror({debug: null, info: null, warning: null, error: null}); + beforeAll(() => { + Config.SentryEnabled = true; + }); + afterEach(() => { jest.clearAllMocks(); }); afterAll(() => { global.console = originalConsole; + Config.SentryEnabled = false; }); test('logError logs error and adds breadcrumb', () => { diff --git a/app/utils/log.ts b/app/utils/log.ts index 38acd662a..9c369bc83 100644 --- a/app/utils/log.ts +++ b/app/utils/log.ts @@ -1,6 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import Config from '@assets/config.json'; import keyMirror from '@utils/key_mirror'; const SentryLevels = keyMirror({debug: null, info: null, warning: null, error: null}); @@ -30,10 +31,12 @@ export function logDebug(...args: any[]) { } const addBreadcrumb = (logLevel: keyof typeof SentryLevels, ...args: any[]) => { - const Sentry = require('@sentry/react-native'); - Sentry.addBreadcrumb({ - level: logLevel, - message: args.join(','), - type: 'console-log', - }); + if (Config.SentryEnabled) { + const Sentry = require('@sentry/react-native'); + Sentry.addBreadcrumb({ + level: logLevel, + message: args.join(','), + type: 'console-log', + }); + } }; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..d8fb750e2 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,143 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {defineConfig, globalIgnores} from 'eslint/config'; +import tseslint from "@typescript-eslint/eslint-plugin"; +import * as tsparser from "@typescript-eslint/parser"; +import importPlugin from "eslint-plugin-import"; +import reactHooks from "eslint-plugin-react-hooks"; +import stylisticTs from "@stylistic/eslint-plugin-ts"; + +// Load custom rulesets +import eslintMattermost, {jestConfig} from "./eslint/eslint-mattermost.mjs"; +import eslintReact from "./eslint/eslint-react.mjs"; + +export default defineConfig([ + globalIgnores([ + "node_modules/", + "dist/", + "build/", + "coverage/", + "android/", + "ios/", + ".github/", + "detox/artifacts/", + ]), + eslintMattermost, + jestConfig, + eslintReact, + { + files: ["**/*.{js,jsx,ts,tsx}"], + languageOptions: { + parser: tsparser, + parserOptions: { + ecmaVersion: "latest", + ecmaFeatures: { + jsx: true + } + }, + globals: { + __DEV__: true + }, + sourceType: "module" + }, + plugins: { + "@stylistic/ts": stylisticTs, + "@typescript-eslint": tseslint, + "import": importPlugin, + "react-hooks": reactHooks + }, + settings: { + react: { + pragma: "React", + version: "detect" + } + }, + rules: { + "eol-last": ["error", "always"], + "global-require": "off", + "no-undefined": "off", + "no-shadow": "off", + "react/display-name": [2, { "ignoreTranspilerName": false }], + "react/jsx-filename-extension": "off", + "react-hooks/exhaustive-deps": "warn", + "camelcase": ["off", { "properties": "never" }], + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-unused-vars": [ + 2, + { + vars: "all", + args: "after-used", + caughtErrors: "none", + ignoreRestSiblings: true, + } + ], + "@typescript-eslint/no-shadow": ["error"], + "@typescript-eslint/no-explicit-any": "warn", + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": "off", + "@typescript-eslint/no-var-requires": "off", + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "no-underscore-dangle": "off", + "indent": [2, 4, { "SwitchCase": 1 }], + "key-spacing": [ + 2, + { + "singleLine": { + "beforeColon": false, + "afterColon": true + } + } + ], + "@stylistic/ts/member-delimiter-style": 2, + "@typescript-eslint/no-unsafe-declaration-merging": "off", + "import/order": [ + 2, + { + "groups": ["builtin", "external", "parent", "sibling", "index", "type"], + "newlines-between": "always", + "pathGroups": [ + { + "pattern": "{@(@actions|@app|@assets|@calls|@client|@components|@constants|@context|@database|@helpers|@hooks|@init|@managers|@queries|@screens|@selectors|@share|@store|@telemetry|@typings|@test|@utils)/**,@(@constants|@i18n|@store|@websocket)}", + "group": "external", + "position": "after" + }, + { + "pattern": "app/**", + "group": "parent", + "position": "before" + } + ], + "alphabetize": { + "order": "asc", + "caseInsensitive": true + }, + "pathGroupsExcludedImportTypes": ["type"] + } + ] + } + }, + + + { + files: ["detox/e2e/**"], + languageOptions: { + globals: { + by: true, + detox: true, + device: true, + element: true, + waitFor: true + } + }, + rules: { + "func-names": "off", + "import/no-unresolved": "off", + "max-nested-callbacks": "off", + "no-process-env": "off", + "no-unused-expressions": "off" + } + } +]); diff --git a/eslint/eslint-mattermost.json b/eslint/eslint-mattermost.json deleted file mode 100644 index 664a9a97b..000000000 --- a/eslint/eslint-mattermost.json +++ /dev/null @@ -1,505 +0,0 @@ -{ - "extends": [ - "eslint:recommended" - ], - "parserOptions": { - "ecmaVersion": 8, - "sourceType": "module", - "ecmaFeatures": { - "jsx": true, - "impliedStrict": true, - "modules": true - } - }, - "parser": "babel-eslint", - "plugins": [ - "header" - ], - "env": { - "browser": true, - "node": true, - "jquery": true, - "es6": true - }, - "rules": { - "array-bracket-spacing": [ - 2, - "never" - ], - "array-callback-return": 2, - "arrow-body-style": 0, - "arrow-parens": [ - 2, - "always" - ], - "arrow-spacing": [ - 2, - { - "before": true, - "after": true - } - ], - "block-scoped-var": 2, - "brace-style": [ - 2, - "1tbs", - { - "allowSingleLine": false - } - ], - "camelcase": [ - 2, - { - "properties": "never" - } - ], - "capitalized-comments": 0, - "class-methods-use-this": 0, - "comma-dangle": [ - 2, - "always-multiline" - ], - "comma-spacing": [ - 2, - { - "before": false, - "after": true - } - ], - "comma-style": [ - 2, - "last" - ], - "complexity": [ - 0, - 10 - ], - "computed-property-spacing": [ - 2, - "never" - ], - "consistent-return": 2, - "consistent-this": [ - 2, - "self" - ], - "constructor-super": 2, - "curly": [ - 2, - "all" - ], - "dot-location": [ - 2, - "object" - ], - "dot-notation": 2, - "eqeqeq": [ - 2, - "smart" - ], - "func-call-spacing": [ - 2, - "never" - ], - "func-name-matching": 0, - "func-names": 2, - "func-style": [ - 2, - "declaration", - { - "allowArrowFunctions": true - } - ], - "generator-star-spacing": [ - 2, - { - "before": false, - "after": true - } - ], - "global-require": 2, - "guard-for-in": 2, - "header/header": [ - 2, - "line", - " Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n See LICENSE.txt for license information." - ], - "id-blacklist": 0, - "indent": [ - 2, - 4, - { - "SwitchCase": 0 - } - ], - "jsx-quotes": [ - 2, - "prefer-single" - ], - "key-spacing": [ - 2, - { - "beforeColon": false, - "afterColon": true, - "mode": "strict" - } - ], - "keyword-spacing": [ - 2, - { - "before": true, - "after": true, - "overrides": {} - } - ], - "line-comment-position": 0, - "linebreak-style": 2, - "lines-around-comment": [ - 2, - { - "beforeBlockComment": true, - "beforeLineComment": true, - "allowBlockStart": true, - "allowBlockEnd": true - } - ], - "max-lines": [ - 1, - { - "max": 550, - "skipBlankLines": true, - "skipComments": true - } - ], - "max-nested-callbacks": [ - 2, - { - "max": 2 - } - ], - "max-statements-per-line": [ - 2, - { - "max": 1 - } - ], - "multiline-ternary": [ - 1, - "never" - ], - "new-cap": 2, - "new-parens": 2, - "newline-before-return": 0, - "newline-per-chained-call": 0, - "no-alert": 2, - "no-array-constructor": 2, - "no-await-in-loop": 2, - "no-caller": 2, - "no-case-declarations": 2, - "no-class-assign": 2, - "no-compare-neg-zero": 2, - "no-cond-assign": [ - 2, - "except-parens" - ], - "no-confusing-arrow": 2, - "no-console": 2, - "no-const-assign": 2, - "no-constant-condition": 2, - "no-debugger": 2, - "no-div-regex": 2, - "no-dupe-args": 2, - "no-dupe-class-members": 2, - "no-dupe-keys": 2, - "no-duplicate-case": 2, - "no-duplicate-imports": [ - 2, - { - "includeExports": true - } - ], - "no-else-return": 2, - "no-empty": 2, - "no-empty-function": 2, - "no-empty-pattern": 2, - "no-eval": 2, - "no-ex-assign": 2, - "no-extend-native": 2, - "no-extra-bind": 2, - "no-extra-label": 2, - "no-extra-parens": 0, - "no-extra-semi": 2, - "no-fallthrough": 2, - "no-floating-decimal": 2, - "no-func-assign": 2, - "no-global-assign": 2, - "no-implicit-coercion": 2, - "no-implicit-globals": 0, - "no-implied-eval": 2, - "no-inner-declarations": 0, - "no-invalid-regexp": 2, - "no-irregular-whitespace": 2, - "no-iterator": 2, - "no-labels": 2, - "no-lone-blocks": 2, - "no-lonely-if": 2, - "no-loop-func": 2, - "no-magic-numbers": 0, - "no-mixed-operators": [ - 2, - { - "allowSamePrecedence": false - } - ], - "no-mixed-spaces-and-tabs": 2, - "no-multi-assign": 2, - "no-multi-spaces": [ - 2, - { - "exceptions": { - "Property": false - } - } - ], - "no-multi-str": 0, - "no-multiple-empty-lines": [ - 2, - { - "max": 1 - } - ], - "no-native-reassign": 2, - "no-negated-condition": 2, - "no-nested-ternary": 2, - "no-new": 2, - "no-new-func": 2, - "no-new-object": 2, - "no-new-symbol": 2, - "no-new-wrappers": 2, - "no-octal-escape": 2, - "no-param-reassign": 2, - "no-process-env": 2, - "no-process-exit": 2, - "no-proto": 2, - "no-prototype-builtins": 1, - "no-redeclare": 2, - "no-return-assign": [ - 2, - "always" - ], - "no-return-await": 2, - "no-script-url": 2, - "no-self-assign": [ - 2, - { - "props": true - } - ], - "no-self-compare": 2, - "no-sequences": 2, - "no-shadow": [ - 2, - { - "hoist": "functions" - } - ], - "no-shadow-restricted-names": 2, - "no-spaced-func": 2, - "no-tabs": 0, - "no-template-curly-in-string": 2, - "no-ternary": 0, - "no-this-before-super": 2, - "no-throw-literal": 2, - "no-trailing-spaces": [ - 2, - { - "skipBlankLines": false - } - ], - "no-undef-init": 2, - "no-undefined": 2, - "no-underscore-dangle": 2, - "no-unexpected-multiline": 2, - "no-unmodified-loop-condition": 2, - "no-unneeded-ternary": [ - 2, - { - "defaultAssignment": false - } - ], - "no-unreachable": 2, - "no-unsafe-finally": 2, - "no-unsafe-negation": 2, - "no-unused-expressions": 2, - "no-unused-vars": [ - 2, - { - "vars": "all", - "args": "after-used" - } - ], - "no-use-before-define": [ - 2, - { - "classes": false, - "functions": false, - "variables": false - } - ], - "no-useless-computed-key": 2, - "no-useless-concat": 2, - "no-useless-constructor": 2, - "no-useless-escape": 2, - "no-useless-rename": 2, - "no-useless-return": 2, - "no-var": 0, - "no-void": 2, - "no-warning-comments": 1, - "no-whitespace-before-property": 2, - "no-with": 2, - "object-curly-newline": 0, - "object-curly-spacing": [ - 2, - "never" - ], - "object-property-newline": [ - 2, - { - "allowMultiplePropertiesPerLine": true - } - ], - "object-shorthand": [ - 2, - "always" - ], - "one-var": [ - 2, - "never" - ], - "one-var-declaration-per-line": 0, - "operator-assignment": [ - 2, - "always" - ], - "operator-linebreak": [ - 2, - "after" - ], - "padded-blocks": [ - 2, - "never" - ], - "prefer-arrow-callback": 2, - "prefer-const": 2, - "prefer-destructuring": 0, - "prefer-numeric-literals": 2, - "prefer-promise-reject-errors": 2, - "prefer-rest-params": 2, - "prefer-spread": 2, - "prefer-template": 0, - "quote-props": [ - 2, - "as-needed" - ], - "quotes": [ - 2, - "single", - "avoid-escape" - ], - "radix": 2, - "require-yield": 2, - "rest-spread-spacing": [ - 2, - "never" - ], - "semi": [ - 2, - "always" - ], - "semi-spacing": [ - 2, - { - "before": false, - "after": true - } - ], - "sort-imports": 0, - "sort-keys": 0, - "space-before-blocks": [ - 2, - "always" - ], - "space-before-function-paren": [ - 2, - { - "anonymous": "never", - "named": "never", - "asyncArrow": "always" - } - ], - "space-in-parens": [ - 2, - "never" - ], - "space-infix-ops": 2, - "space-unary-ops": [ - 2, - { - "words": true, - "nonwords": false - } - ], - "symbol-description": 2, - "template-curly-spacing": [ - 2, - "never" - ], - "valid-typeof": [ - 2, - { - "requireStringLiterals": false - } - ], - "vars-on-top": 0, - "wrap-iife": [ - 2, - "outside" - ], - "wrap-regex": 2, - "yoda": [ - 2, - "never", - { - "exceptRange": false, - "onlyEquality": false - } - ], - "@typescript-eslint/array-type": [2, {"default": "array-simple"}], - "@typescript-eslint/member-delimiter-style": 2, - "@typescript-eslint/type-annotation-spacing": 2 - }, - "overrides": [ - { - "files": ["*.test.js", "*.test.jsx", "*.test.ts", "*.test.tsx", "tests/**"], - "globals": { - "after": true, - "afterAll": true, - "afterEach": true, - "before": true, - "beforeAll": true, - "beforeEach": true, - "describe": true, - "expect": true, - "it": true, - "jest": true, - "test": true - }, - "rules": { - "no-empty-function": 0, - "no-console": 0, - "max-nested-callbacks": 0, - "no-undefined": 0 - } - } - ] -} diff --git a/eslint/eslint-mattermost.mjs b/eslint/eslint-mattermost.mjs new file mode 100644 index 000000000..7c137acd6 --- /dev/null +++ b/eslint/eslint-mattermost.mjs @@ -0,0 +1,224 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import {defineConfig} from 'eslint/config'; +import headerPlugin from "eslint-plugin-header"; +import tseslint from "@typescript-eslint/eslint-plugin"; +import stylisticTs from "@stylistic/eslint-plugin-ts"; + +headerPlugin.rules.header.meta.schema = false; + +export default defineConfig([ + { + files: ["**/*.{js,jsx,ts,tsx}"], + languageOptions: { + ecmaVersion: 8, + sourceType: "module", + globals: { + browser: true, + node: true, + jquery: true, + es6: true + }, + }, + plugins: { + header: headerPlugin, + "@typescript-eslint": tseslint, + "@stylistic/ts": stylisticTs, + }, + rules: { + "array-bracket-spacing": [2, "never"], + "array-callback-return": 2, + "arrow-body-style": 0, + "arrow-parens": [2, "always"], + "arrow-spacing": [2, { before: true, after: true }], + "block-scoped-var": 2, + "brace-style": [2, "1tbs", { allowSingleLine: false }], + "camelcase": [2, { properties: "never" }], + "capitalized-comments": 0, + "class-methods-use-this": 0, + "comma-dangle": [2, "always-multiline"], + "comma-spacing": [2, { before: false, after: true }], + "comma-style": [2, "last"], + "complexity": [0, 10], + "computed-property-spacing": [2, "never"], + "consistent-return": 2, + "consistent-this": [2, "self"], + "constructor-super": 2, + "curly": [2, "all"], + "dot-location": [2, "object"], + "dot-notation": 2, + "eqeqeq": [2, "smart"], + "func-call-spacing": [2, "never"], + "func-name-matching": 0, + "func-names": 2, + "func-style": [2, "declaration", { allowArrowFunctions: true }], + "generator-star-spacing": [2, { before: false, after: true }], + "global-require": 2, + "guard-for-in": 2, + "header/header": [ + 2, + "line", + " Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n See LICENSE.txt for license information." + ], + "id-blacklist": 0, + "indent": [2, 4, { SwitchCase: 0 }], + "jsx-quotes": [2, "prefer-single"], + "key-spacing": [2, { beforeColon: false, afterColon: true, mode: "strict" }], + "keyword-spacing": [2, { before: true, after: true, overrides: {} }], + "line-comment-position": 0, + "linebreak-style": 2, + "lines-around-comment": [2, { beforeBlockComment: true, beforeLineComment: true, allowBlockStart: true, allowBlockEnd: true }], + "max-lines": [1, { max: 550, skipBlankLines: true, skipComments: true }], + "max-nested-callbacks": [2, { max: 2 }], + "max-statements-per-line": [2, { max: 1 }], + "multiline-ternary": [1, "never"], + "new-cap": 2, + "new-parens": 2, + "newline-before-return": 0, + "newline-per-chained-call": 0, + "no-alert": 2, + "no-array-constructor": 2, + "no-await-in-loop": 2, + "no-caller": 2, + "no-case-declarations": 2, + "no-class-assign": 2, + "no-compare-neg-zero": 2, + "no-cond-assign": [2, "except-parens"], + "no-confusing-arrow": 2, + "no-console": 2, + "no-const-assign": 2, + "no-constant-condition": 2, + "no-debugger": 2, + "no-div-regex": 2, + "no-dupe-args": 2, + "no-dupe-class-members": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-duplicate-imports": [2, { includeExports: true }], + "no-else-return": 2, + "no-empty": 2, + "no-empty-function": 2, + "no-empty-pattern": 2, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-label": 2, + "no-extra-parens": 0, + "no-extra-semi": 2, + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-func-assign": 2, + "no-global-assign": 2, + "no-implicit-coercion": 2, + "no-implicit-globals": 0, + "no-implied-eval": 2, + "no-inner-declarations": 0, + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-lonely-if": 2, + "no-loop-func": 2, + "no-magic-numbers": 0, + "no-mixed-operators": [2, { allowSamePrecedence: false }], + "no-mixed-spaces-and-tabs": 2, + "no-multi-assign": 2, + "no-multi-spaces": [2, { exceptions: { Property: false } }], + "no-multiple-empty-lines": [2, { max: 1 }], + "no-native-reassign": 2, + "no-negated-condition": 2, + "no-nested-ternary": 2, + "no-new": 2, + "no-new-func": 2, + "no-new-object": 2, + "no-new-symbol": 2, + "no-new-wrappers": 2, + "no-octal-escape": 2, + "no-param-reassign": 2, + "no-process-env": 2, + "no-prototype-builtins": 1, + "no-redeclare": 0, + "no-return-assign": [2, "always"], + "no-return-await": 2, + "no-script-url": 2, + "no-self-assign": [2, { props: true }], + "no-self-compare": 2, + "no-sequences": 2, + "no-shadow": [2, { hoist: "functions" }], + "no-shadow-restricted-names": 2, + "no-spaced-func": 2, + "no-tabs": 0, + "no-ternary": 0, + "no-this-before-super": 2, + "no-throw-literal": 2, + "no-trailing-spaces": [2, { skipBlankLines: false }], + "no-undef-init": 2, + "no-undefined": 2, + "no-underscore-dangle": 2, + "no-unexpected-multiline": 2, + "no-unmodified-loop-condition": 2, + "no-unneeded-ternary": [2, { defaultAssignment: false }], + "no-unreachable": 2, + "no-unused-expressions": 2, + "no-use-before-define": [2, { classes: false, functions: false, variables: false }], + "no-useless-computed-key": 2, + "no-useless-concat": 2, + "no-useless-constructor": 2, + "no-useless-return": 2, + "no-var": 0, + "no-void": 2, + "no-warning-comments": 1, + "no-whitespace-before-property": 2, + "no-with": 2, + "object-curly-spacing": [2, "never"], + "object-property-newline": [2, { allowMultiplePropertiesPerLine: true }], + "object-shorthand": [2, "always"], + "one-var": [2, "never"], + "prefer-arrow-callback": 2, + "prefer-const": 2, + "prefer-numeric-literals": 2, + "prefer-promise-reject-errors": 2, + "quotes": [2, "single", "avoid-escape"], + "semi": [2, "always"], + "semi-spacing": [2, { before: false, after: true }], + "space-before-blocks": [2, "always"], + "space-in-parens": [2, "never"], + "@typescript-eslint/array-type": [2, { default: "array-simple" }], + "@stylistic/ts/member-delimiter-style": 2, + "@stylistic/ts/type-annotation-spacing": 2, + "@typescript-eslint/no-redeclare": [ + 2, + { ignoreDeclarationMerge: true } + ] + }, + }, + // Jest Config +]); + +export const jestConfig = defineConfig({ + files: ["**/*.test.{js,jsx,ts,tsx}", "**/tests/**"], + languageOptions: { + globals: { + after: true, + afterAll: true, + afterEach: true, + before: true, + beforeAll: true, + beforeEach: true, + describe: true, + expect: true, + it: true, + jest: true, + test: true + } + }, + rules: { + "no-empty-function": "off", + "no-console": "off", + "max-nested-callbacks": "off", + "no-undefined": 'off' + } +}); diff --git a/eslint/eslint-react.json b/eslint/eslint-react.json deleted file mode 100644 index 708d0390a..000000000 --- a/eslint/eslint-react.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "extends": [ - "plugin:react/recommended" - ], - "plugins": [ - "react" - ], - "rules": { - "react/display-name": [ - 0, - { - "ignoreTranspilerName": false - } - ], - "react/forbid-component-props": 0, - "react/forbid-elements": [ - 2, - { - "forbid": [ - "embed" - ] - } - ], - "react/jsx-boolean-value": [ - 2, - "always" - ], - "react/jsx-closing-bracket-location": [ - 2, - { - "location": "tag-aligned" - } - ], - "react/jsx-curly-spacing": [ - 2, - "never" - ], - "react/jsx-equals-spacing": [ - 2, - "never" - ], - "react/jsx-filename-extension": 2, - "react/jsx-first-prop-new-line": [ - 2, - "multiline" - ], - "react/jsx-handler-names": 0, - "react/jsx-indent": [ - 2, - 4 - ], - "react/jsx-indent-props": [ - 2, - 4 - ], - "react/jsx-key": 2, - "react/jsx-max-props-per-line": [ - 2, - { - "maximum": 1 - } - ], - "react/jsx-no-bind": 0, - "react/jsx-no-comment-textnodes": 2, - "react/jsx-no-duplicate-props": [ - 2, - { - "ignoreCase": false - } - ], - "react/jsx-no-literals": 2, - "react/jsx-no-target-blank": 2, - "react/jsx-no-undef": 2, - "react/jsx-pascal-case": 2, - "react/jsx-tag-spacing": [ - 2, - { - "closingSlash": "never", - "beforeSelfClosing": "never", - "afterOpening": "never" - } - ], - "react/jsx-uses-react": 2, - "react/jsx-uses-vars": 2, - "react/jsx-wrap-multilines": 2, - "react/no-array-index-key": 1, - "react/no-children-prop": 2, - "react/no-danger": 0, - "react/no-danger-with-children": 2, - "react/no-deprecated": 1, - "react/no-did-mount-set-state": 2, - "react/no-did-update-set-state": 2, - "react/no-direct-mutation-state": 2, - "react/no-find-dom-node": 1, - "react/no-is-mounted": 2, - "react/no-multi-comp": [ - 2, - { - "ignoreStateless": true - } - ], - "react/no-render-return-value": 2, - "react/no-set-state": 0, - "react/no-string-refs": 0, - "react/no-unescaped-entities": 2, - "react/no-unknown-property": 2, - "react/no-unused-prop-types": [ - 1, - { - "skipShapeProps": true - } - ], - "react/prefer-es6-class": 2, - "react/prefer-stateless-function": 0, - "react/prop-types": 2, - "react/require-default-props": 0, - "react/require-optimization": 1, - "react/require-render-return": 2, - "react/self-closing-comp": 2, - "react/sort-comp": 0, - "react/style-prop-object": 2 - } -} diff --git a/eslint/eslint-react.mjs b/eslint/eslint-react.mjs new file mode 100644 index 000000000..7070b0b5a --- /dev/null +++ b/eslint/eslint-react.mjs @@ -0,0 +1,58 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import reactPlugin from "eslint-plugin-react"; + +export default { + plugins: { + react: reactPlugin + }, + settings: { + react: { + pragma: "React", + version: "detect" + } + }, + rules: { + "react/display-name": [0, { ignoreTranspilerName: false }], + "react/forbid-elements": [2, { forbid: ["embed"] }], + "react/jsx-boolean-value": [2, "always"], + "react/jsx-closing-bracket-location": [2, { location: "tag-aligned" }], + "react/jsx-curly-spacing": [2, "never"], + "react/jsx-equals-spacing": [2, "never"], + "react/jsx-filename-extension": 2, + "react/jsx-first-prop-new-line": [2, "multiline"], + "react/jsx-indent": [2, 4], + "react/jsx-indent-props": [2, 4], + "react/jsx-key": 2, + "react/jsx-max-props-per-line": [2, { maximum: 1 }], + "react/jsx-no-comment-textnodes": 2, + "react/jsx-no-duplicate-props": [2, { ignoreCase: false }], + "react/jsx-no-literals": 2, + "react/jsx-no-target-blank": 2, + "react/jsx-no-undef": 2, + "react/jsx-pascal-case": 2, + "react/jsx-tag-spacing": [2, { closingSlash: "never", beforeSelfClosing: "never", afterOpening: "never" }], + "react/jsx-uses-react": 2, + "react/jsx-uses-vars": 2, + "react/jsx-wrap-multilines": 2, + "react/no-array-index-key": 1, + "react/no-children-prop": 2, + "react/no-danger": 0, + "react/no-deprecated": 1, + "react/no-did-mount-set-state": 2, + "react/no-did-update-set-state": 2, + "react/no-direct-mutation-state": 2, + "react/no-find-dom-node": 1, + "react/no-multi-comp": [2, { ignoreStateless: true }], + "react/no-render-return-value": 2, + "react/no-string-refs": 0, + "react/no-unescaped-entities": 2, + "react/no-unknown-property": 2, + "react/no-unused-prop-types": [1, { skipShapeProps: true }], + "react/prefer-es6-class": 2, + "react/require-default-props": 0, + "react/require-render-return": 2, + "react/self-closing-comp": 2 + } +}; diff --git a/fastlane/Gemfile.lock b/fastlane/Gemfile.lock index 77dacce14..cd9583ab8 100644 --- a/fastlane/Gemfile.lock +++ b/fastlane/Gemfile.lock @@ -15,21 +15,22 @@ GEM public_suffix (>= 2.0.2, < 7.0) artifactory (3.0.17) atomos (0.1.3) - aws-eventstream (1.3.0) - aws-partitions (1.1005.0) - aws-sdk-core (3.212.0) + aws-eventstream (1.3.2) + aws-partitions (1.1067.0) + aws-sdk-core (3.220.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) + base64 jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.95.0) - aws-sdk-core (~> 3, >= 3.210.0) + aws-sdk-kms (1.99.0) + aws-sdk-core (~> 3, >= 3.216.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.170.1) - aws-sdk-core (~> 3, >= 3.210.0) + aws-sdk-s3 (1.182.0) + aws-sdk-core (~> 3, >= 3.216.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.10.1) + aws-sigv4 (1.11.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) base64 (0.2.0) @@ -39,7 +40,7 @@ GEM commander (4.6.0) highline (~> 2.0.0) declarative (0.0.20) - digest-crc (0.6.5) + digest-crc (0.7.0) rake (>= 12.0.0, < 14.0.0) domain_name (0.6.20240107) dotenv (2.8.1) @@ -64,8 +65,8 @@ GEM faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.0.4) - multipart-post (~> 2) + faraday-multipart (1.1.0) + multipart-post (~> 2.0) faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) @@ -73,8 +74,8 @@ GEM faraday-retry (1.0.3) faraday_middleware (1.2.1) faraday (~> 1.0) - fastimage (2.3.1) - fastlane (2.225.0) + fastimage (2.4.0) + fastlane (2.227.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -114,7 +115,7 @@ GEM tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) - xcpretty (~> 0.3.0) + xcpretty (~> 0.4.0) xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) fastlane-plugin-android_change_package_identifier (0.1.0) fastlane-plugin-android_change_string_app_name (0.1.1) @@ -139,12 +140,12 @@ GEM google-apis-core (>= 0.11.0, < 2.a) google-apis-storage_v1 (0.31.0) google-apis-core (>= 0.11.0, < 2.a) - google-cloud-core (1.7.1) + google-cloud-core (1.8.0) google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.4.0) + google-cloud-errors (1.5.0) google-cloud-storage (1.47.0) addressable (~> 2.8) digest-crc (~> 0.4) @@ -160,17 +161,19 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.7) + http-cookie (1.0.8) domain_name (~> 0.5) - httpclient (2.8.3) + httpclient (2.9.0) + mutex_m jmespath (1.6.2) - json (2.8.1) - jwt (2.9.3) + json (2.10.2) + jwt (2.10.1) base64 mini_magick (4.13.2) mini_mime (1.1.5) multi_json (1.15.0) multipart-post (2.4.1) + mutex_m (0.3.0) nanaimo (0.4.0) naturally (2.2.1) nkf (0.2.0) @@ -182,7 +185,7 @@ GEM racc (~> 1.4) optparse (0.6.0) os (1.1.4) - plist (3.7.1) + plist (3.7.2) public_suffix (6.0.1) racc (1.8.1) rake (13.2.1) @@ -191,10 +194,10 @@ GEM trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.3.9) - rouge (2.0.7) + rexml (3.4.1) + rouge (3.28.0) ruby2_keywords (0.0.5) - rubyzip (2.3.2) + rubyzip (2.4.1) security (0.1.5) signet (0.19.0) addressable (~> 2.8) @@ -223,8 +226,8 @@ GEM colored2 (~> 3.1) nanaimo (~> 0.4.0) rexml (>= 3.3.6, < 4.0) - xcpretty (0.3.0) - rouge (~> 2.0.7) + xcpretty (0.4.0) + rouge (~> 3.28.0) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index d4e8a0ce4..18b442273 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -5,25 +5,25 @@ PODS: - CocoaLumberjack/Core (= 3.8.5) - CocoaLumberjack/Core (3.8.5) - DoubleConversion (1.1.6) - - EXApplication (6.0.1): + - EXApplication (6.0.2): - ExpoModulesCore - - EXConstants (17.0.3): + - EXConstants (17.0.8): - ExpoModulesCore - - Expo (52.0.19): + - Expo (52.0.40): - ExpoModulesCore - - ExpoCrypto (14.0.1): + - ExpoCrypto (14.0.2): - ExpoModulesCore - - ExpoDevice (7.0.1): + - ExpoDevice (7.0.2): - ExpoModulesCore - - ExpoFileSystem (18.0.6): + - ExpoFileSystem (18.0.12): - ExpoModulesCore - - ExpoImage (2.0.4): + - ExpoImage (2.0.6): - ExpoModulesCore - SDWebImage (~> 5.19.1) - SDWebImageSVGCoder (~> 1.7.0) - - ExpoLinearGradient (14.0.1): + - ExpoLinearGradient (14.0.2): - ExpoModulesCore - - ExpoModulesCore (2.1.2): + - ExpoModulesCore (2.2.3): - DoubleConversion - glog - hermes-engine @@ -46,11 +46,11 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - ExpoStoreReview (8.0.0): + - ExpoStoreReview (8.0.1): - ExpoModulesCore - - ExpoVideoThumbnails (9.0.2): + - ExpoVideoThumbnails (9.0.3): - ExpoModulesCore - - ExpoWebBrowser (14.0.1): + - ExpoWebBrowser (14.0.2): - ExpoModulesCore - FBLazyVector (0.76.5) - fmt (9.1.0) @@ -1366,7 +1366,7 @@ PODS: - Yoga - react-native-background-timer (2.4.1): - React-Core - - react-native-cameraroll (7.9.0): + - react-native-cameraroll (7.10.0): - DoubleConversion - glog - hermes-engine @@ -1431,7 +1431,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-image-picker (7.2.3): + - react-native-image-picker (8.2.0): - DoubleConversion - glog - hermes-engine @@ -1503,9 +1503,9 @@ PODS: - Yoga - react-native-performance (5.1.2): - React-Core - - react-native-safe-area-context (5.0.0): + - react-native-safe-area-context (5.3.0): - React-Core - - react-native-video (6.8.2): + - react-native-video (6.11.0): - DoubleConversion - glog - hermes-engine @@ -1518,7 +1518,7 @@ PODS: - React-featureflags - React-graphics - React-ImageManager - - react-native-video/Video (= 6.8.2) + - react-native-video/Video (= 6.11.0) - React-NativeModulesApple - React-RCTFabric - React-rendererdebug @@ -1527,7 +1527,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-video/Video (6.8.2): + - react-native-video/Video (6.11.0): - DoubleConversion - glog - hermes-engine @@ -1548,7 +1548,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-webrtc (124.0.4): + - react-native-webrtc (124.0.5): - JitsiWebRTC (~> 124.0.0) - React-Core - React-nativeconfig (0.76.5) @@ -1822,26 +1822,26 @@ PODS: - React-Core - ReactNativeIncallManager (4.2.0): - React-Core - - ReactNativeNavigation (7.40.3): + - ReactNativeNavigation (7.44.0): - HMSegmentedControl - React-Core - React-CoreModules - React-RCTImage - React-RCTText - - ReactNativeNavigation/Core (= 7.40.3) - - ReactNativeNavigation/Core (7.40.3): + - ReactNativeNavigation/Core (= 7.44.0) + - ReactNativeNavigation/Core (7.44.0): - HMSegmentedControl - React-Core - React-CoreModules - React-RCTImage - React-RCTText - - RNCClipboard (1.15.0): + - RNCClipboard (1.16.2): - React-Core - - RNDateTimePicker (8.2.0): + - RNDateTimePicker (8.3.0): - React-Core - RNFileViewer (2.1.5): - React-Core - - RNFlashList (1.7.3): + - RNFlashList (1.7.6): - DoubleConversion - glog - hermes-engine @@ -1862,7 +1862,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNGestureHandler (2.21.2): + - RNGestureHandler (2.24.0): - DoubleConversion - glog - hermes-engine @@ -1883,7 +1883,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNKeychain (9.2.2): + - RNKeychain (10.0.0): - DoubleConversion - glog - hermes-engine @@ -1904,9 +1904,9 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNLocalize (3.3.0): + - RNLocalize (3.4.1): - React-Core - - RNPermissions (5.2.1): + - RNPermissions (5.3.0): - React-Core - RNReactNativeHapticFeedback (2.3.3): - DoubleConversion @@ -1929,7 +1929,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNReanimated (3.16.5): + - RNReanimated (3.17.1): - DoubleConversion - glog - hermes-engine @@ -1941,7 +1941,9 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-ImageManager + - React-jsi - React-NativeModulesApple - React-RCTFabric - React-rendererdebug @@ -1949,10 +1951,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNReanimated/reanimated (= 3.16.5) - - RNReanimated/worklets (= 3.16.5) + - RNReanimated/reanimated (= 3.17.1) + - RNReanimated/worklets (= 3.17.1) - Yoga - - RNReanimated/reanimated (3.16.5): + - RNReanimated/reanimated (3.17.1): - DoubleConversion - glog - hermes-engine @@ -1964,7 +1966,9 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-ImageManager + - React-jsi - React-NativeModulesApple - React-RCTFabric - React-rendererdebug @@ -1972,9 +1976,9 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNReanimated/reanimated/apple (= 3.16.5) + - RNReanimated/reanimated/apple (= 3.17.1) - Yoga - - RNReanimated/reanimated/apple (3.16.5): + - RNReanimated/reanimated/apple (3.17.1): - DoubleConversion - glog - hermes-engine @@ -1986,7 +1990,9 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-ImageManager + - React-jsi - React-NativeModulesApple - React-RCTFabric - React-rendererdebug @@ -1995,7 +2001,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNReanimated/worklets (3.16.5): + - RNReanimated/worklets (3.17.1): - DoubleConversion - glog - hermes-engine @@ -2007,7 +2013,33 @@ PODS: - React-Fabric - React-featureflags - React-graphics + - React-hermes - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNReanimated/worklets/apple (= 3.17.1) + - Yoga + - RNReanimated/worklets/apple (3.17.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi - React-NativeModulesApple - React-RCTFabric - React-rendererdebug @@ -2016,7 +2048,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNScreens (4.3.0): + - RNScreens (4.9.2): - DoubleConversion - glog - hermes-engine @@ -2061,7 +2093,7 @@ PODS: - ReactCommon/turbomodule/core - Sentry/HybridSDK (= 8.41.0) - Yoga - - RNShare (12.0.3): + - RNShare (12.0.9): - DoubleConversion - glog - hermes-engine @@ -2082,7 +2114,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNSVG (15.10.1): + - RNSVG (15.11.2): - React-Core - RNVectorIcons (10.2.0): - DoubleConversion @@ -2117,7 +2149,7 @@ PODS: - SwiftyJSON (5.0.2) - TurboLogIOSNative (0.1.0): - CocoaLumberjack (~> 3.8.5) - - WatermelonDB (0.28.0-1): + - WatermelonDB (0.28.0-2): - React - simdjson - Yoga (0.0.0) @@ -2495,18 +2527,18 @@ SPEC CHECKSUMS: boost: 1dca942403ed9342f98334bf4c3621f011aa7946 CocoaLumberjack: 6a459bc897d6d80bd1b8c78482ec7ad05dffc3f0 DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385 - EXApplication: 88ebf1a95f85faa5d2df160016d61f2d060e9438 - EXConstants: 277129d9a42ba2cf1fad375e7eaa9939005c60be - Expo: 848501c300b37b3fa7330c58a5353e07e03d5c3d - ExpoCrypto: 483fc758365923f89ddaab4327c21cae9534841d - ExpoDevice: 449822f2c45660c1ce83283dd51c67fe5404996c - ExpoFileSystem: a38e1bb58d77f41717293a7b73ebd4014d8cb8dd - ExpoImage: 18ec1a3e5cd96ee6162d988be3085e18113e143f - ExpoLinearGradient: 18148bd38f98fa0229c1f9df23393b32ab6d2d32 - ExpoModulesCore: c9cb309323aee3c048099bb40ad0226e3fcf0c56 - ExpoStoreReview: f38ed71ee04dfc02dde63a05f925f001cebba5d8 - ExpoVideoThumbnails: 5572e98fac313bfdc86f7d7915354f13a364ed38 - ExpoWebBrowser: b658ba8a9161f1b54afb279591cfce2cb73330fa + EXApplication: 4c72f6017a14a65e338c5e74fca418f35141e819 + EXConstants: fcfc75800824ac2d5c592b5bc74130bad17b146b + Expo: 4f645fc381f88e6acacfb0dcb63b45fb9eff25b9 + ExpoCrypto: e97e864c8d7b9ce4a000bca45dddb93544a1b2b4 + ExpoDevice: 1662ecdf42a8b5b2cf60ef7cecaf5a297639dd63 + ExpoFileSystem: 42d363d3b96f9afab980dcef60d5657a4443c655 + ExpoImage: eefe750743772ec0ca1a8055f56c8653e7de21fc + ExpoLinearGradient: 35ebd83b16f80b3add053a2fd68cc328ed927f60 + ExpoModulesCore: 15f60d00e33ca0cea27147543877ca6e70c42ef5 + ExpoStoreReview: 92ad323dd14485e7aa67d5b47248fb22876ffaee + ExpoVideoThumbnails: 7e9cd967393af9af0f7b0c62a4a00549f1860cab + ExpoWebBrowser: a212e6b480d8857d3e441fba51e0c968333803b3 FBLazyVector: 1bf99bb46c6af9a2712592e707347315f23947aa fmt: 10c6e61f4be25dc963c36bd73fc7b1705fe975be glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a @@ -2547,19 +2579,19 @@ SPEC CHECKSUMS: React-Mapbuffer: 7eb5d69e1154e7743487ef0c8d7261e5b59afb32 React-microtasksnativemodule: 16e31e4f503a5f46adafd035096130418c3bce70 react-native-background-timer: 4638ae3bee00320753647900b21260b10587b6f7 - react-native-cameraroll: 5f180ef5e9b52b6c3c3a2645fa33a921d1e37a6c + react-native-cameraroll: 12a9c1cd6d10d32d438f45cc1a55348728062055 react-native-cookies: d648ab7025833b977c0b19e142503034f5f29411 react-native-document-picker: 530879d9e89b490f0954bcc4ab697c5b5e35d659 react-native-emm: afc895b726861262e1b7fecaccb1339492c0bbdc - react-native-image-picker: 130fad649d07e4eec8faaed361d3bba570e1e5ff + react-native-image-picker: 86f8954a0b8c0f85d56fa1d85ae87936ae74e615 react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 react-native-network-client: fdbd7f5f4c2818d6b90b4dcf9613d0a54ab41303 react-native-notifications: 3bafa1237ae8a47569a84801f17d80242fe9f6a5 react-native-paste-input: d33daa183942fa57f34dff2088805a60895f14d2 react-native-performance: 125a96c145e29918b55b45ce25cbba54f1e24dcd - react-native-safe-area-context: 314537f8fca6fe2c06bd53fc8905efa9e6aaaf59 - react-native-video: cab619600c0d1283080c80298a2abe3a6a9157f3 - react-native-webrtc: 2261a482150195092246fe70b3aff976f2e11ec5 + react-native-safe-area-context: fdb0a66feac038cb6eb1edafcf2ccee2b5cf0284 + react-native-video: 11ad1501910486a22bd4f9acd623660df4a9c1a9 + react-native-webrtc: 62659d18a13f6b50ad95c99a9a48cf9872a15815 React-nativeconfig: f7ab6c152e780b99a8c17448f2d99cf5f69a2311 React-NativeModulesApple: 9aeb901b9bfcc9235e912445fb3cf4780a99baf4 React-perflogger: 16e049953d21b37e9871ddf0b02f414e12ff14ba @@ -2589,21 +2621,21 @@ SPEC CHECKSUMS: ReactCommon: 5809a8ee421b7219221a475b78180f8f34b5c5ec ReactNativeExceptionHandler: a23922ca00122b050ae9412f960061791c232c47 ReactNativeIncallManager: ef7b845e166f04cf8ddf433d8a23227b01cef87a - ReactNativeNavigation: 7579af7ae4f79c58691c19a06630bd50172c8817 - RNCClipboard: dbcf25b8f666b4685c02eeb65be981d30198e505 - RNDateTimePicker: 818460dc31b0dc5ec58289003e27dd8d022fb79c + ReactNativeNavigation: 1be1769ba07b05f5f7065294d6001e84e6c3a2a0 + RNCClipboard: e1d17c9d093d8129ef50b39b63a17a0e8ccd0ade + RNDateTimePicker: 29264364ea7b8cc0fb355b3843cf276a4ff78966 RNFileViewer: 4b5d83358214347e4ab2d4ca8d5c1c90d869e251 - RNFlashList: 3f19b05498275481fa67506db51057eee62fa54a - RNGestureHandler: 5b24d10761754ad271b714e536c457fd89b17c54 - RNKeychain: bd09fc5dcf4e0c4166a5d4012beaf2e093fcd9f5 - RNLocalize: d024afa9204c13885e61dc88b8190651bcaabac9 - RNPermissions: 318634eacdb21addd8c709467035b2304d2963d3 + RNFlashList: fad82b8b2d3ee447fcc4723d747f43b38710c4fc + RNGestureHandler: fc491c834d09b0538618a3f328ab75fe8f90f5b4 + RNKeychain: 57c0b42f79950ba6bdca5277ab52a6b24dccd595 + RNLocalize: 15463c4d79c7da45230064b4adcf5e9bb984667e + RNPermissions: 84ae3e68efdd6d4a5142c8969df11869bfb06fa8 RNReactNativeHapticFeedback: 00ba111b82aa266bb3ee1aa576831c2ea9a9dfad - RNReanimated: 5d4ff4e212df81d3890e581446d8ab714a8dc2ba - RNScreens: e21c8d32fe97737ecc30f1f21e7b6f69f341a1f5 + RNReanimated: 17a1990801a6a324816dcc52a9a44dfb99d556b3 + RNScreens: 0e8829648c78f4168f3e96cdc2e219213cb1907c RNSentry: c5075bc124ebc8afa84e037c7fe257053a0b2cda - RNShare: d40e9e8d071f845fff5072173ffb7a3bf3918c6d - RNSVG: 3421710ac15f4f2dc47e5c122f2c2e4282116830 + RNShare: 381ed02f6c0dc42b8c24bb5a1e5df0ee5fd91354 + RNSVG: a07e14363aa208062c6483bad24a438d5986d490 RNVectorIcons: 182892e7d1a2f27b52d3c627eca5d2665a22ee28 SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3 SDWebImageSVGCoder: 15a300a97ec1c8ac958f009c02220ac0402e936c @@ -2613,7 +2645,7 @@ SPEC CHECKSUMS: Starscream: 19b5533ddb925208db698f0ac508a100b884a1b9 SwiftyJSON: f5b1bf1cd8dd53cd25887ac0eabcfd92301c6a5a TurboLogIOSNative: 45f6d20ba17ee39f8106e718e93baf43b2d76b7b - WatermelonDB: 438a8dd16910dfe622095c44b5d1dbe11cbba6ba + WatermelonDB: e9fe3df0dfccbb9d196d3e244b52b8761a267434 Yoga: fcc198acd4a55599b3468cfb6ebc526baff5f06e PODFILE CHECKSUM: 0e437947a8e6696940c2efdfd7205ab54d67b7b8 diff --git a/libraries/@mattermost/hardware-keyboard/android/build.gradle b/libraries/@mattermost/hardware-keyboard/android/build.gradle index 572408d10..eca9a02f0 100644 --- a/libraries/@mattermost/hardware-keyboard/android/build.gradle +++ b/libraries/@mattermost/hardware-keyboard/android/build.gradle @@ -6,7 +6,7 @@ buildscript { google() gradlePluginPortal() } - def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : "1.9.22" + def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : "1.9.24" dependencies { classpath("com.android.tools.build:gradle:7.3.1") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") diff --git a/libraries/@mattermost/hardware-keyboard/android/src/main/java/com/mattermost/hardware/keyboard/MattermostHardwareKeyboardPackage.kt b/libraries/@mattermost/hardware-keyboard/android/src/main/java/com/mattermost/hardware/keyboard/MattermostHardwareKeyboardPackage.kt index d47bfcc0a..ecf6acbd1 100644 --- a/libraries/@mattermost/hardware-keyboard/android/src/main/java/com/mattermost/hardware/keyboard/MattermostHardwareKeyboardPackage.kt +++ b/libraries/@mattermost/hardware-keyboard/android/src/main/java/com/mattermost/hardware/keyboard/MattermostHardwareKeyboardPackage.kt @@ -20,10 +20,10 @@ class MattermostHardwareKeyboardPackage : TurboReactPackage() { MattermostHardwareKeyboardImpl.NAME to ReactModuleInfo( MattermostHardwareKeyboardImpl.NAME, MattermostHardwareKeyboardImpl.NAME, - false, // canOverrideExistingModule - false, // needsEagerInit - false, // isCxxModule - BuildConfig.IS_NEW_ARCHITECTURE_ENABLED // isTurboModule + _canOverrideExistingModule = false, + _needsEagerInit = false, + isCxxModule = false, + isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED ) ) } diff --git a/libraries/@mattermost/rnshare/android/build.gradle b/libraries/@mattermost/rnshare/android/build.gradle index 0fa7cb9a4..aec19ed16 100644 --- a/libraries/@mattermost/rnshare/android/build.gradle +++ b/libraries/@mattermost/rnshare/android/build.gradle @@ -6,7 +6,7 @@ buildscript { google() gradlePluginPortal() } - def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : "1.9.22" + def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : "1.9.24" dependencies { classpath("com.android.tools.build:gradle:7.3.1") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") @@ -55,5 +55,5 @@ repositories { dependencies { implementation 'com.facebook.react:react-native' - implementation 'androidx.work:work-runtime:2.8.1' + implementation 'androidx.work:work-runtime:2.10.0' } diff --git a/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/MattermostSharePackage.kt b/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/MattermostSharePackage.kt index 807e8d6d1..d547ebb46 100644 --- a/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/MattermostSharePackage.kt +++ b/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/MattermostSharePackage.kt @@ -22,10 +22,10 @@ class MattermostSharePackage : TurboReactPackage() { moduleInfos[MattermostShareImpl.NAME] = ReactModuleInfo( MattermostShareImpl.NAME, MattermostShareImpl.NAME, - false, // canOverrideExistingModule - false, // needsEagerInit - false, // isCxxModule - isTurboModule // isTurboModule + _canOverrideExistingModule = false, + _needsEagerInit = false, + isCxxModule = false, + isTurboModule = isTurboModule ) moduleInfos } diff --git a/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/ShareUtils.kt b/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/ShareUtils.kt index 4cfff49a6..8908a0b76 100644 --- a/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/ShareUtils.kt +++ b/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/ShareUtils.kt @@ -7,6 +7,7 @@ import android.graphics.BitmapFactory import android.media.MediaMetadataRetriever import android.net.Uri import android.webkit.URLUtil +import androidx.core.net.toUri import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.ReadableMap import com.facebook.react.bridge.WritableMap @@ -95,7 +96,7 @@ object ShareUtils { retriever.setDataSource(decodedPath.replace("file://", "")) } else if (filePath.contains("content://")) { - retriever.setDataSource(context, Uri.parse(filePath)) + retriever.setDataSource(context, filePath.toUri()) } val image = retriever.getFrameAtTime((time * 1000).toLong(), MediaMetadataRetriever.OPTION_CLOSEST_SYNC) diff --git a/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/ShareWorker.kt b/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/ShareWorker.kt index 6058e1c7d..9ac75160a 100644 --- a/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/ShareWorker.kt +++ b/libraries/@mattermost/rnshare/android/src/main/java/com/mattermost/rnshare/ShareWorker.kt @@ -1,7 +1,8 @@ package com.mattermost.rnshare -import android.content.pm.ServiceInfo import android.content.Context +import android.content.pm.ServiceInfo +import android.os.Build import android.util.Base64 import android.util.Log import androidx.core.app.NotificationCompat @@ -199,7 +200,11 @@ class ShareWorker(private val context: Context, workerParameters: WorkerParamete .setSmallIcon(applicationContext.resources.getIdentifier("ic_notification", "mipmap", applicationContext.packageName)) .setOngoing(true) .build() - return ForegroundInfo(1, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC) + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + ForegroundInfo(1, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC) + } else { + ForegroundInfo(1, notification) + } } } diff --git a/libraries/@mattermost/rnutils/android/build.gradle b/libraries/@mattermost/rnutils/android/build.gradle index d924db57a..390622ba9 100644 --- a/libraries/@mattermost/rnutils/android/build.gradle +++ b/libraries/@mattermost/rnutils/android/build.gradle @@ -6,7 +6,7 @@ buildscript { google() gradlePluginPortal() } - def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : "1.9.22" + def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : "1.9.24" dependencies { classpath("com.android.tools.build:gradle:7.3.1") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") @@ -55,9 +55,9 @@ repositories { dependencies { implementation 'com.facebook.react:react-native' - implementation 'androidx.window:window:1.2.0' - implementation 'androidx.window:window-core:1.2.0' - implementation 'androidx.window:window-rxjava3:1.2.0' + implementation 'androidx.window:window:1.3.0' + implementation 'androidx.window:window-core:1.3.0' + implementation 'androidx.window:window-rxjava3:1.3.0' implementation 'io.reactivex.rxjava3:rxjava:3.1.6' implementation 'io.reactivex.rxjava3:rxandroid:3.0.2' diff --git a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/RNUtilsModuleImpl.kt b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/RNUtilsModuleImpl.kt index 250ec3c45..98a441cb3 100644 --- a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/RNUtilsModuleImpl.kt +++ b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/RNUtilsModuleImpl.kt @@ -1,10 +1,9 @@ package com.mattermost.rnutils import android.app.Activity -import android.net.Uri import android.os.Build import android.view.WindowManager -import androidx.core.view.OnApplyWindowInsetsListener +import androidx.core.net.toUri import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactApplicationContext @@ -16,7 +15,6 @@ import com.mattermost.rnutils.helpers.SaveDataTask import com.mattermost.rnutils.helpers.SplitView class RNUtilsModuleImpl(private val reactContext: ReactApplicationContext) { - private var customInsetsListener: OnApplyWindowInsetsListener? = null companion object { const val NAME = "RNUtils" @@ -56,7 +54,7 @@ class RNUtilsModuleImpl(private val reactContext: ReactApplicationContext) { var result = "" if (currentActivity != null) { - val uri = Uri.parse(filePath) + val uri = filePath?.toUri() val path: String? = RealPathUtil.getRealPathFromURI(reactContext, uri) if (path != null) { result = "file://$path" @@ -93,7 +91,7 @@ class RNUtilsModuleImpl(private val reactContext: ReactApplicationContext) { fun lockPortrait() {} - fun deleteDatabaseDirectory(databaseName: String?, shouldRemoveDirectory: Boolean): WritableMap { + fun deleteDatabaseDirectory(): WritableMap { val map = Arguments.createMap() map.putNull("error") map.putBoolean("success", true) diff --git a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/RNUtilsPackage.kt b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/RNUtilsPackage.kt index 7c8c0b650..34a8a8942 100644 --- a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/RNUtilsPackage.kt +++ b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/RNUtilsPackage.kt @@ -20,10 +20,10 @@ class RNUtilsPackage : TurboReactPackage() { RNUtilsModuleImpl.NAME to ReactModuleInfo( RNUtilsModuleImpl.NAME, RNUtilsModuleImpl.NAME, - false, - false, - false, - BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + _canOverrideExistingModule = false, + _needsEagerInit = false, + isCxxModule = false, + isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED ) ) } diff --git a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/FoldableObserver.kt b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/FoldableObserver.kt index 9a65d905a..04ad4fe3b 100644 --- a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/FoldableObserver.kt +++ b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/FoldableObserver.kt @@ -55,7 +55,7 @@ class FoldableObserver(activity: Activity) { disposable = observable.observeOn(AndroidSchedulers.mainThread()) .subscribe { layoutInfo -> setIsDeviceFolded(layoutInfo) - handleWindowLayoutInfo(layoutInfo) + handleWindowLayoutInfo() SplitView.setDeviceFolded() } } @@ -82,7 +82,7 @@ class FoldableObserver(activity: Activity) { } } - private fun handleWindowLayoutInfo(windowLayoutInfo: WindowLayoutInfo) { + private fun handleWindowLayoutInfo() { val bounds = getWindowSize() if (bounds?.width() != windowBounds?.width()) { @@ -111,7 +111,7 @@ class FoldableObserver(activity: Activity) { } fun getWindowDimensions(): Rect? { - return this.windowBounds; + return this.windowBounds } fun isCompactView(): Boolean { diff --git a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/NotificationHelper.kt b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/NotificationHelper.kt index 05ab745fb..ecbc16f2d 100644 --- a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/NotificationHelper.kt +++ b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/NotificationHelper.kt @@ -8,6 +8,7 @@ import android.text.TextUtils import androidx.core.app.NotificationManagerCompat import org.json.JSONException import org.json.JSONObject +import androidx.core.content.edit object NotificationHelper { private const val PUSH_NOTIFICATIONS: String = "PUSH_NOTIFICATIONS" @@ -33,10 +34,8 @@ object NotificationHelper { } if (version != storedVersion) { - if (pSharedPref != null) { - val editor = pSharedPref.edit() - editor.putString(PREF_VERSION, version) - editor.apply() + pSharedPref?.edit { + putString(PREF_VERSION, version) } val inputMap: Map = HashMap() @@ -98,7 +97,7 @@ object NotificationHelper { // Add the summary notification id as well notificationsInGroup.put((notificationId + 1).toString(), true) } - notificationsInServer.put(groupId, notificationsInGroup) + groupId?.let { notificationsInServer.put(it, notificationsInGroup) } notificationsPerServer[serverUrl] = notificationsInServer saveMap(context, notificationsPerServer) @@ -148,7 +147,7 @@ object NotificationHelper { notificationsInServer.remove(groupId) } else { try { - notificationsInServer.put(groupId, notificationsInGroup) + groupId?.let { notificationsInServer.put(it, notificationsInGroup) } } catch (e: JSONException) { e.printStackTrace() } @@ -295,10 +294,10 @@ object NotificationHelper { try { if (pSharedPref != null) { val jsonString = pSharedPref.getString(NOTIFICATIONS_IN_GROUP, JSONObject().toString()) - val json = JSONObject(jsonString) - val servers = json.keys() + val json = jsonString?.let { JSONObject(it) } + val servers = json?.keys() - while (servers.hasNext()) { + while (servers?.hasNext() == true) { val serverUrl = servers.next() val notificationGroup = json.getJSONObject(serverUrl) outputMap[serverUrl] = notificationGroup diff --git a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/RealPathUtil.kt b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/RealPathUtil.kt index 03031ee11..4e71b3fd8 100644 --- a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/RealPathUtil.kt +++ b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/RealPathUtil.kt @@ -67,7 +67,7 @@ object RealPathUtil { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI } } - val selectionArgs = arrayOf(split[1]) + val selectionArgs = arrayOf(split[1]) return contentUri?.let { getDataColumn(context, it, selectionArgs) } } } @@ -94,7 +94,8 @@ object RealPathUtil { val returnCursor = context.contentResolver.query(uri, null, null, null, null) val nameIndex = returnCursor?.getColumnIndex(OpenableColumns.DISPLAY_NAME) returnCursor?.moveToFirst() - fileName = sanitizeFilename(nameIndex?.let { returnCursor?.getString(it) }) + fileName = sanitizeFilename(nameIndex?.let { returnCursor.getString(it) }) + returnCursor?.close() } catch (e:Exception) { // just continue to get the filename with the last segment of the path } @@ -126,18 +127,18 @@ object RealPathUtil { private fun sanitizeFilename(filename: String?): String? { if (filename == null) { - return null; + return null } - val f = File(filename); - return f.name; + val f = File(filename) + return f.name } private fun getDataColumn(context:Context, uri:Uri, selectionArgs:Array): String? { var cursor: Cursor? = null val column = "_data" val selection = "_id=?" - val projection = arrayOf(column) + val projection = arrayOf(column) try { cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null) @@ -185,7 +186,7 @@ object RealPathUtil { } } - fun getMimeType(file: File): String? { + private fun getMimeType(file: File): String? { val extension = getExtension(file.name) if (extension?.length!! > 0) { return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.substring(1)) diff --git a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/SaveDataTask.kt b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/SaveDataTask.kt index 66861eb25..2750ca7e8 100644 --- a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/SaveDataTask.kt +++ b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/SaveDataTask.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.net.Uri import android.webkit.MimeTypeMap import androidx.core.content.FileProvider +import androidx.core.net.toUri import com.facebook.react.bridge.ActivityEventListener import com.facebook.react.bridge.BaseActivityEventListener import com.facebook.react.bridge.Promise @@ -25,12 +26,14 @@ open class SaveDataTask(val reactContext: ReactApplicationContext) { private val weakContext = WeakReference(reactContext.applicationContext) private val myExecutor = Executors.newSingleThreadExecutor() + private lateinit var mActivityEventListener: ActivityEventListener + companion object { const val SAVE_REQUEST: Int = 38641 } init { - var mActivityEventListener: ActivityEventListener = object : BaseActivityEventListener() { + mActivityEventListener = object : BaseActivityEventListener() { override fun onActivityResult(activity: Activity, requestCode: Int, resultCode: Int, intent: Intent?) { if (requestCode == SAVE_REQUEST) { if (resultCode == Activity.RESULT_CANCELED) { @@ -50,11 +53,13 @@ open class SaveDataTask(val reactContext: ReactApplicationContext) { } mPickerPromise = null + reactContext.removeActivityEventListener(mActivityEventListener) } } } - } + reactContext.addActivityEventListener(mActivityEventListener) + } private fun save(fromFile: String, toFile: Uri) { myExecutor.execute { @@ -84,7 +89,7 @@ open class SaveDataTask(val reactContext: ReactApplicationContext) { var filename = "" if (filePath?.startsWith("content://") == true) { - contentUri = Uri.parse(filePath) + contentUri = filePath.toUri() } else { val newFile = filePath?.let { File(it) } filename = newFile?.name ?: "" diff --git a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/SplitView.kt b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/SplitView.kt index 317b9a4a9..cde5d5883 100644 --- a/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/SplitView.kt +++ b/libraries/@mattermost/rnutils/android/src/main/java/com/mattermost/rnutils/helpers/SplitView.kt @@ -41,7 +41,7 @@ class SplitView { private fun getSplitViewResults(folded: Boolean): WritableMap? { if (context?.currentActivity != null) { val map = Arguments.createMap() - var isSplitView = folded; + var isSplitView = folded if (context?.currentActivity?.isInMultiWindowMode == true) { isSplitView = FoldableObserver.getInstance()?.isCompactView() == true } diff --git a/libraries/@mattermost/rnutils/android/src/newarch/RNUtilsModule.kt b/libraries/@mattermost/rnutils/android/src/newarch/RNUtilsModule.kt index 20f356269..b2744c6bc 100644 --- a/libraries/@mattermost/rnutils/android/src/newarch/RNUtilsModule.kt +++ b/libraries/@mattermost/rnutils/android/src/newarch/RNUtilsModule.kt @@ -41,7 +41,7 @@ class RNUtilsModule(val reactContext: ReactApplicationContext) : NativeRNUtilsSp } override fun deleteDatabaseDirectory(databaseName: String?, shouldRemoveDirectory: Boolean): WritableMap { - return implementation.deleteDatabaseDirectory(databaseName, shouldRemoveDirectory) + return implementation.deleteDatabaseDirectory() } override fun renameDatabase(databaseName: String?, newDatabaseName: String?): WritableMap { diff --git a/libraries/@mattermost/rnutils/android/src/oldarch/RNUtilsModule.kt b/libraries/@mattermost/rnutils/android/src/oldarch/RNUtilsModule.kt index 08558b78e..1fe4ada42 100644 --- a/libraries/@mattermost/rnutils/android/src/oldarch/RNUtilsModule.kt +++ b/libraries/@mattermost/rnutils/android/src/oldarch/RNUtilsModule.kt @@ -66,7 +66,7 @@ class RNUtilsModule(context: ReactApplicationContext) : @ReactMethod(isBlockingSynchronousMethod = true) fun deleteDatabaseDirectory(databaseName: String?, shouldRemoveDirectory: Boolean): WritableMap { - return implementation.deleteDatabaseDirectory(databaseName, shouldRemoveDirectory) + return implementation.deleteDatabaseDirectory() } @ReactMethod(isBlockingSynchronousMethod = true) diff --git a/package-lock.json b/package-lock.json index 6117e86a4..64edac1e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,13 @@ "hasInstallScript": true, "license": "Apache 2.0", "dependencies": { - "@formatjs/intl-datetimeformat": "6.17.1", - "@formatjs/intl-getcanonicallocales": "2.5.4", - "@formatjs/intl-listformat": "7.7.8", - "@formatjs/intl-locale": "4.2.8", - "@formatjs/intl-numberformat": "8.15.1", - "@formatjs/intl-pluralrules": "5.4.1", - "@gorhom/bottom-sheet": "5.0.6", + "@formatjs/intl-datetimeformat": "6.17.4", + "@formatjs/intl-getcanonicallocales": "2.5.5", + "@formatjs/intl-listformat": "7.7.11", + "@formatjs/intl-locale": "4.2.11", + "@formatjs/intl-numberformat": "8.15.4", + "@formatjs/intl-pluralrules": "5.4.4", + "@gorhom/bottom-sheet": "5.1.2", "@mattermost/calls": "github:mattermost/calls-common#030ff7c0a37ee9b0ccc5fae0b2ea9c0e1c08473f", "@mattermost/compass-icons": "0.1.48", "@mattermost/hardware-keyboard": "file:./libraries/@mattermost/hardware-keyboard", @@ -26,22 +26,22 @@ "@mattermost/react-native-turbo-log": "0.6.0", "@mattermost/rnshare": "file:./libraries/@mattermost/rnshare", "@mattermost/rnutils": "file:./libraries/@mattermost/rnutils", - "@msgpack/msgpack": "2.8.0", - "@nozbe/watermelondb": "0.28.0-1", - "@react-native-camera-roll/camera-roll": "7.9.0", - "@react-native-clipboard/clipboard": "1.15.0", + "@msgpack/msgpack": "3.1.1", + "@nozbe/watermelondb": "0.28.0-2", + "@react-native-camera-roll/camera-roll": "7.10.0", + "@react-native-clipboard/clipboard": "1.16.2", "@react-native-community/cli": "15.1.3", "@react-native-community/cli-platform-android": "15.1.3", "@react-native-community/cli-platform-ios": "15.1.3", - "@react-native-community/datetimepicker": "8.2.0", + "@react-native-community/datetimepicker": "8.3.0", "@react-native-community/netinfo": "11.4.1", "@react-native-cookies/cookies": "6.2.1", - "@react-navigation/bottom-tabs": "7.2.0", - "@react-navigation/native": "7.0.14", - "@react-navigation/stack": "7.1.0", + "@react-navigation/bottom-tabs": "7.3.2", + "@react-navigation/native": "7.0.18", + "@react-navigation/stack": "7.2.2", "@rneui/base": "4.0.0-rc.8", "@sentry/react-native": "6.4.0", - "@shopify/flash-list": "1.7.3", + "@shopify/flash-list": "1.7.6", "@stream-io/flat-list-mvcp": "0.10.3", "@voximplant/react-native-foreground-service": "3.0.2", "APNG4Android": "github:mattermost/APNG4Android#15a7e93d59542d18c1e562d49b3f4896dd1643a6", @@ -51,69 +51,69 @@ "deep-equal": "2.2.3", "deepmerge": "4.3.1", "emoji-regex": "10.4.0", - "expo": "52.0.19", - "expo-application": "6.0.1", - "expo-crypto": "14.0.1", - "expo-device": "7.0.1", - "expo-image": "2.0.4", - "expo-linear-gradient": "14.0.1", - "expo-store-review": "8.0.0", - "expo-video-thumbnails": "9.0.2", - "expo-web-browser": "14.0.1", + "expo": "52.0.40", + "expo-application": "6.0.2", + "expo-crypto": "14.0.2", + "expo-device": "7.0.2", + "expo-image": "2.0.6", + "expo-linear-gradient": "14.0.2", + "expo-store-review": "8.0.1", + "expo-video-thumbnails": "9.0.3", + "expo-web-browser": "14.0.2", "fflate": "0.8.2", - "fuse.js": "7.0.0", - "html-entities": "2.5.2", - "mime-db": "1.53.0", - "moment-timezone": "0.5.46", - "node-html-parser": "6.1.13", + "fuse.js": "7.1.0", + "html-entities": "2.5.3", + "mime-db": "1.54.0", + "moment-timezone": "0.5.48", + "node-html-parser": "7.0.1", "path-to-regexp": "8.2.0", "react": "18.3.1", "react-freeze": "1.0.4", - "react-intl": "7.0.4", + "react-intl": "7.1.8", "react-native": "0.76.5", "react-native-background-timer": "2.4.1", "react-native-document-picker": "9.3.1", "react-native-dotenv": "3.4.11", "react-native-exception-handler": "2.10.10", "react-native-file-viewer": "2.1.5", - "react-native-gesture-handler": "2.21.2", + "react-native-gesture-handler": "2.24.0", "react-native-haptic-feedback": "2.3.3", - "react-native-image-picker": "7.2.3", + "react-native-image-picker": "8.2.0", "react-native-incall-manager": "4.2.0", "react-native-keyboard-aware-scroll-view": "0.9.5", - "react-native-keychain": "9.2.2", - "react-native-localize": "3.3.0", + "react-native-keychain": "10.0.0", + "react-native-localize": "3.4.1", "react-native-math-view": "3.9.5", - "react-native-navigation": "7.40.3", + "react-native-navigation": "7.44.0", "react-native-notifications": "5.1.0", "react-native-performance": "5.1.2", - "react-native-permissions": "5.2.1", - "react-native-reanimated": "3.16.5", - "react-native-safe-area-context": "5.0.0", - "react-native-screens": "4.3.0", + "react-native-permissions": "5.3.0", + "react-native-reanimated": "3.17.1", + "react-native-safe-area-context": "5.3.0", + "react-native-screens": "4.9.2", "react-native-section-list-get-item-layout": "2.2.3", "react-native-shadow-2": "7.1.1", - "react-native-share": "12.0.3", - "react-native-svg": "15.10.1", + "react-native-share": "12.0.9", + "react-native-svg": "15.11.2", "react-native-url-polyfill": "2.0.0", "react-native-vector-icons": "10.2.0", - "react-native-video": "6.8.2", + "react-native-video": "6.11.0", "react-native-walkthrough-tooltip": "1.6.0", - "react-native-webrtc": "124.0.4", + "react-native-webrtc": "124.0.5", "react-syntax-highlighter": "15.6.1", - "semver": "7.6.3", + "semver": "7.7.1", "tinycolor2": "1.6.0", "url-parse": "1.5.10" }, "devDependencies": { "@babel/cli": "7.26.4", - "@babel/core": "7.26.0", - "@babel/eslint-parser": "7.25.9", + "@babel/core": "7.26.10", + "@babel/eslint-parser": "7.26.10", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/plugin-proposal-decorators": "7.25.9", - "@babel/plugin-transform-flow-strip-types": "7.25.9", - "@babel/plugin-transform-runtime": "7.25.9", - "@babel/preset-env": "7.26.0", + "@babel/plugin-transform-flow-strip-types": "7.26.5", + "@babel/plugin-transform-runtime": "7.26.10", + "@babel/preset-env": "7.26.9", "@babel/preset-typescript": "7.26.0", "@babel/register": "7.25.9", "@babel/runtime": "7.26.10", @@ -121,53 +121,54 @@ "@react-native/eslint-config": "0.76.5", "@react-native/metro-config": "0.76.5", "@react-native/typescript-config": "0.76.5", + "@stylistic/eslint-plugin-ts": "4.2.0", "@testing-library/react-hooks": "8.0.1", - "@testing-library/react-native": "12.9.0", + "@testing-library/react-native": "13.2.0", "@types/base-64": "1.0.2", "@types/commonmark": "0.27.9", "@types/commonmark-react-renderer": "4.3.4", "@types/deep-equal": "1.0.4", "@types/jest": "29.5.14", - "@types/lodash": "4.17.13", + "@types/lodash": "4.17.16", "@types/mime-db": "1.43.5", "@types/pako": "2.0.3", "@types/querystringify": "2.0.2", "@types/react": "18.3.12", "@types/react-native-background-timer": "2.0.2", "@types/react-native-dotenv": "0.2.2", - "@types/react-native-share": "6.0.0", "@types/react-syntax-highlighter": "15.5.13", "@types/semver": "7.5.8", "@types/tinycolor2": "1.4.6", "@types/tough-cookie": "4.0.5", "@types/url-parse": "1.4.11", "@types/uuid": "10.0.0", - "@typescript-eslint/eslint-plugin": "7.14.1", - "@typescript-eslint/parser": "7.14.1", + "@typescript-eslint/eslint-plugin": "8.27.0", + "@typescript-eslint/parser": "8.27.0", "babel-jest": "29.7.0", - "babel-loader": "9.2.1", + "babel-loader": "10.0.0", "babel-plugin-module-resolver": "5.0.2", - "eslint": "8.57.1", + "eslint": "9.23.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.31.0", - "eslint-plugin-jest": "28.9.0", - "eslint-plugin-react": "7.37.2", - "eslint-plugin-react-hooks": "5.1.0", + "eslint-plugin-jest": "28.11.0", + "eslint-plugin-react": "7.37.4", + "eslint-plugin-react-hooks": "5.2.0", "husky": "9.1.7", "isomorphic-fetch": "3.0.0", "jest": "29.7.0", "jest-cli": "29.7.0", - "jest-expo": "52.0.2", + "jest-expo": "52.0.6", "jetifier": "2.0.0", "mmjstool": "github:mattermost/mattermost-utilities#83b1b311972b8f5e750aae4019457a40abb5aa44", - "nock": "13.5.6", + "nock": "14.0.1", "patch-package": "8.0.0", - "react-devtools-core": "6.0.1", + "react-devtools-core": "6.1.1", + "react-test-renderer": "18.3.1", "timezones.json": "1.7.1", - "tough-cookie": "5.0.0", - "ts-jest": "29.2.5", - "typescript": "5.7.2", - "uuid": "11.0.3" + "tough-cookie": "5.1.2", + "ts-jest": "29.2.6", + "typescript": "5.8.2", + "uuid": "11.1.0" }, "engines": { "node": "^18.18.0 || ^20.0.0 || ^22.11.0", @@ -193,9 +194,9 @@ "license": "Apache 2.0" }, "node_modules/@0no-co/graphql.web": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.12.tgz", - "integrity": "sha512-BTDjjsV/zSPy5fqItwm+KWUfh9CSe9tTtR6rCB72ddtkAxdcHbi4Ir4r/L1Et4lyxmL+i7Rb3m9sjLLi9tYrzA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.1.2.tgz", + "integrity": "sha512-N2NGsU5FLBhT8NZ+3l2YrzZSHITjNXNuDhC4iDiikv0IujaJ0Xc6xIxQZ/Ek3Cb+rgPjnLHYyJm11tInuJn+cw==", "license": "MIT", "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" @@ -408,26 +409,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.0", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -450,7 +455,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.25.9", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.10.tgz", + "integrity": "sha512-QsfQZr4AiLpKqn7fz+j7SN+f43z2DZCgGyYbNJ2vJOqKfG4E6MZer1+jqGZqKJaxq/gdO2DC/nUu45+pOL5p2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -475,11 +482,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -499,10 +508,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -641,7 +652,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1280,12 +1293,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.8" }, "engines": { "node": ">=6.9.0" @@ -1310,10 +1325,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1489,11 +1506,13 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.25.9", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-flow": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" }, "engines": { "node": ">=6.9.0" @@ -1503,10 +1522,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { @@ -1669,10 +1690,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1936,13 +1959,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.9", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -2001,10 +2026,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -2014,10 +2041,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -2112,12 +2141,14 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.0", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", @@ -2129,9 +2160,9 @@ "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", @@ -2142,21 +2173,21 @@ "@babel/plugin-transform-duplicate-keys": "^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", "@babel/plugin-transform-function-name": "^7.25.9", "@babel/plugin-transform-json-strings": "^7.25.9", "@babel/plugin-transform-literals": "^7.25.9", "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", @@ -2172,17 +2203,17 @@ "@babel/plugin-transform-shorthand-properties": "^7.25.9", "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "engines": { @@ -2293,7 +2324,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.24.4", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.10.tgz", + "integrity": "sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==", "license": "MIT", "dependencies": { "core-js-pure": "^3.30.2", @@ -2318,14 +2351,16 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.4", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2419,17 +2454,79 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -2437,29 +2534,12 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2479,16 +2559,13 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2507,13 +2584,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2527,27 +2597,38 @@ "node": "*" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@expo/bunyan": { @@ -2572,29 +2653,30 @@ } }, "node_modules/@expo/cli": { - "version": "0.22.6", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.6.tgz", - "integrity": "sha512-eDjCnc3uHl2+SJ6aZ5seK0FkMp0W12oAdSI4A/yV8ecYtXzG8X87sfKAISEWt44B4DqJ0a1LEqCD6Vtvc783Mg==", + "version": "0.22.21", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.21.tgz", + "integrity": "sha512-lLtH0CiNTwB+qgduew61Jocgj0B092QiQllBuPXigHI4VQms5VXYXHfQC2pMZ7KWFKhNjBIjLSD8A2n1dBMb1Q==", "license": "MIT", "dependencies": { "@0no-co/graphql.web": "^1.0.8", "@babel/runtime": "^7.20.0", "@expo/code-signing-certificates": "^0.0.5", - "@expo/config": "~10.0.4", - "@expo/config-plugins": "~9.0.10", + "@expo/config": "~10.0.11", + "@expo/config-plugins": "~9.0.17", "@expo/devcert": "^1.1.2", - "@expo/env": "~0.4.0", - "@expo/image-utils": "^0.6.0", - "@expo/json-file": "^9.0.0", - "@expo/metro-config": "~0.19.8", - "@expo/osascript": "^2.0.31", - "@expo/package-manager": "^1.5.0", - "@expo/plist": "^0.2.0", - "@expo/prebuild-config": "^8.0.23", + "@expo/env": "~0.4.2", + "@expo/image-utils": "^0.6.5", + "@expo/json-file": "^9.0.2", + "@expo/metro-config": "~0.19.12", + "@expo/osascript": "^2.1.6", + "@expo/package-manager": "^1.7.2", + "@expo/plist": "^0.2.2", + "@expo/prebuild-config": "^8.0.29", "@expo/rudder-sdk-node": "^1.1.1", "@expo/spawn-async": "^1.7.2", + "@expo/ws-tunnel": "^1.0.1", "@expo/xcpretty": "^4.3.0", - "@react-native/dev-middleware": "0.76.5", + "@react-native/dev-middleware": "0.76.7", "@urql/core": "^5.0.6", "@urql/exchange-retry": "^1.3.0", "accepts": "^1.3.8", @@ -2633,7 +2715,7 @@ "requireg": "^0.2.2", "resolve": "^1.22.2", "resolve-from": "^5.0.0", - "resolve.exports": "^2.0.2", + "resolve.exports": "^2.0.3", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", @@ -2653,6 +2735,56 @@ "expo-internal": "build/bin/cli" } }, + "node_modules/@expo/cli/node_modules/@react-native/debugger-frontend": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.7.tgz", + "integrity": "sha512-89ZtZXt7ZxE94i7T94qzZMhp4Gfcpr/QVpGqEaejAxZD+gvDCH21cYSF+/Rz2ttBazm0rk5MZ0mFqb0Iqp1jmw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=18" + } + }, + "node_modules/@expo/cli/node_modules/@react-native/dev-middleware": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.7.tgz", + "integrity": "sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA==", + "license": "MIT", + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.76.7", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "selfsigned": "^2.4.1", + "serve-static": "^1.13.1", + "ws": "^6.2.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@expo/cli/node_modules/@react-native/dev-middleware/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@expo/cli/node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, "node_modules/@expo/cli/node_modules/ansi-regex": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", @@ -2662,6 +2794,20 @@ "node": ">=6" } }, + "node_modules/@expo/cli/node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, "node_modules/@expo/cli/node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -2674,24 +2820,16 @@ "node": ">=4" } }, - "node_modules/@expo/cli/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@expo/cli/node_modules/form-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz", - "integrity": "sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", + "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -2767,6 +2905,15 @@ "node": ">=4" } }, + "node_modules/@expo/cli/node_modules/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@expo/cli/node_modules/mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", @@ -2807,6 +2954,24 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/@expo/cli/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/cli/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/@expo/cli/node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", @@ -2850,6 +3015,15 @@ "node": ">=4" } }, + "node_modules/@expo/cli/node_modules/ora/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/@expo/cli/node_modules/picomatch": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", @@ -2900,9 +3074,9 @@ } }, "node_modules/@expo/cli/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -2931,15 +3105,15 @@ } }, "node_modules/@expo/config": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-10.0.6.tgz", - "integrity": "sha512-xXkfPElrtxznkOZxFASJ7OPa6E9IHSjcZwj5BQ6XUF2dz5M7AFa2h5sXM8AalSaDU5tEBSgoUOjTh5957TlR8g==", + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-10.0.11.tgz", + "integrity": "sha512-nociJ4zr/NmbVfMNe9j/+zRlt7wz/siISu7PjdWE4WE+elEGxWWxsGzltdJG0llzrM+khx8qUiFK5aiVcdMBww==", "license": "MIT", "dependencies": { "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~9.0.10", - "@expo/config-types": "^52.0.0", - "@expo/json-file": "^9.0.0", + "@expo/config-plugins": "~9.0.17", + "@expo/config-types": "^52.0.5", + "@expo/json-file": "^9.0.2", "deepmerge": "^4.3.1", "getenv": "^1.0.0", "glob": "^10.4.2", @@ -2952,14 +3126,14 @@ } }, "node_modules/@expo/config-plugins": { - "version": "9.0.12", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-9.0.12.tgz", - "integrity": "sha512-/Ko/NM+GzvJyRkq8PITm8ms0KY5v0wmN1OQFYRMkcJqOi3PjlhndW+G6bHpJI9mkQXBaUnHwAiGLqIC3+MQ5Wg==", + "version": "9.0.17", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-9.0.17.tgz", + "integrity": "sha512-m24F1COquwOm7PBl5wRbkT9P9DviCXe0D7S7nQsolfbhdCWuvMkfXeoWmgjtdhy7sDlOyIgBrAdnB6MfsWKqIg==", "license": "MIT", "dependencies": { - "@expo/config-types": "^52.0.0", - "@expo/json-file": "~9.0.0", - "@expo/plist": "^0.2.0", + "@expo/config-types": "^52.0.5", + "@expo/json-file": "~9.0.2", + "@expo/plist": "^0.2.2", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", @@ -3035,9 +3209,9 @@ } }, "node_modules/@expo/config-types": { - "version": "52.0.1", - "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-52.0.1.tgz", - "integrity": "sha512-vD8ZetyKV7U29lR6+NJohYeoLYTH+eNYXJeNiSOrWCz0witJYY11meMmEnpEaVbN89EfC6uauSUOa6wihtbyPQ==", + "version": "52.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-52.0.5.tgz", + "integrity": "sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA==", "license": "MIT" }, "node_modules/@expo/config/node_modules/@babel/code-frame": { @@ -3144,9 +3318,9 @@ "license": "MIT" }, "node_modules/@expo/env": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.4.0.tgz", - "integrity": "sha512-g2JYFqck3xKIwJyK+8LxZ2ENZPWtRgjFWpeht9abnKgzXVXBeSNECFBkg+WQjQocSIdxXhEWM6hz4ZAe7Tc4ng==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.4.2.tgz", + "integrity": "sha512-TgbCgvSk0Kq0e2fLoqHwEBL4M0ztFjnBEz0YCDm5boc1nvkV1VMuIMteVdeBwnTh8Z0oPJTwHCD49vhMEt1I6A==", "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -3157,9 +3331,9 @@ } }, "node_modules/@expo/fingerprint": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.11.4.tgz", - "integrity": "sha512-FfcvHjrWjOJ17wiMfr1iQ1YDyjlj8qfxG+GDce0khrjNSkzRjVdCOIFsMvfVSBPnOPX5NuZlgMRvMkcPUtGClA==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.11.11.tgz", + "integrity": "sha512-gNyn1KnAOpEa8gSNsYqXMTcq0fSwqU/vit6fP5863vLSKxHm/dNt/gm/uZJxrRZxKq71KUJWF6I7d3z8qIfq5g==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -3246,9 +3420,9 @@ } }, "node_modules/@expo/image-utils": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.6.3.tgz", - "integrity": "sha512-v/JbCKBrHeudxn1gN1TgfPE/pWJSlLPrl29uXJBgrJFQVkViQvUHQNDhaS+UEa9wYI5HHh7XYmtzAehyG4L+GA==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.6.5.tgz", + "integrity": "sha512-RsS/1CwJYzccvlprYktD42KjyfWZECH6PPIEowvoSmXfGLfdViwcUEI4RvBfKX5Jli6P67H+6YmHvPTbGOboew==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -3288,9 +3462,9 @@ } }, "node_modules/@expo/json-file": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.0.0.tgz", - "integrity": "sha512-M+55xFVrFzDcgMDf+52lPDLjKB5xwRfStWlv/b/Vu2OLgxGZLWpxoPYjlRoHqxjPbCQIi2ZCbobK+0KuNhsELg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.0.2.tgz", + "integrity": "sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw==", "license": "MIT", "dependencies": { "@babel/code-frame": "~7.10.4", @@ -3319,18 +3493,18 @@ } }, "node_modules/@expo/metro-config": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.19.8.tgz", - "integrity": "sha512-dVAOetouQYuOTEJ2zR0OTLNPOH6zPkeEt5fY53TK0Wxi1QmtsmH6vEWg05U4zkSJ6f1aXmQ0Za77R8QxuukESA==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.19.12.tgz", + "integrity": "sha512-fhT3x1ikQWHpZgw7VrEghBdscFPz1laRYa8WcVRB18nTTqorF6S8qPYslkJu1faEziHZS7c2uyDzTYnrg/CKbg==", "license": "MIT", "dependencies": { "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", "@babel/parser": "^7.20.0", "@babel/types": "^7.20.0", - "@expo/config": "~10.0.4", - "@expo/env": "~0.4.0", - "@expo/json-file": "~9.0.0", + "@expo/config": "~10.0.11", + "@expo/env": "~0.4.2", + "@expo/json-file": "~9.0.2", "@expo/spawn-async": "^1.7.2", "chalk": "^4.1.0", "debug": "^4.3.2", @@ -3426,9 +3600,9 @@ } }, "node_modules/@expo/osascript": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.1.4.tgz", - "integrity": "sha512-LcPjxJ5FOFpqPORm+5MRLV0CuYWMthJYV6eerF+lQVXKlvgSn3EOqaHC3Vf3H+vmB0f6G4kdvvFtg40vG4bIhA==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.1.6.tgz", + "integrity": "sha512-SbMp4BUwDAKiFF4zZEJf32rRYMeNnLK9u4FaPo0lQRer60F+SKd20NTSys0wgssiVeQyQz2OhGLRx3cxYowAGw==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -3439,12 +3613,12 @@ } }, "node_modules/@expo/package-manager": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.6.1.tgz", - "integrity": "sha512-4rT46wP/94Ll+CWXtFKok1Lbo9XncSUtErFOo/9/3FVughGbIfdG4SKZOAWIpr9wxwEfkyhHfAP9q71ONlWODw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.7.2.tgz", + "integrity": "sha512-wT/qh9ebNjl6xr00bYkSh93b6E/78J3JPlT6WzGbxbsnv5FIZKB/nr522oWqVe1E+ML7BpXs8WugErWDN9kOFg==", "license": "MIT", "dependencies": { - "@expo/json-file": "^9.0.0", + "@expo/json-file": "^9.0.2", "@expo/spawn-async": "^1.7.2", "ansi-regex": "^5.0.0", "chalk": "^4.0.0", @@ -3659,9 +3833,9 @@ } }, "node_modules/@expo/plist": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.2.0.tgz", - "integrity": "sha512-F/IZJQaf8OIVnVA6XWUeMPC3OH6MV00Wxf0WC0JhTQht2QgjyHUa3U5Gs3vRtDq8tXNsZneOQRDVwpaOnd4zTQ==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.2.2.tgz", + "integrity": "sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g==", "license": "MIT", "dependencies": { "@xmldom/xmldom": "~0.7.7", @@ -3670,17 +3844,17 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "8.0.23", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.23.tgz", - "integrity": "sha512-Zf01kFiN2PISmLb0DhIAJh76v3J2oYUKSjiAtGZLOH0HUz59by/qdyU4mGHWdeyRdCCrLUA21Rct2MBykvRMsg==", + "version": "8.0.29", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.29.tgz", + "integrity": "sha512-CoZBxUQLZpGwbnPREr2sFnObOn4j+Mp7AHxX6Rz5jhSSz2VifC1jMM4NFiXrZe6LZyjYNqBGRe3D8bAqdpVGkg==", "license": "MIT", "dependencies": { - "@expo/config": "~10.0.4", - "@expo/config-plugins": "~9.0.10", - "@expo/config-types": "^52.0.0", - "@expo/image-utils": "^0.6.0", - "@expo/json-file": "^9.0.0", - "@react-native/normalize-colors": "0.76.5", + "@expo/config": "~10.0.11", + "@expo/config-plugins": "~9.0.17", + "@expo/config-types": "^52.0.5", + "@expo/image-utils": "^0.6.5", + "@expo/json-file": "^9.0.2", + "@react-native/normalize-colors": "0.76.7", "debug": "^4.3.1", "fs-extra": "^9.0.0", "resolve-from": "^5.0.0", @@ -3688,6 +3862,12 @@ "xml2js": "0.6.0" } }, + "node_modules/@expo/prebuild-config/node_modules/@react-native/normalize-colors": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.7.tgz", + "integrity": "sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg==", + "license": "MIT" + }, "node_modules/@expo/prebuild-config/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -3755,6 +3935,12 @@ "prop-types": "^15.8.1" } }, + "node_modules/@expo/ws-tunnel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-1.0.6.tgz", + "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==", + "license": "MIT" + }, "node_modules/@expo/xcpretty": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.2.tgz", @@ -3844,61 +4030,61 @@ } }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz", - "integrity": "sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.4.tgz", + "integrity": "sha512-qrycXDeaORzIqNhBOx0btnhpD1c+/qFIHAN9znofuMJX6QBwtbrmlpWfD4oiUUD2vJUOIYFA/gYtg2KAMGG7sA==", "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "2.2.5", - "@formatjs/intl-localematcher": "0.5.9", - "decimal.js": "10", - "tslib": "2" + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/intl-localematcher": "0.6.1", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz", - "integrity": "sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.7.tgz", + "integrity": "sha512-Yabmi9nSvyOMrlSeGGWDiH7rf3a7sIwplbvo/dlz9WCIjzIQAfy1RMf4S0X3yG724n5Ghu2GmEl5NJIV6O9sZQ==", "license": "MIT", "dependencies": { - "tslib": "2" + "tslib": "^2.8.0" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.9.7", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.7.tgz", - "integrity": "sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.2.tgz", + "integrity": "sha512-AfiMi5NOSo2TQImsYAg8UYddsNJ/vUEv/HaNqiFjnI3ZFfWihUtD5QtuX6kHl8+H+d3qvnE/3HZrfzgdWpsLNA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/icu-skeleton-parser": "1.8.11", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/icu-skeleton-parser": "1.8.14", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.11.tgz", - "integrity": "sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==", + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.14.tgz", + "integrity": "sha512-i4q4V4qslThK4Ig8SxyD76cp3+QJ3sAqr7f6q9VVfeGtxG9OhiAk3y9XF6Q41OymsKzsGQ6OQQoJNY4/lI8TcQ==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-3.0.4.tgz", - "integrity": "sha512-pnetak6R7Xp/ET96O5kx9zRYoQQqr6sbRXWkJHKw0Hr/jr3ls4CddZKq+suwCDuW6p/ior2BhpOSh/WLLcJM6w==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-3.1.5.tgz", + "integrity": "sha512-cCTrhTqXGbacet55cKrRlT6lhhDqCBJCqoyngksWNqKzr832jDqrMLjf2tihJArx6TNhPdCJOVgyDw93DhfFhA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/fast-memoize": "2.2.5", - "@formatjs/icu-messageformat-parser": "2.9.7", - "intl-messageformat": "10.7.10", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.2", + "intl-messageformat": "10.7.16", + "tslib": "^2.8.0" }, "peerDependencies": { - "typescript": "5" + "typescript": "5.8.2" }, "peerDependenciesMeta": { "typescript": { @@ -3907,95 +4093,96 @@ } }, "node_modules/@formatjs/intl-datetimeformat": { - "version": "6.17.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-6.17.1.tgz", - "integrity": "sha512-a18NqRo6R73xpREuMZo8FqjO+LnYFDHoeoviTh5de4ebI46wqLSDgbAIKoceuWblTQt8bvCpJIwvKgLItea88Q==", + "version": "6.17.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-6.17.4.tgz", + "integrity": "sha512-tFt38cC8JDXijdICU0Azc+UnlZ3N/bVui9YUVrWSzRcOtG99UTaxdioJ8W6JbtJLPPgiyHqwp1XjYgg+y4bxUw==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/intl-localematcher": "0.5.9", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/intl-localematcher": "0.6.1", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-enumerator": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/@formatjs/intl-enumerator/-/intl-enumerator-1.8.7.tgz", - "integrity": "sha512-qd7UlWUivKRJ073btssUqMSqzWW9yN3Ki6EqfCZ6uvIv19mONelE5q3GMmdPWBEjgqZikBzBE2qPTqfrgJ4TCA==", + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/@formatjs/intl-enumerator/-/intl-enumerator-1.8.10.tgz", + "integrity": "sha512-/iDm5v5809LN6GiEwT7gU/0lVuKbpyRh3l9USL205mi1kcunvY8eo4mooNr/3/cV4zWG9aUuPwrzukgSCaYlcg==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-getcanonicallocales": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.5.4.tgz", - "integrity": "sha512-vSDOsAcc3U+Kl/0b3de8wCQkb3W30H8LUuslyz67wTAHOPSQhPimZyquhwxXpJR+K5yy9CkzTgk5YE5kFT+PFg==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-2.5.5.tgz", + "integrity": "sha512-sxosgiLSGhf3So3hf4nk223G+qxWEZytAWVmgwuK5k16698N6jMbndzLL0R51i54aTTIp+UyIC+VKjns2eil3w==", "license": "MIT", "dependencies": { - "tslib": "2" + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-listformat": { - "version": "7.7.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.7.8.tgz", - "integrity": "sha512-ezlfqfyegMbepGVcf3rTApVGIbZQvJwx1PZsXjMe2xAqEU1jSBZ/2efLE8u3sUBHGrrsdWER98W85zCg4N7rmQ==", + "version": "7.7.11", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.7.11.tgz", + "integrity": "sha512-rESLS974zMEZc+Ql1HjjfkUyzxJLFABLvNFTmbWetL1gx8KvMMqXexOA2muGH3vsWQnSGzY8SAeksdlDElebtw==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/intl-localematcher": "0.5.9", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/intl-localematcher": "0.6.1", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-locale": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-locale/-/intl-locale-4.2.8.tgz", - "integrity": "sha512-6RY/npeA0kyoZ8QW0JRAT+VBAFBT6+4ZVeGkKCNIDjbLX2LPuU73emGR35Mbwcc6pquVFrxyo6mXxKNzib0kEA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@formatjs/intl-locale/-/intl-locale-4.2.11.tgz", + "integrity": "sha512-8OtGsxPawRF8D6I9SPVhoS/tNSAD0KO/9BywbaP3YNHeoI3qxsK7IR0bN7BCjW6qHZZD7U3VnXVHHteVk12zMA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/intl-enumerator": "1.8.7", - "@formatjs/intl-getcanonicallocales": "2.5.4", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/intl-enumerator": "1.8.10", + "@formatjs/intl-getcanonicallocales": "2.5.5", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz", - "integrity": "sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", "license": "MIT", "dependencies": { - "tslib": "2" + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-numberformat": { - "version": "8.15.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-numberformat/-/intl-numberformat-8.15.1.tgz", - "integrity": "sha512-NIouSY50xpH/SMJrRbX1Q3hMsGyQmT5MQrta/bOYhpZda1bztOlEYZAKLytk8VGs10wkGz875602mCMhtg4/LA==", + "version": "8.15.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-numberformat/-/intl-numberformat-8.15.4.tgz", + "integrity": "sha512-Y7ObFiSY5XC2v19H6nXwQ9zRMvPcBQP+rva26u8Z1ZfUTiMVtYAJ5dtAITILFJ9IPgcjUZY1gZLmJCmu0uLIhg==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/intl-localematcher": "0.5.9", - "decimal.js": "10", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/intl-localematcher": "0.6.1", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" } }, "node_modules/@formatjs/intl-pluralrules": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.4.1.tgz", - "integrity": "sha512-kKK4ixTsfKAzyJIVRiJGuw4zd18nEHXiKloYBO9VmLpxrwJTgLQHv2+1hcbxQcwbbo2uc8moUFQuyvxeGEFOfw==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.4.4.tgz", + "integrity": "sha512-PdxoTmqaIh9c/zMR6Hw6+avrEh0b0giYlF4S4KOUjmWHUfDFj/8BqKVFFyQx1QInsRWhjdRWumqKYrcsjogDwg==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/intl-localematcher": "0.5.9", - "decimal.js": "10", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/intl-localematcher": "0.6.1", + "decimal.js": "^10.4.3", + "tslib": "^2.8.0" } }, "node_modules/@gorhom/bottom-sheet": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@gorhom/bottom-sheet/-/bottom-sheet-5.0.6.tgz", - "integrity": "sha512-SI/AhPvgRfnCWN6/+wbE6TXwRE4X8F2fLyE4L/0bRwgE34Zenq585qLT139uEcfCIyovC2swC3ICqQpkmWEcFA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@gorhom/bottom-sheet/-/bottom-sheet-5.1.2.tgz", + "integrity": "sha512-5np8oL2krqAsVKLRE4YmtkZkyZeFiitoki72bEpVhZb8SRTNuAEeSbP3noq5srKpcRsboCr7uI+xmMyrWUd9kw==", "license": "MIT", "dependencies": { "@gorhom/portal": "1.0.14", @@ -4040,44 +4227,42 @@ "@hapi/hoek": "^9.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "Apache-2.0", "engines": { - "node": "*" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -4092,13 +4277,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -4674,6 +4865,18 @@ "react-native": "*" } }, + "node_modules/@mattermost/react-native-paste-input/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@mattermost/react-native-turbo-log": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@mattermost/react-native-turbo-log/-/react-native-turbo-log-0.6.0.tgz", @@ -4698,10 +4901,30 @@ "peer": true }, "node_modules/@msgpack/msgpack": { - "version": "2.8.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-3.1.1.tgz", + "integrity": "sha512-DnBpqkMOUGayNVKyTLlkM6ILmU/m/+VUxGkuQlPQVAcvreLz5jn1OlQnWd8uHKL/ZSiljpM12rjRhr51VtvJUQ==", "license": "ISC", "engines": { - "node": ">= 10" + "node": ">= 18" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.37.6", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.6.tgz", + "integrity": "sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" } }, "node_modules/@nicolo-ribaudo/chokidar-2": { @@ -4759,9 +4982,9 @@ "integrity": "sha512-ntt8eNp5hh+axX9+kFb5uwyVE0edyfhiYYr+zHDzzFleGC7Qm+a2wHDWDtmRr5nSfbgomhY1uh30kpsHEIR3Mw==" }, "node_modules/@nozbe/watermelondb": { - "version": "0.28.0-1", - "resolved": "https://registry.npmjs.org/@nozbe/watermelondb/-/watermelondb-0.28.0-1.tgz", - "integrity": "sha512-iFVRmHLVKnILbeLI6cr9PF+nFX8WRmjpLWjHnZVl3bxMlhJQ9NQIan1/Mjts7S44Nyc1YIZpHdEU8sLU+5GIyA==", + "version": "0.28.0-2", + "resolved": "https://registry.npmjs.org/@nozbe/watermelondb/-/watermelondb-0.28.0-2.tgz", + "integrity": "sha512-0BnbTpcy6n44sHnNZrgdrGQCpAgD8h/8BCi6/Sx1QkZiYp0+6bHppuBmUuGFcvJnYj3Xvnx2/5gbWh23oKUeJg==", "license": "MIT", "dependencies": { "@babel/runtime": "7.26.0", @@ -4776,18 +4999,6 @@ "node": ">=18" } }, - "node_modules/@nozbe/watermelondb/node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@npmcli/fs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", @@ -4800,6 +5011,31 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, + "license": "MIT" + }, "node_modules/@opentelemetry/api": { "version": "1.8.0", "license": "Apache-2.0", @@ -4896,9 +5132,9 @@ } }, "node_modules/@react-native-camera-roll/camera-roll": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@react-native-camera-roll/camera-roll/-/camera-roll-7.9.0.tgz", - "integrity": "sha512-Ra0lB1G2H11MzL5aIH3bwlxU1zaHGSZeRs4lBXLBO64Ai1gUgZPR7TYgKDeeRPzNPtSbZKmzs+fuZ/7XoCf1SA==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/@react-native-camera-roll/camera-roll/-/camera-roll-7.10.0.tgz", + "integrity": "sha512-Zm1yHxxTQS2APsnnxUFoLnK+DMMTPqmIQ2z2pGtNyHRXAG40Nt4MLVB3tDJTWnuJLAG87BpTCEvpz49+u0YkUw==", "license": "MIT", "engines": { "node": ">= 18.17.0" @@ -4908,9 +5144,9 @@ } }, "node_modules/@react-native-clipboard/clipboard": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@react-native-clipboard/clipboard/-/clipboard-1.15.0.tgz", - "integrity": "sha512-YDMC3E956jn9zE11uKGcQDKS1SO9q72iNHxZyrKY5y9XYwZcA9vo3Xk74+zRnf7cM48drDO0s9lyAPUlOvyhrw==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@react-native-clipboard/clipboard/-/clipboard-1.16.2.tgz", + "integrity": "sha512-VqUYwVxo7DyHMz7v2LxLMaAOSu3pKFvzpqR4jQezdH0VyaudILTTcUf7dR4TroARU/lLkTU8nZA11UniTvGVXg==", "license": "MIT", "workspaces": [ "example" @@ -5403,7 +5639,9 @@ } }, "node_modules/@react-native-community/datetimepicker": { - "version": "8.2.0", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-8.3.0.tgz", + "integrity": "sha512-K/KgaJbLtjMpx4PaG4efrVIcSe6+DbLufeX1lwPB5YY8i3sq9dOh6WcAcMTLbaRTUpurebQTkl7puHPFm9GalA==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -5535,18 +5773,6 @@ "node": ">=4" } }, - "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/chalk": { "version": "2.4.2", "license": "MIT", @@ -5561,21 +5787,6 @@ "node": ">=4" } }, - "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/@react-native-windows/cli/node_modules/log-symbols/node_modules/has-flag": { "version": "3.0.0", "license": "MIT", @@ -5635,18 +5846,6 @@ "node": ">=6" } }, - "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/chalk": { "version": "2.4.2", "license": "MIT", @@ -5661,21 +5860,6 @@ "node": ">=4" } }, - "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/@react-native-windows/cli/node_modules/ora/node_modules/has-flag": { "version": "3.0.0", "license": "MIT", @@ -6421,6 +6605,114 @@ "prettier": ">=2" } }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@react-native/eslint-config/node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", @@ -6526,6 +6818,24 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@react-native/eslint-config/node_modules/eslint-plugin-ft-flow": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz", + "integrity": "sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "@babel/eslint-parser": "^7.12.0", + "eslint": "^8.1.0" + } + }, "node_modules/@react-native/eslint-config/node_modules/eslint-plugin-jest": { "version": "27.9.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", @@ -6565,6 +6875,19 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, + "node_modules/@react-native/eslint-config/node_modules/eslint-plugin-react-native": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz", + "integrity": "sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-plugin-react-native-globals": "^0.1.1" + }, + "peerDependencies": { + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, "node_modules/@react-native/eslint-config/node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -6578,6 +6901,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@react-native/eslint-config/node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/@react-native/eslint-plugin": { "version": "0.76.5", "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.76.5.tgz", @@ -6998,16 +7334,16 @@ } }, "node_modules/@react-navigation/bottom-tabs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.2.0.tgz", - "integrity": "sha512-1LxjgnbPyFINyf9Qr5d1YE0pYhuJayg5TCIIFQmbcX4PRhX7FKUXV7cX8OzrKXEdZi/UE/VNXugtozPAR9zgvA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.3.2.tgz", + "integrity": "sha512-gxFQrBTkb8Gf6WGrW2C61JCb5vLFxBLaocNCvNLxPcEMQWuRv+PYIL4NOqWBmmh0+TSMRp/0BI1b+BU6EQfxQQ==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.2.5", + "@react-navigation/elements": "^2.3.0", "color": "^4.2.3" }, "peerDependencies": { - "@react-navigation/native": "^7.0.14", + "@react-navigation/native": "^7.0.18", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0", @@ -7015,12 +7351,12 @@ } }, "node_modules/@react-navigation/core": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.3.1.tgz", - "integrity": "sha512-S3KCGvNsoqVk8ErAtQI2EAhg9185lahF5OY01ofrrD4Ij/uk3QEHHjoGQhR5l5DXSCSKr1JbMQA7MEKMsBiWZA==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.6.1.tgz", + "integrity": "sha512-mbqL0dYFTlKlSjgZz1Mm/CVEa7cnvEc7kE5Te9q3Z3/iFHdlZmKxEWAdRU2cUnpCXwo3DvmAENzVHbHsTKtT5Q==", "license": "MIT", "dependencies": { - "@react-navigation/routers": "^7.1.2", + "@react-navigation/routers": "^7.3.1", "escape-string-regexp": "^4.0.0", "nanoid": "3.3.8", "query-string": "^7.1.3", @@ -7039,16 +7375,16 @@ "license": "MIT" }, "node_modules/@react-navigation/elements": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.2.5.tgz", - "integrity": "sha512-sDhE+W14P7MNWLMxXg1MEVXwkLUpMZJGflE6nQNzLmolJQIHgcia0Mrm8uRa3bQovhxYu1UzEojLZ+caoZt7Fg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.3.0.tgz", + "integrity": "sha512-2VGB6rFejk1fGxU4PuqPKXPzuqD0nC6iCSjMRsyM5CetcwiEidHmv4nGIXvw7D9CvqoZxvcQWxL4X3uSodj0PA==", "license": "MIT", "dependencies": { "color": "^4.2.3" }, "peerDependencies": { "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.0.14", + "@react-navigation/native": "^7.0.18", "react": ">= 18.2.0", "react-native": "*", "react-native-safe-area-context": ">= 4.0.0" @@ -7060,12 +7396,12 @@ } }, "node_modules/@react-navigation/native": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.0.14.tgz", - "integrity": "sha512-Gi6lLw4VOGSWAhmUdJOMauOKGK51/YA1CprjXm91sNfgERWvznqEMw8QmUQx9SEqYfi0LfZhbzpMst09SJ00lw==", + "version": "7.0.18", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.0.18.tgz", + "integrity": "sha512-XDOfbY/M8IMMyLY9iVW0f6nCYs3iZbAP2njKV2TpT6rG0VX4xVBl2VhrZe55XBFtJFawLMsb13c/QUSTn5O4Lg==", "license": "MIT", "dependencies": { - "@react-navigation/core": "^7.3.1", + "@react-navigation/core": "^7.6.1", "escape-string-regexp": "^4.0.0", "fast-deep-equal": "^3.1.3", "nanoid": "3.3.8", @@ -7077,25 +7413,25 @@ } }, "node_modules/@react-navigation/routers": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.1.2.tgz", - "integrity": "sha512-emdEjpVDK8zbiu2GChC8oYIAub9i/OpNuQJekVsbyFCBz4/TzaBzms38Q53YaNhdIFNmiYLfHv/Y1Ub7KYfm3w==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.3.1.tgz", + "integrity": "sha512-d0hJi4eZJQB84JtHlA3HDR9VHoKDfyknSCdz/7a3Mdz1OJDZsvU+qjfK2c9mxNFd+ak/ekLhEkwwh8QtVF0faw==", "license": "MIT", "dependencies": { "nanoid": "3.3.8" } }, "node_modules/@react-navigation/stack": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.1.0.tgz", - "integrity": "sha512-Hgvoo67s/CsF+Q2aquuwFtEASIhkgxw4gfwwIrsljDmy7e0FCgxsF0wzjoANik6QHrW2Ue+6ROPytKjSHUQxcg==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.2.2.tgz", + "integrity": "sha512-S8N9GMEC2bGTwCbuS/ROXIavJbH3Zmyfc5f8CTuKwuNKCYTRniCa9rdSjhMZS1Uy6Bi72DVdlviKSrzeopPvLg==", "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.2.5", + "@react-navigation/elements": "^2.3.0", "color": "^4.2.3" }, "peerDependencies": { - "@react-navigation/native": "^7.0.14", + "@react-navigation/native": "^7.0.18", "react": ">= 18.2.0", "react-native": "*", "react-native-gesture-handler": ">= 2.0.0", @@ -7219,6 +7555,8 @@ }, "node_modules/@sentry/babel-plugin-component-annotate": { "version": "2.20.1", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.20.1.tgz", + "integrity": "sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg==", "license": "MIT", "engines": { "node": ">= 14" @@ -7466,12 +7804,12 @@ } }, "node_modules/@shopify/flash-list": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.7.3.tgz", - "integrity": "sha512-RLhNptm02aqpqZvjj9pJPcU+EVYxOAJhPRCmDOaUbUP86+636w+plsbjpBPSYGvPZhPj56RtZ9FBlvolPeEmYA==", + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.7.6.tgz", + "integrity": "sha512-0kuuAbWgy4YSlN05mt0ScvxK8uiDixMsICWvDed+LTxvZ5+5iRyt3M8cRLUroB8sfiZlJJZWlxHrx0frBpsYOQ==", "license": "MIT", "dependencies": { - "recyclerlistview": "4.2.1", + "recyclerlistview": "4.2.3", "tslib": "2.8.1" }, "peerDependencies": { @@ -7521,6 +7859,37 @@ "react-native": "*" } }, + "node_modules/@stylistic/eslint-plugin-ts": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-4.2.0.tgz", + "integrity": "sha512-j2o2GvOx9v66x8hmp/HJ+0T+nOppiO5ycGsCkifh7JPGgjxEhpkGmIGx3RWsoxpWbad3VCX8e8/T8n3+7ze1Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.23.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=9.0.0" + } + }, + "node_modules/@stylistic/eslint-plugin-ts/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@testing-library/react-hooks": { "version": "8.0.1", "dev": true, @@ -7551,19 +7920,25 @@ } }, "node_modules/@testing-library/react-native": { - "version": "12.9.0", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-13.2.0.tgz", + "integrity": "sha512-3FX+vW/JScXkoH8VSCRTYF4KCHC56y4AI6TMDISfLna6r+z8kaSEmxH1I6NVaFOxoWX9yaHDyI26xh7BykmqKw==", "dev": true, "license": "MIT", "dependencies": { + "chalk": "^4.1.2", "jest-matcher-utils": "^29.7.0", "pretty-format": "^29.7.0", "redent": "^3.0.0" }, + "engines": { + "node": ">=18" + }, "peerDependencies": { - "jest": ">=28.0.0", - "react": ">=16.8.0", - "react-native": ">=0.59", - "react-test-renderer": ">=16.8.0" + "jest": ">=29.0.0", + "react": ">=18.2.0", + "react-native": ">=0.71", + "react-test-renderer": ">=18.2.0" }, "peerDependenciesMeta": { "jest": { @@ -7639,8 +8014,7 @@ "node_modules/@types/estree": { "version": "1.0.6", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/graceful-fs": { "version": "4.1.9", @@ -7716,7 +8090,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.13", + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", + "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", "dev": true, "license": "MIT" }, @@ -7782,17 +8158,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/react-native-share": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/react-native-share/-/react-native-share-6.0.0.tgz", - "integrity": "sha512-ljPKqOhIxFEGZ/6JWlYnqf3FJjjmFZZi0Jg0JwAUE2a8MRWtjxcn6dLSb8KYYjZHf9sG55oZw/WGENkOt2CvnA==", - "deprecated": "This is a stub types definition. react-native-share provides its own type definitions, so you do not need this installed.", - "dev": true, - "license": "MIT", - "dependencies": { - "react-native-share": "*" - } - }, "node_modules/@types/react-native-vector-icons": { "version": "6.4.18", "license": "MIT", @@ -7860,80 +8225,72 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz", - "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.27.0.tgz", + "integrity": "sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/type-utils": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/type-utils": "8.27.0", + "@typescript-eslint/utils": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.27.0.tgz", + "integrity": "sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/typescript-estree": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz", - "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", + "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1" + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -7941,41 +8298,37 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz", - "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.27.0.tgz", + "integrity": "sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/utils": "7.14.1", + "@typescript-eslint/typescript-estree": "8.27.0", + "@typescript-eslint/utils": "8.27.0", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz", - "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", + "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -7983,69 +8336,68 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz", - "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz", - "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==", + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.27.0.tgz", + "integrity": "sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1" + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/visitor-keys": "8.27.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz", - "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==", + "node_modules/@typescript-eslint/utils": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.27.0.tgz", + "integrity": "sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.14.1", - "eslint-visitor-keys": "^3.4.3" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.27.0", + "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/typescript-estree": "8.27.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", + "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.27.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -8053,29 +8405,22 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", - "dev": true, - "license": "ISC" - }, "node_modules/@urql/core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.1.0.tgz", - "integrity": "sha512-yC3sw8yqjbX45GbXxfiBY8GLYCiyW/hLBbQF9l3TJrv4ro00Y0ChkKaD9I2KntRxAVm9IYBqh0awX8fwWAe/Yw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.1.1.tgz", + "integrity": "sha512-aGh024z5v2oINGD/In6rAtVKTm4VmQ2TxKQBAtk2ZSME5dunZFcjltw4p5ENQg+5CBhZ3FHMzl0Oa+rwqiWqlg==", "license": "MIT", "dependencies": { "@0no-co/graphql.web": "^1.0.5", @@ -8083,12 +8428,12 @@ } }, "node_modules/@urql/exchange-retry": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.0.tgz", - "integrity": "sha512-FLt+d81gP4oiHah4hWFDApimc+/xABWMU1AMYsZ1PVB0L0YPtrMCjbOp9WMM7hBzy4gbTDrG24sio0dCfSh/HQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.1.tgz", + "integrity": "sha512-EEmtFu8JTuwsInqMakhLq+U3qN8ZMd5V3pX44q0EqD2imqTDsa8ikZqJ1schVrN8HljOdN+C08cwZ1/r5uIgLw==", "license": "MIT", "dependencies": { - "@urql/core": "^5.0.0", + "@urql/core": "^5.1.1", "wonka": "^6.3.2" }, "peerDependencies": { @@ -8413,47 +8758,22 @@ } }, "node_modules/ajv": { - "version": "8.13.0", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, "node_modules/anser": { "version": "1.4.10", "license": "MIT" @@ -8592,11 +8912,13 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -8696,14 +9018,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8728,17 +9052,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -8773,6 +9098,15 @@ "dev": true, "license": "MIT" }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/async-hook-jl": { "version": "1.7.6", "license": "MIT", @@ -8869,121 +9203,66 @@ } }, "node_modules/babel-loader": { - "version": "9.2.1", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", "dev": true, "license": "MIT", "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" }, "peerDependencies": { "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "webpack": ">=5.61.0" } }, "node_modules/babel-loader/node_modules/find-up": { - "version": "6.3.0", + "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, "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/babel-loader/node_modules/locate-path": { - "version": "7.2.0", + "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, "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/p-limit": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/babel-loader/node_modules/p-locate": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/path-exists": { "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/babel-loader/node_modules/pkg-dir": { - "version": "7.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, "license": "MIT", "dependencies": { - "find-up": "^6.3.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/yocto-queue": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9079,11 +9358,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -9152,9 +9433,9 @@ } }, "node_modules/babel-preset-expo": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.4.tgz", - "integrity": "sha512-SAzAwqpyjA+/OFrU95OOioj6oTeCv4+rRfrNmBTy5S/gJswrZKBSPJioFudIaJBy43W+BL7HA5AspBIF6tO/aA==", + "version": "12.0.9", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.9.tgz", + "integrity": "sha512-1c+ysrTavT49WgVAj0OX/TEzt1kU2mfPhDaDajstshNHXFKPenMPWSViA/DHrJKVIMwaqr+z3GbUOD9GtKgpdg==", "license": "MIT", "dependencies": { "@babel/plugin-proposal-decorators": "^7.12.9", @@ -9163,7 +9444,7 @@ "@babel/plugin-transform-parameters": "^7.22.15", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.76.5", + "@react-native/babel-preset": "0.76.7", "babel-plugin-react-native-web": "~0.19.13", "react-refresh": "^0.14.2" }, @@ -9180,6 +9461,99 @@ } } }, + "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.7.tgz", + "integrity": "sha512-+8H4DXJREM4l/pwLF/wSVMRzVhzhGDix5jLezNrMD9J1U1AMfV2aSkWA1XuqR7pjPs/Vqf6TaPL7vJMZ4LU05Q==", + "license": "MIT", + "dependencies": { + "@react-native/codegen": "0.76.7" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.7.tgz", + "integrity": "sha512-/c5DYZ6y8tyg+g8tgXKndDT7mWnGmkZ9F+T3qNDfoE3Qh7ucrNeC2XWvU9h5pk8eRtj9l4SzF4aO1phzwoibyg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.76.7", + "babel-plugin-syntax-hermes-parser": "^0.25.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.7.tgz", + "integrity": "sha512-FAn585Ll65YvkSrKDyAcsdjHhhAGiMlSTUpHh0x7J5ntudUns+voYms0xMP+pEPt0XuLdjhD7zLIIlAWP407+g==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.23.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, "node_modules/babel-preset-jest": { "version": "29.6.3", "license": "MIT", @@ -9339,7 +9713,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -9356,9 +9732,9 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { @@ -9516,7 +9892,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -9526,6 +9904,22 @@ "node": ">= 0.4" } }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caller-callsite": { "version": "2.0.0", "license": "MIT", @@ -9568,7 +9962,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001687", + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", "funding": [ { "type": "opencollective", @@ -9957,11 +10353,6 @@ "node": ">= 10" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/commondir": { "version": "1.0.1", "license": "MIT" @@ -10091,10 +10482,12 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.39.0", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "license": "MIT", "dependencies": { - "browserslist": "^4.24.2" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -10322,12 +10715,14 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10337,25 +10732,29 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -10783,19 +11182,6 @@ "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "license": "MIT", @@ -10898,11 +11284,12 @@ } }, "node_modules/dunder-proto": { - "version": "1.0.0", - "dev": true, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", + "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" }, @@ -10935,7 +11322,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.72", + "version": "1.5.120", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", + "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==", "license": "ISC" }, "node_modules/emitter-listener": { @@ -11068,55 +11457,62 @@ } }, "node_modules/es-abstract": { - "version": "1.23.5", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -11126,11 +11522,10 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -11161,25 +11556,28 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.3", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" @@ -11192,7 +11590,9 @@ "peer": true }, "node_modules/es-object-atoms": { - "version": "1.0.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -11202,12 +11602,15 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -11222,12 +11625,14 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -11278,60 +11683,64 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -11419,24 +11828,6 @@ "node": ">=0.8.0" } }, - "node_modules/eslint-plugin-ft-flow": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz", - "integrity": "sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21", - "string-natural-compare": "^3.0.1" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "@babel/eslint-parser": "^7.12.0", - "eslint": "^8.1.0" - } - }, "node_modules/eslint-plugin-header": { "version": "3.1.1", "dev": true, @@ -11525,9 +11916,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.9.0.tgz", - "integrity": "sha512-rLu1s1Wf96TgUUxSw6loVIkNtUjq1Re7A9QdCCHSohnvXEBAjuL420h0T/fMmkQlNsQP2GhQzEUpYHPfxBkvYQ==", + "version": "28.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.11.0.tgz", + "integrity": "sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==", "dev": true, "license": "MIT", "dependencies": { @@ -11551,27 +11942,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.2", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", + "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", + "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "engines": { @@ -11582,7 +11975,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "engines": { @@ -11592,19 +11987,6 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/eslint-plugin-react-native": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz", - "integrity": "sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-plugin-react-native-globals": "^0.1.1" - }, - "peerDependencies": { - "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, "node_modules/eslint-plugin-react-native-globals": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz", @@ -11695,28 +12077,6 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.11", "dev": true, @@ -11727,9 +12087,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -11737,20 +12097,20 @@ "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -11782,40 +12142,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "dev": true, @@ -11855,19 +12181,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/esm": { "version": "3.2.25", "license": "MIT", @@ -11876,31 +12189,31 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -12035,26 +12348,26 @@ } }, "node_modules/expo": { - "version": "52.0.19", - "resolved": "https://registry.npmjs.org/expo/-/expo-52.0.19.tgz", - "integrity": "sha512-wOb/wbiQa0xqQRhgVBuOhLRus05TSw6fgThVMrPQgdLo24EPuT/ZAiRVcVRdjrEbwOqCDumgQCB7636B9J+jKg==", + "version": "52.0.40", + "resolved": "https://registry.npmjs.org/expo/-/expo-52.0.40.tgz", + "integrity": "sha512-kRRXW0VRlnc49LiMO9csF5DjWmUQhQ0lHudNIi3m9Z4nvecJbDaKWI5nNxB5UG7Sqj0I/wsBMes5G6gEndeYlQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "0.22.6", - "@expo/config": "~10.0.6", - "@expo/config-plugins": "~9.0.12", - "@expo/fingerprint": "0.11.4", - "@expo/metro-config": "0.19.8", + "@expo/cli": "0.22.21", + "@expo/config": "~10.0.11", + "@expo/config-plugins": "~9.0.17", + "@expo/fingerprint": "0.11.11", + "@expo/metro-config": "0.19.12", "@expo/vector-icons": "^14.0.0", - "babel-preset-expo": "~12.0.4", - "expo-asset": "~11.0.1", - "expo-constants": "~17.0.3", - "expo-file-system": "~18.0.6", - "expo-font": "~13.0.1", - "expo-keep-awake": "~14.0.1", - "expo-modules-autolinking": "2.0.4", - "expo-modules-core": "2.1.2", + "babel-preset-expo": "~12.0.9", + "expo-asset": "~11.0.5", + "expo-constants": "~17.0.8", + "expo-file-system": "~18.0.12", + "expo-font": "~13.0.4", + "expo-keep-awake": "~14.0.3", + "expo-modules-autolinking": "2.0.8", + "expo-modules-core": "2.2.3", "fbemitter": "^3.0.0", "web-streams-polyfill": "^3.3.2", "whatwg-url-without-unicode": "8.0.0-3" @@ -12082,22 +12395,22 @@ } }, "node_modules/expo-application": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-6.0.1.tgz", - "integrity": "sha512-w+1quSmKp8SYKT+GAFHSN5c6u+PqoVRIfpsLyRQrQdOnBA9dA8Hw6JT9sHNFmA30A2v1b/sdYZE3qKuRJFNSWQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-6.0.2.tgz", + "integrity": "sha512-qcj6kGq3mc7x5yIb5KxESurFTJCoEKwNEL34RdPEvTB/xhl7SeVZlu05sZBqxB1V4Ryzq/LsCb7NHNfBbb3L7A==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-asset": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.1.tgz", - "integrity": "sha512-WatvD7JVC89EsllXFYcS/rji3ajVzE2B/USo0TqedsETixwyVCQfrrvCdCPQyuKghrxVNEj8bQ/Qbea/RZLYjg==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.5.tgz", + "integrity": "sha512-TL60LmMBGVzs3NQcO8ylWqBumMh4sx0lmeJsn7+9C88fylGDhyyVnKZ1PyTXo9CVDBkndutZx2JUEQWM9BaiXw==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.6.0", - "expo-constants": "~17.0.0", + "@expo/image-utils": "^0.6.5", + "expo-constants": "~17.0.8", "invariant": "^2.2.4", "md5-file": "^3.2.3" }, @@ -12108,13 +12421,13 @@ } }, "node_modules/expo-constants": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.0.3.tgz", - "integrity": "sha512-lnbcX2sAu8SucHXEXxSkhiEpqH+jGrf+TF+MO6sHWIESjwOUVVYlT8qYdjR9xbxWmqFtrI4KV44FkeJf2DaFjQ==", + "version": "17.0.8", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.0.8.tgz", + "integrity": "sha512-XfWRyQAf1yUNgWZ1TnE8pFBMqGmFP5Gb+SFSgszxDdOoheB/NI5D4p7q86kI2fvGyfTrxAe+D+74nZkfsGvUlg==", "license": "MIT", "dependencies": { - "@expo/config": "~10.0.4", - "@expo/env": "~0.4.0" + "@expo/config": "~10.0.11", + "@expo/env": "~0.4.2" }, "peerDependencies": { "expo": "*", @@ -12122,9 +12435,9 @@ } }, "node_modules/expo-crypto": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/expo-crypto/-/expo-crypto-14.0.1.tgz", - "integrity": "sha512-/gGpD9UAz8fgZtU08cwwqeQElkFmMy2Hc8lLa9laSjD3YN0XM07zDJyJ+CC1VhQ63G8WpUnq1IHSmaPbbLp+oQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/expo-crypto/-/expo-crypto-14.0.2.tgz", + "integrity": "sha512-WRc9PBpJraJN29VD5Ef7nCecxJmZNyRKcGkNiDQC1nhY5agppzwhqh7zEzNFarE/GqDgSiaDHS8yd5EgFhP9AQ==", "license": "MIT", "dependencies": { "base64-js": "^1.3.0" @@ -12134,9 +12447,9 @@ } }, "node_modules/expo-device": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-7.0.1.tgz", - "integrity": "sha512-/3lk0f9wvle+6svHqWSCBC1B5NYFmXp1D7hmIyecJJVYRLwzrwwTDyNs76oG/UDU5Appdu8QyDKycsx2hqv71w==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-7.0.2.tgz", + "integrity": "sha512-0PkTixE4Qi8VQBjixnj4aw2f6vE4tUZH7GK8zHROGKlBypZKcWmsA+W/Vp3RC5AyREjX71pO/hjKTSo/vF0E2w==", "license": "MIT", "dependencies": { "ua-parser-js": "^0.7.33" @@ -12167,9 +12480,9 @@ } }, "node_modules/expo-file-system": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.6.tgz", - "integrity": "sha512-gGEwIJCXV3/wpIJ/wRyhmieLOSAY7HeFFjb+wEfHs04aE63JYR+rXXV4b7rBpEh1ZgNV9U91zfet/iQG7J8HBQ==", + "version": "18.0.12", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.12.tgz", + "integrity": "sha512-HAkrd/mb8r+G3lJ9MzmGeuW2B+BxQR1joKfeCyY4deLl1zoZ48FrAWjgZjHK9aHUVhJ0ehzInu/NQtikKytaeg==", "license": "MIT", "dependencies": { "web-streams-polyfill": "^3.3.2" @@ -12180,9 +12493,9 @@ } }, "node_modules/expo-font": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.0.1.tgz", - "integrity": "sha512-8JE47B+6cLeKWr5ql8gU6YsPHjhrz1vMrTqYMm72No/8iW8Sb/uL4Oc0dpmbjq3hLLXBY0xPBQOgU7FQ6Y04Vg==", + "version": "13.0.4", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.0.4.tgz", + "integrity": "sha512-eAP5hyBgC8gafFtprsz0HMaB795qZfgJWqTmU0NfbSin1wUuVySFMEPMOrTkTgmazU73v4Cb4x7p86jY1XXYUw==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" @@ -12193,9 +12506,10 @@ } }, "node_modules/expo-image": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-2.0.4.tgz", - "integrity": "sha512-oIVSlV/BpBJbI9Anf8RjraGJXDWSJxNKxdXkYBJ31XrQaUstOM7OmsVKjOK40ZFZHIz3rx5SBJWK5w52Uz+/bg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-2.0.6.tgz", + "integrity": "sha512-NHpIZmGnrPbyDadil6eK+sUgyFMQfapEVb7YaGgxSFWBUQ1rSpjqdIQrCD24IZTO9uSH8V+hMh2ROxrAjAixzQ==", + "license": "MIT", "peerDependencies": { "expo": "*", "react": "*", @@ -12209,9 +12523,9 @@ } }, "node_modules/expo-keep-awake": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.0.1.tgz", - "integrity": "sha512-c5mGCAIk2YM+Vsdy90BlEJ4ZX+KG5Au9EkJUIxXWlpnuKmDAJ3N+5nEZ7EUO1ZTheqoSBeAo4jJ8rTWPU+JXdw==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.0.3.tgz", + "integrity": "sha512-6Jh94G6NvTZfuLnm2vwIpKe3GdOiVBuISl7FI8GqN0/9UOg9E0WXXp5cDcfAG8bn80RfgLJS8P7EPUGTZyOvhg==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -12219,9 +12533,9 @@ } }, "node_modules/expo-linear-gradient": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-14.0.1.tgz", - "integrity": "sha512-apGtUO9AZ52ZWvX9f6K9TamWw8XcUby7jZ0Pcvd5LxUO7pl7tDPx2VlKqpzbhhS4yfCiUwX58wqocwVnE/0ZVg==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-14.0.2.tgz", + "integrity": "sha512-nvac1sPUfFFJ4mY25UkvubpUV/olrBH+uQw5k+beqSvQaVQiUfFtYzfRr+6HhYBNb4AEsOtpsCRkpDww3M2iGQ==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -12230,9 +12544,9 @@ } }, "node_modules/expo-modules-autolinking": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.0.4.tgz", - "integrity": "sha512-e0p+19NhmD50U7s7BV7kWIypWmTNC9n/VlJKlXS05hM/zX7pe6JKmXyb+BFnXJq3SLBalLCUY0tu2gEUF3XeVg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.0.8.tgz", + "integrity": "sha512-DezgnEYFQYic8hKGhkbztBA3QUmSftjaNDIKNAtS2iGJmzCcNIkatjN2slFDSWjSTNo8gOvPQyMKfyHWFvLpOQ==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -12310,18 +12624,18 @@ } }, "node_modules/expo-modules-core": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-2.1.2.tgz", - "integrity": "sha512-0OhMU5S8zf9c/CRh1MwiXfOInI9wzz6yiIh5RuR/9J7N6xHRum68hInsPbaSc1UQpo08ZZLM4MPsbpoNRUoqIg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-2.2.3.tgz", + "integrity": "sha512-01QqZzpP/wWlxnNly4G06MsOBUTbMDj02DQigZoXfDh80vd/rk3/uVXqnZgOdLSggTs6DnvOgAUy0H2q30XdUg==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" } }, "node_modules/expo-store-review": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/expo-store-review/-/expo-store-review-8.0.0.tgz", - "integrity": "sha512-WCRhYbESk+2ePhmLEdRxBy7BgZxInbZgGy7ZaQZmESTnyZKfBl4ZaWFUPA+OnADu9txijSyizAVTB1naM1KNdQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/expo-store-review/-/expo-store-review-8.0.1.tgz", + "integrity": "sha512-eJoZbsAsOXpyl1CEXauiMqs3z++8Qf1OMDUBEGmRj9hew+w9JbS3wvFOZpc0UXbm/NYn5YwiLfK7epQjLLKz4A==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -12329,18 +12643,18 @@ } }, "node_modules/expo-video-thumbnails": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/expo-video-thumbnails/-/expo-video-thumbnails-9.0.2.tgz", - "integrity": "sha512-2mEggrJS2MgyALzXzVFNinMV5PxjL67q6kVqSAOCnfkaAmLprWqwg1SxE712Co9u7m/RUCkxQoZCgoRS24ohBw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/expo-video-thumbnails/-/expo-video-thumbnails-9.0.3.tgz", + "integrity": "sha512-WDbYMNlcTN/jBnjXZkHWqbgWloHUpG8ZQfie/Ic+BcJagG00TenHcbdzEYiIjshcF4Hhvl3D8okbPFjDFip9/Q==", "license": "MIT", "peerDependencies": { "expo": "*" } }, "node_modules/expo-web-browser": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-14.0.1.tgz", - "integrity": "sha512-QM9F3ie+UyIOoBvqFmT6CZojb1vMc2H+7ZlMT5dEu1PL2jtYyOeK2hLfbt/EMt7CBm/w+P29H9W9Y9gdebOkuQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-14.0.2.tgz", + "integrity": "sha512-Hncv2yojhTpHbP6SGWARBFdl7P6wBHc1O8IKaNsH0a/IEakq887o1eRhLxZ5IwztPQyRDhpqHdgJ+BjWolOnwA==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -12460,13 +12774,6 @@ "version": "1.0.2", "license": "MIT" }, - "node_modules/fbjs/node_modules/promise": { - "version": "7.3.1", - "license": "MIT", - "dependencies": { - "asap": "~2.0.3" - } - }, "node_modules/fetch-retry": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", @@ -12478,16 +12785,16 @@ "license": "MIT" }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/file-js": { @@ -12677,24 +12984,23 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -12716,19 +13022,27 @@ "license": "BSD-2-Clause" }, "node_modules/for-each": { - "version": "0.3.3", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -12866,13 +13180,17 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -12889,7 +13207,9 @@ } }, "node_modules/fuse.js": { - "version": "7.0.0", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", + "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", "license": "Apache-2.0", "engines": { "node": ">=10" @@ -12910,14 +13230,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -13029,6 +13356,19 @@ "node": ">=4" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "license": "MIT", @@ -13040,12 +13380,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -13207,8 +13549,13 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -13217,7 +13564,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -13381,7 +13730,9 @@ } }, "node_modules/html-entities": { - "version": "2.5.2", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.3.tgz", + "integrity": "sha512-D3AfvN7SjhTgBSA8L1BN4FpPzuEd06uy4lHwSoRWr0lndi9BKaNzPLKGOWZ2ocSGguozr08TTb2jhCLHaemruw==", "funding": [ { "type": "github", @@ -13647,12 +13998,14 @@ } }, "node_modules/internal-slot": { - "version": "1.0.7", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -13667,15 +14020,15 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.10", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.10.tgz", - "integrity": "sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==", + "version": "10.7.16", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.16.tgz", + "integrity": "sha512-UmdmHUmp5CIKKjSoE10la5yfU+AYJAaiYLsodbjL4lji83JNvgOQUjGaGhGrpFCb0Uh7sl7qfP1IyILa8Z40ug==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/fast-memoize": "2.2.5", - "@formatjs/icu-messageformat-parser": "2.9.7", - "tslib": "2" + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/fast-memoize": "2.2.7", + "@formatjs/icu-messageformat-parser": "2.11.2", + "tslib": "^2.8.0" } }, "node_modules/invariant": { @@ -13750,11 +14103,14 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -13768,11 +14124,16 @@ "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.0.0", - "dev": true, + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -13782,10 +14143,15 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13804,11 +14170,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13847,9 +14215,13 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -13860,10 +14232,13 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13908,11 +14283,12 @@ } }, "node_modules/is-finalizationregistry": { - "version": "1.1.0", - "dev": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -13937,11 +14313,15 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -13985,15 +14365,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true, + "license": "MIT" }, "node_modules/is-number": { "version": "7.0.0", @@ -14003,10 +14380,13 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -14026,6 +14406,8 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "license": "MIT", "engines": { "node": ">=8" @@ -14047,11 +14429,15 @@ "license": "MIT" }, "node_modules/is-regex": { - "version": "1.1.4", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -14071,10 +14457,12 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -14094,10 +14482,13 @@ } }, "node_modules/is-string": { - "version": "1.0.7", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -14107,10 +14498,14 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -14120,10 +14515,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -14153,10 +14550,15 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14291,15 +14693,18 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.3", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -14599,14 +15004,14 @@ } }, "node_modules/jest-expo": { - "version": "52.0.2", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-52.0.2.tgz", - "integrity": "sha512-6xV/+IRw93Org1UlgIqu89Ex3vuPRozD5VqTS95AonHMgjb0XTHHhMmn+TdR1d3i3ziy7JFbWAMoBLwminIalw==", + "version": "52.0.6", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-52.0.6.tgz", + "integrity": "sha512-Ql60mCy4cfwyNvCW2wpEXbw/3i5H+SmB1XP1z0SJUpafGBipq6xMjPcgQpe/7PzAHTc/ikD+dFA0sPnljDJmZQ==", "dev": true, "license": "MIT", "dependencies": { - "@expo/config": "~10.0.4", - "@expo/json-file": "^9.0.0", + "@expo/config": "~10.0.11", + "@expo/json-file": "^9.0.2", "@jest/create-cache-key-function": "^29.2.1", "@jest/globals": "^29.2.1", "babel-jest": "^29.2.1", @@ -14699,13 +15104,6 @@ "react": "19.0.0-rc-6230622a1a-20240610" } }, - "node_modules/jest-expo/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/jest-expo/node_modules/react-server-dom-webpack": { "version": "19.0.0-rc-6230622a1a-20240610", "resolved": "https://registry.npmjs.org/react-server-dom-webpack/-/react-server-dom-webpack-19.0.0-rc-6230622a1a-20240610.tgz", @@ -14725,31 +15123,6 @@ "webpack": "^5.59.0" } }, - "node_modules/jest-expo/node_modules/react-test-renderer": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.3.1.tgz", - "integrity": "sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "react-is": "^18.3.1", - "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "node_modules/jest-expo/node_modules/react-test-renderer/node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, "node_modules/jest-expo/node_modules/scheduler": { "version": "0.25.0-rc-6230622a1a-20240610", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0-rc-6230622a1a-20240610.tgz", @@ -15488,7 +15861,9 @@ "license": "MIT" }, "node_modules/json-schema-traverse": { - "version": "1.0.0", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, @@ -16166,6 +16541,15 @@ "version": "1.2.5", "license": "Apache-2.0" }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mathjax-full": { "version": "3.2.2", "license": "Apache-2.0", @@ -16617,7 +17001,9 @@ } }, "node_modules/mime-db": { - "version": "1.53.0", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -16839,9 +17225,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.46", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.46.tgz", - "integrity": "sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==", + "version": "0.5.48", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.48.tgz", + "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==", "license": "MIT", "dependencies": { "moment": "^2.29.4" @@ -16928,16 +17314,18 @@ } }, "node_modules/nock": { - "version": "13.5.6", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.1.tgz", + "integrity": "sha512-IJN4O9pturuRdn60NjQ7YkFt6Rwei7ZKaOwb1tvUIIqTgeD0SDDAX3vrqZD4wcXczeEy/AsUXxpGpP/yHqV7xg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", + "@mswjs/interceptors": "^0.37.3", "json-stringify-safe": "^5.0.1", "propagate": "^2.0.0" }, "engines": { - "node": ">= 10.13" + "node": ">=18.20.0 <20 || >=20.12.1" } }, "node_modules/node-abort-controller": { @@ -17000,7 +17388,9 @@ } }, "node_modules/node-html-parser": { - "version": "6.1.13", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-7.0.1.tgz", + "integrity": "sha512-KGtmPY2kS0thCWGK0VuPyOS+pBKhhe8gXztzA2ilAOhbUbxa9homF1bOyKvhGzMLXUoRds9IOmr/v5lr/lqNmA==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -17012,7 +17402,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.18", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "license": "MIT" }, "node_modules/node-stream-zip": { @@ -17125,12 +17517,16 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -17184,11 +17580,14 @@ } }, "node_modules/object.values": { - "version": "1.2.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -17358,6 +17757,30 @@ "node": ">=0.10.0" } }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-defer": { "version": "1.0.0", "license": "MIT", @@ -18192,7 +18615,9 @@ } }, "node_modules/react-devtools-core": { - "version": "6.0.1", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.1.tgz", + "integrity": "sha512-TFo1MEnkqE6hzAbaztnyR5uLTMoz6wnEWwWBsCUzNt+sVXJycuRJdDqvL078M4/h65BI/YO5XWTaxZDWVsW0fw==", "dev": true, "license": "MIT", "dependencies": { @@ -18230,23 +18655,23 @@ } }, "node_modules/react-intl": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-7.0.4.tgz", - "integrity": "sha512-WGNfCPNcRQhNAZBN+amz2hfR8Kd7jngScJ4WaRZcsaOWsvva1ciStnUIGj9MvOAxPqTf1D78J5OdRdc3l0wgKQ==", + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-7.1.8.tgz", + "integrity": "sha512-wUW9EHK0baMor+oQ7uce+wWFI4yhToH7YMj9y/z+/NGYAamwxNCgzKcnqpT9LTYS8Z8KYxm3//+vJPqrlV+jdQ==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/icu-messageformat-parser": "2.9.7", - "@formatjs/intl": "3.0.4", - "@types/hoist-non-react-statics": "3", + "@formatjs/ecma402-abstract": "2.3.4", + "@formatjs/icu-messageformat-parser": "2.11.2", + "@formatjs/intl": "3.1.5", + "@types/hoist-non-react-statics": "^3.3.1", "@types/react": "16 || 17 || 18 || 19", - "hoist-non-react-statics": "3", - "intl-messageformat": "10.7.10", - "tslib": "2" + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "10.7.16", + "tslib": "^2.8.0" }, "peerDependencies": { - "react": "^16.6.0 || 17 || 18 || 19", - "typescript": "5" + "react": "16 || 17 || 18 || 19", + "typescript": "5.8.2" }, "peerDependenciesMeta": { "typescript": { @@ -18259,7 +18684,9 @@ "license": "MIT" }, "node_modules/react-lifecycles-compat": { - "version": "2.0.0", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", "license": "MIT" }, "node_modules/react-native": { @@ -18375,15 +18802,14 @@ } }, "node_modules/react-native-gesture-handler": { - "version": "2.21.2", - "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.21.2.tgz", - "integrity": "sha512-HcwB225K9aeZ8e/B8nFzEh+2T4EPWTeamO1l/y3PcQ9cyCDYO2zja/G31ITpYRIqkip7XzGs6wI/gnHOQn1LDQ==", + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.24.0.tgz", + "integrity": "sha512-ZdWyOd1C8axKJHIfYxjJKCcxjWEpUtUWgTOVY2wynbiveSQDm8X/PDyAKXSer/GOtIpjudUbACOndZXCN3vHsw==", "license": "MIT", "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", - "invariant": "^2.2.4", - "prop-types": "^15.7.2" + "invariant": "^2.2.4" }, "peerDependencies": { "react": "*", @@ -18403,9 +18829,9 @@ } }, "node_modules/react-native-image-picker": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/react-native-image-picker/-/react-native-image-picker-7.2.3.tgz", - "integrity": "sha512-zKIZUlQNU3EtqizsXSH92zPeve4vpUrsqHu2kkpCxWE9TZhJFZBb+irDsBOY8J21k0+Edgt06TMQGJ+iPUIXyA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/react-native-image-picker/-/react-native-image-picker-8.2.0.tgz", + "integrity": "sha512-jIGllQJuJIn0YKss/JEeb0Kos1HSsnIpU+i3bYxR27sOxSyDZQyP9dKR22olssQPlfH+rGNR/Jc6xKRkhm48vw==", "license": "MIT", "peerDependencies": { "react": "*", @@ -18426,6 +18852,16 @@ "react-native": ">=0.42.0" } }, + "node_modules/react-native-is-edge-to-edge": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.1.6.tgz", + "integrity": "sha512-1pHnFTlBahins6UAajXUqeCOHew9l9C2C8tErnpGC3IyLJzvxD+TpYAixnCbrVS52f7+NvMttbiSI290XfwN0w==", + "license": "MIT", + "peerDependencies": { + "react": ">=18.2.0", + "react-native": ">=0.73.0" + } + }, "node_modules/react-native-keyboard-aware-scroll-view": { "version": "0.9.5", "license": "MIT", @@ -18438,22 +18874,22 @@ } }, "node_modules/react-native-keychain": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/react-native-keychain/-/react-native-keychain-9.2.2.tgz", - "integrity": "sha512-sATwVC76fEl4fsdBsgzG6lwhUhKduK0yqPBKHQRrJlv/2/HFBLXc4yLk9SKnZdgVHCpBxIEX4obMyMcu3HBh9w==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/react-native-keychain/-/react-native-keychain-10.0.0.tgz", + "integrity": "sha512-YzPKSAnSzGEJ12IK6CctNLU79T1W15WDrElRQ+1/FsOazGX9ucFPTQwgYe8Dy8jiSEDJKM4wkVa3g4lD2Z+Pnw==", "license": "MIT", "workspaces": [ "KeychainExample", "website" ], "engines": { - "node": ">=18" + "node": ">=16" } }, "node_modules/react-native-localize": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/react-native-localize/-/react-native-localize-3.3.0.tgz", - "integrity": "sha512-pbxiL0sL9hv3dRRcDRHEcsLGfuQavFfsK0dK5RNVjmTI8x3hiojRJHcppzqKOAUjZusehbA7Hnzdjz/7LkZsgw==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/react-native-localize/-/react-native-localize-3.4.1.tgz", + "integrity": "sha512-NJqJGBUpHtD/MpLCCkrNiqNZ+xFwbHCivxaoN1Oeb8tBAiZr/IqgP3E+MgnqmmdTMOJ33llUfiW3EM6pEIb33w==", "license": "MIT", "peerDependencies": { "react": ">=18.1.0", @@ -19191,15 +19627,15 @@ } }, "node_modules/react-native-navigation": { - "version": "7.40.3", - "resolved": "https://registry.npmjs.org/react-native-navigation/-/react-native-navigation-7.40.3.tgz", - "integrity": "sha512-3IDoIDj3UWQduyyMQmqcWolFGcMt09SS0KlGbnjZZ60eFBbPbGEbXyGJG4p1fdQuIkkD9jOKlcXEMlApPyerfA==", + "version": "7.44.0", + "resolved": "https://registry.npmjs.org/react-native-navigation/-/react-native-navigation-7.44.0.tgz", + "integrity": "sha512-/e55m66omwHPHhYxDJYXutxvxUGeLK8ZIh2/8pN+bzI+MWWbNvXUJIL0PLV5vWT8VM0N4Q7tTnEoRTJlCAwtxA==", "license": "MIT", "dependencies": { "hoist-non-react-statics": "3.x.x", "lodash": "4.17.x", "prop-types": "15.x.x", - "react-lifecycles-compat": "2.0.0", + "react-lifecycles-compat": "^3.0.4", "tslib": "1.9.3" }, "bin": { @@ -19236,9 +19672,9 @@ } }, "node_modules/react-native-permissions": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-5.2.1.tgz", - "integrity": "sha512-F8CaDVi+zYjl2pO4Fwh5n5SCi5s0TvvRzQnczb8nwkzHJTv6HqlO6Sj1ZmqrAeuCN06b5Ysu9BEWhK4qT4ekXg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-5.3.0.tgz", + "integrity": "sha512-krDaImQ7J8tm7P+GqKmTIkojNqdO0E6v2x7TOlX/7rRc/zlpoqRXsN7210ecChcUmEOJEH6wzPcemYq+7AfZiw==", "license": "MIT", "peerDependencies": { "react": ">=18.1.0", @@ -19252,9 +19688,9 @@ } }, "node_modules/react-native-reanimated": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.16.5.tgz", - "integrity": "sha512-mq/5k14pimkhCeP9XwFJkEr8XufaHqIekum8fqpsn0fcBzbLvyiqfM2LEuBvi0+DTv5Bd2dHmUHkYqGYfkj3Jw==", + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.17.1.tgz", + "integrity": "sha512-ECzLhLxMKLifv34a8799/MHqIazQZV9fLMNSMdixXQlzX71RyL3/ah3cz/h3ERoyhJAYRC2ySLLZho6pXSqMFQ==", "license": "MIT", "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", @@ -19267,7 +19703,8 @@ "@babel/plugin-transform-unicode-regex": "^7.0.0-0", "@babel/preset-typescript": "^7.16.7", "convert-source-map": "^2.0.0", - "invariant": "^2.2.4" + "invariant": "^2.2.4", + "react-native-is-edge-to-edge": "1.1.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0", @@ -19276,9 +19713,9 @@ } }, "node_modules/react-native-safe-area-context": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.0.0.tgz", - "integrity": "sha512-4K4TvEbRsTDYuSSJZfMNKuJNn1+qgrSkOBwRoreiHcuqy1egrHpkhPhoN1Zg1+b3BxcVXlKXtMIf4eVaG/DPJw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.3.0.tgz", + "integrity": "sha512-glV9bwuozTjf/JDBIBm+ITnukHNaUT3nucgdeADwjtHsfEN3RL5UO6nq99vvdWv5j/O9yCZBvFncM1BBQ+UvpQ==", "license": "MIT", "peerDependencies": { "react": "*", @@ -19286,9 +19723,9 @@ } }, "node_modules/react-native-screens": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.3.0.tgz", - "integrity": "sha512-G0u8BPgu2vcRZoQTlRpBXKa0ElQSDvDBlRe6ncWwCeBmd5Uqa2I3tQ6Vn6trIE6+yneW/nD4p5wihEHlAWZPEw==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.9.2.tgz", + "integrity": "sha512-87gR7XRIirACYxtYltEl1BbUo5r0W4AFPckUDDzATAN6LIUZ2PC3bX6UAFeoEBEqBbfaemRZTWSYHl6MCZFSgw==", "license": "MIT", "dependencies": { "react-freeze": "^1.0.0", @@ -19317,18 +19754,18 @@ } }, "node_modules/react-native-share": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-12.0.3.tgz", - "integrity": "sha512-Bg96AjouSbcpdlI/AzWXMBwpjyWcm4NvGr49mSF1cz8aw8E1sMXwpsHa6I841SJML8Im6sRN3aXnK+/QManrtQ==", + "version": "12.0.9", + "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-12.0.9.tgz", + "integrity": "sha512-vSuz/9aF+/AZS3I5NC19MrB56h1Yivk2Yz8lf2d8Szv3KuRw2BnDI/AfCTjMWByJLVYr6xgzfkTkAfvbDGzxLQ==", "license": "MIT", "engines": { "node": ">=16" } }, "node_modules/react-native-svg": { - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.10.1.tgz", - "integrity": "sha512-Hqz/doQciVFK/Df2v+wsW96oY5jxlta7rZ31KQYo78dlgvAHEaGr6paEOAMvlIruw7EHNQ0Vc1ZmJPJF2kfIPQ==", + "version": "15.11.2", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.11.2.tgz", + "integrity": "sha512-+YfF72IbWQUKzCIydlijV1fLuBsQNGMT6Da2kFlo1sh+LE3BIm/2Q7AR1zAAR6L0BFLi1WaQPLfFUC9bNZpOmw==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -19399,9 +19836,9 @@ } }, "node_modules/react-native-video": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-6.8.2.tgz", - "integrity": "sha512-lAf6pa/eqksaQnZ+rx9XWx9HpfNt0xr/XmSXMASynJJ8EqMJTr8gHJe4Wfkebo5W8qAMKRuHYtZs+4Shzl3IIQ==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-6.11.0.tgz", + "integrity": "sha512-+lxuyQqUwowWQ5vx82mSnPiAW7ZHvyZrgCRy/6WHREAyCcdveA118SIAjPurRc5bASXPDeit7WkYF4xRlonyYQ==", "license": "MIT", "peerDependencies": { "react": "*", @@ -19420,9 +19857,9 @@ } }, "node_modules/react-native-webrtc": { - "version": "124.0.4", - "resolved": "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-124.0.4.tgz", - "integrity": "sha512-ZbhSz1f+kc1v5VE0B84+v6ujIWTHa2fIuocrYzGUIFab7E5izmct7PNHb9dzzs0xhBGqh4c2rUa49jbL+P/e2w==", + "version": "124.0.5", + "resolved": "https://registry.npmjs.org/react-native-webrtc/-/react-native-webrtc-124.0.5.tgz", + "integrity": "sha512-LIQJKst+t53bJOcQef9VXuz3pVheSBUA4olQGkxosbF4pHW1gsWoXYmf6wmI2zrqOA+aZsjjB6aT9AKLyr6a0Q==", "license": "MIT", "dependencies": { "base64-js": "1.5.1", @@ -20340,30 +20777,33 @@ } }, "node_modules/react-test-renderer": { - "version": "18.2.0", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.3.1.tgz", + "integrity": "sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "react-is": "^18.2.0", + "react-is": "^18.3.1", "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-test-renderer/node_modules/react-is": { "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/react-test-renderer/node_modules/scheduler": { "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" } @@ -20426,9 +20866,9 @@ } }, "node_modules/recyclerlistview": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-4.2.1.tgz", - "integrity": "sha512-NtVYjofwgUCt1rEsTp6jHQg/47TWjnO92TU2kTVgJ9wsc/ely4HnizHHa+f/dI7qaw4+zcSogElrLjhMltN2/g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-4.2.3.tgz", + "integrity": "sha512-STR/wj/FyT8EMsBzzhZ1l2goYirMkIgfV3gYEPxI3Kf3lOnu6f7Dryhyw7/IkQrgX5xtTcDrZMqytvteH9rL3g==", "license": "Apache-2.0", "dependencies": { "lodash.debounce": "4.0.8", @@ -20453,18 +20893,19 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.8", - "dev": true, + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "dunder-proto": "^1.0.0", - "es-abstract": "^1.23.5", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.2.0", - "which-builtin-type": "^1.2.0" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -20621,6 +21062,8 @@ }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -20715,7 +21158,9 @@ "license": "MIT" }, "node_modules/resolve.exports": { - "version": "2.0.2", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "license": "MIT", "engines": { "node": ">=10" @@ -20782,12 +21227,15 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.2", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -20801,13 +21249,31 @@ "version": "5.1.2", "license": "MIT" }, - "node_modules/safe-regex-test": { - "version": "1.0.3", + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -20845,24 +21311,6 @@ "loose-envify": "^1.1.0" } }, - "node_modules/schema-utils": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", @@ -20877,7 +21325,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -21119,6 +21569,20 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "license": "MIT" @@ -21205,13 +21669,69 @@ "peer": true }, "node_modules/side-channel": { - "version": "1.0.6", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -21527,6 +22047,13 @@ "node": ">= 0.10.0" } }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -21616,22 +22143,25 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.11", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -21649,13 +22179,18 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -21665,13 +22200,19 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -22073,22 +22614,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { "version": "3.5.2", "dev": true, @@ -22112,12 +22637,6 @@ "node": ">= 10.13.0" } }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", "dev": true, @@ -22185,11 +22704,6 @@ "node": "*" } }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -22287,7 +22801,9 @@ } }, "node_modules/tough-cookie": { - "version": "5.0.0", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -22309,16 +22825,16 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-interface-checker": { @@ -22328,7 +22844,9 @@ "license": "Apache-2.0" }, "node_modules/ts-jest": { - "version": "29.2.5", + "version": "29.2.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz", + "integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==", "dev": true, "license": "MIT", "dependencies": { @@ -22339,7 +22857,7 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.6.3", + "semver": "^7.7.1", "yargs-parser": "^21.1.1" }, "bin": { @@ -22468,26 +22986,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -22497,15 +23019,18 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -22515,15 +23040,17 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -22533,7 +23060,9 @@ } }, "node_modules/typescript": { - "version": "5.7.2", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -22566,22 +23095,27 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/undici": { - "version": "6.21.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", - "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", + "version": "6.21.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz", + "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==", "license": "MIT", "engines": { "node": ">=18.17" @@ -22910,7 +23444,9 @@ } }, "node_modules/uuid": { - "version": "11.0.3", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "dev": true, "funding": [ "https://github.com/sponsors/broofa", @@ -23135,22 +23671,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/webpack/node_modules/ajv-keywords": { "version": "3.5.2", "dev": true, @@ -23160,12 +23680,6 @@ "ajv": "^6.9.1" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", "dev": true, @@ -23248,37 +23762,43 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "version": "1.2.0", - "dev": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", + "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -23308,13 +23828,17 @@ "license": "ISC" }, "node_modules/which-typed-array": { - "version": "1.1.15", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -23334,9 +23858,9 @@ "license": "MIT" }, "node_modules/wonka": { - "version": "6.3.4", - "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.4.tgz", - "integrity": "sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", + "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", "license": "MIT" }, "node_modules/wrap-ansi": { diff --git a/package.json b/package.json index 8e0fad627..cb3509966 100644 --- a/package.json +++ b/package.json @@ -11,13 +11,13 @@ "npm": "^9 || ^10" }, "dependencies": { - "@formatjs/intl-datetimeformat": "6.17.1", - "@formatjs/intl-getcanonicallocales": "2.5.4", - "@formatjs/intl-listformat": "7.7.8", - "@formatjs/intl-locale": "4.2.8", - "@formatjs/intl-numberformat": "8.15.1", - "@formatjs/intl-pluralrules": "5.4.1", - "@gorhom/bottom-sheet": "5.0.6", + "@formatjs/intl-datetimeformat": "6.17.4", + "@formatjs/intl-getcanonicallocales": "2.5.5", + "@formatjs/intl-listformat": "7.7.11", + "@formatjs/intl-locale": "4.2.11", + "@formatjs/intl-numberformat": "8.15.4", + "@formatjs/intl-pluralrules": "5.4.4", + "@gorhom/bottom-sheet": "5.1.2", "@mattermost/calls": "github:mattermost/calls-common#030ff7c0a37ee9b0ccc5fae0b2ea9c0e1c08473f", "@mattermost/compass-icons": "0.1.48", "@mattermost/hardware-keyboard": "file:./libraries/@mattermost/hardware-keyboard", @@ -27,22 +27,22 @@ "@mattermost/react-native-turbo-log": "0.6.0", "@mattermost/rnshare": "file:./libraries/@mattermost/rnshare", "@mattermost/rnutils": "file:./libraries/@mattermost/rnutils", - "@msgpack/msgpack": "2.8.0", - "@nozbe/watermelondb": "0.28.0-1", - "@react-native-camera-roll/camera-roll": "7.9.0", - "@react-native-clipboard/clipboard": "1.15.0", + "@msgpack/msgpack": "3.1.1", + "@nozbe/watermelondb": "0.28.0-2", + "@react-native-camera-roll/camera-roll": "7.10.0", + "@react-native-clipboard/clipboard": "1.16.2", "@react-native-community/cli": "15.1.3", "@react-native-community/cli-platform-android": "15.1.3", "@react-native-community/cli-platform-ios": "15.1.3", - "@react-native-community/datetimepicker": "8.2.0", + "@react-native-community/datetimepicker": "8.3.0", "@react-native-community/netinfo": "11.4.1", "@react-native-cookies/cookies": "6.2.1", - "@react-navigation/bottom-tabs": "7.2.0", - "@react-navigation/native": "7.0.14", - "@react-navigation/stack": "7.1.0", + "@react-navigation/bottom-tabs": "7.3.2", + "@react-navigation/native": "7.0.18", + "@react-navigation/stack": "7.2.2", "@rneui/base": "4.0.0-rc.8", "@sentry/react-native": "6.4.0", - "@shopify/flash-list": "1.7.3", + "@shopify/flash-list": "1.7.6", "@stream-io/flat-list-mvcp": "0.10.3", "@voximplant/react-native-foreground-service": "3.0.2", "APNG4Android": "github:mattermost/APNG4Android#15a7e93d59542d18c1e562d49b3f4896dd1643a6", @@ -52,69 +52,69 @@ "deep-equal": "2.2.3", "deepmerge": "4.3.1", "emoji-regex": "10.4.0", - "expo": "52.0.19", - "expo-application": "6.0.1", - "expo-crypto": "14.0.1", - "expo-device": "7.0.1", - "expo-image": "2.0.4", - "expo-linear-gradient": "14.0.1", - "expo-store-review": "8.0.0", - "expo-video-thumbnails": "9.0.2", - "expo-web-browser": "14.0.1", + "expo": "52.0.40", + "expo-application": "6.0.2", + "expo-crypto": "14.0.2", + "expo-device": "7.0.2", + "expo-image": "2.0.6", + "expo-linear-gradient": "14.0.2", + "expo-store-review": "8.0.1", + "expo-video-thumbnails": "9.0.3", + "expo-web-browser": "14.0.2", "fflate": "0.8.2", - "fuse.js": "7.0.0", - "html-entities": "2.5.2", - "mime-db": "1.53.0", - "moment-timezone": "0.5.46", - "node-html-parser": "6.1.13", + "fuse.js": "7.1.0", + "html-entities": "2.5.3", + "mime-db": "1.54.0", + "moment-timezone": "0.5.48", + "node-html-parser": "7.0.1", "path-to-regexp": "8.2.0", "react": "18.3.1", "react-freeze": "1.0.4", - "react-intl": "7.0.4", + "react-intl": "7.1.8", "react-native": "0.76.5", "react-native-background-timer": "2.4.1", "react-native-document-picker": "9.3.1", "react-native-dotenv": "3.4.11", "react-native-exception-handler": "2.10.10", "react-native-file-viewer": "2.1.5", - "react-native-gesture-handler": "2.21.2", + "react-native-gesture-handler": "2.24.0", "react-native-haptic-feedback": "2.3.3", - "react-native-image-picker": "7.2.3", + "react-native-image-picker": "8.2.0", "react-native-incall-manager": "4.2.0", "react-native-keyboard-aware-scroll-view": "0.9.5", - "react-native-keychain": "9.2.2", - "react-native-localize": "3.3.0", + "react-native-keychain": "10.0.0", + "react-native-localize": "3.4.1", "react-native-math-view": "3.9.5", - "react-native-navigation": "7.40.3", + "react-native-navigation": "7.44.0", "react-native-notifications": "5.1.0", "react-native-performance": "5.1.2", - "react-native-permissions": "5.2.1", - "react-native-reanimated": "3.16.5", - "react-native-safe-area-context": "5.0.0", - "react-native-screens": "4.3.0", + "react-native-permissions": "5.3.0", + "react-native-reanimated": "3.17.1", + "react-native-safe-area-context": "5.3.0", + "react-native-screens": "4.9.2", "react-native-section-list-get-item-layout": "2.2.3", "react-native-shadow-2": "7.1.1", - "react-native-share": "12.0.3", - "react-native-svg": "15.10.1", + "react-native-share": "12.0.9", + "react-native-svg": "15.11.2", "react-native-url-polyfill": "2.0.0", "react-native-vector-icons": "10.2.0", - "react-native-video": "6.8.2", + "react-native-video": "6.11.0", "react-native-walkthrough-tooltip": "1.6.0", - "react-native-webrtc": "124.0.4", + "react-native-webrtc": "124.0.5", "react-syntax-highlighter": "15.6.1", - "semver": "7.6.3", + "semver": "7.7.1", "tinycolor2": "1.6.0", "url-parse": "1.5.10" }, "devDependencies": { "@babel/cli": "7.26.4", - "@babel/core": "7.26.0", - "@babel/eslint-parser": "7.25.9", + "@babel/core": "7.26.10", + "@babel/eslint-parser": "7.26.10", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/plugin-proposal-decorators": "7.25.9", - "@babel/plugin-transform-flow-strip-types": "7.25.9", - "@babel/plugin-transform-runtime": "7.25.9", - "@babel/preset-env": "7.26.0", + "@babel/plugin-transform-flow-strip-types": "7.26.5", + "@babel/plugin-transform-runtime": "7.26.10", + "@babel/preset-env": "7.26.9", "@babel/preset-typescript": "7.26.0", "@babel/register": "7.25.9", "@babel/runtime": "7.26.10", @@ -122,53 +122,54 @@ "@react-native/eslint-config": "0.76.5", "@react-native/metro-config": "0.76.5", "@react-native/typescript-config": "0.76.5", + "@stylistic/eslint-plugin-ts": "4.2.0", "@testing-library/react-hooks": "8.0.1", - "@testing-library/react-native": "12.9.0", + "@testing-library/react-native": "13.2.0", "@types/base-64": "1.0.2", "@types/commonmark": "0.27.9", "@types/commonmark-react-renderer": "4.3.4", "@types/deep-equal": "1.0.4", "@types/jest": "29.5.14", - "@types/lodash": "4.17.13", + "@types/lodash": "4.17.16", "@types/mime-db": "1.43.5", "@types/pako": "2.0.3", "@types/querystringify": "2.0.2", "@types/react": "18.3.12", "@types/react-native-background-timer": "2.0.2", "@types/react-native-dotenv": "0.2.2", - "@types/react-native-share": "6.0.0", "@types/react-syntax-highlighter": "15.5.13", "@types/semver": "7.5.8", "@types/tinycolor2": "1.4.6", "@types/tough-cookie": "4.0.5", "@types/url-parse": "1.4.11", "@types/uuid": "10.0.0", - "@typescript-eslint/eslint-plugin": "7.14.1", - "@typescript-eslint/parser": "7.14.1", + "@typescript-eslint/eslint-plugin": "8.27.0", + "@typescript-eslint/parser": "8.27.0", "babel-jest": "29.7.0", - "babel-loader": "9.2.1", + "babel-loader": "10.0.0", "babel-plugin-module-resolver": "5.0.2", - "eslint": "8.57.1", + "eslint": "9.23.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.31.0", - "eslint-plugin-jest": "28.9.0", - "eslint-plugin-react": "7.37.2", - "eslint-plugin-react-hooks": "5.1.0", + "eslint-plugin-jest": "28.11.0", + "eslint-plugin-react": "7.37.4", + "eslint-plugin-react-hooks": "5.2.0", "husky": "9.1.7", "isomorphic-fetch": "3.0.0", "jest": "29.7.0", "jest-cli": "29.7.0", - "jest-expo": "52.0.2", + "jest-expo": "52.0.6", "jetifier": "2.0.0", "mmjstool": "github:mattermost/mattermost-utilities#83b1b311972b8f5e750aae4019457a40abb5aa44", - "nock": "13.5.6", + "nock": "14.0.1", "patch-package": "8.0.0", - "react-devtools-core": "6.0.1", + "react-devtools-core": "6.1.1", + "react-test-renderer": "18.3.1", "timezones.json": "1.7.1", - "tough-cookie": "5.0.0", - "ts-jest": "29.2.5", - "typescript": "5.7.2", - "uuid": "11.0.3" + "tough-cookie": "5.1.2", + "ts-jest": "29.2.6", + "typescript": "5.8.2", + "uuid": "11.1.0" }, "scripts": { "android": "react-native run-android", @@ -188,7 +189,7 @@ "ios": "react-native run-ios", "ios-gems": "bundle install", "ios-gems-m1": "arch -arm64 bundle install", - "lint": "eslint --ignore-path .gitignore --ignore-pattern node_modules --quiet .", + "lint": "eslint --ignore-pattern .gitignore --ignore-pattern node_modules --quiet .", "mmjstool": "mmjstool", "pod-install": "cd ios && RCT_NEW_ARCH_ENABLED=0 pod install", "pod-install-m1": "cd ios && RCT_NEW_ARCH_ENABLED=0 arch -x86_64 pod install", @@ -203,22 +204,26 @@ "updatesnapshot": "jest --updateSnapshot" }, "overrides": { + "promise": "^8.3.0", + "react-test-renderer": "18.3.1", + "@babel/runtime": "7.26.10", + "@babel/runtime-corejs3": "7.26.10", "@testing-library/react-native": { "react": "^18.3.1" }, "@testing-library/react-hooks": { "@types/react": "^18.2.37", "react": "^18.3.1", - "react-test-renderer": "^18.2.0" + "react-test-renderer": "^18.3.1" }, "@react-native-community/datetimepicker": { "react-native": "^0.76.5" }, - "@react-native-clipboard/clipboard": { - "react-native": "^0.76.5" - }, "react-native-windows": { "react-native": "^0.76.5" + }, + "@react-native/eslint-config@0.76.5": { + "@typescript-eslint/eslint-plugin": "^8.26.1" } }, "expo": { diff --git a/patches/@gorhom+bottom-sheet+5.0.6.patch b/patches/@gorhom+bottom-sheet+5.1.2.patch similarity index 100% rename from patches/@gorhom+bottom-sheet+5.0.6.patch rename to patches/@gorhom+bottom-sheet+5.1.2.patch diff --git a/patches/@nozbe+watermelondb+0.28.0-1.patch b/patches/@nozbe+watermelondb+0.28.0-2.patch similarity index 100% rename from patches/@nozbe+watermelondb+0.28.0-1.patch rename to patches/@nozbe+watermelondb+0.28.0-2.patch diff --git a/patches/@shopify+flash-list+1.7.3.patch b/patches/@shopify+flash-list+1.7.6.patch similarity index 100% rename from patches/@shopify+flash-list+1.7.3.patch rename to patches/@shopify+flash-list+1.7.6.patch diff --git a/patches/expo-image+2.0.4.patch b/patches/expo-image+2.0.6.patch similarity index 100% rename from patches/expo-image+2.0.4.patch rename to patches/expo-image+2.0.6.patch diff --git a/patches/expo-modules-core+2.1.2.patch b/patches/expo-modules-core+2.2.3.patch similarity index 100% rename from patches/expo-modules-core+2.1.2.patch rename to patches/expo-modules-core+2.2.3.patch diff --git a/patches/expo-video-thumbnails+9.0.2.patch b/patches/expo-video-thumbnails+9.0.3.patch similarity index 100% rename from patches/expo-video-thumbnails+9.0.2.patch rename to patches/expo-video-thumbnails+9.0.3.patch diff --git a/patches/jest-expo+52.0.2.patch b/patches/jest-expo+52.0.6.patch similarity index 100% rename from patches/jest-expo+52.0.2.patch rename to patches/jest-expo+52.0.6.patch diff --git a/patches/react-intl+7.1.8.patch b/patches/react-intl+7.1.8.patch new file mode 100644 index 000000000..ffb9a1b58 --- /dev/null +++ b/patches/react-intl+7.1.8.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-intl/src/components/createIntl.js b/node_modules/react-intl/src/components/createIntl.js +index 6887909..d1819bc 100644 +--- a/node_modules/react-intl/src/components/createIntl.js ++++ b/node_modules/react-intl/src/components/createIntl.js +@@ -32,7 +32,7 @@ var formatMessage = function (config, formatters, descriptor, rawValues) { + formatters, + descriptor, + values], rest, false)); +- return (0, utils_1.toKeyedReactNodeArray)(chunks); ++ return typeof chunks === 'string' ? chunks : (0, utils_1.toKeyedReactNodeArray)(chunks); + }; + /** + * Create intl object diff --git a/patches/react-native-keychain+9.2.2.patch b/patches/react-native-keychain+10.0.0.patch similarity index 68% rename from patches/react-native-keychain+9.2.2.patch rename to patches/react-native-keychain+10.0.0.patch index 43204fd16..8da2f845c 100644 --- a/patches/react-native-keychain+9.2.2.patch +++ b/patches/react-native-keychain+10.0.0.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-keychain/ios/RNKeychainManager/RNKeychainManager.h b/node_modules/react-native-keychain/ios/RNKeychainManager/RNKeychainManager.h -index 4a1234f..f3e2308 100644 +index 4a1234f..1eb9519 100644 --- a/node_modules/react-native-keychain/ios/RNKeychainManager/RNKeychainManager.h +++ b/node_modules/react-native-keychain/ios/RNKeychainManager/RNKeychainManager.h @@ -10,5 +10,6 @@ @@ -11,10 +11,10 @@ index 4a1234f..f3e2308 100644 +-(NSArray*)getAllServersForInternetPasswords; @end diff --git a/node_modules/react-native-keychain/ios/RNKeychainManager/RNKeychainManager.m b/node_modules/react-native-keychain/ios/RNKeychainManager/RNKeychainManager.m -index 18e42ab..ff130ab 100644 +index 6888ff0..c5e1dc5 100644 --- a/node_modules/react-native-keychain/ios/RNKeychainManager/RNKeychainManager.m +++ b/node_modules/react-native-keychain/ios/RNKeychainManager/RNKeychainManager.m -@@ -209,6 +209,36 @@ SecAccessControlCreateFlags accessControlValue(NSDictionary *options) +@@ -209,6 +209,35 @@ SecAccessControlCreateFlags accessControlValue(NSDictionary *options) return 0; } @@ -24,6 +24,7 @@ index 18e42ab..ff130ab 100644 + (__bridge id)kCFBooleanTrue, (__bridge id)kSecReturnAttributes, + (__bridge id)kSecMatchLimitAll, (__bridge id)kSecMatchLimit, + nil]; ++ + NSMutableArray *servers = [NSMutableArray new]; + + [query setObject:(__bridge id)kSecClassInternetPassword forKey:(__bridge id)kSecClass]; @@ -38,74 +39,74 @@ index 18e42ab..ff130ab 100644 + if (result != NULL) { + for (id entry in result) { + NSString *serverData = [entry objectForKey:(__bridge NSString *)kSecAttrServer]; -+ if (serverData != NULL) { -+ [servers addObject:serverData]; -+ } ++ [servers addObject:serverData]; + } + } + } -+ ++ + return servers; +} + - (void)insertKeychainEntry:(NSDictionary *)attributes withOptions:(NSDictionary * __nullable)options resolver:(RCTPromiseResolveBlock)resolve -@@ -663,4 +693,14 @@ RCT_EXPORT_METHOD(getAllGenericPasswordServices:(RCTPromiseResolveBlock)resolve - } +@@ -627,6 +656,16 @@ RCT_EXPORT_METHOD(getInternetCredentialsForServer:(NSString *)server + } +RCT_EXPORT_METHOD(getAllInternetPasswordServers:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) +{ + @try { -+ NSArray *servers = [self getAllServersForInternetPasswords]; ++ NSArray *servers = [self getAllServersForInternetPasswords]; + return resolve(servers); + } @catch (NSError *nsError) { + return rejectWithError(reject, nsError); + } +} + - @end + RCT_EXPORT_METHOD(resetInternetCredentialsForOptions:(NSDictionary *)options + resolver:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)reject) diff --git a/node_modules/react-native-keychain/lib/typescript/index.d.ts b/node_modules/react-native-keychain/lib/typescript/index.d.ts -index 43f2e2f..dcef782 100644 +index b868899..1e2b619 100644 --- a/node_modules/react-native-keychain/lib/typescript/index.d.ts +++ b/node_modules/react-native-keychain/lib/typescript/index.d.ts -@@ -73,6 +73,17 @@ export declare function resetGenericPassword(serviceOrOptions?: string | BaseOpt +@@ -122,6 +122,17 @@ export declare function setInternetCredentials(server: string, username: string, * ``` */ - export declare function getAllGenericPasswordServices(): Promise; + export declare function getInternetCredentials(server: string, options?: GetOptions): Promise; +/** -+* Gets all `kSecAttrServer` values used in internet credentials for iOS. -+* @return {Promise} Resolves to an array of strings -+* -+* @example -+* ```typescript -+* const servers = await Keychain.getAllInternetPasswordServers(); -+* console.log('Servers:', servers); -+* ``` -+*/ ++ * Gets all `kSecAttrServer` values used in internet credentials for iOS. ++ * @return {Promise} Resolves to an array of strings ++ * ++ * @example ++ * ```typescript ++ * const servers = await Keychain.getAllInternetPasswordServers(); ++ * console.log('Servers:', servers); ++ * ``` ++ */ +export declare function getAllInternetPasswordServers(): Promise; /** - * Checks if internet credentials exist for the given server. + * Deletes all internet password keychain entries for the given server. * diff --git a/node_modules/react-native-keychain/src/index.ts b/node_modules/react-native-keychain/src/index.ts -index 7bfe371..3ac11b5 100644 +index 1de35da..16eea24 100644 --- a/node_modules/react-native-keychain/src/index.ts +++ b/node_modules/react-native-keychain/src/index.ts -@@ -132,6 +132,27 @@ export function getAllGenericPasswordServices(): Promise { - return RNKeychainManager.getAllGenericPasswordServices(); +@@ -200,6 +200,27 @@ export function getInternetCredentials( + ); } +/** -+* Gets all `kSecAttrServer` values used in internet credentials for iOS. -+* @return {Promise} Resolves to an array of strings -+* -+* @example -+* ```typescript -+* const servers = await Keychain.getAllInternetPasswordServers(); -+* console.log('Servers:', servers); -+* ``` -+*/ ++ * Gets all `kSecAttrServer` values used in internet credentials for iOS. ++ * @return {Promise} Resolves to an array of strings ++ * ++ * @example ++ * ```typescript ++ * const servers = await Keychain.getAllInternetPasswordServers(); ++ * console.log('Servers:', servers); ++ * ``` ++ */ +export async function getAllInternetPasswordServers(): Promise { + if (Platform.OS !== 'ios') { + return Promise.reject( @@ -118,5 +119,5 @@ index 7bfe371..3ac11b5 100644 +} + /** - * Checks if internet credentials exist for the given server. + * Deletes all internet password keychain entries for the given server. * diff --git a/patches/react-native-navigation+7.40.3.patch b/patches/react-native-navigation+7.44.0.patch similarity index 70% rename from patches/react-native-navigation+7.40.3.patch rename to patches/react-native-navigation+7.44.0.patch index a0bcfba5b..46bb51908 100644 --- a/patches/react-native-navigation+7.40.3.patch +++ b/patches/react-native-navigation+7.44.0.patch @@ -1,14 +1,13 @@ diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java -index 481aaf0..609e359 100644 +index f3f0d5a..3af346d 100644 --- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java -@@ -1,18 +1,15 @@ +@@ -1,13 +1,12 @@ package com.reactnativenavigation; -import android.annotation.TargetApi; import android.content.Intent; import android.content.res.Configuration; --import android.graphics.Color; -import android.os.Build; import android.os.Bundle; import android.view.KeyEvent; @@ -18,11 +17,7 @@ index 481aaf0..609e359 100644 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; import com.facebook.react.modules.core.PermissionAwareActivity; import com.facebook.react.modules.core.PermissionListener; --import com.reactnativenavigation.options.Options; - import com.reactnativenavigation.viewcontrollers.overlay.OverlayManager; - import com.reactnativenavigation.viewcontrollers.viewcontroller.RootPresenter; - import com.reactnativenavigation.react.JsDevReloadHandler; -@@ -25,9 +22,8 @@ import com.reactnativenavigation.viewcontrollers.navigator.Navigator; +@@ -24,9 +23,8 @@ import com.reactnativenavigation.viewcontrollers.navigator.Navigator; import androidx.activity.OnBackPressedCallback; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -33,16 +28,16 @@ index 481aaf0..609e359 100644 @Nullable private PermissionListener mPermissionListener; -@@ -50,7 +46,7 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard +@@ -49,7 +47,7 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard ); navigator.bindViews(); getReactGateway().onActivityCreated(this); - setBackPressedCallback(); + // setBackPressedCallback(); + StatusBarPresenter.Companion.init(this); } - @Override -@@ -96,15 +92,16 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard +@@ -96,15 +94,15 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard @Override public void invokeDefaultOnBackPressed() { @@ -56,7 +51,6 @@ index 481aaf0..609e359 100644 + // NavigationActivity.super.onBackPressed(); + // callback.setEnabled(true); + // } -+ super.invokeDefaultOnBackPressed(); } @Override @@ -65,7 +59,7 @@ index 481aaf0..609e359 100644 super.onActivityResult(requestCode, resultCode, data); getReactGateway().onActivityResult(this, requestCode, resultCode, data); } -@@ -126,7 +123,6 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard +@@ -126,7 +124,6 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard return navigator; } @@ -73,31 +67,6 @@ index 481aaf0..609e359 100644 public void requestPermissions(String[] permissions, int requestCode, PermissionListener listener) { mPermissionListener = listener; requestPermissions(permissions, requestCode); -diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java -index 0eced0f..251d72c 100644 ---- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java -+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java -@@ -4,6 +4,7 @@ import android.app.Application; - - import com.facebook.react.ReactApplication; - import com.facebook.react.ReactNativeHost; -+import com.facebook.react.soloader.OpenSourceMergedSoMapping; - import com.facebook.soloader.SoLoader; - import com.reactnativenavigation.react.ReactGateway; - import com.reactnativenavigation.viewcontrollers.externalcomponent.ExternalComponentCreator; -@@ -23,7 +24,11 @@ public abstract class NavigationApplication extends Application implements React - public void onCreate() { - super.onCreate(); - instance = this; -- SoLoader.init(this, false); -+ try { -+ SoLoader.init(this, OpenSourceMergedSoMapping.INSTANCE); -+ } catch (Exception e) { -+ e.printStackTrace(); -+ } - reactGateway = createReactGateway(); - } - diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java index 4cc09eb..857bbd4 100644 --- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java @@ -302,50 +271,43 @@ index 4cc09eb..857bbd4 100644 + super.invalidate(); } } -diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java -index 834d734..3fc00c3 100644 ---- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java -+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactTypefaceUtils.java -@@ -96,12 +96,12 @@ public class ReactTypefaceUtils { - - int want = 0; - if ((weight == Typeface.BOLD) -- || ((oldStyle & Typeface.BOLD) != 0 && weight == ReactTextShadowNode.UNSET)) { -+ || ((oldStyle & Typeface.BOLD) != 0 && weight == -1)) { - want |= Typeface.BOLD; +diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java +index 0db6f39..0b265b7 100644 +--- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java ++++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java +@@ -10,7 +10,6 @@ import androidx.annotation.RestrictTo; + import com.facebook.react.ReactInstanceManager; + import com.facebook.react.ReactRootView; + import com.facebook.react.bridge.ReactContext; +-import com.facebook.react.config.ReactFeatureFlags; + import com.facebook.react.uimanager.JSTouchDispatcher; + import com.facebook.react.uimanager.UIManagerModule; + import com.facebook.react.uimanager.events.EventDispatcher; +@@ -35,7 +34,7 @@ public class ReactView extends ReactRootView implements IReactView, Renderable { + this.componentId = componentId; + this.componentName = componentName; + jsTouchDispatcher = new JSTouchDispatcher(this); +- setIsFabric(ReactFeatureFlags.enableFabricRenderer); ++ setIsFabric(false); } - if ((style == Typeface.ITALIC) -- || ((oldStyle & Typeface.ITALIC) != 0 && style == ReactTextShadowNode.UNSET)) { -+ || ((oldStyle & Typeface.ITALIC) != 0 && style == -1)) { - want |= Typeface.ITALIC; - } - -diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactViewGroup.kt b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactViewGroup.kt -index f92580c..a58fa7b 100644 ---- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactViewGroup.kt -+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReactViewGroup.kt -@@ -4,4 +4,4 @@ import com.facebook.react.views.view.ReactViewBackgroundDrawable - import com.facebook.react.views.view.ReactViewGroup - - val ReactViewGroup.borderRadius: Float -- get() = (background as? ReactViewBackgroundDrawable)?.fullBorderRadius ?: 0f -\ No newline at end of file -+ get() = 0f -\ No newline at end of file + @Override diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java -index 3acc41d..ebc8d18 100644 +index f014bff..e4ccc55 100644 --- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java -@@ -7,6 +7,7 @@ import android.util.Log; - import android.view.View; +@@ -6,8 +6,10 @@ import android.view.View; import android.view.ViewGroup; - import android.view.WindowInsets; + + import androidx.annotation.CallSuper; ++import androidx.core.graphics.Insets; + import androidx.core.view.ViewCompat; + import androidx.core.view.WindowInsetsCompat; +import android.view.WindowManager; import com.reactnativenavigation.options.Options; - import com.reactnativenavigation.utils.LogKt; -@@ -100,6 +101,18 @@ public abstract class ChildController extends ViewControlle + import com.reactnativenavigation.viewcontrollers.navigator.Navigator; +@@ -93,6 +95,18 @@ public abstract class ChildController extends ViewControlle } protected WindowInsetsCompat onApplyWindowInsets(View view, WindowInsetsCompat insets) { @@ -364,32 +326,6 @@ index 3acc41d..ebc8d18 100644 return insets; } -diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/LayoutDirectionApplier.kt b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/LayoutDirectionApplier.kt -index 89216ae..345207a 100644 ---- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/LayoutDirectionApplier.kt -+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/LayoutDirectionApplier.kt -@@ -1,15 +1,17 @@ - package com.reactnativenavigation.viewcontrollers.viewcontroller - -+import com.facebook.react.bridge.ReactContext - import com.facebook.react.ReactInstanceManager - import com.facebook.react.modules.i18nmanager.I18nUtil - import com.reactnativenavigation.options.Options - - class LayoutDirectionApplier { - fun apply(root: ViewController<*>, options: Options, instanceManager: ReactInstanceManager) { -- if (options.layout.direction.hasValue() && instanceManager.currentReactContext != null) { -+ val reactContext = instanceManager.currentReactContext as? ReactContext -+ if (reactContext != null && options.layout.direction.hasValue()) { - root.activity.window.decorView.layoutDirection = options.layout.direction.get() -- I18nUtil.getInstance().allowRTL(instanceManager.currentReactContext, options.layout.direction.isRtl) -- I18nUtil.getInstance().forceRTL(instanceManager.currentReactContext, options.layout.direction.isRtl) -+ I18nUtil.getInstance().allowRTL(reactContext, options.layout.direction.isRtl) -+ I18nUtil.getInstance().forceRTL(reactContext, options.layout.direction.isRtl) - } - } - } -\ No newline at end of file diff --git a/node_modules/react-native-navigation/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/ReactGateway.java b/node_modules/react-native-navigation/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/ReactGateway.java index 035ec31..630b8d4 100644 --- a/node_modules/react-native-navigation/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/ReactGateway.java @@ -406,75 +342,62 @@ index 035ec31..630b8d4 100644 + } } diff --git a/node_modules/react-native-navigation/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt b/node_modules/react-native-navigation/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt -index ea8516f..f275c18 100644 +index 551f72b..f275c18 100644 --- a/node_modules/react-native-navigation/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +++ b/node_modules/react-native-navigation/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt -@@ -50,13 +50,19 @@ class ModalContentLayout(context: Context?) : ReactViewGroup(context), RootView{ +@@ -49,17 +49,23 @@ class ModalContentLayout(context: Context?) : ReactViewGroup(context), RootView{ + updateFirstChildView() } } - override fun onChildStartedNativeGesture(child: View, androidEvent: MotionEvent?) { +- override fun onChildStartedNativeGesture(child: View, androidEvent: MotionEvent) { - mJSTouchDispatcher.onChildStartedNativeGesture(androidEvent, this.getEventDispatcher()) ++ override fun onChildStartedNativeGesture(child: View, androidEvent: MotionEvent?) { + androidEvent?.let { + mJSTouchDispatcher.onChildStartedNativeGesture(it, this.getEventDispatcher()!!) + } } - override fun onChildStartedNativeGesture(androidEvent: MotionEvent?) { +- override fun onChildStartedNativeGesture(androidEvent: MotionEvent) { - mJSTouchDispatcher.onChildStartedNativeGesture(androidEvent, this.getEventDispatcher()) ++ override fun onChildStartedNativeGesture(androidEvent: MotionEvent?) { + androidEvent?.let { + mJSTouchDispatcher.onChildStartedNativeGesture(it, this.getEventDispatcher()!!) + } } - override fun onChildEndedNativeGesture(child: View, androidEvent: MotionEvent?) { +- override fun onChildEndedNativeGesture(child: View, androidEvent: MotionEvent) { - mJSTouchDispatcher.onChildEndedNativeGesture(androidEvent, this.getEventDispatcher()) ++ override fun onChildEndedNativeGesture(child: View, androidEvent: MotionEvent?) { + androidEvent?.let { + mJSTouchDispatcher.onChildEndedNativeGesture(it, this.getEventDispatcher()!!) + } } override fun requestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {} - private fun getEventDispatcher(): EventDispatcher? { -@@ -74,12 +80,16 @@ class ModalContentLayout(context: Context?) : ReactViewGroup(context), RootView{ +- private fun getEventDispatcher(): EventDispatcher { ++ private fun getEventDispatcher(): EventDispatcher? { + val reactContext: ReactContext = this.getReactContext() + return reactContext.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher + } +@@ -73,13 +79,17 @@ class ModalContentLayout(context: Context?) : ReactViewGroup(context), RootView{ + return this.context as ReactContext } - override fun onInterceptTouchEvent(event: MotionEvent?): Boolean { +- override fun onInterceptTouchEvent(event: MotionEvent): Boolean { - mJSTouchDispatcher.handleTouchEvent(event, getEventDispatcher()) ++ override fun onInterceptTouchEvent(event: MotionEvent?): Boolean { + event?.let { + mJSTouchDispatcher.handleTouchEvent(it, getEventDispatcher()!!) + } return super.onInterceptTouchEvent(event) } - override fun onTouchEvent(event: MotionEvent?): Boolean { +- override fun onTouchEvent(event: MotionEvent): Boolean { - mJSTouchDispatcher.handleTouchEvent(event, getEventDispatcher()) ++ override fun onTouchEvent(event: MotionEvent?): Boolean { + event?.let { + mJSTouchDispatcher.handleTouchEvent(it, getEventDispatcher()!!) + } super.onTouchEvent(event) return true } -diff --git a/node_modules/react-native-navigation/lib/ios/BottomTabsBasePresenter.m b/node_modules/react-native-navigation/lib/ios/BottomTabsBasePresenter.m -index 75aa424..f0a7e08 100644 ---- a/node_modules/react-native-navigation/lib/ios/BottomTabsBasePresenter.m -+++ b/node_modules/react-native-navigation/lib/ios/BottomTabsBasePresenter.m -@@ -29,8 +29,6 @@ - [self applyBackgroundColor:[withDefault.bottomTabs.backgroundColor withDefault:nil] - translucent:[withDefault.bottomTabs.translucent withDefault:NO]]; - [bottomTabs setTabBarHideShadow:[withDefault.bottomTabs.hideShadow withDefault:NO]]; -- [bottomTabs setTabBarStyle:[RCTConvert UIBarStyle:[withDefault.bottomTabs.barStyle -- withDefault:@"default"]]]; - [self applyTabBarBorder:withDefault.bottomTabs]; - [self applyTabBarShadow:withDefault.bottomTabs.shadow]; - } -@@ -59,10 +57,6 @@ - [self setTabBarBackgroundColor:mergeOptions.bottomTabs.backgroundColor.get]; - } - -- if (mergeOptions.bottomTabs.barStyle.hasValue) { -- [bottomTabs setTabBarStyle:[RCTConvert UIBarStyle:mergeOptions.bottomTabs.barStyle.get]]; -- } -- - if (mergeOptions.bottomTabs.translucent.hasValue) { - [bottomTabs setTabBarTranslucent:mergeOptions.bottomTabs.translucent.get]; - } diff --git a/node_modules/react-native-navigation/lib/ios/RNNComponentViewController.m b/node_modules/react-native-navigation/lib/ios/RNNComponentViewController.m index fc482a6..9406bbf 100644 --- a/node_modules/react-native-navigation/lib/ios/RNNComponentViewController.m @@ -509,32 +432,8 @@ index b44f24f..bf4e1c3 100644 [hitTestResult isKindOfClass:[RCTModalHostView class]] || [hitTestResult isKindOfClass:NSClassFromString(@"RCTRootComponentView")]) { return nil; -diff --git a/node_modules/react-native-navigation/lib/ios/RNNStackPresenter.m b/node_modules/react-native-navigation/lib/ios/RNNStackPresenter.m -index 5f4218e..8513863 100644 ---- a/node_modules/react-native-navigation/lib/ios/RNNStackPresenter.m -+++ b/node_modules/react-native-navigation/lib/ios/RNNStackPresenter.m -@@ -67,8 +67,6 @@ - [_interactivePopGestureDelegate setEnabled:[withDefault.popGesture withDefault:YES]]; - stack.interactivePopGestureRecognizer.delegate = _interactivePopGestureDelegate; - -- [stack -- setBarStyle:[RCTConvert UIBarStyle:[withDefault.topBar.barStyle withDefault:@"default"]]]; - [stack setRootBackgroundImage:[withDefault.rootBackgroundImage withDefault:nil]]; - [stack setNavigationBarTestId:[withDefault.topBar.testID withDefault:nil]]; - [stack setNavigationBarVisible:[withDefault.topBar.visible withDefault:YES] -@@ -125,10 +123,6 @@ - [stack hideBarsOnScroll:[mergeOptions.topBar.hideOnScroll get]]; - } - -- if (mergeOptions.topBar.barStyle.hasValue) { -- [stack setBarStyle:[RCTConvert UIBarStyle:mergeOptions.topBar.barStyle.get]]; -- } -- - if (mergeOptions.topBar.background.clipToBounds.hasValue) { - [stack setNavigationBarClipsToBounds:[mergeOptions.topBar.background.clipToBounds get]]; - } diff --git a/node_modules/react-native-navigation/lib/src/interfaces/Options.ts b/node_modules/react-native-navigation/lib/src/interfaces/Options.ts -index 1ab5b4e..ccd0b74 100644 +index f0923ed..b0ea7fc 100644 --- a/node_modules/react-native-navigation/lib/src/interfaces/Options.ts +++ b/node_modules/react-native-navigation/lib/src/interfaces/Options.ts @@ -1,5 +1,5 @@ diff --git a/patches/react-native-reanimated+3.16.5.patch b/patches/react-native-reanimated+3.17.1.patch similarity index 100% rename from patches/react-native-reanimated+3.16.5.patch rename to patches/react-native-reanimated+3.17.1.patch diff --git a/patches/react-native-safe-area-context+5.0.0.patch b/patches/react-native-safe-area-context+5.3.0.patch similarity index 100% rename from patches/react-native-safe-area-context+5.0.0.patch rename to patches/react-native-safe-area-context+5.3.0.patch diff --git a/patches/react-native-share+12.0.3.patch b/patches/react-native-share+12.0.9.patch similarity index 100% rename from patches/react-native-share+12.0.3.patch rename to patches/react-native-share+12.0.9.patch diff --git a/patches/react-native-svg+15.10.1.patch b/patches/react-native-svg+15.11.2.patch similarity index 100% rename from patches/react-native-svg+15.10.1.patch rename to patches/react-native-svg+15.11.2.patch diff --git a/patches/react-native-webrtc+124.0.4.patch b/patches/react-native-webrtc+124.0.5.patch similarity index 100% rename from patches/react-native-webrtc+124.0.4.patch rename to patches/react-native-webrtc+124.0.5.patch diff --git a/test/setup.ts b/test/setup.ts index a523b7111..9050247f7 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -9,7 +9,6 @@ import mockSafeAreaContext from 'react-native-safe-area-context/jest/mock'; import {v4 as uuidv4} from 'uuid'; import 'react-native-gesture-handler/jestSetup'; -import '@testing-library/react-native/extend-expect'; import {mockApiClient} from './mock_api_client'; @@ -18,6 +17,9 @@ import type {RequestOptions} from '@mattermost/react-native-network-client'; // @ts-expect-error Promise does not exists in global global.Promise = jest.requireActual('promise'); +// eslint-disable-next-line no-process-env +process.env.EXPO_OS = 'ios'; + setGenerator(uuidv4); require('isomorphic-fetch'); @@ -69,6 +71,13 @@ jest.mock('expo-web-browser', () => ({ jest.mock('@nozbe/watermelondb/utils/common/randomId/randomId', () => ({})); +jest.mock('@nozbe/watermelondb/react/withObservables/garbageCollector', () => { + return { + __esModule: true, + default: jest.fn(), + }; +}); + /* eslint-disable no-console */ jest.mock('@database/manager'); jest.doMock('react-native', () => { @@ -166,6 +175,7 @@ jest.doMock('react-native', () => { removeServerNotifications: jest.fn().mockImplementation(), unlockOrientation: jest.fn(), + getWindowDimensions: jest.fn().mockReturnValue({width: 426, height: 952}), }, APIClient: { getConstants: () => ({ @@ -231,6 +241,12 @@ jest.doMock('react-native', () => { InteractionManager, NativeModules, Linking, + Animated: { + ...ReactNative.Animated, + timing: jest.fn(() => ({ + start: jest.fn((callback) => callback?.({finished: true})), + })), + }, }, ReactNative); }); @@ -388,12 +404,12 @@ jest.mock('@react-native-clipboard/clipboard', () => ({})); jest.mock('react-native-document-picker', () => ({})); jest.mock('@mattermost/react-native-network-client', () => ({ - getOrCreateAPIClient: (serverUrl: string) => ({client: { + getOrCreateAPIClient: jest.fn((serverUrl: string) => Promise.resolve({client: { baseUrl: serverUrl, get: (url: string, options?: RequestOptions) => mockApiClient.get(`${serverUrl}${url}`, options), post: (url: string, options?: RequestOptions) => mockApiClient.post(`${serverUrl}${url}`, options), invalidate: jest.fn(), - }}), + }})), RetryTypes: { EXPONENTIAL_RETRY: 'exponential', }, @@ -424,3 +440,24 @@ global.requestAnimationFrame = (callback) => { }; global.performance.now = () => Date.now(); + +const colors = { + reset: '\x1b[0m', + yellow: '\x1b[33m', + red: '\x1b[31m', + cyan: '\x1b[36m', + blue: '\x1b[1;34m', +}; + +const filterStackTrace = (color: string, prefix: string) => { + return (...args: unknown[]) => { + const message = args.join(' '); + process.stdout.write(`\n${color}${prefix} ${message}${colors.reset}\n`); + }; +}; + +// Override console methods globally +console.warn = filterStackTrace(colors.yellow, '⚠️ Warning:'); +console.error = filterStackTrace(colors.red, '🚨 Error:'); +console.log = filterStackTrace(colors.cyan, '📢 Log:'); +console.debug = filterStackTrace(colors.blue, '🐞 Debug:'); diff --git a/types/launch/index.ts b/types/launch/index.ts index b813e4369..30fa52292 100644 --- a/types/launch/index.ts +++ b/types/launch/index.ts @@ -1,7 +1,7 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import type {DeepLink, Launch} from '@constants'; +import type {DeepLink as DeepLinkConstant, Launch} from '@constants'; export interface DeepLink { serverUrl: string; @@ -33,7 +33,7 @@ export interface DeepLinkPlugin extends DeepLink { route?: string; } -export type DeepLinkType = typeof DeepLink[keyof typeof DeepLink]; +export type DeepLinkType = typeof DeepLinkConstant[keyof typeof DeepLinkConstant]; export interface DeepLinkWithData { type: DeepLinkType; diff --git a/types/screens/gallery.ts b/types/screens/gallery.ts index 950586b05..4ce5986ee 100644 --- a/types/screens/gallery.ts +++ b/types/screens/gallery.ts @@ -5,17 +5,17 @@ // See LICENSE.txt for license information. import type {Caption} from '@mattermost/calls/lib/types'; import type {GestureHandlerGestureEvent} from 'react-native-gesture-handler'; -import type Animated from 'react-native-reanimated'; +import type {SharedValue} from 'react-native-reanimated'; export type GalleryManagerSharedValues = { - width: Animated.SharedValue; - height: Animated.SharedValue; - x: Animated.SharedValue; - y: Animated.SharedValue; - opacity: Animated.SharedValue; - activeIndex: Animated.SharedValue; - targetWidth: Animated.SharedValue; - targetHeight: Animated.SharedValue; + width: SharedValue; + height: SharedValue; + x: SharedValue; + y: SharedValue; + opacity: SharedValue; + activeIndex: SharedValue; + targetWidth: SharedValue; + targetHeight: SharedValue; } export type Context = { [key: string]: any };