diff --git a/example/package.json b/example/package.json
index 9b9011fa..9ab5bfce 100644
--- a/example/package.json
+++ b/example/package.json
@@ -13,21 +13,37 @@
},
"dependencies": {
"crypto-browserify": "^3.12.1",
- "expo": "^53.0.8",
- "expo-splash-screen": "~0.30.8",
+ "expo": "^53.0.10",
+ "expo-splash-screen": "~0.30.9",
"expo-status-bar": "~2.2.3",
"react": "19.0.0",
"react-dom": "19.0.0",
- "react-native": "0.79.2",
- "react-native-paper": "^5.14.0",
- "react-native-safe-area-context": "^5.4.0",
+ "react-native": "0.79.3",
+ "react-native-paper": "^5.14.5",
+ "react-native-safe-area-context": "^5.4.1",
"react-native-web": "~0.20.0",
"stream-browserify": "^3.0.0"
},
"devDependencies": {
- "@babel/core": "^7.27.1",
+ "@babel/core": "^7.27.4",
"@expo/webpack-config": "^19.0.1",
"babel-loader": "^10.0.0",
"babel-plugin-module-resolver": "^5.0.2"
+ },
+ "expo": {
+ "doctor": {
+ "reactNativeDirectoryCheck": {
+ "exclude": [
+ "jwt-decode"
+ ],
+ "listUnknownPackages": false
+ }
+ },
+ "install": {
+ "exclude": [
+ "react-native",
+ "react-native-safe-area-context"
+ ]
+ }
}
}
diff --git a/example/yarn.lock b/example/yarn.lock
index feb0cf0c..b68de37e 100644
--- a/example/yarn.lock
+++ b/example/yarn.lock
@@ -32,48 +32,48 @@
picocolors "^1.1.1"
"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.27.2":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9"
- integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==
+ version "7.27.5"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82"
+ integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==
-"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.0", "@babel/core@^7.20.2", "@babel/core@^7.25.2", "@babel/core@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6"
- integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==
+"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.0", "@babel/core@^7.20.2", "@babel/core@^7.25.2", "@babel/core@^7.27.4":
+ version "7.27.4"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce"
+ integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.27.1"
- "@babel/helper-compilation-targets" "^7.27.1"
- "@babel/helper-module-transforms" "^7.27.1"
- "@babel/helpers" "^7.27.1"
- "@babel/parser" "^7.27.1"
- "@babel/template" "^7.27.1"
- "@babel/traverse" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/generator" "^7.27.3"
+ "@babel/helper-compilation-targets" "^7.27.2"
+ "@babel/helper-module-transforms" "^7.27.3"
+ "@babel/helpers" "^7.27.4"
+ "@babel/parser" "^7.27.4"
+ "@babel/template" "^7.27.2"
+ "@babel/traverse" "^7.27.4"
+ "@babel/types" "^7.27.3"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/generator@^7.20.5", "@babel/generator@^7.25.0", "@babel/generator@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230"
- integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==
+"@babel/generator@^7.20.5", "@babel/generator@^7.25.0", "@babel/generator@^7.27.3":
+ version "7.27.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c"
+ integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==
dependencies:
- "@babel/parser" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/parser" "^7.27.5"
+ "@babel/types" "^7.27.3"
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^3.0.2"
"@babel/helper-annotate-as-pure@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d"
- integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==
+ version "7.27.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5"
+ integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==
dependencies:
- "@babel/types" "^7.27.1"
+ "@babel/types" "^7.27.3"
"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2":
version "7.27.2"
@@ -135,14 +135,14 @@
"@babel/traverse" "^7.27.1"
"@babel/types" "^7.27.1"
-"@babel/helper-module-transforms@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f"
- integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==
+"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.27.3":
+ version "7.27.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02"
+ integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==
dependencies:
"@babel/helper-module-imports" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1"
- "@babel/traverse" "^7.27.1"
+ "@babel/traverse" "^7.27.3"
"@babel/helper-optimise-call-expression@^7.27.1":
version "7.27.1"
@@ -206,13 +206,13 @@
"@babel/traverse" "^7.27.1"
"@babel/types" "^7.27.1"
-"@babel/helpers@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4"
- integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==
+"@babel/helpers@^7.27.4":
+ version "7.27.6"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c"
+ integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==
dependencies:
- "@babel/template" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/template" "^7.27.2"
+ "@babel/types" "^7.27.6"
"@babel/highlight@^7.10.4":
version "7.25.9"
@@ -224,12 +224,12 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.3", "@babel/parser@^7.27.1", "@babel/parser@^7.27.2":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.2.tgz#577518bedb17a2ce4212afd052e01f7df0941127"
- integrity sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.3", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5":
+ version "7.27.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826"
+ integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==
dependencies:
- "@babel/types" "^7.27.1"
+ "@babel/types" "^7.27.3"
"@babel/plugin-proposal-decorators@^7.12.9":
version "7.27.1"
@@ -420,9 +420,9 @@
"@babel/helper-remap-async-to-generator" "^7.27.1"
"@babel/plugin-transform-block-scoping@^7.25.0":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz#bc0dbe8ac6de5602981ba58ef68c6df8ef9bfbb3"
- integrity sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==
+ version "7.27.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz#98c37485d815533623d992fd149af3e7b3140157"
+ integrity sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -454,10 +454,10 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/template" "^7.27.1"
-"@babel/plugin-transform-destructuring@^7.24.8", "@babel/plugin-transform-destructuring@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz#d5916ef7089cb254df0418ae524533c1b72ba656"
- integrity sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==
+"@babel/plugin-transform-destructuring@^7.24.8", "@babel/plugin-transform-destructuring@^7.27.3":
+ version "7.27.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz#3cc8299ed798d9a909f8d66ddeb40849ec32e3b0"
+ integrity sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -538,13 +538,13 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-object-rest-spread@^7.24.7":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz#67f9ab822347aa2bcee91e8996763da79bdea973"
- integrity sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==
+ version "7.27.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz#ce130aa73fef828bc3e3e835f9bc6144be3eb1c0"
+ integrity sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==
dependencies:
"@babel/helper-compilation-targets" "^7.27.2"
"@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-transform-destructuring" "^7.27.1"
+ "@babel/plugin-transform-destructuring" "^7.27.3"
"@babel/plugin-transform-parameters" "^7.27.1"
"@babel/plugin-transform-optional-catch-binding@^7.24.7":
@@ -634,16 +634,16 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-regenerator@^7.24.7":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz#0a471df9213416e44cd66bf67176b66f65768401"
- integrity sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==
+ version "7.27.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz#0c01f4e0e4cced15f68ee14b9c76dac9813850c7"
+ integrity sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-runtime@^7.24.7":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.1.tgz#f9fbf71949a209eb26b3e60375b1d956937b8be9"
- integrity sha512-TqGF3desVsTcp3WrJGj4HfKokfCXCLcHpt4PJF0D8/iT6LPd9RS82Upw3KPeyr6B22Lfd3DO8MVrmp0oRkUDdw==
+ version "7.27.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.27.4.tgz#dee5c5db6543313d1ae1b4b1ec122ff1e77352b9"
+ integrity sha512-D68nR5zxU64EUzV8i7T3R5XP0Xhrou/amNnddsRQssx6GrTLdZl1rLxyjtVZBd+v/NVX4AbTPOB5aU8thAZV1A==
dependencies:
"@babel/helper-module-imports" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
@@ -717,11 +717,11 @@
"@babel/plugin-transform-typescript" "^7.27.1"
"@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0", "@babel/runtime@^7.25.0":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.1.tgz#9fce313d12c9a77507f264de74626e87fd0dc541"
- integrity sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==
+ version "7.27.6"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6"
+ integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==
-"@babel/template@^7.25.0", "@babel/template@^7.27.1", "@babel/template@^7.3.3":
+"@babel/template@^7.25.0", "@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3":
version "7.27.2"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d"
integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==
@@ -731,35 +731,35 @@
"@babel/types" "^7.27.1"
"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291"
- integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==
+ version "7.27.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea"
+ integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==
dependencies:
"@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.27.1"
- "@babel/parser" "^7.27.1"
- "@babel/template" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/generator" "^7.27.3"
+ "@babel/parser" "^7.27.4"
+ "@babel/template" "^7.27.2"
+ "@babel/types" "^7.27.3"
debug "^4.3.1"
globals "^11.1.0"
-"@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291"
- integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==
+"@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4":
+ version "7.27.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea"
+ integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==
dependencies:
"@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.27.1"
- "@babel/parser" "^7.27.1"
- "@babel/template" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/generator" "^7.27.3"
+ "@babel/parser" "^7.27.4"
+ "@babel/template" "^7.27.2"
+ "@babel/types" "^7.27.3"
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.27.1", "@babel/types@^7.3.3":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560"
- integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==
+"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.3.3":
+ version "7.27.6"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535"
+ integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==
dependencies:
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1"
@@ -772,15 +772,15 @@
deepmerge "^3.2.0"
hoist-non-react-statics "^3.3.0"
-"@expo/cli@0.24.12":
- version "0.24.12"
- resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.24.12.tgz#815911d8cb0f769ffe5d09225ee0b6d9c4c01ab4"
- integrity sha512-MHCIq5jE6uWG26z7SQjUGxXrggxrooKqaGLTz2Vktr5NPkqRc0HBRKi3Rzd4zH5Y902/p18itTQBgvYOrMHt/g==
+"@expo/cli@0.24.14":
+ version "0.24.14"
+ resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.24.14.tgz#af2e7ea5a08e3574e868cb0ec2110e68d32672e0"
+ integrity sha512-o+QYyfIBhSRTgaywKTLJhm2Fg5PrSeUVCXS+uQySamgoMjLNhHa8QwE64mW/FmJr5hZLiqUEQxb60FK4JcyqXg==
dependencies:
"@0no-co/graphql.web" "^1.0.8"
"@babel/runtime" "^7.20.0"
"@expo/code-signing-certificates" "^0.0.5"
- "@expo/config" "~11.0.9"
+ "@expo/config" "~11.0.10"
"@expo/config-plugins" "~10.0.2"
"@expo/devcert" "^1.1.2"
"@expo/env" "~1.0.5"
@@ -794,7 +794,7 @@
"@expo/spawn-async" "^1.7.2"
"@expo/ws-tunnel" "^1.0.1"
"@expo/xcpretty" "^4.3.0"
- "@react-native/dev-middleware" "0.79.2"
+ "@react-native/dev-middleware" "0.79.3"
"@urql/core" "^5.0.6"
"@urql/exchange-retry" "^1.3.0"
accepts "^1.3.8"
@@ -809,9 +809,9 @@
debug "^4.3.4"
env-editor "^0.4.1"
freeport-async "^2.0.0"
- getenv "^1.0.0"
+ getenv "^2.0.0"
glob "^10.4.2"
- lan-network "^0.1.4"
+ lan-network "^0.1.6"
minimatch "^9.0.0"
node-forge "^1.3.1"
npm-package-arg "^11.0.0"
@@ -872,10 +872,10 @@
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-53.0.4.tgz#fe64fac734531ae883d18529b32586c23ffb1ceb"
integrity sha512-0s+9vFx83WIToEr0Iwy4CcmiUXa5BgwBmEjylBB2eojX5XAMm9mJvw9KpjAb8m7zq2G0Q6bRbeufkzgbipuNQg==
-"@expo/config@~11.0.9":
- version "11.0.9"
- resolved "https://registry.yarnpkg.com/@expo/config/-/config-11.0.9.tgz#0c8d02a1b2b4f9170f81b59cf99a6c57fe4e0e0a"
- integrity sha512-Rm2nnuwvPFBPmK0qlzx1DyGFcDq1KgahvdnYRuCYGDwOxUrf+cqYnj/K7cHijC1sBpp8fw550NVKMoLCsOodjw==
+"@expo/config@~11.0.10", "@expo/config@~11.0.9":
+ version "11.0.10"
+ resolved "https://registry.yarnpkg.com/@expo/config/-/config-11.0.10.tgz#559d9425a4e0de4fab96ccac01ff40f5cebbc04b"
+ integrity sha512-8S8Krr/c5lnl0eF03tA2UGY9rGBhZcbWKz2UWw5dpL/+zstwUmog8oyuuC8aRcn7GiTQLlbBkxcMeT8sOGlhbA==
dependencies:
"@babel/code-frame" "~7.10.4"
"@expo/config-plugins" "~10.0.2"
@@ -1021,7 +1021,7 @@
base64-js "^1.2.3"
xmlbuilder "^15.1.1"
-"@expo/prebuild-config@^9.0.5", "@expo/prebuild-config@^9.0.6":
+"@expo/prebuild-config@^9.0.6":
version "9.0.6"
resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-9.0.6.tgz#f634e7b8f9ebebeaf2e7d2f2be46926c23834d2b"
integrity sha512-HDTdlMkTQZ95rd6EpvuLM+xkZV03yGLc38FqI37qKFLJtUN1WnYVaWsuXKoljd1OrVEVsHe6CfqKwaPZ52D56Q==
@@ -1290,23 +1290,23 @@
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
-"@react-native/assets-registry@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.79.2.tgz#731963e664c8543f5b277e56c058bde612b69f50"
- integrity sha512-5h2Z7/+/HL/0h88s0JHOdRCW4CXMCJoROxqzHqxdrjGL6EBD1DdaB4ZqkCOEVSW4Vjhir5Qb97C8i/MPWEYPtg==
+"@react-native/assets-registry@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.79.3.tgz#022218d55a5d9d221a6d176987ab0b35c10d388b"
+ integrity sha512-Vy8DQXCJ21YSAiHxrNBz35VqVlZPpRYm50xRTWRf660JwHuJkFQG8cUkrLzm7AUriqUXxwpkQHcY+b0ibw9ejQ==
-"@react-native/babel-plugin-codegen@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.2.tgz#f3f86766a01487aaaa623ec62514af4c84400953"
- integrity sha512-d+NB7Uosn2ZWd4O4+7ZkB6q1a+0z2opD/4+Bzhk/Tv6fc5FrSftK2Noqxvo3/bhbdGFVPxf0yvLE8et4W17x/Q==
+"@react-native/babel-plugin-codegen@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.3.tgz#acad4acaead398a8c8bcdecbe44040aa0c2dc2d7"
+ integrity sha512-Zb8F4bSEKKZfms5n1MQ0o5mudDcpAINkKiFuFTU0PErYGjY3kZ+JeIP+gS6KCXsckxCfMEKQwqKicP/4DWgsZQ==
dependencies:
"@babel/traverse" "^7.25.3"
- "@react-native/codegen" "0.79.2"
+ "@react-native/codegen" "0.79.3"
-"@react-native/babel-preset@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.79.2.tgz#5a683a6efeea357a326f70c84a881be2bafbeae3"
- integrity sha512-/HNu869oUq4FUXizpiNWrIhucsYZqu0/0spudJEzk9SEKar0EjVDP7zkg/sKK+KccNypDQGW7nFXT8onzvQ3og==
+"@react-native/babel-preset@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.79.3.tgz#8ad6c149cd488fbc18d62983119bdcbfc15ff651"
+ integrity sha512-VHGNP02bDD2Ul1my0pLVwe/0dsEBHxR343ySpgnkCNEEm9C1ANQIL2wvnJrHZPcqfAkWfFQ8Ln3t+6fdm4A/Dg==
dependencies:
"@babel/core" "^7.25.2"
"@babel/plugin-proposal-export-default-from" "^7.24.7"
@@ -1349,15 +1349,15 @@
"@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.79.2"
+ "@react-native/babel-plugin-codegen" "0.79.3"
babel-plugin-syntax-hermes-parser "0.25.1"
babel-plugin-transform-flow-enums "^0.0.2"
react-refresh "^0.14.0"
-"@react-native/codegen@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.79.2.tgz#75270d8162e78c02b0272396a3c6942e39e8703d"
- integrity sha512-8JTlGLuLi1p8Jx2N/enwwEd7/2CfrqJpv90Cp77QLRX3VHF2hdyavRIxAmXMwN95k+Me7CUuPtqn2X3IBXOWYg==
+"@react-native/codegen@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.79.3.tgz#49689132718c81a3b25426769bc6fd8fd2a0469f"
+ integrity sha512-CZejXqKch/a5/s/MO5T8mkAgvzCXgsTkQtpCF15kWR9HN8T+16k0CsN7TXAxXycltoxiE3XRglOrZNEa/TiZUQ==
dependencies:
glob "^7.1.1"
hermes-parser "0.25.1"
@@ -1365,12 +1365,12 @@
nullthrows "^1.1.1"
yargs "^17.6.2"
-"@react-native/community-cli-plugin@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.79.2.tgz#d3a0efbdfb554cf3a7e9bfb27865a7caeeeaa1b3"
- integrity sha512-E+YEY2dL+68HyR2iahsZdyBKBUi9QyPyaN9vsnda1jNgCjNpSPk2yAF5cXsho+zKK5ZQna3JSeE1Kbi2IfGJbw==
+"@react-native/community-cli-plugin@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.79.3.tgz#84821d3401074e036ba05b8b6ca1ee122cb43e29"
+ integrity sha512-N/+p4HQqN4yK6IRzn7OgMvUIcrmEWkecglk1q5nj+AzNpfIOzB+mqR20SYmnPfeXF+mZzYCzRANb3KiM+WsSDA==
dependencies:
- "@react-native/dev-middleware" "0.79.2"
+ "@react-native/dev-middleware" "0.79.3"
chalk "^4.0.0"
debug "^2.2.0"
invariant "^2.2.4"
@@ -1379,18 +1379,18 @@
metro-core "^0.82.0"
semver "^7.1.3"
-"@react-native/debugger-frontend@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.79.2.tgz#1377de6d9cabe5455bf332e06408167da5f60c19"
- integrity sha512-cGmC7X6kju76DopSBNc+PRAEetbd7TWF9J9o84hOp/xL3ahxR2kuxJy0oJX8Eg8oehhGGEXTuMKHzNa3rDBeSg==
+"@react-native/debugger-frontend@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.79.3.tgz#9cb57d8e88c22552194ab5f6f257605b151bc5b3"
+ integrity sha512-ImNDuEeKH6lEsLXms3ZsgIrNF94jymfuhPcVY5L0trzaYNo9ZFE9Ni2/18E1IbfXxdeIHrCSBJlWD6CTm7wu5A==
-"@react-native/dev-middleware@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.79.2.tgz#f09f1a75b4cd0b56dfd82a07bf41157a9c45619c"
- integrity sha512-9q4CpkklsAs1L0Bw8XYCoqqyBSrfRALGEw4/r0EkR38Y/6fVfNfdsjSns0pTLO6h0VpxswK34L/hm4uK3MoLHw==
+"@react-native/dev-middleware@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.79.3.tgz#3e315ef7516ebad60a4202b4094d84fedecb4064"
+ integrity sha512-x88+RGOyG71+idQefnQg7wLhzjn/Scs+re1O5vqCkTVzRAc/f7SdHMlbmECUxJPd08FqMcOJr7/X3nsJBrNuuw==
dependencies:
"@isaacs/ttlcache" "^1.4.1"
- "@react-native/debugger-frontend" "0.79.2"
+ "@react-native/debugger-frontend" "0.79.3"
chrome-launcher "^0.15.2"
chromium-edge-launcher "^0.2.0"
connect "^3.6.5"
@@ -1401,30 +1401,35 @@
serve-static "^1.16.2"
ws "^6.2.3"
-"@react-native/gradle-plugin@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.79.2.tgz#d41d4e2c63baf688a2b47652c6260f2a2f1ec091"
- integrity sha512-6MJFemrwR0bOT0QM+2BxX9k3/pvZQNmJ3Js5pF/6owsA0cUDiCO57otiEU8Fz+UywWEzn1FoQfOfQ8vt2GYmoA==
+"@react-native/gradle-plugin@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.79.3.tgz#69ba47ac406ccdb3b3829f311bd7c27e6fad7ebc"
+ integrity sha512-imfpZLhNBc9UFSzb/MOy2tNcIBHqVmexh/qdzw83F75BmUtLb/Gs1L2V5gw+WI1r7RqDILbWk7gXB8zUllwd+g==
-"@react-native/js-polyfills@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.79.2.tgz#15eb4da0fe9e8d61d2980d08fd06b5f49e133b0f"
- integrity sha512-IaY87Ckd4GTPMkO1/Fe8fC1IgIx3vc3q9Tyt/6qS3Mtk9nC0x9q4kSR5t+HHq0/MuvGtu8HpdxXGy5wLaM+zUw==
+"@react-native/js-polyfills@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.79.3.tgz#bf5614363f118c6bdf2f773c578e603c88d0425c"
+ integrity sha512-PEBtg6Kox6KahjCAch0UrqCAmHiNLEbp2SblUEoFAQnov4DSxBN9safh+QSVaCiMAwLjvNfXrJyygZz60Dqz3Q==
"@react-native/normalize-colors@0.79.2":
version "0.79.2"
resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.79.2.tgz#9ab70ca257c7411e4ab74cf7f91332c27d39cc6f"
integrity sha512-+b+GNrupWrWw1okHnEENz63j7NSMqhKeFMOyzYLBwKcprG8fqJQhDIGXfizKdxeIa5NnGSAevKL1Ev1zJ56X8w==
+"@react-native/normalize-colors@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.79.3.tgz#e491937436a2c287707e24263308c818a66eb447"
+ integrity sha512-T75NIQPRFCj6DFMxtcVMJTZR+3vHXaUMSd15t+CkJpc5LnyX91GVaPxpRSAdjFh7m3Yppl5MpdjV/fntImheYQ==
+
"@react-native/normalize-colors@^0.74.1":
version "0.74.89"
resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.89.tgz#b8ac17d1bbccd3ef9a1f921665d04d42cff85976"
integrity sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==
-"@react-native/virtualized-lists@0.79.2":
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.79.2.tgz#ed5a419a30b7ddec978b7816ff698a9d85507e15"
- integrity sha512-9G6ROJeP+rdw9Bvr5ruOlag11ET7j1z/En1riFFNo6W3xZvJY+alCuH1ttm12y9+zBm4n8jwCk4lGhjYaV4dKw==
+"@react-native/virtualized-lists@0.79.3":
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.79.3.tgz#4a2799017cd3795f519422f48b3c0bbc4739a245"
+ integrity sha512-/0rRozkn+iIHya2vnnvprDgT7QkfI54FLrACAN3BLP7MRlfOIGOrZsXpRLndnLBVnjNzkcre84i1RecjoXnwIA==
dependencies:
invariant "^2.2.4"
nullthrows "^1.1.1"
@@ -1533,9 +1538,9 @@
"@types/json-schema" "*"
"@types/estree@*", "@types/estree@^1.0.6":
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8"
- integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
+ integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0":
version "5.0.6"
@@ -1558,18 +1563,18 @@
"@types/send" "*"
"@types/express@*":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.1.tgz#138d741c6e5db8cc273bec5285cd6e9d0779fc9f"
- integrity sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.2.tgz#7be9e337a5745d6b43ef5b0c352dad94a7f0c256"
+ integrity sha512-BtjL3ZwbCQriyb0DGw+Rt12qAXPiBTPs815lsUvtt1Grk0vLRMZNMUZ741d5rjk+UQOxfDiBZ3dxpX00vSkK3g==
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "^5.0.0"
"@types/serve-static" "*"
"@types/express@^4.17.13":
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d"
- integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==
+ version "4.17.22"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.22.tgz#14cfcf120f7eb56ebb8ca77b7fa9a14d21de7c96"
+ integrity sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "^4.17.33"
@@ -1650,16 +1655,16 @@
"@types/node" "*"
"@types/node@*":
- version "22.15.15"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.15.tgz#8877c05c18e552e738438e477d7ba22c5d73a57c"
- integrity sha512-R5muMcZob3/Jjchn5LcO8jdKwSCbzqmPB6ruBxMcf9kbxtniZHP327s6C37iOfuw8mbKK3cAQa7sEl7afLrQ8A==
+ version "22.15.30"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.30.tgz#3a20431783e28dd0b0326f84ab386a2ec81d921d"
+ integrity sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==
dependencies:
undici-types "~6.21.0"
"@types/qs@*":
- version "6.9.18"
- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2"
- integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==
+ version "6.14.0"
+ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5"
+ integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==
"@types/range-parser@*":
version "1.2.7"
@@ -1898,7 +1903,7 @@ accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.4, accepts@~1.3.8:
mime-types "~2.1.34"
negotiator "0.6.3"
-acorn@^8.14.0, acorn@^8.8.2:
+acorn@^8.14.0:
version "8.14.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb"
integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
@@ -2205,10 +2210,10 @@ babel-preset-current-node-syntax@^1.0.0:
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
"@babel/plugin-syntax-top-level-await" "^7.14.5"
-babel-preset-expo@~13.1.11:
- version "13.1.11"
- resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-13.1.11.tgz#de81e6a621c9f40dcb1e0bf5f1fe111f82c10496"
- integrity sha512-jigWjvhRVdm9UTPJ1wjLYJ0OJvD5vLZ8YYkEknEl6+9S1JWORO/y3xtHr/hNj5n34nOilZqdXrmNFcqKc8YTsg==
+babel-preset-expo@~13.2.0:
+ version "13.2.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-13.2.0.tgz#d4540009d07242e3c3d63184b7a34efda95e8e64"
+ integrity sha512-oNUeUZPMNRPmx/2jaKJLSQFP/MFI1M91vP+Gp+j8/FPl9p/ps603DNwCaRdcT/Vj3FfREdlIwRio1qDCjY0oAA==
dependencies:
"@babel/helper-module-imports" "^7.25.9"
"@babel/plugin-proposal-decorators" "^7.12.9"
@@ -2224,7 +2229,7 @@ babel-preset-expo@~13.1.11:
"@babel/plugin-transform-runtime" "^7.24.7"
"@babel/preset-react" "^7.22.15"
"@babel/preset-typescript" "^7.23.0"
- "@react-native/babel-preset" "0.79.2"
+ "@react-native/babel-preset" "0.79.3"
babel-plugin-react-native-web "~0.19.13"
babel-plugin-syntax-hermes-parser "^0.25.1"
babel-plugin-transform-flow-enums "^0.0.2"
@@ -2423,12 +2428,12 @@ browserify-sign@^4.2.3:
safe-buffer "^5.2.1"
browserslist@^4.0.0, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.24.4:
- version "4.24.5"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b"
- integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==
+ version "4.25.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c"
+ integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==
dependencies:
- caniuse-lite "^1.0.30001716"
- electron-to-chromium "^1.5.149"
+ caniuse-lite "^1.0.30001718"
+ electron-to-chromium "^1.5.160"
node-releases "^2.0.19"
update-browserslist-db "^1.1.3"
@@ -2525,10 +2530,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001716:
- version "1.0.30001717"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz#5d9fec5ce09796a1893013825510678928aca129"
- integrity sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001718:
+ version "1.0.30001721"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz#36b90cd96901f8c98dd6698bf5c8af7d4c6872d7"
+ integrity sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==
chalk@^2.0.1, chalk@^2.4.2:
version "2.4.2"
@@ -3055,9 +3060,9 @@ debug@2.6.9, debug@^2.2.0, debug@^2.6.9:
ms "2.0.0"
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
- integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b"
+ integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
dependencies:
ms "^2.1.3"
@@ -3252,10 +3257,10 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
-electron-to-chromium@^1.5.149:
- version "1.5.150"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.150.tgz#3120bf34453a7a82cb4d9335df20680b2bb40649"
- integrity sha512-rOOkP2ZUMx1yL4fCxXQKDHQ8ZXwisb2OycOQVKHgvB3ZI4CvehOd4y2tfnnLDieJ3Zs1RL1Dlp3cMkyIn7nnXA==
+electron-to-chromium@^1.5.160:
+ version "1.5.165"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz#477b0957e42f071905a86f7c905a9848f95d2bdb"
+ integrity sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==
elliptic@^6.5.3, elliptic@^6.5.5:
version "6.6.1"
@@ -3468,10 +3473,10 @@ expo-constants@~17.1.5, expo-constants@~17.1.6:
"@expo/config" "~11.0.9"
"@expo/env" "~1.0.5"
-expo-file-system@~18.1.9:
- version "18.1.9"
- resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-18.1.9.tgz#0fa1f6bd491ef820abfb00dd9d5fac9c2dc7c4b0"
- integrity sha512-2i8IpaXpLVSI/dmT6TBfvRkl1+YkbWI07NCsQX1Myh33AF8xaJ4jv3Hz6WK1JArqDagCmrQUB2mW9SYnWYqLHg==
+expo-file-system@~18.1.10:
+ version "18.1.10"
+ resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-18.1.10.tgz#22f3bcc2c9a7edcd6bba5ece3c90a8467fda47be"
+ integrity sha512-SyaWg+HitScLuyEeSG9gMSDT0hIxbM9jiZjSBP9l9zMnwZjmQwsusE6+7qGiddxJzdOhTP4YGUfvEzeeS0YL3Q==
expo-font@~13.3.1:
version "13.3.1"
@@ -3498,10 +3503,10 @@ expo-modules-autolinking@2.1.10:
require-from-string "^2.0.2"
resolve-from "^5.0.0"
-expo-modules-core@2.3.12:
- version "2.3.12"
- resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-2.3.12.tgz#1c06402564c02b32f192adfe6946e671d8a95e79"
- integrity sha512-bOm83mskw1S7xuDX50DlLdx68u0doQ6BZHSU2qTv8P1/5QYeAae3pCgFLq2hoptUNeMF7W+68ShJFTOHAe68BQ==
+expo-modules-core@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-2.4.0.tgz#3081d62fadff913090cc5abfe46d9ec6b0e75789"
+ integrity sha512-Ko5eHBdvuMykjw9P9C9PF54/wBSsGOxaOjx92I5BwgKvEmUwN3UrXFV4CXzlLVbLfSYUQaLcB220xmPfgvT7Fg==
dependencies:
invariant "^2.2.4"
@@ -3515,12 +3520,12 @@ expo-pwa@0.0.127:
commander "2.20.0"
update-check "1.5.3"
-expo-splash-screen@~0.30.8:
- version "0.30.8"
- resolved "https://registry.yarnpkg.com/expo-splash-screen/-/expo-splash-screen-0.30.8.tgz#2e960ccff053bc8ace85eb56f7d6745e4ddfc6b6"
- integrity sha512-2eh+uA543brfeG5HILXmtNKA7E2/pfywKzNumzy3Ef6OtDjYy6zJUGNSbhnZRbVEjUZo3/QNRs0JRBfY80okZg==
+expo-splash-screen@~0.30.9:
+ version "0.30.9"
+ resolved "https://registry.yarnpkg.com/expo-splash-screen/-/expo-splash-screen-0.30.9.tgz#8f2a86b3b802ea46065fc761ed60e77e81bdb84c"
+ integrity sha512-curHUaZxUTZ2dWvz32ao3xPv5mJr1LBqn5V8xm/IULAehB9RGCn8iKiROMN1PYebSG+56vPMuJmBm9P+ayvJpA==
dependencies:
- "@expo/prebuild-config" "^9.0.5"
+ "@expo/prebuild-config" "^9.0.6"
expo-status-bar@~2.2.3:
version "2.2.3"
@@ -3530,26 +3535,26 @@ expo-status-bar@~2.2.3:
react-native-edge-to-edge "1.6.0"
react-native-is-edge-to-edge "^1.1.6"
-expo@^53.0.8:
- version "53.0.8"
- resolved "https://registry.yarnpkg.com/expo/-/expo-53.0.8.tgz#281915262e4694103bfdd04816ade84d945af808"
- integrity sha512-5CQWayZFDKif++HwfI6ysRNfePYH3MOEZw5edQStQyoL2MehzlasZoICSYHzqptMdMFSt2RTM5Tqgn8L4wYmVg==
+expo@^53.0.10:
+ version "53.0.10"
+ resolved "https://registry.yarnpkg.com/expo/-/expo-53.0.10.tgz#be5ec2e7fc2c9c6fdace7521a15be43f410c22e3"
+ integrity sha512-rN3HcQOeum4i+4Fq1+wBuTWbUjHZqTE7YgGGioOtY2WnhYt+4OSrTlxjRjp13AtkLuKSKkh34gkdFMlUepKlXA==
dependencies:
"@babel/runtime" "^7.20.0"
- "@expo/cli" "0.24.12"
- "@expo/config" "~11.0.9"
+ "@expo/cli" "0.24.14"
+ "@expo/config" "~11.0.10"
"@expo/config-plugins" "~10.0.2"
"@expo/fingerprint" "0.12.4"
"@expo/metro-config" "0.20.14"
"@expo/vector-icons" "^14.0.0"
- babel-preset-expo "~13.1.11"
+ babel-preset-expo "~13.2.0"
expo-asset "~11.1.5"
expo-constants "~17.1.6"
- expo-file-system "~18.1.9"
+ expo-file-system "~18.1.10"
expo-font "~13.3.1"
expo-keep-awake "~14.1.4"
expo-modules-autolinking "2.1.10"
- expo-modules-core "2.3.12"
+ expo-modules-core "2.4.0"
react-native-edge-to-edge "1.6.0"
whatwg-url-without-unicode "8.0.0-3"
@@ -3865,6 +3870,11 @@ getenv@^1.0.0:
resolved "https://registry.yarnpkg.com/getenv/-/getenv-1.0.0.tgz#874f2e7544fbca53c7a4738f37de8605c3fcfc31"
integrity sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==
+getenv@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/getenv/-/getenv-2.0.0.tgz#b1698c7b0f29588f4577d06c42c73a5b475c69e0"
+ integrity sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==
+
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
@@ -4588,10 +4598,10 @@ kleur@^3.0.3:
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
-lan-network@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/lan-network/-/lan-network-0.1.5.tgz#e781889b7bd4dbedd9126fff3ceddd809a83c3ff"
- integrity sha512-CV3k7l8jW0Z1b+G41tB7JInVyJEKQzh/YPl2v9uXpZMusp0aa+rh3OqG77xWuX7+eVBa8PsdTuMznTAssF4qwg==
+lan-network@^0.1.6:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/lan-network/-/lan-network-0.1.7.tgz#9fcb9967c6d951f10b2f9a9ffabe4a312d63f69d"
+ integrity sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==
launch-editor@^2.6.0:
version "2.10.0"
@@ -4873,60 +4883,60 @@ methods@~1.1.2:
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
-metro-babel-transformer@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.82.3.tgz#e3b8102d165f4ce769e3d2f22ab0b0ad2d941dcc"
- integrity sha512-eC0f1MSA8rg7VoNDCYMIAIe5AEgYBskh5W8rIa4RGRdmEOsGlXbAV0AWMYoA7NlIALW/S9b10AcdIwD3n1e50w==
+metro-babel-transformer@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.82.4.tgz#1ac029add8f75d0048c54efc266c0a78791f52b2"
+ integrity sha512-4juJahGRb1gmNbQq48lNinB6WFNfb6m0BQqi/RQibEltNiqTCxew/dBspI2EWA4xVCd3mQWGfw0TML4KurQZnQ==
dependencies:
"@babel/core" "^7.25.2"
flow-enums-runtime "^0.0.6"
hermes-parser "0.28.1"
nullthrows "^1.1.1"
-metro-cache-key@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.82.3.tgz#71b5d6b682515026ac09dfbae223ebe8d4fd3a7b"
- integrity sha512-dDLTUOJ7YYqGog9kR55InchwnkkHuxBXD765J3hQVWWPCy6xO9uZXZYGX1Y/tIMV8U7Ho1Sve0V13n5rFajrRQ==
+metro-cache-key@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.82.4.tgz#21f850008fa2570a51e3958574ea5a791574752e"
+ integrity sha512-2JCTqcpF+f2OghOpe/+x+JywfzDkrHdAqinPFWmK2ezNAU/qX0jBFaTETogPibFivxZJil37w9Yp6syX8rFUng==
dependencies:
flow-enums-runtime "^0.0.6"
-metro-cache@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.82.3.tgz#4ba5010cb0e9b033b907ba829cf596c0c70f579c"
- integrity sha512-9zKhicA5GENROeP+iXku1NrI8FegtwEg3iPXHGixkm1Yppkbwsy/3lSHSiJZoT6GkZmxUDjN6sQ5QQ+/p72Msw==
+metro-cache@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.82.4.tgz#f44557f8b33f5d7b7ba4ccba2880c111e9884329"
+ integrity sha512-vX0ylSMGtORKiZ4G8uP6fgfPdDiCWvLZUGZ5zIblSGylOX6JYhvExl0Zg4UA9pix/SSQu5Pnp9vdODMFsNIxhw==
dependencies:
exponential-backoff "^3.1.1"
flow-enums-runtime "^0.0.6"
https-proxy-agent "^7.0.5"
- metro-core "0.82.3"
+ metro-core "0.82.4"
-metro-config@0.82.3, metro-config@^0.82.0:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.82.3.tgz#29d74425ebe255b4da46f2886d82191f88af1c49"
- integrity sha512-GRG9sBkPvrGXD/Wu3RdEDuWg5NDixF9t0c6Zz9kZ9Aa/aQY+m85JgaCI5HYEV+UzVC/IUFFSpJiMfzQRicppLw==
+metro-config@0.82.4, metro-config@^0.82.0:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.82.4.tgz#d42fa8b6a4d53493c34d217bbc6c13ee4817355c"
+ integrity sha512-Ki3Wumr3hKHGDS7RrHsygmmRNc/PCJrvkLn0+BWWxmbOmOcMMJDSmSI+WRlT8jd5VPZFxIi4wg+sAt5yBXAK0g==
dependencies:
connect "^3.6.5"
cosmiconfig "^5.0.5"
flow-enums-runtime "^0.0.6"
jest-validate "^29.7.0"
- metro "0.82.3"
- metro-cache "0.82.3"
- metro-core "0.82.3"
- metro-runtime "0.82.3"
+ metro "0.82.4"
+ metro-cache "0.82.4"
+ metro-core "0.82.4"
+ metro-runtime "0.82.4"
-metro-core@0.82.3, metro-core@^0.82.0:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.82.3.tgz#749b0916c60f164f05c99e7382917665fe01b287"
- integrity sha512-JQZDdXo3hyLl1pqVT4IKEwcBK+3f11qFXeCjQ1hjVpjMwQLOqSM02J7NC/4DNSBt+qWBxWj6R5Jphcc7+9AEWw==
+metro-core@0.82.4, metro-core@^0.82.0:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.82.4.tgz#f7f498929ac066dafe704c3598a990eeb2acdc8c"
+ integrity sha512-Xo4ozbxPg2vfgJGCgXZ8sVhC2M0lhTqD+tsKO2q9aelq/dCjnnSb26xZKcQO80CQOQUL7e3QWB7pLFGPjZm31A==
dependencies:
flow-enums-runtime "^0.0.6"
lodash.throttle "^4.1.1"
- metro-resolver "0.82.3"
+ metro-resolver "0.82.4"
-metro-file-map@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.82.3.tgz#868677ea55df2cf6491d9de34416e1498bd8f80a"
- integrity sha512-o4wtloAge85MZl85F87FT59R/4tn5GvCvLfYcnzzDB20o2YX9AMxZqswrGMaei/GbD/Win5FrLF/Iq8oetcByA==
+metro-file-map@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.82.4.tgz#186d737088433dd290c5974d9d96d7e62d36e4f9"
+ integrity sha512-eO7HD1O3aeNsbEe6NBZvx1lLJUrxgyATjnDmb7bm4eyF6yWOQot9XVtxTDLNifECuvsZ4jzRiTInrbmIHkTdGA==
dependencies:
debug "^4.4.0"
fb-watchman "^2.0.0"
@@ -4938,61 +4948,61 @@ metro-file-map@0.82.3:
nullthrows "^1.1.1"
walker "^1.0.7"
-metro-minify-terser@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.82.3.tgz#7b90f892ef0abccc58c69ae480d3032c6f0bbe86"
- integrity sha512-/3FasOULfHq1P0KPNFy5y28Th5oknPSwEbt9JELVBMAPhUnLqQkCLr4M+RQzKG3aEQN1/mEqenWApFCkk6Nm/Q==
+metro-minify-terser@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.82.4.tgz#3750c14e7a25eba591f6c75eed995f6751030618"
+ integrity sha512-W79Mi6BUwWVaM8Mc5XepcqkG+TSsCyyo//dmTsgYfJcsmReQorRFodil3bbJInETvjzdnS1mCsUo9pllNjT1Hg==
dependencies:
flow-enums-runtime "^0.0.6"
terser "^5.15.0"
-metro-resolver@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.82.3.tgz#6ba7dfe9b8c57b1332a3747bb6d013006d8968f6"
- integrity sha512-pdib7UrOM04j/RjWmaqmjjWRiuCbpA8BdUSuXzvBaK0QlNzHkRRDv6kiOGxgQ+UgG+KdbPcJktsW9olqiDhf9w==
+metro-resolver@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.82.4.tgz#936a2300fa577183a1e0e6f7cc405e52f9276f0e"
+ integrity sha512-uWoHzOBGQTPT5PjippB8rRT3iI9CTgFA9tRiLMzrseA5o7YAlgvfTdY9vFk2qyk3lW3aQfFKWkmqENryPRpu+Q==
dependencies:
flow-enums-runtime "^0.0.6"
-metro-runtime@0.82.3, metro-runtime@^0.82.0:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.82.3.tgz#fe793cf9e976256bd450f3da7845fd704f5254bf"
- integrity sha512-J4SrUUsBy9ire8I2sFuXN5MzPmuBHlx1bjvAjdoo1ecpH2mtS3ubRqVnMotBxuK5+GhrbW0mtg5/46PVXy26cw==
+metro-runtime@0.82.4, metro-runtime@^0.82.0:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.82.4.tgz#70e0b871683fdb594f2a7c03403b6350deca086b"
+ integrity sha512-vVyFO7H+eLXRV2E7YAUYA7aMGBECGagqxmFvC2hmErS7oq90BbPVENfAHbUWq1vWH+MRiivoRxdxlN8gBoF/dw==
dependencies:
"@babel/runtime" "^7.25.0"
flow-enums-runtime "^0.0.6"
-metro-source-map@0.82.3, metro-source-map@^0.82.0:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.82.3.tgz#e5d243473b057f70e1090ce9cc769cd72deec40c"
- integrity sha512-gz7wfjz23rit6ePQ7NKE9x+VOWGKm54vli4wbphR9W+3y0bh6Ad7T0BGH9DUzRAnOnOorewrVEqFmT24mia5sg==
+metro-source-map@0.82.4, metro-source-map@^0.82.0:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.82.4.tgz#ddd9bdf3a5864ee8f0b296ed11e46bdc2de321ac"
+ integrity sha512-9jzDQJ0FPas1FuQFtwmBHsez2BfhFNufMowbOMeG3ZaFvzeziE8A0aJwILDS3U+V5039ssCQFiQeqDgENWvquA==
dependencies:
"@babel/traverse" "^7.25.3"
"@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3"
"@babel/types" "^7.25.2"
flow-enums-runtime "^0.0.6"
invariant "^2.2.4"
- metro-symbolicate "0.82.3"
+ metro-symbolicate "0.82.4"
nullthrows "^1.1.1"
- ob1 "0.82.3"
+ ob1 "0.82.4"
source-map "^0.5.6"
vlq "^1.0.0"
-metro-symbolicate@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.82.3.tgz#50c5a645727fad9f0eaef1856298ddf267d35a0b"
- integrity sha512-WZKhR+QGbwkOLWP1z58Y7BFWUqLVDEEPsSQ5UI5+OWQDAwdtsPU9+sSNoJtD5qRU9qrB2XewQE3lJ2EQRRFJew==
+metro-symbolicate@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.82.4.tgz#76603b0ec2ad8fe5f174aa76485cc46228547a91"
+ integrity sha512-LwEwAtdsx7z8rYjxjpLWxuFa2U0J6TS6ljlQM4WAATKa4uzV8unmnRuN2iNBWTmRqgNR77mzmI2vhwD4QSCo+w==
dependencies:
flow-enums-runtime "^0.0.6"
invariant "^2.2.4"
- metro-source-map "0.82.3"
+ metro-source-map "0.82.4"
nullthrows "^1.1.1"
source-map "^0.5.6"
vlq "^1.0.0"
-metro-transform-plugins@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.82.3.tgz#41379fabc036c95229e948fbf68abc7f757adfa2"
- integrity sha512-s1gVrkhczwMbxZLRSLCJ16K/4Sqx5IhO4sWlL6j0jlIEs1/Drn3JrkUUdQTtgmJS8SBpxmmB66cw7wnz751dVg==
+metro-transform-plugins@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.82.4.tgz#9d3bb855126e0a63ac2ccf012ed2bc7829209e8c"
+ integrity sha512-NoWQRPHupVpnDgYguiEcm7YwDhnqW02iWWQjO2O8NsNP09rEMSq99nPjARWfukN7+KDh6YjLvTIN20mj3dk9kw==
dependencies:
"@babel/core" "^7.25.2"
"@babel/generator" "^7.25.0"
@@ -5001,29 +5011,29 @@ metro-transform-plugins@0.82.3:
flow-enums-runtime "^0.0.6"
nullthrows "^1.1.1"
-metro-transform-worker@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.82.3.tgz#fadb4ff2694079dadd19e449dda4b8ff47545c78"
- integrity sha512-z5Y7nYlSlLAEhjFi73uEJh69G5IC6HFZmXFcrxnY+JNlsjT2r0GgsDF4WaQGtarAIt5NP88V8983/PedwNfEcw==
+metro-transform-worker@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.82.4.tgz#cf7db4ef89301ab6658f7a0988fd030e28f86b28"
+ integrity sha512-kPI7Ad/tdAnI9PY4T+2H0cdgGeSWWdiPRKuytI806UcN4VhFL6OmYa19/4abYVYF+Cd2jo57CDuwbaxRfmXDhw==
dependencies:
"@babel/core" "^7.25.2"
"@babel/generator" "^7.25.0"
"@babel/parser" "^7.25.3"
"@babel/types" "^7.25.2"
flow-enums-runtime "^0.0.6"
- metro "0.82.3"
- metro-babel-transformer "0.82.3"
- metro-cache "0.82.3"
- metro-cache-key "0.82.3"
- metro-minify-terser "0.82.3"
- metro-source-map "0.82.3"
- metro-transform-plugins "0.82.3"
+ metro "0.82.4"
+ metro-babel-transformer "0.82.4"
+ metro-cache "0.82.4"
+ metro-cache-key "0.82.4"
+ metro-minify-terser "0.82.4"
+ metro-source-map "0.82.4"
+ metro-transform-plugins "0.82.4"
nullthrows "^1.1.1"
-metro@0.82.3, metro@^0.82.0:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/metro/-/metro-0.82.3.tgz#d25137f05faceb32783b41bbe3698d4903e74792"
- integrity sha512-EfSLtuUmfsGk3znJ+zoN8cRLniQo3W1wyA+nJMfpTLdENfbbPnGRTwmKhzRcJIUh9jgkrrF4oRQ5shLtQ2DsUw==
+metro@0.82.4, metro@^0.82.0:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/metro/-/metro-0.82.4.tgz#e4fb4552f1387610b0b2873ed07d4cd59754d636"
+ integrity sha512-/gFmw3ux9CPG5WUmygY35hpyno28zi/7OUn6+OFfbweA8l0B+PPqXXLr0/T6cf5nclCcH0d22o+02fICaShVxw==
dependencies:
"@babel/code-frame" "^7.24.7"
"@babel/core" "^7.25.2"
@@ -5046,18 +5056,18 @@ metro@0.82.3, metro@^0.82.0:
jest-worker "^29.7.0"
jsc-safe-url "^0.2.2"
lodash.throttle "^4.1.1"
- metro-babel-transformer "0.82.3"
- metro-cache "0.82.3"
- metro-cache-key "0.82.3"
- metro-config "0.82.3"
- metro-core "0.82.3"
- metro-file-map "0.82.3"
- metro-resolver "0.82.3"
- metro-runtime "0.82.3"
- metro-source-map "0.82.3"
- metro-symbolicate "0.82.3"
- metro-transform-plugins "0.82.3"
- metro-transform-worker "0.82.3"
+ metro-babel-transformer "0.82.4"
+ metro-cache "0.82.4"
+ metro-cache-key "0.82.4"
+ metro-config "0.82.4"
+ metro-core "0.82.4"
+ metro-file-map "0.82.4"
+ metro-resolver "0.82.4"
+ metro-runtime "0.82.4"
+ metro-source-map "0.82.4"
+ metro-symbolicate "0.82.4"
+ metro-transform-plugins "0.82.4"
+ metro-transform-worker "0.82.4"
mime-types "^2.1.27"
nullthrows "^1.1.1"
serialize-error "^2.1.0"
@@ -5217,7 +5227,7 @@ mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
-nanoid@^3.3.7, nanoid@^3.3.8:
+nanoid@^3.3.11, nanoid@^3.3.7:
version "3.3.11"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
@@ -5324,10 +5334,10 @@ nullthrows@^1.1.1:
resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1"
integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==
-ob1@0.82.3:
- version "0.82.3"
- resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.82.3.tgz#89ed7314eaaf1578f128cd56adc7d5653bb4792a"
- integrity sha512-8/SeymYlPMVODpCATHqm+X8eiuvD1GsKVa11n688V4GGgjrM3CRvrbtrYBs4t89LJDkv5CwGYPdqayuY0DmTTA==
+ob1@0.82.4:
+ version "0.82.4"
+ resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.82.4.tgz#60f04f61b8ab96e1f818eb856b35c97bbef44726"
+ integrity sha512-n9S8e4l5TvkrequEAMDidl4yXesruWTNTzVkeaHSGywoTOIwTzZzKw7Z670H3eaXDZui5MJXjWGNzYowVZIxCA==
dependencies:
flow-enums-runtime "^0.0.6"
@@ -5902,11 +5912,11 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@^8.3.5, postcss@^8.4.33:
- version "8.5.3"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb"
- integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
+ version "8.5.4"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.4.tgz#d61014ac00e11d5f58458ed7247d899bd65f99c0"
+ integrity sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==
dependencies:
- nanoid "^3.3.8"
+ nanoid "^3.3.11"
picocolors "^1.1.1"
source-map-js "^1.2.1"
@@ -6102,19 +6112,19 @@ react-native-is-edge-to-edge@^1.1.6:
resolved "https://registry.yarnpkg.com/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.1.7.tgz#28947688f9fafd584e73a4f935ea9603bd9b1939"
integrity sha512-EH6i7E8epJGIcu7KpfXYXiV2JFIYITtq+rVS8uEb+92naMRBdxhTuS8Wn2Q7j9sqyO0B+Xbaaf9VdipIAmGW4w==
-react-native-paper@^5.14.0:
- version "5.14.0"
- resolved "https://registry.yarnpkg.com/react-native-paper/-/react-native-paper-5.14.0.tgz#d9828d9694b8ae01c985d49081e59857ef95e120"
- integrity sha512-lKqIerPMBHuFYVeKqQV6uyMQ3HPEQps3a1TUv3QqkuNQeCSUzoKDmOMFR7gW8E7a7ay6px166ngYO1Sgy9HsVg==
+react-native-paper@^5.14.5:
+ version "5.14.5"
+ resolved "https://registry.yarnpkg.com/react-native-paper/-/react-native-paper-5.14.5.tgz#7995a2f8171c8355c1cb55c81a6d2074a7dd5abb"
+ integrity sha512-eaIH5bUQjJ/mYm4AkI6caaiyc7BcHDwX6CqNDi6RIxfxfWxROsHpll1oBuwn/cFvknvA8uEAkqLk/vzVihI3AQ==
dependencies:
"@callstack/react-theme-provider" "^3.0.9"
color "^3.1.2"
use-latest-callback "^0.2.3"
-react-native-safe-area-context@^5.4.0:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-5.4.0.tgz#04b51940408c114f75628a12a93569d30c525454"
- integrity sha512-JaEThVyJcLhA+vU0NU8bZ0a1ih6GiF4faZ+ArZLqpYbL6j7R3caRqj+mE3lEtKCuHgwjLg3bCxLL1GPUJZVqUA==
+react-native-safe-area-context@^5.4.1:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-5.4.1.tgz#6d04eac20f99622fa13895fa7ae96199f1ecf800"
+ integrity sha512-x+g3NblZ9jof8y+XkVvaGlpMrSlixhrJJ33BRzhTAKUKctQVecO1heSXmzxc5UdjvGYBKS6kPZVUw2b8NxHcPg==
react-native-web@~0.20.0:
version "0.20.0"
@@ -6130,19 +6140,19 @@ react-native-web@~0.20.0:
postcss-value-parser "^4.2.0"
styleq "^0.1.3"
-react-native@0.79.2:
- version "0.79.2"
- resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.79.2.tgz#f1a53099701c1736d09e441eb79f97cfc90dd202"
- integrity sha512-AnGzb56JvU5YCL7cAwg10+ewDquzvmgrMddiBM0GAWLwQM/6DJfGd2ZKrMuKKehHerpDDZgG+EY64gk3x3dEkw==
+react-native@0.79.3:
+ version "0.79.3"
+ resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.79.3.tgz#16580ca202016c75e3c61116fcfe3b30f6d762fc"
+ integrity sha512-EzH1+9gzdyEo9zdP6u7Sh3Jtf5EOMwzy+TK65JysdlgAzfEVfq4mNeXcAZ6SmD+CW6M7ARJbvXLyTD0l2S5rpg==
dependencies:
"@jest/create-cache-key-function" "^29.7.0"
- "@react-native/assets-registry" "0.79.2"
- "@react-native/codegen" "0.79.2"
- "@react-native/community-cli-plugin" "0.79.2"
- "@react-native/gradle-plugin" "0.79.2"
- "@react-native/js-polyfills" "0.79.2"
- "@react-native/normalize-colors" "0.79.2"
- "@react-native/virtualized-lists" "0.79.2"
+ "@react-native/assets-registry" "0.79.3"
+ "@react-native/codegen" "0.79.3"
+ "@react-native/community-cli-plugin" "0.79.3"
+ "@react-native/gradle-plugin" "0.79.3"
+ "@react-native/js-polyfills" "0.79.3"
+ "@react-native/normalize-colors" "0.79.3"
+ "@react-native/virtualized-lists" "0.79.3"
abort-controller "^3.0.0"
anser "^1.4.9"
ansi-regex "^5.0.0"
@@ -6468,9 +6478,9 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.1.3, semver@^7.3.5, semver@^7.5.4, semver@^7.6.0:
- version "7.7.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
- integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
+ version "7.7.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
+ integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
semver@~7.5.4:
version "7.5.4"
@@ -6600,9 +6610,9 @@ shebang-regex@^3.0.0:
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
shell-quote@^1.6.1, shell-quote@^1.8.1:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a"
- integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==
+ version "1.8.3"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b"
+ integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==
side-channel-list@^1.0.0:
version "1.0.0"
@@ -6974,9 +6984,9 @@ svgo@^2.7.0:
stable "^0.1.8"
tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
- integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872"
+ integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==
tar@^7.4.3:
version "7.4.3"
@@ -7029,12 +7039,12 @@ terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.11:
terser "^5.31.1"
terser@^5.10.0, terser@^5.15.0, terser@^5.31.1:
- version "5.39.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a"
- integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==
+ version "5.41.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.41.0.tgz#11646bba11eff72d506fbafbd0086f57173141e1"
+ integrity sha512-H406eLPXpZbAX14+B8psIuvIr8+3c+2hkuYzpMkoE0ij+NdsVATbA78vb8neA/eqrj7rywa2pIkdmWRsXW6wmw==
dependencies:
"@jridgewell/source-map" "^0.3.3"
- acorn "^8.8.2"
+ acorn "^8.14.0"
commander "^2.20.0"
source-map-support "~0.5.20"
@@ -7142,9 +7152,9 @@ undici-types@~6.21.0:
integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
undici@^6.18.2:
- version "6.21.2"
- resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.2.tgz#49c5884e8f9039c65a89ee9018ef3c8e2f1f4928"
- integrity sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==
+ version "6.21.3"
+ resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.3.tgz#185752ad92c3d0efe7a7d1f6854a50f83b552d7a"
+ integrity sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.1"
@@ -7274,9 +7284,9 @@ walker@^1.0.7, walker@^1.0.8:
makeerror "1.0.12"
watchpack@^2.4.1:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da"
- integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==
+ version "2.4.4"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947"
+ integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
@@ -7369,14 +7379,14 @@ webpack-sources@^2.2.0:
source-map "^0.6.1"
webpack-sources@^3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
- integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.2.tgz#0ab55ab0b380ce53c45ca40cb7b33bab3149ea85"
+ integrity sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==
webpack@^5.64.4:
- version "5.99.8"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.99.8.tgz#dd31a020b7c092d30c4c6d9a4edb95809e7f5946"
- integrity sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==
+ version "5.99.9"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.99.9.tgz#d7de799ec17d0cce3c83b70744b4aedb537d8247"
+ integrity sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==
dependencies:
"@types/eslint-scope" "^3.7.7"
"@types/estree" "^1.0.6"
diff --git a/package.json b/package.json
index 55518c58..ce2dc34a 100644
--- a/package.json
+++ b/package.json
@@ -164,7 +164,8 @@
[
"typescript",
{
- "project": "tsconfig.build.json"
+ "project": "tsconfig.build.json",
+ "tsc": "./node_modules/.bin/tsc"
}
]
]
diff --git a/src/Date/Calendar.tsx b/src/Date/Calendar.tsx
index 4a3d6a00..d333c762 100644
--- a/src/Date/Calendar.tsx
+++ b/src/Date/Calendar.tsx
@@ -16,6 +16,7 @@ import Color from 'color'
import { useTheme } from 'react-native-paper'
import { darkenBy, lightenBy, useLatest } from '../shared/utils'
import { sharedStyles } from '../shared/styles'
+import { defaultStartYear, defaultEndYear } from './dateUtils'
export type ModeType = 'single' | 'range' | 'multiple'
@@ -174,10 +175,12 @@ function Calendar(
return (
(
)}
renderHeader={({ onPrev, onNext }) => (
@@ -216,8 +221,8 @@ function Calendar(
selectedYear={selectedYear}
selectingYear={selectingYear}
onPressYear={onPressYear}
- startYear={startYear || 1800}
- endYear={endYear || 2200}
+ startYear={startYear || defaultStartYear}
+ endYear={endYear || defaultEndYear}
/>
) : null}
diff --git a/src/Date/DatePickerInput.tsx b/src/Date/DatePickerInput.tsx
index 179c56e5..1a781144 100644
--- a/src/Date/DatePickerInput.tsx
+++ b/src/Date/DatePickerInput.tsx
@@ -5,6 +5,7 @@ import type { DatePickerInputProps } from './DatePickerInput.shared'
import DatePickerInputWithoutModal from './DatePickerInputWithoutModal'
import { Platform, StyleProp, ViewStyle } from 'react-native'
import { forwardRef, useCallback, useState } from 'react'
+import { defaultStartYear, defaultEndYear } from './dateUtils'
function DatePickerInput(
{
@@ -78,8 +79,8 @@ function DatePickerInput(
saveLabel={saveLabel}
saveLabelDisabled={saveLabelDisabled ?? false}
uppercase={uppercase}
- startYear={startYear ?? 1800}
- endYear={endYear ?? 2200}
+ startYear={startYear ?? defaultStartYear}
+ endYear={endYear ?? defaultEndYear}
inputEnabled={inputEnabled}
disableStatusBarPadding={disableStatusBarPadding ?? false}
animationType={animationType}
diff --git a/src/Date/Month.tsx b/src/Date/Month.tsx
index 968c0654..1724d7b3 100644
--- a/src/Date/Month.tsx
+++ b/src/Date/Month.tsx
@@ -11,18 +11,18 @@ import Day, { EmptyDay } from './Day'
import {
addMonths,
areDatesOnSameDay,
- beginOffset,
daySize,
- DisableWeekDaysType,
estimatedMonthHeight,
- getDaysInMonth,
getFirstDayOfMonth,
getGridCount,
getRealIndex,
- gridCounts,
+ getStartAtIndex,
+ getTotalMonths,
+ createGridCounts,
+ DisableWeekDaysType,
+ getDaysInMonth,
isDateBetween,
showWeekDay,
- startAtIndex,
useRangeChecker,
} from './dateUtils'
import { getCalendarHeaderHeight } from './CalendarHeader'
@@ -51,6 +51,8 @@ interface BaseMonthProps {
roundness: number
validRange?: ValidRangeType
startWeekOnMonday: boolean
+ startYear?: number
+ endYear?: number
// some of these should be required in final implementation
startDate?: CalendarDate
endDate?: CalendarDate
@@ -76,29 +78,31 @@ interface MonthMultiProps extends BaseMonthProps {
function Month(props: MonthSingleProps | MonthRangeProps | MonthMultiProps) {
const {
- index,
+ locale,
mode,
- date,
- dates,
- startDate,
- endDate,
+ index,
onPressYear,
selectingYear,
onPressDate,
- scrollMode,
primaryColor,
selectColor,
roundness,
- disableWeekDays,
- locale,
validRange,
+ disableWeekDays,
+ scrollMode,
+ startDate,
+ endDate,
+ date,
+ dates,
startWeekOnMonday,
+ startYear,
+ endYear,
} = props
const isHorizontal = scrollMode === 'horizontal'
const theme = useTheme()
const textColorOnPrimary = useTextColorOnPrimary()
- const realIndex = getRealIndex(index)
+ const realIndex = getRealIndex(index, startYear, endYear)
const { isDisabled, isWithinValidRange } = useRangeChecker(validRange)
const { monthName, month, year } = useMemo(() => {
@@ -118,129 +122,131 @@ function Month(props: MonthSingleProps | MonthRangeProps | MonthMultiProps) {
const dayOfWeek = getFirstDayOfMonth({ year, month, startWeekOnMonday })
const emptyDays = dayOfWeek
- return monthGrid(index, startWeekOnMonday).map(({ days, weekGrid }) => {
- return {
- weekIndex: weekGrid,
- generatedDays: days.map((_, dayIndex) => {
- const isFirstWeek = weekGrid === 0
- const realDayIndex = emptyDays - dayIndex
- const beforeWeekDay = isFirstWeek && realDayIndex > 0
- const dayOfMonth = weekGrid * 7 + dayIndex - emptyDays + 1
- const afterWeekDay = dayOfMonth > daysInMonth
-
- const day = new Date(year, month, dayOfMonth)
- const isToday = areDatesOnSameDay(day, today)
-
- let inRange = false
- let disabled = isDisabled(day)
- let selected = false
-
- let leftCrop = dayOfMonth === 1
- let rightCrop = dayOfMonth === daysInMonth
-
- const isFirstDayOfMonth = dayOfMonth === 1
- const isLastDayOfMonth = dayOfMonth === daysInMonth
-
- if (mode === 'range') {
- const selectedStartDay = areDatesOnSameDay(day, startDate)
- const selectedEndDay = areDatesOnSameDay(day, endDate)
- selected = selectedStartDay || selectedEndDay
- inRange = isDateBetween(day, {
- startDate,
- endDate,
- })
- if (selectedStartDay) {
- leftCrop = true
- }
- if (selectedEndDay) {
- rightCrop = true
- }
- if (dayIndex === 0 && !selectedStartDay) {
- leftCrop = false
- }
-
- if (dayIndex === 6 && !selectedEndDay) {
- rightCrop = false
- }
-
- if (
- (isFirstDayOfMonth && selectedEndDay) ||
- (isLastDayOfMonth && selectedStartDay)
- ) {
- inRange = false
- }
- } else if (mode === 'multiple') {
- const safeDates = dates || []
- selected = safeDates.some((d) => areDatesOnSameDay(day, d))
-
- const yesterday = new Date(year, month, dayOfMonth - 1)
- const tomorrow = new Date(year, month, dayOfMonth + 1)
-
- const yesterdaySelected = safeDates.some((d) =>
- areDatesOnSameDay(d, yesterday)
- )
- const tomorrowSelected = safeDates.some((d) =>
- areDatesOnSameDay(d, tomorrow)
- )
-
- if (selected) {
- if (tomorrowSelected && yesterdaySelected) {
- inRange = true
- }
- if (tomorrowSelected && !yesterdaySelected) {
- inRange = true
+ return monthGrid(index, startWeekOnMonday, startYear, endYear).map(
+ ({ days, weekGrid }) => {
+ return {
+ weekIndex: weekGrid,
+ generatedDays: days.map((_, dayIndex) => {
+ const isFirstWeek = weekGrid === 0
+ const realDayIndex = emptyDays - dayIndex
+ const beforeWeekDay = isFirstWeek && realDayIndex > 0
+ const dayOfMonth = weekGrid * 7 + dayIndex - emptyDays + 1
+ const afterWeekDay = dayOfMonth > daysInMonth
+
+ const day = new Date(year, month, dayOfMonth)
+ const isToday = areDatesOnSameDay(day, today)
+
+ let inRange = false
+ let disabled = isDisabled(day)
+ let selected = false
+
+ let leftCrop = dayOfMonth === 1
+ let rightCrop = dayOfMonth === daysInMonth
+
+ const isFirstDayOfMonth = dayOfMonth === 1
+ const isLastDayOfMonth = dayOfMonth === daysInMonth
+
+ if (mode === 'range') {
+ const selectedStartDay = areDatesOnSameDay(day, startDate)
+ const selectedEndDay = areDatesOnSameDay(day, endDate)
+ selected = selectedStartDay || selectedEndDay
+ inRange = isDateBetween(day, {
+ startDate,
+ endDate,
+ })
+ if (selectedStartDay) {
leftCrop = true
}
-
- if (yesterdaySelected && !tomorrowSelected) {
- inRange = true
+ if (selectedEndDay) {
rightCrop = true
}
+ if (dayIndex === 0 && !selectedStartDay) {
+ leftCrop = false
+ }
- if (isFirstDayOfMonth && !tomorrowSelected) {
- inRange = false
+ if (dayIndex === 6 && !selectedEndDay) {
+ rightCrop = false
}
- if (isLastDayOfMonth && !yesterdaySelected) {
+ if (
+ (isFirstDayOfMonth && selectedEndDay) ||
+ (isLastDayOfMonth && selectedStartDay)
+ ) {
inRange = false
}
+ } else if (mode === 'multiple') {
+ const safeDates = dates || []
+ selected = safeDates.some((d) => areDatesOnSameDay(day, d))
+
+ const yesterday = new Date(year, month, dayOfMonth - 1)
+ const tomorrow = new Date(year, month, dayOfMonth + 1)
+
+ const yesterdaySelected = safeDates.some((d) =>
+ areDatesOnSameDay(d, yesterday)
+ )
+ const tomorrowSelected = safeDates.some((d) =>
+ areDatesOnSameDay(d, tomorrow)
+ )
- if (inRange && !leftCrop && !rightCrop) {
- selected = false
+ if (selected) {
+ if (tomorrowSelected && yesterdaySelected) {
+ inRange = true
+ }
+ if (tomorrowSelected && !yesterdaySelected) {
+ inRange = true
+ leftCrop = true
+ }
+
+ if (yesterdaySelected && !tomorrowSelected) {
+ inRange = true
+ rightCrop = true
+ }
+
+ if (isFirstDayOfMonth && !tomorrowSelected) {
+ inRange = false
+ }
+
+ if (isLastDayOfMonth && !yesterdaySelected) {
+ inRange = false
+ }
+
+ if (inRange && !leftCrop && !rightCrop) {
+ selected = false
+ }
}
+ } else if (mode === 'single') {
+ selected = areDatesOnSameDay(day, date)
+ }
+
+ const isWithinOptionalValidRange = isWithinValidRange(day)
+
+ if (inRange && !disabled) {
+ disabled = false
}
- } else if (mode === 'single') {
- selected = areDatesOnSameDay(day, date)
- }
-
- const isWithinOptionalValidRange = isWithinValidRange(day)
-
- if (inRange && !disabled) {
- disabled = false
- }
-
- if (!isWithinOptionalValidRange) {
- disabled = true
- }
-
- return {
- beforeWeekDay,
- afterWeekDay,
- year,
- month,
- dayOfMonth,
- dayIndex,
- mode,
- selected,
- inRange,
- leftCrop,
- rightCrop,
- isToday,
- disabled,
- }
- }),
+
+ if (!isWithinOptionalValidRange) {
+ disabled = true
+ }
+
+ return {
+ beforeWeekDay,
+ afterWeekDay,
+ year,
+ month,
+ dayOfMonth,
+ dayIndex,
+ mode,
+ selected,
+ inRange,
+ leftCrop,
+ rightCrop,
+ isToday,
+ disabled,
+ }
+ }),
+ }
}
- })
+ )
}, [
year,
month,
@@ -253,6 +259,8 @@ function Month(props: MonthSingleProps | MonthRangeProps | MonthMultiProps) {
dates,
date,
startWeekOnMonday,
+ startYear,
+ endYear,
])
let textFont = theme?.isV3
@@ -269,7 +277,15 @@ function Month(props: MonthSingleProps | MonthRangeProps | MonthMultiProps) {
return (
{
- return Array(getGridCount(index, startWeekOnMonday))
+const monthGrid = (
+ index: number,
+ startWeekOnMonday: boolean,
+ startYear?: number,
+ endYear?: number
+) => {
+ return Array(getGridCount(index, startWeekOnMonday, startYear, endYear))
.fill(null)
.map((_, weekGrid) => {
const days = Array(7).fill(null)
@@ -407,28 +428,45 @@ const monthGrid = (index: number, startWeekOnMonday: boolean) => {
})
}
-function getIndexCount(index: number): number {
- if (index > startAtIndex) {
- return index - startAtIndex
+function getIndexCount(
+ index: number,
+ startYear?: number,
+ endYear?: number
+): number {
+ const dynamicStartAtIndex = getStartAtIndex(startYear, endYear)
+ if (index > dynamicStartAtIndex) {
+ return index - dynamicStartAtIndex
}
- return -(startAtIndex - index)
+ return -(dynamicStartAtIndex - index)
}
-function weeksOffset(index: number, startWeekOnMonday: boolean): number {
- if (index === startAtIndex) {
+function weeksOffset(
+ index: number,
+ startWeekOnMonday: boolean,
+ startYear?: number,
+ endYear?: number
+): number {
+ const dynamicStartAtIndex = getStartAtIndex(startYear, endYear)
+ const dynamicGridCounts = createGridCounts(getTotalMonths(startYear, endYear))
+
+ if (index === dynamicStartAtIndex) {
return 0
}
let off = 0
- if (index > startAtIndex) {
- for (let i = 0; i < index - startAtIndex; i++) {
- const cIndex = startAtIndex + i
- off += gridCounts[cIndex] || getGridCount(cIndex, startWeekOnMonday)
+ if (index > dynamicStartAtIndex) {
+ for (let i = 0; i < index - dynamicStartAtIndex; i++) {
+ const cIndex = dynamicStartAtIndex + i
+ off +=
+ dynamicGridCounts[cIndex] ||
+ getGridCount(cIndex, startWeekOnMonday, startYear, endYear)
}
} else {
- for (let i = 0; i < startAtIndex - index; i++) {
- const cIndex = startAtIndex - i - 1
- off -= gridCounts[cIndex] || getGridCount(cIndex, startWeekOnMonday)
+ for (let i = 0; i < dynamicStartAtIndex - index; i++) {
+ const cIndex = dynamicStartAtIndex - i - 1
+ off -=
+ dynamicGridCounts[cIndex] ||
+ getGridCount(cIndex, startWeekOnMonday, startYear, endYear)
}
}
return off
@@ -436,19 +474,33 @@ function weeksOffset(index: number, startWeekOnMonday: boolean): number {
export function getIndexFromHorizontalOffset(
offset: number,
- width: number
+ width: number,
+ startYear?: number,
+ endYear?: number
): number {
- return startAtIndex + Math.floor(offset / width)
+ const dynamicStartAtIndex = getStartAtIndex(startYear, endYear)
+ return dynamicStartAtIndex + Math.floor(offset / width)
}
export function getIndexFromVerticalOffset(
offset: number,
- startWeekOnMonday: boolean
+ startWeekOnMonday: boolean,
+ startYear?: number,
+ endYear?: number
): number {
- let estimatedIndex = startAtIndex + Math.ceil(offset / estimatedMonthHeight)
+ const dynamicStartAtIndex = getStartAtIndex(startYear, endYear)
+ const dynamicBeginOffset = estimatedMonthHeight * dynamicStartAtIndex
+ let estimatedIndex =
+ dynamicStartAtIndex + Math.ceil(offset / estimatedMonthHeight)
- const realOffset = getVerticalMonthsOffset(estimatedIndex, startWeekOnMonday)
- const difference = (realOffset - beginOffset - offset) / estimatedMonthHeight
+ const realOffset = getVerticalMonthsOffset(
+ estimatedIndex,
+ startWeekOnMonday,
+ startYear,
+ endYear
+ )
+ const difference =
+ (realOffset - dynamicBeginOffset - offset) / estimatedMonthHeight
if (difference >= 1 || difference <= -1) {
estimatedIndex -= Math.floor(difference)
}
@@ -464,23 +516,29 @@ export function getHorizontalMonthOffset(index: number, width: number) {
export function getVerticalMonthsOffset(
index: number,
- startWeekOnMonday: boolean
+ startWeekOnMonday: boolean,
+ startYear?: number,
+ endYear?: number
) {
- const count = getIndexCount(index)
- const ob = weeksOffset(index, startWeekOnMonday)
+ const count = getIndexCount(index, startYear, endYear)
+ const ob = weeksOffset(index, startWeekOnMonday, startYear, endYear)
const monthsHeight = weekSize * ob
const c = monthsHeight + count * (dayNamesHeight + montHeaderHeight)
+ const dynamicBeginOffset =
+ estimatedMonthHeight * getStartAtIndex(startYear, endYear)
- return (c || 0) + beginOffset
+ return (c || 0) + dynamicBeginOffset
}
export function getMonthHeight(
scrollMode: 'horizontal' | 'vertical',
index: number,
- startWeekOnMonday: boolean
+ startWeekOnMonday: boolean,
+ startYear?: number,
+ endYear?: number
): number {
const calendarHeight = getCalendarHeaderHeight(scrollMode)
- const gc = getGridCount(index, startWeekOnMonday)
+ const gc = getGridCount(index, startWeekOnMonday, startYear, endYear)
const currentMonthHeight = weekSize * gc
const extraHeight =
diff --git a/src/Date/Swiper.native.tsx b/src/Date/Swiper.native.tsx
index a5bd7c99..2fa6f699 100644
--- a/src/Date/Swiper.native.tsx
+++ b/src/Date/Swiper.native.tsx
@@ -13,8 +13,12 @@ import {
montHeaderHeight,
} from './Month'
-import { SwiperProps, useYearChange } from './SwiperUtils'
-import { beginOffset, estimatedMonthHeight, totalMonths } from './dateUtils'
+import { SwiperProps, useYearChange, isIndexWithinRange } from './SwiperUtils'
+import {
+ estimatedMonthHeight,
+ getTotalMonths,
+ getBeginOffset,
+} from './dateUtils'
import AutoSizer from './AutoSizer'
import { memo, useCallback, useRef, useState } from 'react'
import { sharedStyles } from '../shared/styles'
@@ -49,6 +53,8 @@ function SwiperInner({
width,
height,
startWeekOnMonday,
+ startYear,
+ endYear,
}: SwiperProps & { width: number; height: number }) {
const idx = useRef(initialIndex)
const isHorizontal = scrollMode === 'horizontal'
@@ -60,6 +66,10 @@ function SwiperInner({
const scrollTo = useCallback(
(index: number, animated: boolean) => {
+ if (!isIndexWithinRange(index, startYear, endYear)) {
+ return
+ }
+
idx.current = index
setVisibleIndexes(getVisibleArray(index, { isHorizontal, height }))
@@ -68,7 +78,12 @@ function SwiperInner({
}
const offset = isHorizontal
? getHorizontalMonthOffset(index, width)
- : getVerticalMonthsOffset(index, startWeekOnMonday) - montHeaderHeight
+ : getVerticalMonthsOffset(
+ index,
+ startWeekOnMonday,
+ startYear,
+ endYear
+ ) - montHeaderHeight
if (isHorizontal) {
parentRef.current.scrollTo({
@@ -84,16 +99,30 @@ function SwiperInner({
})
}
},
- [parentRef, isHorizontal, width, height, startWeekOnMonday]
+ [
+ parentRef,
+ isHorizontal,
+ width,
+ height,
+ startWeekOnMonday,
+ startYear,
+ endYear,
+ ]
)
const onPrev = useCallback(() => {
- scrollTo(idx.current - 1, true)
- }, [scrollTo, idx])
+ const newIndex = idx.current - 1
+ if (isIndexWithinRange(newIndex, startYear, endYear)) {
+ scrollTo(newIndex, true)
+ }
+ }, [scrollTo, idx, startYear, endYear])
const onNext = useCallback(() => {
- scrollTo(idx.current + 1, true)
- }, [scrollTo, idx])
+ const newIndex = idx.current + 1
+ if (isIndexWithinRange(newIndex, startYear, endYear)) {
+ scrollTo(newIndex, true)
+ }
+ }, [scrollTo, idx, startYear, endYear])
const scrollToInitial = useCallback(() => {
scrollTo(idx.current, false)
@@ -103,23 +132,30 @@ function SwiperInner({
(e: NativeSyntheticEvent) => {
const contentOffset = e.nativeEvent.contentOffset
const viewSize = e.nativeEvent.layoutMeasurement
+ const dynamicBeginOffset = getBeginOffset(startYear, endYear)
const newIndex = isHorizontal
? Math.round(contentOffset.x / viewSize.width)
: getIndexFromVerticalOffset(
- contentOffset.y - beginOffset,
- startWeekOnMonday
+ contentOffset.y - dynamicBeginOffset,
+ startWeekOnMonday,
+ startYear,
+ endYear
)
if (newIndex === 0) {
return
}
+ if (!isIndexWithinRange(newIndex, startYear, endYear)) {
+ return
+ }
+
if (idx.current !== newIndex) {
idx.current = newIndex
setVisibleIndexes(getVisibleArray(newIndex, { isHorizontal, height }))
}
},
- [idx, height, isHorizontal, startWeekOnMonday]
+ [idx, height, isHorizontal, startWeekOnMonday, startYear, endYear]
)
const renderProps = {
@@ -130,13 +166,15 @@ function SwiperInner({
useYearChange(
(newIndex) => {
- if (newIndex) {
+ if (newIndex && isIndexWithinRange(newIndex, startYear, endYear)) {
scrollTo(newIndex, false)
}
},
{
selectedYear,
currentIndexRef: idx,
+ startYear,
+ endYear,
}
)
@@ -162,8 +200,10 @@ function SwiperInner({
{
height: isHorizontal
? height
- : estimatedMonthHeight * totalMonths,
- width: isHorizontal ? width * totalMonths : width,
+ : estimatedMonthHeight * getTotalMonths(startYear, endYear),
+ width: isHorizontal
+ ? width * getTotalMonths(startYear, endYear)
+ : width,
},
]}
>
@@ -177,7 +217,9 @@ function SwiperInner({
? 0
: getVerticalMonthsOffset(
visibleIndexes[vi],
- startWeekOnMonday
+ startWeekOnMonday,
+ startYear,
+ endYear
),
left: isHorizontal
? getHorizontalMonthOffset(visibleIndexes[vi], width)
@@ -191,7 +233,9 @@ function SwiperInner({
: getMonthHeight(
scrollMode,
visibleIndexes[vi],
- startWeekOnMonday
+ startWeekOnMonday,
+ startYear,
+ endYear
),
}}
>
diff --git a/src/Date/Swiper.tsx b/src/Date/Swiper.tsx
index f2677c0d..4f77f964 100644
--- a/src/Date/Swiper.tsx
+++ b/src/Date/Swiper.tsx
@@ -7,7 +7,14 @@ import {
} from './Month'
import { beginOffset, estimatedMonthHeight, totalMonths } from './dateUtils'
import { useLatest } from '../shared/utils'
-import { RenderProps, SwiperProps, useYearChange } from './SwiperUtils'
+import {
+ RenderProps,
+ SwiperProps,
+ useYearChange,
+ isIndexWithinRange,
+ getMinIndex,
+ getMaxIndex,
+} from './SwiperUtils'
import AutoSizer from './AutoSizer'
import {
memo,
@@ -31,18 +38,34 @@ function Swiper({
selectedYear,
initialIndex,
startWeekOnMonday,
+ startYear,
+ endYear,
}: SwiperProps) {
const isHorizontal = scrollMode === 'horizontal'
const [index, setIndex] = useState(initialIndex)
const onPrev = useCallback(() => {
- setIndex((prev) => prev - 1)
- }, [setIndex])
+ setIndex((prev) => {
+ const newIndex = prev - 1
+ // Check if the new index is within allowed range
+ if (isIndexWithinRange(newIndex, startYear, endYear)) {
+ return newIndex
+ }
+ return prev // Don't change if outside range
+ })
+ }, [setIndex, startYear, endYear])
const onNext = useCallback(() => {
- setIndex((prev) => prev + 1)
- }, [setIndex])
+ setIndex((prev) => {
+ const newIndex = prev + 1
+ // Check if the new index is within allowed range
+ if (isIndexWithinRange(newIndex, startYear, endYear)) {
+ return newIndex
+ }
+ return prev // Don't change if outside range
+ })
+ }, [setIndex, startYear, endYear])
const renderProps = {
index,
@@ -52,13 +75,15 @@ function Swiper({
const indexRef = useLatest(index)
useYearChange(
(newIndex) => {
- if (newIndex) {
+ if (newIndex && isIndexWithinRange(newIndex, startYear, endYear)) {
setIndex(newIndex)
}
},
{
selectedYear,
currentIndexRef: indexRef,
+ startYear,
+ endYear,
}
)
@@ -79,6 +104,8 @@ function Swiper({
estimatedHeight={estimatedMonthHeight}
renderItem={renderItem}
startWeekOnMonday={startWeekOnMonday}
+ startYear={startYear}
+ endYear={endYear}
/>
)}
@@ -97,6 +124,8 @@ function VerticalScroller({
estimatedHeight,
renderItem,
startWeekOnMonday,
+ startYear,
+ endYear,
}: {
renderItem: (renderProps: RenderProps) => any
width: number
@@ -104,12 +133,26 @@ function VerticalScroller({
initialIndex: number
estimatedHeight: number
startWeekOnMonday: boolean
+ startYear?: number
+ endYear?: number
}) {
+ // Ensure initial index is within allowed range
+ const constrainedInitialIndex = isIndexWithinRange(
+ initialIndex,
+ startYear,
+ endYear
+ )
+ ? initialIndex
+ : Math.max(
+ Math.min(initialIndex, getMaxIndex(endYear)),
+ getMinIndex(startYear)
+ )
+
const [visibleIndexes, setVisibleIndexes] = useState(
- visibleArray(initialIndex)
+ visibleArray(constrainedInitialIndex)
)
- const idx = useRef(initialIndex)
+ const idx = useRef(constrainedInitialIndex)
const parentRef = useRef(null)
useIsomorphicLayoutEffect(() => {
@@ -137,12 +180,17 @@ function VerticalScroller({
const offset = top - beginOffset
const index = getIndexFromVerticalOffset(offset, startWeekOnMonday)
+ // Check if the new index is within allowed range
+ if (!isIndexWithinRange(index, startYear, endYear)) {
+ return
+ }
+
if (idx.current !== index) {
idx.current = index
setVisibleIndexesThrottled(visibleArray(index))
}
},
- [setVisibleIndexesThrottled, startWeekOnMonday]
+ [setVisibleIndexesThrottled, startWeekOnMonday, startYear, endYear]
)
return (
diff --git a/src/Date/SwiperUtils.ts b/src/Date/SwiperUtils.ts
index 0de050b3..cb111703 100644
--- a/src/Date/SwiperUtils.ts
+++ b/src/Date/SwiperUtils.ts
@@ -4,8 +4,10 @@ import {
addMonths,
differenceInMonths,
getRealIndex,
- startAtIndex,
+ getStartAtIndex,
+ getTotalMonths,
} from './dateUtils'
+import { defaultStartYear, defaultEndYear } from './dateUtils'
export type RenderProps = {
index: number
@@ -21,6 +23,50 @@ export type SwiperProps = {
renderFooter?: (renderProps: RenderProps) => any
selectedYear: number | undefined
startWeekOnMonday: boolean
+ startYear?: number
+ endYear?: number
+}
+
+// Helper function to get the minimum allowed index based on startYear
+export function getMinIndex(startYear?: number, endYear?: number): number {
+ if (!startYear) return 0
+
+ const today = new Date()
+ const startDate = new Date(startYear, 0, 1) // January 1st of startYear
+ const months = differenceInMonths(today, startDate)
+ const dynamicStartAtIndex = getStartAtIndex(startYear, endYear)
+ const minIndex = dynamicStartAtIndex + months
+ const totalMonths = getTotalMonths(startYear, endYear)
+
+ // Allow any valid index within the dynamic range, no hard minimum
+ return Math.max(0, Math.min(minIndex, totalMonths - 1))
+}
+
+// Helper function to get the maximum allowed index based on endYear
+export function getMaxIndex(startYear?: number, endYear?: number): number {
+ const dynamicStartAtIndex = getStartAtIndex(startYear, endYear)
+ const totalMonths = getTotalMonths(startYear, endYear)
+
+ if (!endYear) return totalMonths - 1
+
+ const today = new Date()
+ const endDate = new Date(endYear, 11, 31) // December 31st of endYear
+ const months = differenceInMonths(today, endDate)
+ const maxIndex = dynamicStartAtIndex + months
+
+ // Allow any valid index within the dynamic range
+ return Math.max(0, Math.min(maxIndex, totalMonths - 1))
+}
+
+// Helper function to check if an index is within allowed range
+export function isIndexWithinRange(
+ index: number,
+ startYear?: number,
+ endYear?: number
+): boolean {
+ const minIndex = getMinIndex(startYear || defaultStartYear, endYear)
+ const maxIndex = getMaxIndex(startYear, endYear || defaultEndYear)
+ return index >= minIndex && index <= maxIndex
}
export function useYearChange(
@@ -28,25 +74,36 @@ export function useYearChange(
{
selectedYear,
currentIndexRef,
+ startYear,
+ endYear,
}: {
currentIndexRef: MutableRefObject
selectedYear: number | undefined
+ startYear?: number
+ endYear?: number
}
) {
const onChangeRef = useLatest(onChange)
useEffect(() => {
if (selectedYear) {
const currentIndex = currentIndexRef.current || 0
- const currentDate = addMonths(new Date(), getRealIndex(currentIndex))
+ const currentDate = addMonths(
+ new Date(),
+ getRealIndex(currentIndex, startYear, endYear)
+ )
currentDate.setFullYear(selectedYear)
const today = new Date()
const months = differenceInMonths(today, currentDate)
+ const dynamicStartAtIndex = getStartAtIndex(startYear, endYear)
+ const totalMonths = getTotalMonths(startYear, endYear)
- const newIndex = startAtIndex + months
- if (currentIndex !== newIndex) {
- onChangeRef.current(newIndex)
+ const newIndex = dynamicStartAtIndex + months
+ // Ensure the new index is within valid bounds
+ const boundedIndex = Math.max(0, Math.min(newIndex, totalMonths - 1))
+ if (currentIndex !== boundedIndex) {
+ onChangeRef.current(boundedIndex)
}
}
- }, [currentIndexRef, onChangeRef, selectedYear])
+ }, [currentIndexRef, onChangeRef, selectedYear, startYear, endYear])
}
diff --git a/src/Date/YearPicker.tsx b/src/Date/YearPicker.tsx
index da135671..ca8c87c3 100644
--- a/src/Date/YearPicker.tsx
+++ b/src/Date/YearPicker.tsx
@@ -3,6 +3,7 @@ import { MD2Theme, Text, TouchableRipple, useTheme } from 'react-native-paper'
import { range } from '../shared/utils'
import { memo, useEffect, useRef } from 'react'
import { sharedStyles } from '../shared/styles'
+import { defaultStartYear, defaultEndYear } from './dateUtils'
const ITEM_HEIGHT = 62
@@ -23,8 +24,8 @@ export default function YearPicker({
const flatList = useRef | null>(null)
const years = range(
- isNaN(startYear) ? 1800 : startYear,
- isNaN(endYear) ? 2200 : endYear
+ isNaN(startYear) ? defaultStartYear : startYear,
+ isNaN(endYear) ? defaultEndYear : endYear
)
// scroll to selected year
@@ -149,5 +150,4 @@ const styles = StyleSheet.create({
fontSize: 16,
},
})
-
const Year = memo(YearPure)
diff --git a/src/Date/dateUtils.tsx b/src/Date/dateUtils.tsx
index 53568894..32886927 100644
--- a/src/Date/dateUtils.tsx
+++ b/src/Date/dateUtils.tsx
@@ -170,19 +170,61 @@ export function isLeapYear({ year }: { year: number }) {
export const daySize = 46
export const estimatedMonthHeight = 360
-export const startAtIndex = 1200
+export const defaultStartYear = 1800
+export const defaultEndYear = 2200
+
+// Dynamic calculation functions to replace fixed constants
+export function getStartAtIndex(startYear?: number, _endYear?: number): number {
+ const start = startYear || 1800
+ const today = new Date()
+ const currentYear = today.getFullYear()
+
+ // Calculate months from start year to current year
+ const monthsFromStart = (currentYear - start) * 12 + today.getMonth()
+
+ // Ensure we have enough buffer for the range
+ return Math.max(monthsFromStart, 0)
+}
+
+export function getTotalMonths(startYear?: number, endYear?: number): number {
+ const start = startYear || 1800
+ const end = endYear || 2200
+ return (end - start + 1) * 12
+}
+
+export function getBeginOffset(startYear?: number, endYear?: number): number {
+ return estimatedMonthHeight * getStartAtIndex(startYear, endYear)
+}
+
+// Keep the old constants for backward compatibility but make them dynamic
+export const startAtIndex = 2800
export const totalMonths = startAtIndex * 2
export const beginOffset = estimatedMonthHeight * startAtIndex
+
+// Create a dynamic grid counts array
+export function createGridCounts(count: number): Array {
+ return new Array(count)
+}
+
export const gridCounts = new Array(totalMonths)
-export function getGridCount(index: number, startWeekOnMonday: boolean) {
- const cHeight = gridCounts[index]
+export function getGridCount(
+ index: number,
+ startWeekOnMonday: boolean,
+ startYear?: number,
+ endYear?: number
+) {
+ const dynamicGridCounts = createGridCounts(getTotalMonths(startYear, endYear))
+ const cHeight = dynamicGridCounts[index]
if (cHeight) {
return cHeight
}
- const monthDate = addMonths(new Date(), getRealIndex(index))
+ const monthDate = addMonths(
+ new Date(),
+ getRealIndex(index, startYear, endYear)
+ )
const h = getGridCountForDate(monthDate, startWeekOnMonday)
- gridCounts[index] = h
+ dynamicGridCounts[index] = h
return h
}
@@ -194,19 +236,28 @@ export function getGridCountForDate(date: Date, startWeekOnMonday: boolean) {
return Math.ceil((daysInMonth + dayOfWeek) / 7)
}
-export function getRealIndex(index: number) {
- return index - startAtIndex
+export function getRealIndex(
+ index: number,
+ startYear?: number,
+ endYear?: number
+) {
+ return index - getStartAtIndex(startYear, endYear)
}
-export function getInitialIndex(date: Date | undefined) {
+export function getInitialIndex(
+ date: Date | undefined,
+ startYear?: number,
+ endYear?: number
+) {
+ const dynamicStartAtIndex = getStartAtIndex(startYear, endYear)
if (!date) {
- return startAtIndex
+ return dynamicStartAtIndex
}
const today = new Date()
const months = differenceInMonths(today, date)
- return startAtIndex + months
+ return dynamicStartAtIndex + months
}
export function useInputFormatter({ locale }: { locale: string | undefined }) {
diff --git a/src/__tests__/Date/YearPicker.test.tsx b/src/__tests__/Date/YearPicker.test.tsx
index e91e30c7..1158a922 100644
--- a/src/__tests__/Date/YearPicker.test.tsx
+++ b/src/__tests__/Date/YearPicker.test.tsx
@@ -1,15 +1,15 @@
import { render } from '@testing-library/react-native'
import YearPicker from '../../Date/YearPicker'
+import { defaultEndYear, defaultStartYear } from '../../Date/dateUtils'
-it('renders YearPicker', () => {
- const { toJSON } = render(
+it('renders', () => {
+ render(
null}
- startYear={1800}
- endYear={2200}
+ startYear={defaultStartYear}
+ endYear={defaultEndYear}
/>
)
- expect(toJSON()).toMatchSnapshot()
})
diff --git a/src/__tests__/Date/__snapshots__/CalendarEdit.test.tsx.snap b/src/__tests__/Date/__snapshots__/CalendarEdit.test.tsx.snap
index 6e7deb37..ef3df8c2 100644
--- a/src/__tests__/Date/__snapshots__/CalendarEdit.test.tsx.snap
+++ b/src/__tests__/Date/__snapshots__/CalendarEdit.test.tsx.snap
@@ -265,7 +265,7 @@ exports[`renders CalendarEdit 1`] = `
}
testID="text-input-flat"
underlineColorAndroid="transparent"
- value="05/23/2025"
+ value="06/06/2025"
withModal={false}
/>
diff --git a/src/__tests__/Date/__snapshots__/DatePickerInput.test.tsx.snap b/src/__tests__/Date/__snapshots__/DatePickerInput.test.tsx.snap
index 647c1628..496dad89 100644
--- a/src/__tests__/Date/__snapshots__/DatePickerInput.test.tsx.snap
+++ b/src/__tests__/Date/__snapshots__/DatePickerInput.test.tsx.snap
@@ -258,7 +258,7 @@ exports[`renders DatePickerInput 1`] = `
}
testID="text-input-flat"
underlineColorAndroid="transparent"
- value="05/23/2025"
+ value="06/06/2025"
/>
diff --git a/src/__tests__/Date/__snapshots__/YearPicker.test.tsx.snap b/src/__tests__/Date/__snapshots__/YearPicker.test.tsx.snap
deleted file mode 100644
index c7bc8d92..00000000
--- a/src/__tests__/Date/__snapshots__/YearPicker.test.tsx.snap
+++ /dev/null
@@ -1,3788 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`renders YearPicker 1`] = `
-
-
-
-
-
-
-
-
-
- 1800
-
-
-
-
-
-
-
-
- 1801
-
-
-
-
-
-
-
-
- 1802
-
-
-
-
-
-
-
-
-
-
-
-
- 1803
-
-
-
-
-
-
-
-
- 1804
-
-
-
-
-
-
-
-
- 1805
-
-
-
-
-
-
-
-
-
-
-
-
- 1806
-
-
-
-
-
-
-
-
- 1807
-
-
-
-
-
-
-
-
- 1808
-
-
-
-
-
-
-
-
-
-
-
-
- 1809
-
-
-
-
-
-
-
-
- 1810
-
-
-
-
-
-
-
-
- 1811
-
-
-
-
-
-
-
-
-
-
-
-
- 1812
-
-
-
-
-
-
-
-
- 1813
-
-
-
-
-
-
-
-
- 1814
-
-
-
-
-
-
-
-
-
-
-
-
- 1815
-
-
-
-
-
-
-
-
- 1816
-
-
-
-
-
-
-
-
- 1817
-
-
-
-
-
-
-
-
-
-
-
-
- 1818
-
-
-
-
-
-
-
-
- 1819
-
-
-
-
-
-
-
-
- 1820
-
-
-
-
-
-
-
-
-
-
-
-
- 1821
-
-
-
-
-
-
-
-
- 1822
-
-
-
-
-
-
-
-
- 1823
-
-
-
-
-
-
-
-
-
-
-
-
- 1824
-
-
-
-
-
-
-
-
- 1825
-
-
-
-
-
-
-
-
- 1826
-
-
-
-
-
-
-
-
-
-
-
-
- 1827
-
-
-
-
-
-
-
-
- 1828
-
-
-
-
-
-
-
-
- 1829
-
-
-
-
-
-
-
-
-
-
-`;