diff --git a/package-lock.json b/package-lock.json index 57ad1d31a..7c010c5b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,23 +13,23 @@ "@comapeo/ipc": "2.1.0", "@expo-google-fonts/rubik": "0.2.3", "@formatjs/intl-getcanonicallocales": "2.5.4", - "@formatjs/intl-locale": "4.2.8", - "@formatjs/intl-pluralrules": "5.4.1", - "@formatjs/intl-relativetimeformat": "11.4.8", + "@formatjs/intl-locale": "4.2.9", + "@formatjs/intl-pluralrules": "5.4.2", + "@formatjs/intl-relativetimeformat": "11.4.9", "@gorhom/bottom-sheet": "5.0.6", "@osm_borders/maritime_10000m": "1.1.0", "@react-native-community/hooks": "3.0.0", "@react-native-community/netinfo": "11.4.1", - "@react-native-picker/picker": "2.10.2", + "@react-native-picker/picker": "2.11.0", "@react-navigation/bottom-tabs": "6.5.8", "@react-navigation/drawer": "6.6.15", "@react-navigation/native": "6.1.7", "@react-navigation/native-stack": "6.9.13", "@rnmapbox/maps": "10.1.33", - "@sentry/react-native": "5.20.0", - "@tanstack/react-query": "5.62.8", - "@turf/helpers": "7.1.0", - "@turf/random": "7.1.0", + "@sentry/react-native": "6.5.0", + "@tanstack/react-query": "5.64.2", + "@turf/helpers": "7.2.0", + "@turf/random": "7.2.0", "@types/luxon": "3.4.2", "assert": "2.1.0", "buffer": "6.0.3", @@ -63,28 +63,28 @@ "nanoid": "5.0.9", "nodejs-mobile-react-native": "18.20.4", "react": "18.2.0", - "react-hook-form": "7.54.1", - "react-intl": "7.0.4", + "react-hook-form": "7.54.2", + "react-intl": "7.1.4", "react-native": "0.73.6", "react-native-android-open-settings": "1.3.0", "react-native-confirmation-code-field": "7.4.0", - "react-native-device-info": "14.0.1", + "react-native-device-info": "14.0.2", "react-native-gesture-handler": "2.21.2", "react-native-indicators": "0.17.0", "react-native-linear-gradient": "2.8.3", - "react-native-mmkv": "2.12.1", + "react-native-mmkv": "2.12.2", "react-native-progress": "5.0.1", - "react-native-reanimated": "3.16.5", + "react-native-reanimated": "3.16.7", "react-native-restart": "0.0.27", "react-native-safe-area-context": "4.14.0", "react-native-scale-bar": "1.0.6", "react-native-screens": "3.29.0", "react-native-share": "12.0.3", - "react-native-svg": "15.10.1", + "react-native-svg": "15.11.1", "react-native-url-polyfill": "2.0.0", "react-native-vector-icons": "10.2.0", "react-native-zeroconf": "0.13.8", - "readable-stream": "4.5.2", + "readable-stream": "4.7.0", "rpc-reflector": "1.3.11", "start-stop-state-machine": "1.2.0", "tiny-typed-emitter": "2.1.0", @@ -92,7 +92,7 @@ "utm": "1.1.1", "valibot": "0.42.1", "validate-color": "2.2.4", - "zustand": "5.0.2" + "zustand": "5.0.3" }, "devDependencies": { "@babel/core": "7.25.7", @@ -113,7 +113,7 @@ "@tanstack/eslint-plugin-query": "5.62.1", "@testing-library/react-native": "12.4.3", "@types/debug": "4.1.12", - "@types/geojson": "7946.0.14", + "@types/geojson": "7946.0.15", "@types/jest": "29.5.13", "@types/lodash.isequal": "4.5.6", "@types/node": "20.8.4", @@ -4811,57 +4811,57 @@ } }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz", - "integrity": "sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.2.tgz", + "integrity": "sha512-6sE5nyvDloULiyOMbOTJEEgWL32w+VHkZQs8S02Lnn8Y/O5aQhjOEXwWzvR7SsBE/exxlSpY2EsWZgqHbtLatg==", "license": "MIT", "dependencies": { - "@formatjs/fast-memoize": "2.2.5", - "@formatjs/intl-localematcher": "0.5.9", + "@formatjs/fast-memoize": "2.2.6", + "@formatjs/intl-localematcher": "0.5.10", "decimal.js": "10", "tslib": "2" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz", - "integrity": "sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.6.tgz", + "integrity": "sha512-luIXeE2LJbQnnzotY1f2U2m7xuQNj2DA8Vq4ce1BY9ebRZaoPB1+8eZ6nXpLzsxuW5spQxr7LdCg+CApZwkqkw==", "license": "MIT", "dependencies": { "tslib": "2" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.9.7", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.7.tgz", - "integrity": "sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.0.tgz", + "integrity": "sha512-Hp81uTjjdTk3FLh/dggU5NK7EIsVWc5/ZDWrIldmf2rBuPejuZ13CZ/wpVE2SToyi4EiroPTQ1XJcJuZFIxTtw==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/icu-skeleton-parser": "1.8.11", + "@formatjs/ecma402-abstract": "2.3.2", + "@formatjs/icu-skeleton-parser": "1.8.12", "tslib": "2" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.11.tgz", - "integrity": "sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==", + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.12.tgz", + "integrity": "sha512-QRAY2jC1BomFQHYDMcZtClqHR55EEnB96V7Xbk/UiBodsuFc5kujybzt87+qj1KqmJozFhk6n4KiT1HKwAkcfg==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", + "@formatjs/ecma402-abstract": "2.3.2", "tslib": "2" } }, "node_modules/@formatjs/intl": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-3.0.4.tgz", - "integrity": "sha512-pnetak6R7Xp/ET96O5kx9zRYoQQqr6sbRXWkJHKw0Hr/jr3ls4CddZKq+suwCDuW6p/ior2BhpOSh/WLLcJM6w==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-3.1.3.tgz", + "integrity": "sha512-yWtB1L4vOr17MLII3bcNRmjx6qBkSupJuA6nJz1zVxpWbJXKQL5vgvjRCehTO3z7HolxFjtLdfV0/RN+bC34Fg==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/fast-memoize": "2.2.5", - "@formatjs/icu-messageformat-parser": "2.9.7", - "intl-messageformat": "10.7.10", + "@formatjs/ecma402-abstract": "2.3.2", + "@formatjs/fast-memoize": "2.2.6", + "@formatjs/icu-messageformat-parser": "2.11.0", + "intl-messageformat": "10.7.14", "tslib": "2" }, "peerDependencies": { @@ -4874,12 +4874,12 @@ } }, "node_modules/@formatjs/intl-enumerator": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/@formatjs/intl-enumerator/-/intl-enumerator-1.8.7.tgz", - "integrity": "sha512-qd7UlWUivKRJ073btssUqMSqzWW9yN3Ki6EqfCZ6uvIv19mONelE5q3GMmdPWBEjgqZikBzBE2qPTqfrgJ4TCA==", + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@formatjs/intl-enumerator/-/intl-enumerator-1.8.8.tgz", + "integrity": "sha512-U/1FGFNObuWWy0N+DwRiDDZvH8cjKixjDDbgr1I1RJ66jOLSVDUApdOsGd8hSmFFAiNXT5s4tM9WfL4QT5VoSw==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", + "@formatjs/ecma402-abstract": "2.3.2", "tslib": "2" } }, @@ -4893,46 +4893,46 @@ } }, "node_modules/@formatjs/intl-locale": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-locale/-/intl-locale-4.2.8.tgz", - "integrity": "sha512-6RY/npeA0kyoZ8QW0JRAT+VBAFBT6+4ZVeGkKCNIDjbLX2LPuU73emGR35Mbwcc6pquVFrxyo6mXxKNzib0kEA==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@formatjs/intl-locale/-/intl-locale-4.2.9.tgz", + "integrity": "sha512-zX3Y06SmZ3sAGymzTFNTpWCx4yfdHmuODpGBPbyMfA5Z7Frc17VKEW+D7FIJOVdBZD1918d97vKxu7UAlAxwaw==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/intl-enumerator": "1.8.7", + "@formatjs/ecma402-abstract": "2.3.2", + "@formatjs/intl-enumerator": "1.8.8", "@formatjs/intl-getcanonicallocales": "2.5.4", "tslib": "2" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz", - "integrity": "sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", + "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", "license": "MIT", "dependencies": { "tslib": "2" } }, "node_modules/@formatjs/intl-pluralrules": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.4.1.tgz", - "integrity": "sha512-kKK4ixTsfKAzyJIVRiJGuw4zd18nEHXiKloYBO9VmLpxrwJTgLQHv2+1hcbxQcwbbo2uc8moUFQuyvxeGEFOfw==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.4.2.tgz", + "integrity": "sha512-iPjo+F3q7W7KPQrIwJ7Hm72viKtvJeqcpyCHOWcx4haw04gnHksmd1qqfLgXj8l0w66kfG5f1ECwNfToYtseUA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/intl-localematcher": "0.5.9", + "@formatjs/ecma402-abstract": "2.3.2", + "@formatjs/intl-localematcher": "0.5.10", "decimal.js": "10", "tslib": "2" } }, "node_modules/@formatjs/intl-relativetimeformat": { - "version": "11.4.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-11.4.8.tgz", - "integrity": "sha512-HOyTJaxMLpurJXAwRyYsElxiLKXJnbczghxZNe4Rqlstet8dZxwBonGkAnkd1sKgmVp2W2454nr40dlvlMRqnA==", + "version": "11.4.9", + "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-11.4.9.tgz", + "integrity": "sha512-nhDpZkDcAoW7hfqy6kLwY/Zb41rRKzkyWp7kbTZHmIsIjUfKlqekoBuwZ7xfOOKz82wsJkkJWASB60gkLWt9Ng==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/intl-localematcher": "0.5.9", + "@formatjs/ecma402-abstract": "2.3.2", + "@formatjs/intl-localematcher": "0.5.10", "tslib": "2" } }, @@ -7035,9 +7035,9 @@ } }, "node_modules/@react-native-picker/picker": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.10.2.tgz", - "integrity": "sha512-kr3OvCRwTYjR/OKlb52k4xmQVU7dPRIALqpyiihexdJxEgvc1smnepgqCeM9oXmNSG4YaV5/RSxFlLC5Z/T/Eg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.11.0.tgz", + "integrity": "sha512-QuZU6gbxmOID5zZgd/H90NgBnbJ3VV6qVzp6c7/dDrmWdX8S0X5YFYgDcQFjE3dRen9wB9FWnj2VVdPU64adSg==", "license": "MIT", "workspaces": [ "example" @@ -7666,68 +7666,87 @@ "join-component": "^1.1.0" } }, + "node_modules/@sentry-internal/browser-utils": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.47.0.tgz", + "integrity": "sha512-vOXzYzHTKkahTLDzWWIA4EiVCQ+Gk+7xGWUlNcR2ZiEPBqYZVb5MjsUozAcc7syrSUy6WicyFjcomZ3rlCVQhg==", + "license": "MIT", + "dependencies": { + "@sentry/core": "8.47.0" + }, + "engines": { + "node": ">=14.18" + } + }, "node_modules/@sentry-internal/feedback": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.100.1.tgz", - "integrity": "sha512-yqcRVnjf+qS+tC4NxOKLJOaSJ+csHmh/dHUzvCTkf5rLsplwXYRnny2r0tqGTQ4tuXMxwgSMKPYwicg81P+xuw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.47.0.tgz", + "integrity": "sha512-IAiIemTQIalxAOYhUENs9bZ8pMNgJnX3uQSuY7v0gknEqClOGpGkG04X/cxCmtJUj1acZ9ShTGDxoh55a+ggAQ==", + "license": "MIT", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "8.47.0" }, "engines": { - "node": ">=12" + "node": ">=14.18" } }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.100.1.tgz", - "integrity": "sha512-TnqxqJGhbFhhYRhTG2WLFer+lVieV7mNGeIxFBiw1L4kuj8KGl+C0sknssKyZSRVJFSahhHIosHJGRMkkD//7g==", + "node_modules/@sentry-internal/replay": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.47.0.tgz", + "integrity": "sha512-G/S40ZBORj0HSMLw/uVC6YDEPN/dqVk901vf4VYfml686DEhJrZesfAfp5SydJumQ0NKZQrdtvny+BWnlI5H1w==", + "license": "MIT", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/replay": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/browser-utils": "8.47.0", + "@sentry/core": "8.47.0" }, "engines": { - "node": ">=12" + "node": ">=14.18" } }, - "node_modules/@sentry-internal/tracing": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.100.1.tgz", - "integrity": "sha512-+u9RRf5eL3StiyiRyAHZmdkAR7GTSGx4Mt4Lmi5NEtCcWlTGZ1QgW2r8ZbhouVmTiJkjhQgYCyej3cojtazeJg==", + "node_modules/@sentry-internal/replay-canvas": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.47.0.tgz", + "integrity": "sha512-M4W9UGouEeELbGbP3QsXLDVtGiQSZoWJlKwqMWyqdQgZuLoKw0S33+60t6teLVMhuQZR0UI9VJTF5coiXysnnA==", + "license": "MIT", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/replay": "8.47.0", + "@sentry/core": "8.47.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" + } + }, + "node_modules/@sentry/babel-plugin-component-annotate": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.20.1.tgz", + "integrity": "sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg==", + "license": "MIT", + "engines": { + "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.100.1.tgz", - "integrity": "sha512-IxHQ08ixf0bmaWpe4yt1J4UUsOpg02fxax9z3tOQYXw5MSzz5pDXn8M8DFUVJB3wWuyXhHXTub9yD3VIP9fnoA==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.47.0.tgz", + "integrity": "sha512-K6BzHisykmbFy/wORtGyfsAlw7ShevLALzu3ReZZZ18dVubO1bjSNjkZQU9MJD5Jcb9oLwkq89n3N9XIBfvdRA==", + "license": "MIT", "dependencies": { - "@sentry-internal/feedback": "7.100.1", - "@sentry-internal/replay-canvas": "7.100.1", - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/replay": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/browser-utils": "8.47.0", + "@sentry-internal/feedback": "8.47.0", + "@sentry-internal/replay": "8.47.0", + "@sentry-internal/replay-canvas": "8.47.0", + "@sentry/core": "8.47.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/@sentry/cli": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.30.0.tgz", - "integrity": "sha512-GTO5e98vy2QwEYQvhE/ZtGUiVrUu4XungLioJbazm+ZOen8cyac8YOapZfozN5mtxjWOWMOwhOqoTeCU3Q8YKQ==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.39.1.tgz", + "integrity": "sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ==", "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.7", @@ -7742,19 +7761,20 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.30.0", - "@sentry/cli-linux-arm": "2.30.0", - "@sentry/cli-linux-arm64": "2.30.0", - "@sentry/cli-linux-i686": "2.30.0", - "@sentry/cli-linux-x64": "2.30.0", - "@sentry/cli-win32-i686": "2.30.0", - "@sentry/cli-win32-x64": "2.30.0" + "@sentry/cli-darwin": "2.39.1", + "@sentry/cli-linux-arm": "2.39.1", + "@sentry/cli-linux-arm64": "2.39.1", + "@sentry/cli-linux-i686": "2.39.1", + "@sentry/cli-linux-x64": "2.39.1", + "@sentry/cli-win32-i686": "2.39.1", + "@sentry/cli-win32-x64": "2.39.1" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.30.0.tgz", - "integrity": "sha512-JVesQ9PznbHBOOOwuej2X8/onfXdmAEjBH6fTyWxBl6K8mB4KmBX/aHunXWMBX+VR9X32XZghIqj7acwaFUMPA==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.39.1.tgz", + "integrity": "sha512-kiNGNSAkg46LNGatfNH5tfsmI/kCAaPA62KQuFZloZiemTNzhy9/6NJP8HZ/GxGs8GDMxic6wNrV9CkVEgFLJQ==", + "license": "BSD-3-Clause", "optional": true, "os": [ "darwin" @@ -7763,76 +7783,147 @@ "node": ">=10" } }, - "node_modules/@sentry/core": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.100.1.tgz", - "integrity": "sha512-f+ItUge/o9AjlveQq0ZUbQauKlPH1FIJbC1TRaYLJ4KNfOdrsh8yZ29RmWv0cFJ/e+FGTr603gWpRPObF5rM8Q==", - "dependencies": { - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" - }, + "node_modules/@sentry/cli-linux-arm": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.39.1.tgz", + "integrity": "sha512-DkENbxyRxUrfLnJLXTA4s5UL/GoctU5Cm4ER1eB7XN7p9WsamFJd/yf2KpltkjEyiTuplv0yAbdjl1KX3vKmEQ==", + "cpu": [ + "arm" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/@sentry/hub": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.100.1.tgz", - "integrity": "sha512-zdt7f1k+5JE5FAunzBZUEFbvK5YP/LekLMeogTonaRObB07J6fJ9FD4mtNk7pV0utrTDwR+n942qmp+LbWauWA==", - "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" - }, + "node_modules/@sentry/cli-linux-arm64": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.39.1.tgz", + "integrity": "sha512-5VbVJDatolDrWOgaffsEM7znjs0cR8bHt9Bq0mStM3tBolgAeSDHE89NgHggfZR+DJ2VWOy4vgCwkObrUD6NQw==", + "cpu": [ + "arm64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/@sentry/integrations": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.100.1.tgz", - "integrity": "sha512-RUyZHcsN3Plc8G4hJN3BCMdbwS8ljUY3E3iLjzucA4HroBsGk5AMc6n7Pp/QqFIRgxrPjKEgA52Wgy5Nq6dSvw==", - "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", - "localforage": "^1.8.1" - }, + "node_modules/@sentry/cli-linux-i686": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.39.1.tgz", + "integrity": "sha512-pXWVoKXCRrY7N8vc9H7mETiV9ZCz+zSnX65JQCzZxgYrayQPJTc+NPRnZTdYdk5RlAupXaFicBI2GwOCRqVRkg==", + "cpu": [ + "x86", + "ia32" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-x64": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.39.1.tgz", + "integrity": "sha512-IwayNZy+it7FWG4M9LayyUmG1a/8kT9+/IEm67sT5+7dkMIMcpmHDqL8rWcPojOXuTKaOBBjkVdNMBTXy0mXlA==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-i686": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.39.1.tgz", + "integrity": "sha512-NglnNoqHSmE+Dz/wHeIVRnV2bLMx7tIn3IQ8vXGO5HWA2f8zYJGktbkLq1Lg23PaQmeZLPGlja3gBQfZYSG10Q==", + "cpu": [ + "x86", + "ia32" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-x64": { + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.39.1.tgz", + "integrity": "sha512-xv0R2CMf/X1Fte3cMWie1NXuHmUyQPDBfCyIt6k6RPFPxAYUgcqgMPznYwVMwWEA1W43PaOkSn3d8ZylsDaETw==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/core": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.47.0.tgz", + "integrity": "sha512-iSEJZMe3DOcqBFZQAqgA3NB2lCWBc4Gv5x/SCri/TVg96wAlss4VrUunSI2Mp0J4jJ5nJcJ2ChqHSBAU48k3FA==", + "license": "MIT", + "engines": { + "node": ">=14.18" } }, "node_modules/@sentry/react": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.100.1.tgz", - "integrity": "sha512-EdrBtrXVLK2LSx4Rvz/nQP7HZUZQmr+t3GHV8436RAhF6vs5mntACVMBoQJRWiUvtZ1iRo3rIsIdah7DLiFPgQ==", - "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.47.0.tgz", + "integrity": "sha512-SRk2Up+qBTow4rQGiRXViC2i4M5w/tae5w8I/rmX+IxFoPyh8wXERcLAj/8xbbRm8aR+A4i5gNgfFtrYsyFJFA==", + "license": "MIT", + "dependencies": { + "@sentry/browser": "8.47.0", + "@sentry/core": "8.47.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { - "node": ">=8" + "node": ">=14.18" }, "peerDependencies": { - "react": "15.x || 16.x || 17.x || 18.x" + "react": "^16.14.0 || 17.x || 18.x || 19.x" } }, "node_modules/@sentry/react-native": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-5.20.0.tgz", - "integrity": "sha512-1jWqQFRvQeFgYrEXfvr0TTG/kXIGV2KgtkNqlInTTuXFXo6qInFhuu4Ak4zNuitFlfr6Soh2ASlJrpkBKf2pAg==", - "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/cli": "2.30.0", - "@sentry/core": "7.100.1", - "@sentry/hub": "7.100.1", - "@sentry/integrations": "7.100.1", - "@sentry/react": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-6.5.0.tgz", + "integrity": "sha512-SwSfNbzipMZcq3fBVYGOLS53lYPa53uWlpj/qwmgkcJ6gABWZ8ak9ZXbZgPJkVyTLnbY6TQNCbC8BvbMKAlsxg==", + "license": "MIT", + "dependencies": { + "@sentry/babel-plugin-component-annotate": "2.20.1", + "@sentry/browser": "8.47.0", + "@sentry/cli": "2.39.1", + "@sentry/core": "8.47.0", + "@sentry/react": "8.47.0", + "@sentry/types": "8.47.0", + "@sentry/utils": "8.47.0" }, "bin": { "sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js" @@ -7848,37 +7939,28 @@ } } }, - "node_modules/@sentry/replay": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.100.1.tgz", - "integrity": "sha512-B1NFjzGEFaqejxBRdUyEzH8ChXc2kfiqlA/W/Lg0aoWIl2/7nuMk+l4ld9gW5F5bIAXDTVd5vYltb1lWEbpr7w==", + "node_modules/@sentry/types": { + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.47.0.tgz", + "integrity": "sha512-ruiowlIBQUPDwNcO0KTudKP9T2QYF3S2TLhDdoJb+0ZGJduH4PsgGAojUSpGR+idKfrlOSlUpcdg9+WxsoOckg==", + "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "8.47.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@sentry/types": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.100.1.tgz", - "integrity": "sha512-fLM+LedHuKzOd8IhXBqaQuym+AA519MGjeczBa5kGakes/BbAsUMwsNfjsKQedp7Kh44RgYF99jwoRPK2oDrXw==", - "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/@sentry/utils": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.100.1.tgz", - "integrity": "sha512-Ve6dXr1o6xiBe3VCoJgiutmBKrugryI65EZAbYto5XI+t+PjiLLf9wXtEMF24ZrwImo4Lv3E9Uqza+fWkEbw6A==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.47.0.tgz", + "integrity": "sha512-9F8OsV2DvCzql/15wBAEJsuDo6+dd182YorqF5hDSTDkwjvTYhbHgimy3xzMu9wF83NqrUTFnDEcX8fj1e61DQ==", + "license": "MIT", "dependencies": { - "@sentry/types": "7.100.1" + "@sentry/core": "8.47.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/@sideway/address": { @@ -8367,9 +8449,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.62.8", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.8.tgz", - "integrity": "sha512-4fV31vDsUyvNGrKIOUNPrZztoyL187bThnoQOvAXEVlZbSiuPONpfx53634MKKdvsDir5NyOGm80ShFaoHS/mw==", + "version": "5.64.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.64.2.tgz", + "integrity": "sha512-hdO8SZpWXoADNTWXV9We8CwTkXU88OVWRBcsiFrk7xJQnhm6WRlweDzMD+uH+GnuieTBVSML6xFa17C2cNV8+g==", "license": "MIT", "funding": { "type": "github", @@ -8377,12 +8459,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.62.8", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.8.tgz", - "integrity": "sha512-8TUstKxF/fysHonZsWg/hnlDVgasTdHx6Q+f1/s/oPKJBJbKUWPZEHwLTMOZgrZuroLMiqYKJ9w69Abm8mWP0Q==", + "version": "5.64.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.64.2.tgz", + "integrity": "sha512-3pakNscZNm8KJkxmovvtZ4RaXLyiYYobwleTMvpIGUoKRa8j8VlrQKNl5W8VUEfVfZKkikvXVddLuWMbcSCA1Q==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.62.8" + "@tanstack/query-core": "5.64.2" }, "funding": { "type": "github", @@ -8634,13 +8716,13 @@ } }, "node_modules/@turf/helpers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", - "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.2.0.tgz", + "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", "license": "MIT", "dependencies": { "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" @@ -8781,14 +8863,14 @@ } }, "node_modules/@turf/random": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.1.0.tgz", - "integrity": "sha512-22mXv8ejDMUWkz8DSMMqdZb0s7a0ISJzXt6T9cHovfT//vsotzkVH+5PDxJQjvmigKMnpaUgobHmQss23tAwEQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.2.0.tgz", + "integrity": "sha512-fNXs5mOeXsrirliw84S8UCNkpm4RMNbefPNsuCTfZEXhcr1MuHMzq4JWKb4FweMdN1Yx2l/xcytkO0s71cJ50w==", "license": "MIT", "dependencies": { - "@turf/helpers": "^7.1.0", + "@turf/helpers": "^7.2.0", "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" @@ -8863,9 +8945,9 @@ "license": "MIT" }, "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "version": "7946.0.15", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", + "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==", "license": "MIT" }, "node_modules/@types/graceful-fs": { @@ -9026,11 +9108,15 @@ "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.5", + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", "license": "MIT" }, "node_modules/@types/react": { "version": "18.2.60", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.60.tgz", + "integrity": "sha512-dfiPj9+k20jJrLGOu9Nf6eqxm2EyJRrq2NvwOFsfbb7sFExZ9WELPs67UImHj3Ayxg8ruTtKtNnbjaF8olPq0A==", "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -9085,7 +9171,9 @@ } }, "node_modules/@types/scheduler": { - "version": "0.16.2", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==", "license": "MIT" }, "node_modules/@types/semver": { @@ -16759,11 +16847,6 @@ "node": ">=16.x" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -16920,14 +17003,14 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.10", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.10.tgz", - "integrity": "sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==", + "version": "10.7.14", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.14.tgz", + "integrity": "sha512-mMGnE4E1otdEutV5vLUdCxRJygHB5ozUBxsPB5qhitewssrS/qGruq9bmvIRkkGsNeK5ZWLfYRld18UHGTIifQ==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/fast-memoize": "2.2.5", - "@formatjs/icu-messageformat-parser": "2.9.7", + "@formatjs/ecma402-abstract": "2.3.2", + "@formatjs/fast-memoize": "2.2.6", + "@formatjs/icu-messageformat-parser": "2.11.0", "tslib": "2" } }, @@ -20216,14 +20299,6 @@ "node": ">= 0.8.0" } }, - "node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", - "dependencies": { - "immediate": "~3.0.5" - } - }, "node_modules/light-my-request": { "version": "5.14.0", "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz", @@ -20634,14 +20709,6 @@ "node": ">=4" } }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "dependencies": { - "lie": "3.1.1" - } - }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -23938,7 +24005,8 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/psl": { "version": "1.9.0", @@ -24246,9 +24314,9 @@ } }, "node_modules/react-hook-form": { - "version": "7.54.1", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.54.1.tgz", - "integrity": "sha512-PUNzFwQeQ5oHiiTUO7GO/EJXGEtuun2Y1A59rLnZBBj+vNEOWt/3ERTiG1/zt7dVeJEM+4vDX/7XQ/qanuvPMg==", + "version": "7.54.2", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.54.2.tgz", + "integrity": "sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -24262,22 +24330,22 @@ } }, "node_modules/react-intl": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-7.0.4.tgz", - "integrity": "sha512-WGNfCPNcRQhNAZBN+amz2hfR8Kd7jngScJ4WaRZcsaOWsvva1ciStnUIGj9MvOAxPqTf1D78J5OdRdc3l0wgKQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-7.1.4.tgz", + "integrity": "sha512-deZFfvIR4aJIHmI7t3nn3Q46OuriyNRYPaQ3KM4lg6Fh6huMr7m8fkSzR6593WeUghkh8ZoQlYjUVrQEcrlbrA==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.3.1", - "@formatjs/icu-messageformat-parser": "2.9.7", - "@formatjs/intl": "3.0.4", + "@formatjs/ecma402-abstract": "2.3.2", + "@formatjs/icu-messageformat-parser": "2.11.0", + "@formatjs/intl": "3.1.3", "@types/hoist-non-react-statics": "3", "@types/react": "16 || 17 || 18 || 19", "hoist-non-react-statics": "3", - "intl-messageformat": "10.7.10", + "intl-messageformat": "10.7.14", + "react": "^16.6.0 || 17 || 18 || 19", "tslib": "2" }, "peerDependencies": { - "react": "^16.6.0 || 17 || 18 || 19", "typescript": "5" }, "peerDependenciesMeta": { @@ -24370,9 +24438,9 @@ } }, "node_modules/react-native-device-info": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-14.0.1.tgz", - "integrity": "sha512-/ygggNdYgddjEnWxaNOwrL8bT9u8iJXCdz/CKpQi61SptIMmlCXmn125ey4rr0CTK/YIVpL6kZhVFInnNo+Q3w==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-14.0.2.tgz", + "integrity": "sha512-W1oqu4dC4uLKT/Z4uimRP6birJprWjhMP/AwV9hxGSZ5K3wJ/yb34aQ22sd6HmegQHfT2PmkFs3mj+4uXLE1YQ==", "license": "MIT", "peerDependencies": { "react-native": "*" @@ -24418,7 +24486,9 @@ } }, "node_modules/react-native-mmkv": { - "version": "2.12.1", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/react-native-mmkv/-/react-native-mmkv-2.12.2.tgz", + "integrity": "sha512-6058Aq0p57chPrUutLGe9fYoiDVDNMU2PKV+lLFUJ3GhoHvUrLdsS1PDSCLr00yqzL4WJQ7TTzH+V8cpyrNcfg==", "license": "(MIT AND BSD-3-Clause)", "peerDependencies": { "react": "*", @@ -24438,9 +24508,9 @@ } }, "node_modules/react-native-reanimated": { - "version": "3.16.5", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.16.5.tgz", - "integrity": "sha512-mq/5k14pimkhCeP9XwFJkEr8XufaHqIekum8fqpsn0fcBzbLvyiqfM2LEuBvi0+DTv5Bd2dHmUHkYqGYfkj3Jw==", + "version": "3.16.7", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.16.7.tgz", + "integrity": "sha512-qoUUQOwE1pHlmQ9cXTJ2MX9FQ9eHllopCLiWOkDkp6CER95ZWeXhJCP4cSm6AD4jigL5jHcZf/SkWrg8ttZUsw==", "license": "MIT", "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", @@ -24514,9 +24584,9 @@ } }, "node_modules/react-native-svg": { - "version": "15.10.1", - "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.10.1.tgz", - "integrity": "sha512-Hqz/doQciVFK/Df2v+wsW96oY5jxlta7rZ31KQYo78dlgvAHEaGr6paEOAMvlIruw7EHNQ0Vc1ZmJPJF2kfIPQ==", + "version": "15.11.1", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.11.1.tgz", + "integrity": "sha512-Qmwx/yJKt+AHUr4zjxx/Q69qwKtRfr1+uIfFMQoq3WFRhqU76aL9db1DyvPiY632DAsVGba1pHf92OZPkpjrdQ==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -24879,9 +24949,9 @@ "license": "MIT" }, "node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", @@ -27936,9 +28006,10 @@ "license": "MIT" }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tunnel-agent": { "version": "0.6.0", @@ -29093,9 +29164,9 @@ } }, "node_modules/zustand": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.2.tgz", - "integrity": "sha512-8qNdnJVJlHlrKXi50LDqqUNmUbuBjoKLrYQBnoChIbVph7vni+sY+YpvdjXG9YLd/Bxr6scMcR+rm5H3aSqPaw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.3.tgz", + "integrity": "sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==", "license": "MIT", "engines": { "node": ">=12.20.0" diff --git a/package.json b/package.json index da26289d3..adb87f395 100644 --- a/package.json +++ b/package.json @@ -34,23 +34,23 @@ "@comapeo/ipc": "2.1.0", "@expo-google-fonts/rubik": "0.2.3", "@formatjs/intl-getcanonicallocales": "2.5.4", - "@formatjs/intl-locale": "4.2.8", - "@formatjs/intl-pluralrules": "5.4.1", - "@formatjs/intl-relativetimeformat": "11.4.8", + "@formatjs/intl-locale": "4.2.9", + "@formatjs/intl-pluralrules": "5.4.2", + "@formatjs/intl-relativetimeformat": "11.4.9", "@gorhom/bottom-sheet": "5.0.6", "@osm_borders/maritime_10000m": "1.1.0", "@react-native-community/hooks": "3.0.0", "@react-native-community/netinfo": "11.4.1", - "@react-native-picker/picker": "2.10.2", + "@react-native-picker/picker": "2.11.0", "@react-navigation/bottom-tabs": "6.5.8", "@react-navigation/drawer": "6.6.15", "@react-navigation/native": "6.1.7", "@react-navigation/native-stack": "6.9.13", "@rnmapbox/maps": "10.1.33", - "@sentry/react-native": "5.20.0", - "@tanstack/react-query": "5.62.8", - "@turf/helpers": "7.1.0", - "@turf/random": "7.1.0", + "@sentry/react-native": "6.5.0", + "@tanstack/react-query": "5.64.2", + "@turf/helpers": "7.2.0", + "@turf/random": "7.2.0", "@types/luxon": "3.4.2", "assert": "2.1.0", "buffer": "6.0.3", @@ -84,28 +84,28 @@ "nanoid": "5.0.9", "nodejs-mobile-react-native": "18.20.4", "react": "18.2.0", - "react-hook-form": "7.54.1", - "react-intl": "7.0.4", + "react-hook-form": "7.54.2", + "react-intl": "7.1.4", "react-native": "0.73.6", "react-native-android-open-settings": "1.3.0", "react-native-confirmation-code-field": "7.4.0", - "react-native-device-info": "14.0.1", + "react-native-device-info": "14.0.2", "react-native-gesture-handler": "2.21.2", "react-native-indicators": "0.17.0", "react-native-linear-gradient": "2.8.3", - "react-native-mmkv": "2.12.1", + "react-native-mmkv": "2.12.2", "react-native-progress": "5.0.1", - "react-native-reanimated": "3.16.5", + "react-native-reanimated": "3.16.7", "react-native-restart": "0.0.27", "react-native-safe-area-context": "4.14.0", "react-native-scale-bar": "1.0.6", "react-native-screens": "3.29.0", "react-native-share": "12.0.3", - "react-native-svg": "15.10.1", + "react-native-svg": "15.11.1", "react-native-url-polyfill": "2.0.0", "react-native-vector-icons": "10.2.0", "react-native-zeroconf": "0.13.8", - "readable-stream": "4.5.2", + "readable-stream": "4.7.0", "rpc-reflector": "1.3.11", "start-stop-state-machine": "1.2.0", "tiny-typed-emitter": "2.1.0", @@ -113,7 +113,7 @@ "utm": "1.1.1", "valibot": "0.42.1", "validate-color": "2.2.4", - "zustand": "5.0.2" + "zustand": "5.0.3" }, "devDependencies": { "@babel/core": "7.25.7", @@ -134,7 +134,7 @@ "@tanstack/eslint-plugin-query": "5.62.1", "@testing-library/react-native": "12.4.3", "@types/debug": "4.1.12", - "@types/geojson": "7946.0.14", + "@types/geojson": "7946.0.15", "@types/jest": "29.5.13", "@types/lodash.isequal": "4.5.6", "@types/node": "20.8.4", diff --git a/src/frontend/hooks/server/remoteDetectionAlert.ts b/src/frontend/hooks/server/remoteDetectionAlert.ts new file mode 100644 index 000000000..0eb76503d --- /dev/null +++ b/src/frontend/hooks/server/remoteDetectionAlert.ts @@ -0,0 +1,15 @@ +import {useSuspenseQuery} from '@tanstack/react-query'; +import {useActiveProject} from '../../contexts/ActiveProjectContext'; + +export const REMOTE_DETECTION_ALERTS_KEY = 'alerts'; + +export function useRemoteDetectionAlerts() { + const {projectId, projectApi} = useActiveProject(); + + return useSuspenseQuery({ + queryFn: async () => { + return await projectApi.remoteDetectionAlert.getMany(); + }, + queryKey: [REMOTE_DETECTION_ALERTS_KEY, projectId], + }); +} diff --git a/src/frontend/screens/MapScreen/ObservationMapLayer.tsx b/src/frontend/screens/MapScreen/MapLayers/ObservationMapLayer.tsx similarity index 82% rename from src/frontend/screens/MapScreen/ObservationMapLayer.tsx rename to src/frontend/screens/MapScreen/MapLayers/ObservationMapLayer.tsx index 44074f511..f13e1821e 100644 --- a/src/frontend/screens/MapScreen/ObservationMapLayer.tsx +++ b/src/frontend/screens/MapScreen/MapLayers/ObservationMapLayer.tsx @@ -1,13 +1,13 @@ import React from 'react'; import MapboxGL from '@rnmapbox/maps'; -import {useObservations} from '../../hooks/server/observations'; -import {usePresetsQuery} from '../../hooks/server/presets'; -import {useNavigationFromHomeTabs} from '../../hooks/useNavigationWithTypes'; +import {useObservations} from '../../../hooks/server/observations'; +import {usePresetsQuery} from '../../../hooks/server/presets'; +import {useNavigationFromHomeTabs} from '../../../hooks/useNavigationWithTypes'; import { createObservationMapLayerStyle, observationsToFeatureCollection, -} from '../../lib/ObservationMapLayer.ts'; +} from '../../../lib/ObservationMapLayer'; export const ObservationMapLayer = () => { const {data: observations} = useObservations(); diff --git a/src/frontend/screens/MapScreen/MapLayers/RemoteDetectionAlertsLayer.tsx b/src/frontend/screens/MapScreen/MapLayers/RemoteDetectionAlertsLayer.tsx new file mode 100644 index 000000000..02e1dade3 --- /dev/null +++ b/src/frontend/screens/MapScreen/MapLayers/RemoteDetectionAlertsLayer.tsx @@ -0,0 +1,133 @@ +import React from 'react'; +import MapboxGL from '@rnmapbox/maps'; + +import {RemoteDetectionAlert} from '@comapeo/schema'; +import {FeatureCollection} from 'geojson'; +import {useRemoteDetectionAlerts} from '../../../hooks/server/remoteDetectionAlert'; + +const LABEL_FILTER = [ + 'all', + [ + 'in', + '$type', + 'Polygon', + 'LineString', + 'Point', + 'MultiLineString', + 'MultiPolygon', + 'MultiPoint', + ], + ['has', 'alertType'], + ['has', 'monthDetec'], + ['has', 'yearDetec'], +]; + +const POINT_FILTER = ['in', '$type', 'Point', 'MultiPoint']; + +const LINESTRING_FILTER = ['in', '$type', 'LineString', 'MultiLineString']; + +const POLYGON_STROKE_FILTER = ['in', '$type', 'Polygon', 'MultiPolygon']; + +const POLYGON_FILL_FILTER = ['in', '$type', 'Polygon', 'MultiPolygon']; + +export const RemoteDetectionAlertsMapLayer = () => { + const {data: alerts} = useRemoteDetectionAlerts(); + + if (!alerts) { + return null; + } + + return ( + + {/* Symbol Layer for Labels */} + + + {/* Circle Layer for Points */} + + + {/* Line Layer for LineStrings and MultiLineStrings */} + + + {/* Line Layer for Polygon Stroke */} + + + {/* Fill Layer for Polygon Fill */} + + + ); +}; + +function convertRemoteDetectionAlertsToFeatures( + alerts: RemoteDetectionAlert[], +): FeatureCollection { + return { + type: 'FeatureCollection', + features: alerts.map(alert => { + const dateStart = new Date(alert.detectionDateStart); + return { + type: 'Feature', + geometry: alert.geometry, + properties: { + alertType: alert.metadata.alert_type, + detectionDateStart: alert.detectionDateStart, + detectionDateEnd: alert.detectionDateEnd, + sourceId: alert.sourceId, + monthDetec: dateStart.getMonth() + 1, + yearDetec: dateStart.getFullYear(), + }, + }; + }), + }; +} diff --git a/src/frontend/screens/MapScreen/TracksMapLayer.tsx b/src/frontend/screens/MapScreen/MapLayers/TracksMapLayer.tsx similarity index 90% rename from src/frontend/screens/MapScreen/TracksMapLayer.tsx rename to src/frontend/screens/MapScreen/MapLayers/TracksMapLayer.tsx index 9c6f986c4..1e5803833 100644 --- a/src/frontend/screens/MapScreen/TracksMapLayer.tsx +++ b/src/frontend/screens/MapScreen/MapLayers/TracksMapLayer.tsx @@ -3,11 +3,11 @@ import * as React from 'react'; import {StyleSheet} from 'react-native'; import {FeatureCollection} from 'geojson'; -import {BLACK} from '../../lib/styles'; -import {useTracks} from '../../hooks/server/track'; +import {BLACK} from '../../../lib/styles'; +import {useTracks} from '../../../hooks/server/track'; import {Track} from '@comapeo/schema'; import {OnPressEvent} from '@rnmapbox/maps/lib/typescript/src/types/OnPressEvent'; -import {useNavigationFromHomeTabs} from '../../hooks/useNavigationWithTypes'; +import {useNavigationFromHomeTabs} from '../../../hooks/useNavigationWithTypes'; export const TracksMapLayer = () => { const {data: tracks} = useTracks(); diff --git a/src/frontend/screens/MapScreen/index.tsx b/src/frontend/screens/MapScreen/index.tsx index 24d78330f..8289f49c8 100644 --- a/src/frontend/screens/MapScreen/index.tsx +++ b/src/frontend/screens/MapScreen/index.tsx @@ -8,7 +8,7 @@ import { } from '../../sharedComponents/icons'; import {View, StyleSheet} from 'react-native'; -import {ObservationMapLayer} from './ObservationMapLayer'; +import {ObservationMapLayer} from './MapLayers/ObservationMapLayer'; import {AddButton} from '../../sharedComponents/AddButton'; import {useNavigationFromHomeTabs} from '../../hooks/useNavigationWithTypes'; import {useDraftObservation} from '../../hooks/useDraftObservation'; @@ -20,9 +20,10 @@ import {GPSPermissionsModal} from './GPSPermissions/GPSPermissionsModal'; import {CurrentTrackMapLayer} from './CurrentTrack/CurrrentTrackMapLayer'; import {UserLocation} from './UserLocation'; import {useSharedLocationContext} from '../../contexts/SharedLocationContext'; -import {useMapStyleJsonUrl} from '../../hooks/server/maps.ts'; -import {TracksMapLayer} from './TracksMapLayer'; -import {assert} from '../../lib/assert.ts'; +import {useMapStyleJsonUrl} from '../../hooks/server/maps'; +import {TracksMapLayer} from './MapLayers/TracksMapLayer'; +import {assert} from '../../lib/assert'; +import {RemoteDetectionAlertsMapLayer} from './MapLayers/RemoteDetectionAlertsLayer'; // This is the default zoom used when the map first loads, and also the zoom // that the map will zoom to if the user clicks the "Locate" button and the @@ -114,6 +115,7 @@ export const MapScreen = () => { {isFinishedLoading && ( <> + diff --git a/src/frontend/screens/Sync/ProjectSyncDisplay.tsx b/src/frontend/screens/Sync/ProjectSyncDisplay.tsx index 3cddd524d..0cc862d55 100644 --- a/src/frontend/screens/Sync/ProjectSyncDisplay.tsx +++ b/src/frontend/screens/Sync/ProjectSyncDisplay.tsx @@ -37,6 +37,7 @@ import { import {ScreenContentWithDock} from '../../sharedComponents/ScreenContentWithDock'; import {HeaderText} from '../../sharedComponents/Text/HeaderText'; import {BodyText} from '../../sharedComponents/Text/BodyText'; +import {REMOTE_DETECTION_ALERTS_KEY} from '../../hooks/server/remoteDetectionAlert'; const m = defineMessages({ devicesFound: { @@ -156,6 +157,10 @@ export const ProjectSyncDisplay = ({ } // TODO: All queries associated with project should be invalidated queryClient.invalidateQueries({queryKey: [OBSERVATION_KEY, projectId]}); + + queryClient.invalidateQueries({ + queryKey: [REMOTE_DETECTION_ALERTS_KEY, projectId], + }); }); return () => {