From 36783184c3cbfabf4617976ba53444165f0c62ca Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Mon, 22 Apr 2024 11:57:49 -0500 Subject: [PATCH 01/11] chore: fix misspelled "border color" prop (#281) `boderColor` should be `borderColor`. --- .../Settings/CreateOrJoinProject/CreateProject/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/screens/Settings/CreateOrJoinProject/CreateProject/index.tsx b/src/frontend/screens/Settings/CreateOrJoinProject/CreateProject/index.tsx index 0877e7c14..42730e259 100644 --- a/src/frontend/screens/Settings/CreateOrJoinProject/CreateProject/index.tsx +++ b/src/frontend/screens/Settings/CreateOrJoinProject/CreateProject/index.tsx @@ -147,6 +147,6 @@ const styles = StyleSheet.create({ padding: 20, borderTopWidth: 1, borderBottomWidth: 1, - boderColor: LIGHT_GREY, + borderColor: LIGHT_GREY, }, }); From cd19e86112ff8d7d8d8c6a87d36600b96604c3d8 Mon Sep 17 00:00:00 2001 From: ErikSin <67773827+ErikSin@users.noreply.github.com> Date: Mon, 22 Apr 2024 10:10:11 -0700 Subject: [PATCH 02/11] chore: added flow for invitee to decline project invite * chore: create invite declined screen * chore: translations * chore: remove unscoped import * chore: translations * chore: add logic * chore: remove console.log * chore: styling * chore: pr fixes --- messages/en.json | 9 +++ .../Navigation/ScreenGroups/AppScreens.tsx | 32 ++++---- .../YourTeam/InviteDeclined.tsx | 77 +++++++++++++++++++ .../YourTeam/ReviewAndInvite/index.tsx | 9 ++- 4 files changed, 111 insertions(+), 16 deletions(-) create mode 100644 src/frontend/screens/Settings/ProjectSettings/YourTeam/InviteDeclined.tsx diff --git a/messages/en.json b/messages/en.json index 8c9e85e20..6f74e89b9 100644 --- a/messages/en.json +++ b/messages/en.json @@ -564,6 +564,15 @@ "screens.Settings.CreateOrJoinProject.whatIsAProject": { "message": "What is a Project" }, + "screens.Settings.YourTeam.InviteDeclined": { + "message": "Invitation Declined" + }, + "screens.Settings.YourTeam.close": { + "message": "Close" + }, + "screens.Settings.YourTeam.inviteDeclinedDes": { + "message": "This device has declined your invitation. They have not joined the project." + }, "screens.Settings.aboutMapeo": { "description": "Primary text for 'About Mapeo' link (version info)", "message": "About Mapeo" diff --git a/src/frontend/Navigation/ScreenGroups/AppScreens.tsx b/src/frontend/Navigation/ScreenGroups/AppScreens.tsx index 6c4de66de..fdce08b25 100644 --- a/src/frontend/Navigation/ScreenGroups/AppScreens.tsx +++ b/src/frontend/Navigation/ScreenGroups/AppScreens.tsx @@ -53,12 +53,20 @@ import { import {useLocation} from '../../hooks/useLocation'; import {useLocationProviderStatus} from '../../hooks/useLocationProviderStatus'; import {getLocationStatus} from '../../lib/utils'; +import {InviteDeclined} from '../../screens/Settings/ProjectSettings/YourTeam/InviteDeclined'; export type HomeTabsList = { Map: undefined; Camera: undefined; }; +type InviteProps = { + name: string; + deviceType: DeviceType; + deviceId: string; + role: DeviceRole; +}; + export type AppList = { Home: NavigatorScreenParams; GpsModal: undefined; @@ -116,18 +124,9 @@ export type AppList = { YourTeam: undefined; SelectDevice: undefined; SelectInviteeRole: {name: string; deviceType: DeviceType; deviceId: string}; - ReviewAndInvite: { - name: string; - deviceType: DeviceType; - deviceId: string; - role: DeviceRole; - }; - InviteAccepted: { - name: string; - deviceType: DeviceType; - deviceId: string; - role: DeviceRole; - }; + ReviewAndInvite: InviteProps; + InviteAccepted: InviteProps; + InviteDeclined: InviteProps; DeviceNameDisplay: undefined; DeviceNameEdit: undefined; }; @@ -197,9 +196,9 @@ export const createDefaultScreenGroup = ( options={props => { const observationId = props.route.params?.observationId; return { - headerLeft: props => ( + headerLeft: headerProp => ( ), @@ -336,5 +335,10 @@ export const createDefaultScreenGroup = ( component={GpsModal} options={createGpsModalNavigationOptions({intl})} /> + ); diff --git a/src/frontend/screens/Settings/ProjectSettings/YourTeam/InviteDeclined.tsx b/src/frontend/screens/Settings/ProjectSettings/YourTeam/InviteDeclined.tsx new file mode 100644 index 000000000..46ecd998b --- /dev/null +++ b/src/frontend/screens/Settings/ProjectSettings/YourTeam/InviteDeclined.tsx @@ -0,0 +1,77 @@ +import * as React from 'react'; +import {BackHandler, StyleSheet, View} from 'react-native'; +import {Button} from '../../../../sharedComponents/Button'; +import ErrorIcon from '../../../../images/Error.svg'; +import {defineMessages, useIntl} from 'react-intl'; +import {Text} from '../../../../sharedComponents/Text'; +import {DeviceNameWithIcon} from '../../../../sharedComponents/DeviceNameWithIcon'; +import {NativeRootNavigationProps} from '../../../../sharedTypes'; +import {useFocusEffect} from '@react-navigation/native'; + +const m = defineMessages({ + inviteDeclined: { + id: 'screens.Settings.YourTeam.InviteDeclined', + defaultMessage: 'Invitation Declined', + }, + inviteDeclinedDes: { + id: 'screens.Settings.YourTeam.inviteDeclinedDes', + defaultMessage: + 'This device has declined your invitation. They have not joined the project.', + }, + close: { + id: 'screens.Settings.YourTeam.close', + defaultMessage: 'Close', + }, +}); + +export const InviteDeclined = ({ + navigation, + route, +}: NativeRootNavigationProps<'InviteDeclined'>) => { + const {formatMessage} = useIntl(); + const {role, ...deviceInfo} = route.params; + + useFocusEffect( + React.useCallback(() => { + const subscription = BackHandler.addEventListener( + 'hardwareBackPress', + () => true, + ); + + return () => subscription.remove(); + }, []), + ); + + return ( + + + + + {formatMessage(m.inviteDeclined)} + + + {formatMessage(m.inviteDeclinedDes)} + + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + padding: 20, + paddingTop: 80, + alignItems: 'center', + justifyContent: 'space-between', + flex: 1, + }, +}); diff --git a/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx b/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx index 7d112ea5c..ed0dca8c6 100644 --- a/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx +++ b/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx @@ -37,11 +37,16 @@ export const ReviewAndInvite: NativeNavigationComponent<'ReviewAndInvite'> = ({ .then(val => { if (val === 'ACCEPT') { queryClient.invalidateQueries({queryKey: ['projectMembers']}); - navigation.navigate('InviteAccepted', {...route.params}); + navigation.navigate('InviteAccepted', route.params); + return; + } + + if (val === 'REJECT') { + navigation.navigate('InviteDeclined', route.params); return; } }) - .catch(err => { + .catch(() => { openSheet(); }); } From e76aef377fd241b080d6ee185391afb1ee31bf7b Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Mon, 22 Apr 2024 12:43:03 -0500 Subject: [PATCH 03/11] chore: update Mapeo deps (#259) This updates `@mapeo/core`, `@mapeo/schema`, and `@mapeo/ipc`. --- package-lock.json | 200 ++++-------------- package.json | 6 +- src/backend/package-lock.json | 184 +++++++++------- src/backend/package.json | 4 +- ....7+001+fix-quickbit-dynamic-require.patch} | 0 ...sm-shim+0.1.4+001+fix-shim-insertion.patch | 49 +++++ src/backend/patches/README.md | 8 +- 7 files changed, 212 insertions(+), 239 deletions(-) rename src/backend/patches/{@mapeo+core+9.0.0-alpha.6+001+fix-quickbit-dynamic-require.patch => @mapeo+core+9.0.0-alpha.7+001+fix-quickbit-dynamic-require.patch} (100%) create mode 100644 src/backend/patches/@rollup+plugin-esm-shim+0.1.4+001+fix-shim-insertion.patch diff --git a/package-lock.json b/package-lock.json index d877d02be..ae9057241 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@formatjs/intl-pluralrules": "^5.2.4", "@formatjs/intl-relativetimeformat": "^11.2.4", "@gorhom/bottom-sheet": "^4.5.1", - "@mapeo/ipc": "^0.2.0", + "@mapeo/ipc": "^0.3.0", "@react-native-community/hooks": "^2.8.0", "@react-native-community/netinfo": "11.1.0", "@react-native-picker/picker": "2.6.1", @@ -75,8 +75,8 @@ "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@formatjs/cli": "^6.2.0", - "@mapeo/core": "^9.0.0-alpha.6", - "@mapeo/schema": "3.0.0-next.13", + "@mapeo/core": "9.0.0-alpha.7", + "@mapeo/schema": "3.0.0-next.15", "@react-native-community/cli": "^12.3.6", "@react-native/babel-preset": "^0.73.21", "@react-native/eslint-config": "^0.73.2", @@ -5360,9 +5360,9 @@ } }, "node_modules/@mapeo/core": { - "version": "9.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/@mapeo/core/-/core-9.0.0-alpha.6.tgz", - "integrity": "sha512-b1eHOmgVbtE02YAMR/kgfgHX5Mt//4gV290pgC+dPpZqccAgDIdBlaviJKRIGHCM16ZETdilx1NvSH+PJHYYGA==", + "version": "9.0.0-alpha.7", + "resolved": "https://registry.npmjs.org/@mapeo/core/-/core-9.0.0-alpha.7.tgz", + "integrity": "sha512-8DXZPKtMMVLTgZX3F8Eew3KnLB6bmf9v7uda9TvMX14YM9np4G9IiYafPS/X7kFNvr7h823wMzkRotNnHZ3byg==", "hasInstallScript": true, "dependencies": { "@digidem/types": "^2.2.0", @@ -5372,7 +5372,7 @@ "@fastify/type-provider-typebox": "^3.3.0", "@hyperswarm/secret-stream": "^6.1.2", "@mapeo/crypto": "1.0.0-alpha.10", - "@mapeo/schema": "3.0.0-next.14", + "@mapeo/schema": "3.0.0-next.15", "@mapeo/sqlite-indexer": "1.0.0-alpha.8", "@sinclair/typebox": "^0.29.6", "b4a": "^1.6.3", @@ -5382,7 +5382,7 @@ "compact-encoding": "^2.12.0", "corestore": "^6.8.4", "debug": "^4.3.4", - "drizzle-orm": "0.28.2", + "drizzle-orm": "^0.30.8", "fastify": ">= 4", "fastify-plugin": "^4.5.0", "hyperblobs": "2.3.0", @@ -5407,75 +5407,15 @@ "throttle-debounce": "^5.0.0", "tiny-typed-emitter": "^2.1.0", "type-fest": "^4.5.0", - "undici": "^6.7.0", + "undici": "^6.13.0", "varint": "^6.0.0", "yauzl-promise": "^4.0.0" } }, - "node_modules/@mapeo/core/node_modules/@mapeo/schema": { - "version": "3.0.0-next.14", - "resolved": "https://registry.npmjs.org/@mapeo/schema/-/schema-3.0.0-next.14.tgz", - "integrity": "sha512-i0AUHbwMxUyggk6SDURxLPXOVCWlLAszSKUYm2fviQXYrGNcUALniw8JBn3x5jzfCFW1xrTUNhIcnt4IuF95mA==", - "dependencies": { - "@json-schema-tools/dereferencer": "^1.6.1", - "ajv": "^8.12.0", - "ajv-formats": "^2.1.1", - "compact-encoding": "^2.12.0", - "glob": "^10.3.3", - "protobufjs": "^7.2.5", - "type-fest": "^4.1.0", - "typedoc": "^0.24.8", - "typedoc-plugin-markdown": "^3.15.4" - } - }, "node_modules/@mapeo/core/node_modules/@sinclair/typebox": { "version": "0.29.6", "license": "MIT" }, - "node_modules/@mapeo/core/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@mapeo/core/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@mapeo/core/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@mapeo/core/node_modules/hypercore": { "version": "10.17.0", "license": "MIT", @@ -5500,11 +5440,6 @@ "z32": "^1.0.0" } }, - "node_modules/@mapeo/core/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/@mapeo/core/node_modules/mime": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", @@ -5519,20 +5454,6 @@ "node": ">=16" } }, - "node_modules/@mapeo/core/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@mapeo/core/node_modules/p-timeout": { "version": "6.1.2", "license": "MIT", @@ -5543,50 +5464,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@mapeo/core/node_modules/typedoc": { - "version": "0.24.8", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.8.tgz", - "integrity": "sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==", - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x" - } - }, - "node_modules/@mapeo/core/node_modules/typedoc-plugin-markdown": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.17.1.tgz", - "integrity": "sha512-QzdU3fj0Kzw2XSdoL15ExLASt2WPqD7FbLeaqwT70+XjKyTshBnUlQA5nNREO1C2P8Uen0CDjsBLMsCQ+zd0lw==", - "dependencies": { - "handlebars": "^4.7.7" - }, - "peerDependencies": { - "typedoc": ">=0.24.0" - } - }, - "node_modules/@mapeo/core/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/@mapeo/core/node_modules/varint": { "version": "6.0.0", "license": "MIT" @@ -5609,9 +5486,9 @@ } }, "node_modules/@mapeo/ipc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@mapeo/ipc/-/ipc-0.2.0.tgz", - "integrity": "sha512-qAkKlwpIJw0Srr9pR4w9pbluIADzkMHpRbOuxSYY5+fonmNuEc8esRXWwvaL4SeBEIoUsuIOpWuEDOIoYlRk6Q==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@mapeo/ipc/-/ipc-0.3.0.tgz", + "integrity": "sha512-8OdARTEBgCFCXrcJqwPuz397i10MiCIGG1Y9SSZ7myzN2o72lbuVAu7SX/D2gbHrVVD2tuia9EwaDBVsznas2w==", "dependencies": { "eventemitter3": "^5.0.1", "p-defer": "^4.0.0", @@ -5621,13 +5498,13 @@ "node": ">=18.17.1" }, "peerDependencies": { - "@mapeo/core": "9.0.0-alpha.6" + "@mapeo/core": "9.0.0-alpha.7" } }, "node_modules/@mapeo/schema": { - "version": "3.0.0-next.13", - "dev": true, - "license": "MIT", + "version": "3.0.0-next.15", + "resolved": "https://registry.npmjs.org/@mapeo/schema/-/schema-3.0.0-next.15.tgz", + "integrity": "sha512-7g5GLkDhZLeStPIkVkTqElidng9cKtzNDJSQww5+Z7PWpkniMLDJYLki9TchEJEmPoAgwxgULNBiC69cMnNo9Q==", "dependencies": { "@json-schema-tools/dereferencer": "^1.6.1", "ajv": "^8.12.0", @@ -5642,7 +5519,6 @@ }, "node_modules/@mapeo/schema/node_modules/ajv": { "version": "8.12.0", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -5657,7 +5533,6 @@ }, "node_modules/@mapeo/schema/node_modules/brace-expansion": { "version": "2.0.1", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -5665,7 +5540,6 @@ }, "node_modules/@mapeo/schema/node_modules/glob": { "version": "10.3.9", - "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -5686,12 +5560,10 @@ }, "node_modules/@mapeo/schema/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, "license": "MIT" }, "node_modules/@mapeo/schema/node_modules/minimatch": { "version": "9.0.3", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -5705,7 +5577,6 @@ }, "node_modules/@mapeo/schema/node_modules/typedoc": { "version": "0.24.8", - "dev": true, "license": "Apache-2.0", "dependencies": { "lunr": "^2.3.9", @@ -5727,7 +5598,6 @@ "version": "3.17.1", "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.17.1.tgz", "integrity": "sha512-QzdU3fj0Kzw2XSdoL15ExLASt2WPqD7FbLeaqwT70+XjKyTshBnUlQA5nNREO1C2P8Uen0CDjsBLMsCQ+zd0lw==", - "dev": true, "dependencies": { "handlebars": "^4.7.7" }, @@ -5739,7 +5609,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", - "dev": true, "peer": true, "bin": { "tsc": "bin/tsc", @@ -11657,26 +11526,33 @@ } }, "node_modules/drizzle-orm": { - "version": "0.28.2", - "license": "Apache-2.0", + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.8.tgz", + "integrity": "sha512-9pBJA0IjnpPpzZ6s9jlS1CQAbKoBmbn2GJesPhXaVblAA/joOJ4AWWevYcqvLGj9SvThBAl7WscN8Zwgg5mnTw==", "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=3", + "@electric-sql/pglite": ">=0.1.1", "@libsql/client": "*", "@neondatabase/serverless": ">=0.1", + "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1", "@types/better-sqlite3": "*", "@types/pg": "*", + "@types/react": ">=18", "@types/sql.js": "*", - "@vercel/postgres": "*", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", + "expo-sqlite": ">=13.2.0", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", + "react": ">=18", "sql.js": ">=1", "sqlite3": ">=5" }, @@ -11687,12 +11563,18 @@ "@cloudflare/workers-types": { "optional": true }, + "@electric-sql/pglite": { + "optional": true + }, "@libsql/client": { "optional": true }, "@neondatabase/serverless": { "optional": true }, + "@op-engineering/op-sqlite": { + "optional": true + }, "@opentelemetry/api": { "optional": true }, @@ -11705,18 +11587,27 @@ "@types/pg": { "optional": true }, + "@types/react": { + "optional": true + }, "@types/sql.js": { "optional": true }, "@vercel/postgres": { "optional": true }, + "@xata.io/client": { + "optional": true + }, "better-sqlite3": { "optional": true }, "bun-types": { "optional": true }, + "expo-sqlite": { + "optional": true + }, "knex": { "optional": true }, @@ -11732,6 +11623,9 @@ "postgres": { "optional": true }, + "react": { + "optional": true + }, "sql.js": { "optional": true }, @@ -23296,9 +23190,9 @@ } }, "node_modules/undici": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.1.tgz", - "integrity": "sha512-kSzmWrOx3XBKTgPm4Tal8Hyl3yf+hzlA00SAf4goxv8LZYafKmS6gJD/7Fe5HH/DMNiFTRXvkwhLo7mUn5fuQQ==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", + "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", "engines": { "node": ">=18.0" } diff --git a/package.json b/package.json index a81acffd2..5ec032dd8 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@formatjs/intl-pluralrules": "^5.2.4", "@formatjs/intl-relativetimeformat": "^11.2.4", "@gorhom/bottom-sheet": "^4.5.1", - "@mapeo/ipc": "^0.2.0", + "@mapeo/ipc": "0.3.0", "@react-native-community/hooks": "^2.8.0", "@react-native-community/netinfo": "11.1.0", "@react-native-picker/picker": "2.6.1", @@ -88,8 +88,8 @@ "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@formatjs/cli": "^6.2.0", - "@mapeo/core": "^9.0.0-alpha.6", - "@mapeo/schema": "3.0.0-next.13", + "@mapeo/core": "9.0.0-alpha.7", + "@mapeo/schema": "3.0.0-next.15", "@react-native-community/cli": "^12.3.6", "@react-native/babel-preset": "^0.73.21", "@react-native/eslint-config": "^0.73.2", diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index bd7ce4ef4..7404de6c8 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -10,8 +10,8 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@mapeo/core": "^9.0.0-alpha.6", - "@mapeo/ipc": "^0.2.0", + "@mapeo/core": "9.0.0-alpha.7", + "@mapeo/ipc": "0.3.0", "debug": "^4.3.4" }, "devDependencies": { @@ -450,12 +450,12 @@ "integrity": "sha512-BYY7IavBjwsWWSmVcMz2A9mKiDD9RvacnsItgmy1xV8cmgbtxFfKmKMtkVpD7pYtkx4mIW4800yZBXueVFIWPw==" }, "node_modules/@json-schema-tools/dereferencer": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@json-schema-tools/dereferencer/-/dereferencer-1.6.1.tgz", - "integrity": "sha512-+h+K/H3pWoJVztTuz1ycTUc0ai/xH5eLZLurE4jQpqYwPcPvsXtFfbRxDhvxrrpjjg4PV3HmEjjORIEQPO4Dmw==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@json-schema-tools/dereferencer/-/dereferencer-1.6.2.tgz", + "integrity": "sha512-cwvlTjPa92oQEMHsLBLNcTVAc4fmjFPXjPxOnYrnc1IDVSJsy1BbhfNfSUpVmIAOiXnygrQb488gbOxAj+tksg==", "dependencies": { "@json-schema-tools/reference-resolver": "^1.2.5", - "@json-schema-tools/traverse": "^1.10.0", + "@json-schema-tools/traverse": "^1.10.3", "fast-safe-stringify": "^2.1.1" } }, @@ -482,9 +482,9 @@ } }, "node_modules/@mapeo/core": { - "version": "9.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/@mapeo/core/-/core-9.0.0-alpha.6.tgz", - "integrity": "sha512-b1eHOmgVbtE02YAMR/kgfgHX5Mt//4gV290pgC+dPpZqccAgDIdBlaviJKRIGHCM16ZETdilx1NvSH+PJHYYGA==", + "version": "9.0.0-alpha.7", + "resolved": "https://registry.npmjs.org/@mapeo/core/-/core-9.0.0-alpha.7.tgz", + "integrity": "sha512-8DXZPKtMMVLTgZX3F8Eew3KnLB6bmf9v7uda9TvMX14YM9np4G9IiYafPS/X7kFNvr7h823wMzkRotNnHZ3byg==", "hasInstallScript": true, "dependencies": { "@digidem/types": "^2.2.0", @@ -494,7 +494,7 @@ "@fastify/type-provider-typebox": "^3.3.0", "@hyperswarm/secret-stream": "^6.1.2", "@mapeo/crypto": "1.0.0-alpha.10", - "@mapeo/schema": "3.0.0-next.14", + "@mapeo/schema": "3.0.0-next.15", "@mapeo/sqlite-indexer": "1.0.0-alpha.8", "@sinclair/typebox": "^0.29.6", "b4a": "^1.6.3", @@ -504,7 +504,7 @@ "compact-encoding": "^2.12.0", "corestore": "^6.8.4", "debug": "^4.3.4", - "drizzle-orm": "0.28.2", + "drizzle-orm": "^0.30.8", "fastify": ">= 4", "fastify-plugin": "^4.5.0", "hyperblobs": "2.3.0", @@ -529,7 +529,7 @@ "throttle-debounce": "^5.0.0", "tiny-typed-emitter": "^2.1.0", "type-fest": "^4.5.0", - "undici": "^6.7.0", + "undici": "^6.13.0", "varint": "^6.0.0", "yauzl-promise": "^4.0.0" } @@ -628,9 +628,9 @@ } }, "node_modules/@mapeo/ipc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@mapeo/ipc/-/ipc-0.2.0.tgz", - "integrity": "sha512-qAkKlwpIJw0Srr9pR4w9pbluIADzkMHpRbOuxSYY5+fonmNuEc8esRXWwvaL4SeBEIoUsuIOpWuEDOIoYlRk6Q==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@mapeo/ipc/-/ipc-0.3.0.tgz", + "integrity": "sha512-8OdARTEBgCFCXrcJqwPuz397i10MiCIGG1Y9SSZ7myzN2o72lbuVAu7SX/D2gbHrVVD2tuia9EwaDBVsznas2w==", "dependencies": { "eventemitter3": "^5.0.1", "p-defer": "^4.0.0", @@ -640,13 +640,13 @@ "node": ">=18.17.1" }, "peerDependencies": { - "@mapeo/core": "9.0.0-alpha.6" + "@mapeo/core": "9.0.0-alpha.7" } }, "node_modules/@mapeo/schema": { - "version": "3.0.0-next.14", - "resolved": "https://registry.npmjs.org/@mapeo/schema/-/schema-3.0.0-next.14.tgz", - "integrity": "sha512-i0AUHbwMxUyggk6SDURxLPXOVCWlLAszSKUYm2fviQXYrGNcUALniw8JBn3x5jzfCFW1xrTUNhIcnt4IuF95mA==", + "version": "3.0.0-next.15", + "resolved": "https://registry.npmjs.org/@mapeo/schema/-/schema-3.0.0-next.15.tgz", + "integrity": "sha512-7g5GLkDhZLeStPIkVkTqElidng9cKtzNDJSQww5+Z7PWpkniMLDJYLki9TchEJEmPoAgwxgULNBiC69cMnNo9Q==", "dependencies": { "@json-schema-tools/dereferencer": "^1.6.1", "ajv": "^8.12.0", @@ -660,15 +660,15 @@ } }, "node_modules/@mapeo/schema/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" @@ -681,9 +681,9 @@ } }, "node_modules/@mapeo/schema/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -695,9 +695,9 @@ } }, "node_modules/@mapeo/schema/node_modules/type-fest": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.14.0.tgz", - "integrity": "sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", + "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", "engines": { "node": ">=16" }, @@ -2001,27 +2001,33 @@ } }, "node_modules/drizzle-orm": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.28.2.tgz", - "integrity": "sha512-QRyuzvpJr7GE6LpvZ/sg2nAKNg2if1uGGkgFTiXn4auuYId//vVJe6HBsDTktfKfcaDGzIYos+/f+PS5EkBmrg==", + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.8.tgz", + "integrity": "sha512-9pBJA0IjnpPpzZ6s9jlS1CQAbKoBmbn2GJesPhXaVblAA/joOJ4AWWevYcqvLGj9SvThBAl7WscN8Zwgg5mnTw==", "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=3", + "@electric-sql/pglite": ">=0.1.1", "@libsql/client": "*", "@neondatabase/serverless": ">=0.1", + "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1", "@types/better-sqlite3": "*", "@types/pg": "*", + "@types/react": ">=18", "@types/sql.js": "*", - "@vercel/postgres": "*", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", + "expo-sqlite": ">=13.2.0", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", + "react": ">=18", "sql.js": ">=1", "sqlite3": ">=5" }, @@ -2032,12 +2038,18 @@ "@cloudflare/workers-types": { "optional": true }, + "@electric-sql/pglite": { + "optional": true + }, "@libsql/client": { "optional": true }, "@neondatabase/serverless": { "optional": true }, + "@op-engineering/op-sqlite": { + "optional": true + }, "@opentelemetry/api": { "optional": true }, @@ -2050,18 +2062,27 @@ "@types/pg": { "optional": true }, + "@types/react": { + "optional": true + }, "@types/sql.js": { "optional": true }, "@vercel/postgres": { "optional": true }, + "@xata.io/client": { + "optional": true + }, "better-sqlite3": { "optional": true }, "bun-types": { "optional": true }, + "expo-sqlite": { + "optional": true + }, "knex": { "optional": true }, @@ -2077,6 +2098,9 @@ "postgres": { "optional": true }, + "react": { + "optional": true + }, "sql.js": { "optional": true }, @@ -4003,11 +4027,11 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { @@ -5296,9 +5320,9 @@ } }, "node_modules/undici": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.2.tgz", - "integrity": "sha512-HcVuBy7ACaDejIMdwCzAvO22OsiE6ir6ziTIr9kAE0vB+PheVe29ZvRN8p7FXCO2uZHTjEoUs5bPiFpuc/hwwQ==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", + "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", "engines": { "node": ">=18.0" } @@ -5896,12 +5920,12 @@ "integrity": "sha512-BYY7IavBjwsWWSmVcMz2A9mKiDD9RvacnsItgmy1xV8cmgbtxFfKmKMtkVpD7pYtkx4mIW4800yZBXueVFIWPw==" }, "@json-schema-tools/dereferencer": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@json-schema-tools/dereferencer/-/dereferencer-1.6.1.tgz", - "integrity": "sha512-+h+K/H3pWoJVztTuz1ycTUc0ai/xH5eLZLurE4jQpqYwPcPvsXtFfbRxDhvxrrpjjg4PV3HmEjjORIEQPO4Dmw==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@json-schema-tools/dereferencer/-/dereferencer-1.6.2.tgz", + "integrity": "sha512-cwvlTjPa92oQEMHsLBLNcTVAc4fmjFPXjPxOnYrnc1IDVSJsy1BbhfNfSUpVmIAOiXnygrQb488gbOxAj+tksg==", "requires": { "@json-schema-tools/reference-resolver": "^1.2.5", - "@json-schema-tools/traverse": "^1.10.0", + "@json-schema-tools/traverse": "^1.10.3", "fast-safe-stringify": "^2.1.1" } }, @@ -5925,9 +5949,9 @@ "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==" }, "@mapeo/core": { - "version": "9.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/@mapeo/core/-/core-9.0.0-alpha.6.tgz", - "integrity": "sha512-b1eHOmgVbtE02YAMR/kgfgHX5Mt//4gV290pgC+dPpZqccAgDIdBlaviJKRIGHCM16ZETdilx1NvSH+PJHYYGA==", + "version": "9.0.0-alpha.7", + "resolved": "https://registry.npmjs.org/@mapeo/core/-/core-9.0.0-alpha.7.tgz", + "integrity": "sha512-8DXZPKtMMVLTgZX3F8Eew3KnLB6bmf9v7uda9TvMX14YM9np4G9IiYafPS/X7kFNvr7h823wMzkRotNnHZ3byg==", "requires": { "@digidem/types": "^2.2.0", "@electron/asar": "^3.2.8", @@ -5936,7 +5960,7 @@ "@fastify/type-provider-typebox": "^3.3.0", "@hyperswarm/secret-stream": "^6.1.2", "@mapeo/crypto": "1.0.0-alpha.10", - "@mapeo/schema": "3.0.0-next.14", + "@mapeo/schema": "3.0.0-next.15", "@mapeo/sqlite-indexer": "1.0.0-alpha.8", "@sinclair/typebox": "^0.29.6", "b4a": "^1.6.3", @@ -5946,7 +5970,7 @@ "compact-encoding": "^2.12.0", "corestore": "^6.8.4", "debug": "^4.3.4", - "drizzle-orm": "0.28.2", + "drizzle-orm": "^0.30.8", "fastify": ">= 4", "fastify-plugin": "^4.5.0", "hyperblobs": "2.3.0", @@ -5971,7 +5995,7 @@ "throttle-debounce": "^5.0.0", "tiny-typed-emitter": "^2.1.0", "type-fest": "^4.5.0", - "undici": "^6.7.0", + "undici": "^6.13.0", "varint": "^6.0.0", "yauzl-promise": "^4.0.0" }, @@ -6060,9 +6084,9 @@ } }, "@mapeo/ipc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@mapeo/ipc/-/ipc-0.2.0.tgz", - "integrity": "sha512-qAkKlwpIJw0Srr9pR4w9pbluIADzkMHpRbOuxSYY5+fonmNuEc8esRXWwvaL4SeBEIoUsuIOpWuEDOIoYlRk6Q==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@mapeo/ipc/-/ipc-0.3.0.tgz", + "integrity": "sha512-8OdARTEBgCFCXrcJqwPuz397i10MiCIGG1Y9SSZ7myzN2o72lbuVAu7SX/D2gbHrVVD2tuia9EwaDBVsznas2w==", "requires": { "eventemitter3": "^5.0.1", "p-defer": "^4.0.0", @@ -6070,9 +6094,9 @@ } }, "@mapeo/schema": { - "version": "3.0.0-next.14", - "resolved": "https://registry.npmjs.org/@mapeo/schema/-/schema-3.0.0-next.14.tgz", - "integrity": "sha512-i0AUHbwMxUyggk6SDURxLPXOVCWlLAszSKUYm2fviQXYrGNcUALniw8JBn3x5jzfCFW1xrTUNhIcnt4IuF95mA==", + "version": "3.0.0-next.15", + "resolved": "https://registry.npmjs.org/@mapeo/schema/-/schema-3.0.0-next.15.tgz", + "integrity": "sha512-7g5GLkDhZLeStPIkVkTqElidng9cKtzNDJSQww5+Z7PWpkniMLDJYLki9TchEJEmPoAgwxgULNBiC69cMnNo9Q==", "requires": { "@json-schema-tools/dereferencer": "^1.6.1", "ajv": "^8.12.0", @@ -6086,29 +6110,29 @@ }, "dependencies": { "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" } }, "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "requires": { "brace-expansion": "^2.0.1" } }, "type-fest": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.14.0.tgz", - "integrity": "sha512-on5/Cw89wwqGZQu+yWO0gGMGu8VNxsaW9SB2HE8yJjllEk7IDTwnSN1dUVldYILhYPN5HzD7WAaw2cc/jBfn0Q==" + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", + "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==" }, "typedoc": { "version": "0.24.8", @@ -7021,9 +7045,9 @@ } }, "drizzle-orm": { - "version": "0.28.2", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.28.2.tgz", - "integrity": "sha512-QRyuzvpJr7GE6LpvZ/sg2nAKNg2if1uGGkgFTiXn4auuYId//vVJe6HBsDTktfKfcaDGzIYos+/f+PS5EkBmrg==", + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.8.tgz", + "integrity": "sha512-9pBJA0IjnpPpzZ6s9jlS1CQAbKoBmbn2GJesPhXaVblAA/joOJ4AWWevYcqvLGj9SvThBAl7WscN8Zwgg5mnTw==", "requires": {} }, "duplexify": { @@ -8505,11 +8529,11 @@ "dev": true }, "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, @@ -9480,9 +9504,9 @@ "optional": true }, "undici": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.10.2.tgz", - "integrity": "sha512-HcVuBy7ACaDejIMdwCzAvO22OsiE6ir6ziTIr9kAE0vB+PheVe29ZvRN8p7FXCO2uZHTjEoUs5bPiFpuc/hwwQ==" + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", + "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==" }, "undici-types": { "version": "5.25.3", diff --git a/src/backend/package.json b/src/backend/package.json index af8204ed2..1c94f99aa 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -13,8 +13,8 @@ "author": "Digital Democracy", "license": "MIT", "dependencies": { - "@mapeo/core": "^9.0.0-alpha.6", - "@mapeo/ipc": "^0.2.0", + "@mapeo/core": "9.0.0-alpha.7", + "@mapeo/ipc": "0.3.0", "debug": "^4.3.4" }, "devDependencies": { diff --git a/src/backend/patches/@mapeo+core+9.0.0-alpha.6+001+fix-quickbit-dynamic-require.patch b/src/backend/patches/@mapeo+core+9.0.0-alpha.7+001+fix-quickbit-dynamic-require.patch similarity index 100% rename from src/backend/patches/@mapeo+core+9.0.0-alpha.6+001+fix-quickbit-dynamic-require.patch rename to src/backend/patches/@mapeo+core+9.0.0-alpha.7+001+fix-quickbit-dynamic-require.patch diff --git a/src/backend/patches/@rollup+plugin-esm-shim+0.1.4+001+fix-shim-insertion.patch b/src/backend/patches/@rollup+plugin-esm-shim+0.1.4+001+fix-shim-insertion.patch new file mode 100644 index 000000000..347b9640b --- /dev/null +++ b/src/backend/patches/@rollup+plugin-esm-shim+0.1.4+001+fix-shim-insertion.patch @@ -0,0 +1,49 @@ +diff --git a/node_modules/@rollup/plugin-esm-shim/dist/es/index.js b/node_modules/@rollup/plugin-esm-shim/dist/es/index.js +index 162763c..6e70fd8 100644 +--- a/node_modules/@rollup/plugin-esm-shim/dist/es/index.js ++++ b/node_modules/@rollup/plugin-esm-shim/dist/es/index.js +@@ -28,22 +28,34 @@ function matchAllPolyfill(input, pattern) { + } + return output; + } +-function findPositionToInsertShim(input, pattern) { +- let lastImport; +- // mimicking behavior of `String.matchAll` as it returns an iterator, not an array +- for (const match of matchAllPolyfill(input, pattern)) { +- lastImport = match; ++function findPositionToInsertShim(input) { ++ // Workaround for . ++ // Finds the first index after the `import`s at the top of the file. ++ let result = 0; ++ ++ let hasSeenImport = false; ++ ++ // Doesn't handle CRLF newlines, but that shouldn't affect the result. ++ const lines = input.split(/\n/g); ++ ++ for (const line of lines) { ++ const trimmed = line.trim(); ++ ++ const isImportOrBlankOrComment = !trimmed || trimmed.startsWith('import ') || trimmed.startsWith('//'); ++ ++ if (hasSeenImport && !isImportOrBlankOrComment) break; ++ ++ result += line.length + 1; // add 1 for newline ++ hasSeenImport = hasSeenImport || isImportOrBlankOrComment; + } +- if (!lastImport) { +- return 0; +- } +- return (lastImport.index || 0) + lastImport[0].length; ++ ++ return result; + } + function provideCJSSyntax(code) { + if (code.includes(ESMShim) || !CJSyntaxRegex.test(code)) { + return null; + } +- const indexToAppend = findPositionToInsertShim(code, ESMStaticImportRegex); ++ const indexToAppend = findPositionToInsertShim(code); + const s = new MagicString(code); + s.appendRight(indexToAppend, ESMShim); + const sourceMap = s.generateMap({ diff --git a/src/backend/patches/README.md b/src/backend/patches/README.md index 0f92ce6b0..a55af6e84 100644 --- a/src/backend/patches/README.md +++ b/src/backend/patches/README.md @@ -4,7 +4,7 @@ These patches use [patch-package](https://github.com/ds300/patch-package) to upd ## `@mapeo/core` -### [Fix quickbit dynamic require](./@mapeo+core+9.0.0-alpha.6+001+fix-quickbit-dynamic-require.patch) +### [Fix quickbit dynamic require](./@mapeo+core+9.0.0-alpha.7+001+fix-quickbit-dynamic-require.patch) - Rollup complains about the dynamic require of `quickbit-universal` in this file. Easier to just simplify the import @@ -13,3 +13,9 @@ These patches use [patch-package](https://github.com/ds300/patch-package) to upd ### [Remove conditional `original-fs` import](./@electron+asar+3.2.9+001+remove-original-fs-require.patch) `original-fs` is conditionally imported (based on Electron-specific checks) but Rollup is not smart enough to lazily require the module in the bundled output. This causes errors at runtime because an import of a non-existent module occurs. + +## `@rollup/plugin-esm` + +### [Fix shim insertion](./@rollup+plugin-esm-shim+0.1.4+001+fix-shim-insertion.patch) + +This is a workaround for [a bug in the plugin](https://github.com/rollup/plugins/issues/1709). From 35907487852832066878268ff9fd2d78ebe0f314 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Mon, 22 Apr 2024 12:45:23 -0500 Subject: [PATCH 04/11] chore: fix type error in `ObservationMapLayer` component (#279) Our `onPress` handler code was failing to import a type from `@rnmapbox/maps`. This fixes that by moving the handler into the component directly, avoiding the need to import the type. --- .../screens/MapScreen/ObsevationMapLayer.tsx | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/frontend/screens/MapScreen/ObsevationMapLayer.tsx b/src/frontend/screens/MapScreen/ObsevationMapLayer.tsx index d287706b5..e5e09e5f0 100644 --- a/src/frontend/screens/MapScreen/ObsevationMapLayer.tsx +++ b/src/frontend/screens/MapScreen/ObsevationMapLayer.tsx @@ -2,7 +2,6 @@ import {Observation} from '@mapeo/schema'; import React from 'react'; import MapboxGL from '@rnmapbox/maps'; import {useAllObservations} from '../../hooks/useAllObservations'; -import {OnPressEvent} from '@rnmapbox/maps/lib/typescript/types/OnPressEvent'; import {useNavigationFromHomeTabs} from '../../hooks/useNavigationWithTypes'; const DEFAULT_MARKER_COLOR = '#F29D4B'; @@ -23,17 +22,15 @@ export const ObservationMapLayer = () => { features: mapObservationsToFeatures(observations), }; - function handlePressEvent(event: OnPressEvent) { - const properties = event.features[0].properties; - if (!properties) return; - if (!('id' in properties)) return; - - navigate('Observation', {observationId: properties.id}); - } - return ( { + const properties = event.features[0]?.properties; + if (!properties) return; + if (!('id' in properties)) return; + + navigate('Observation', {observationId: properties.id}); + }} id="observations-source" shape={featureCollection}> From 1a34eb3f5055fc010f968ca2f0264eb0a2927030 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Mon, 22 Apr 2024 13:23:07 -0500 Subject: [PATCH 05/11] chore: fix invalid invite type (#277) This is a types-only change and should have no impact on functionality. There was a type error when inviting someone to a project (see [these lines][0]). This was because the `role` type was too broad; you can't invite someone with the "LEFT" role, for example. This fixes that by using a narrower type. In the long term, `@mapeo/core` should probably expose these types in a better way. In the short term, I think this is the right solution to fix the type error. [0]: https://github.com/digidem/comapeo-mobile/blob/92fc7f42dd42ab45b267cc0df389f447b97a7880/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx#L35-L36 --- src/frontend/Navigation/ScreenGroups/AppScreens.tsx | 4 ++-- src/frontend/sharedTypes.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/frontend/Navigation/ScreenGroups/AppScreens.tsx b/src/frontend/Navigation/ScreenGroups/AppScreens.tsx index fdce08b25..9271af9d7 100644 --- a/src/frontend/Navigation/ScreenGroups/AppScreens.tsx +++ b/src/frontend/Navigation/ScreenGroups/AppScreens.tsx @@ -33,7 +33,7 @@ import {ProjectCreated} from '../../screens/Settings/CreateOrJoinProject/CreateP import {JoinExistingProject} from '../../screens/Settings/CreateOrJoinProject/JoinExistingProject'; import {YourTeam} from '../../screens/Settings/ProjectSettings/YourTeam'; import {SelectDevice} from '../../screens/Settings/ProjectSettings/YourTeam/SelectDevice'; -import {DeviceRole, DeviceType} from '../../sharedTypes'; +import {DeviceType, DeviceRoleForNewInvite} from '../../sharedTypes'; import {SelectInviteeRole} from '../../screens/Settings/ProjectSettings/YourTeam/SelectInviteeRole'; import {ReviewInvitation} from '../../screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/ReviewInvitation'; import {InviteAccepted} from '../../screens/Settings/ProjectSettings/YourTeam/InviteAccepted'; @@ -64,7 +64,7 @@ type InviteProps = { name: string; deviceType: DeviceType; deviceId: string; - role: DeviceRole; + role: DeviceRoleForNewInvite; }; export type AppList = { diff --git a/src/frontend/sharedTypes.ts b/src/frontend/sharedTypes.ts index e30d64804..ad4368a96 100644 --- a/src/frontend/sharedTypes.ts +++ b/src/frontend/sharedTypes.ts @@ -8,7 +8,7 @@ import {MessageDescriptor} from 'react-intl'; import {AppStackList} from './Navigation/AppStack'; import {HomeTabsList} from './Navigation/ScreenGroups/AppScreens'; import {Observation, ObservationValue} from '@mapeo/schema'; -import {type RoleId} from '@mapeo/core/dist/roles'; +import type {RoleId, RoleIdForNewInvite} from '@mapeo/core/dist/roles'; export type ViewStyleProp = StyleProp; export type TextStyleProp = StyleProp; @@ -54,6 +54,7 @@ export type CoordinateFormat = 'utm' | 'dd' | 'dms'; export type DeviceType = 'mobile' | 'desktop'; export type DeviceRole = RoleId; +export type DeviceRoleForNewInvite = RoleIdForNewInvite; // Copied form /@mapeo/core/src/roles.js. Created an issue to eventuall expose this: https://github.com/digidem/mapeo-core-next/issues/532 export const CREATOR_ROLE_ID = 'a12a6702b93bd7ff'; From 417897dd98377845c0938d345ad72e681ea13e41 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Mon, 22 Apr 2024 13:32:47 -0500 Subject: [PATCH 06/11] chore: fix type error in CRC32 shim (#284) `~~initialState` is forbidden because `initialState` could be `null`. This fixes that by ensuring it's set. --- src/backend/src/node-rs-crc32-shim.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/src/node-rs-crc32-shim.js b/src/backend/src/node-rs-crc32-shim.js index 208c95d9b..f7bc402d6 100644 --- a/src/backend/src/node-rs-crc32-shim.js +++ b/src/backend/src/node-rs-crc32-shim.js @@ -16,7 +16,7 @@ let crcTable * @param {number | undefined | null} [initialState] * @returns {number} */ -function crc32(input, initialState = 0) { +function crc32(input, initialState) { if (typeof input === 'string') return crc32(Buffer.from(input), initialState) if (!crcTable) { @@ -30,7 +30,7 @@ function crc32(input, initialState = 0) { } } - let crc = ~~initialState ^ -1 + let crc = ~~(initialState || 0) ^ -1 for (let i = 0; i < input.length; i++) { crc = crcTable[(crc ^ input[i]) & 0xff] ^ (crc >>> 8) } From c920fd41f953fb62c670073b02a25b4442c6fb47 Mon Sep 17 00:00:00 2001 From: Andrew Chou Date: Mon, 22 Apr 2024 14:42:45 -0400 Subject: [PATCH 07/11] chore: update lockfile to specify exact version of @mapeo/ipc (#285) --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index ae9057241..7010ce815 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@formatjs/intl-pluralrules": "^5.2.4", "@formatjs/intl-relativetimeformat": "^11.2.4", "@gorhom/bottom-sheet": "^4.5.1", - "@mapeo/ipc": "^0.3.0", + "@mapeo/ipc": "0.3.0", "@react-native-community/hooks": "^2.8.0", "@react-native-community/netinfo": "11.1.0", "@react-native-picker/picker": "2.6.1", From c1a9f92c5b71ef1d6c654ed76f15d4f28f9b33cd Mon Sep 17 00:00:00 2001 From: Andrew Chou Date: Mon, 22 Apr 2024 14:59:47 -0400 Subject: [PATCH 08/11] chore: add basic github workflow (#208) --- .github/workflows/ci.yml | 69 +++++++++++++++++++++++++++++++++++++++ package.json | 3 +- src/backend/package.json | 2 +- src/backend/tsconfig.json | 1 - 4 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..fea66f732 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,69 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + # By default, a workflow only runs when a pull_request's activity type is + # opened, synchronize, or reopened. Adding ready_for_review here ensures + # that CI runs when a PR is marked as not a draft, since we skip CI when a + # PR is draft + types: [opened, synchronize, reopened, ready_for_review] + +jobs: + all: + runs-on: ubuntu-latest + timeout-minutes: 10 + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + - name: Install deps + run: npm ci + - name: Check formatting + run: npm run lint:prettier + + backend: + runs-on: ubuntu-latest + timeout-minutes: 10 + strategy: + fail-fast: false + defaults: + run: + working-directory: './src/backend' + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + - name: Install deps + run: | + npm ci --ignore-scripts + npm run postinstall + - name: Check types + run: npm run lint:types + + frontend: + runs-on: ubuntu-latest + timeout-minutes: 10 + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v4 + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + - name: Install deps + run: npm ci + - name: Build translations + run: npm run build:translations + - name: Build Intl polyfills + run: npm run build:intl-polyfills + - name: Run unit tests + run: npm test diff --git a/package.json b/package.json index 5ec032dd8..5a77d9ec8 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "test": "jest", "lint:prettier": "prettier \"src/**/*.{js,ts,jsx,tsx}\" --check", "lint:eslint": "eslint . --ext .js,.jsx,.ts,.tsx --cache --ignore-path .gitignore", - "lint": "npm run lint:prettier && npm run lint:eslint", + "lint:types": "tsc --noEmit", + "lint": "npm run lint:prettier && npm run lint:eslint && npm run lint:types", "postinstall": "patch-package", "prepare": "husky install", "format": "prettier \"src/**/*.{js,ts,jsx,tsx}\" --write", diff --git a/src/backend/package.json b/src/backend/package.json index 1c94f99aa..1d0613228 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -7,7 +7,7 @@ "main": "index.js", "scripts": { "build": "node ./scripts/bundle-backend.mjs --entry=index.js --output=index.bundle.js", - "lint": "tsc", + "lint:types": "tsc --noEmit", "postinstall": "patch-package" }, "author": "Digital Democracy", diff --git a/src/backend/tsconfig.json b/src/backend/tsconfig.json index a84cf6d25..4b44d9b33 100644 --- a/src/backend/tsconfig.json +++ b/src/backend/tsconfig.json @@ -7,7 +7,6 @@ "./node_modules/@digidem/types/vendor/*/index.d.ts" ] }, - "resolveJsonModule": true, "allowJs": true, "checkJs": true, "noEmit": true, From 38f73c77b59b6d654337b8025d4500cfe1ca6ed3 Mon Sep 17 00:00:00 2001 From: ErikSin <67773827+ErikSin@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:44:06 -0700 Subject: [PATCH 09/11] chore: screen to indicate when cancel invite was unsuccessful (#263) * chore: created screen * chore: translations * chore:update invite with tanstack * chore: added navigation to unable to invite screen * chore: add notes * chore: added missing useEffect dependency * chore: switch project on accept of invite * chore: added screen to navigation * core:remove unneccessary plural * chore: translations * chore: remove unecessary console log * chore: pr rfixes --- messages/en.json | 6 ++ .../Navigation/ScreenGroups/AppScreens.tsx | 7 ++ src/frontend/contexts/ProjectContext.tsx | 2 +- src/frontend/hooks/server/invites.ts | 46 ++++++++++- src/frontend/hooks/server/projects.ts | 4 +- src/frontend/hooks/useProjectInvite.ts | 2 +- .../ReviewAndInvite/UnableToCancelInvite.tsx | 76 +++++++++++++++++++ .../WaitingForInviteAccept.tsx | 13 ++-- .../YourTeam/ReviewAndInvite/index.tsx | 66 ++++++++++------ 9 files changed, 185 insertions(+), 37 deletions(-) create mode 100644 src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/UnableToCancelInvite.tsx diff --git a/messages/en.json b/messages/en.json index 6f74e89b9..8534d05ca 100644 --- a/messages/en.json +++ b/messages/en.json @@ -570,9 +570,15 @@ "screens.Settings.YourTeam.close": { "message": "Close" }, + "screens.Settings.YourTeam.deviceHasJoined": { + "message": "Device Has Joined {projectName}" + }, "screens.Settings.YourTeam.inviteDeclinedDes": { "message": "This device has declined your invitation. They have not joined the project." }, + "screens.Settings.YourTeam.unableToCancel": { + "message": "Unable to Cancel Invitation" + }, "screens.Settings.aboutMapeo": { "description": "Primary text for 'About Mapeo' link (version info)", "message": "About Mapeo" diff --git a/src/frontend/Navigation/ScreenGroups/AppScreens.tsx b/src/frontend/Navigation/ScreenGroups/AppScreens.tsx index 9271af9d7..919b29e19 100644 --- a/src/frontend/Navigation/ScreenGroups/AppScreens.tsx +++ b/src/frontend/Navigation/ScreenGroups/AppScreens.tsx @@ -54,6 +54,7 @@ import {useLocation} from '../../hooks/useLocation'; import {useLocationProviderStatus} from '../../hooks/useLocationProviderStatus'; import {getLocationStatus} from '../../lib/utils'; import {InviteDeclined} from '../../screens/Settings/ProjectSettings/YourTeam/InviteDeclined'; +import {UnableToCancelInvite} from '../../screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/UnableToCancelInvite'; export type HomeTabsList = { Map: undefined; @@ -127,6 +128,7 @@ export type AppList = { ReviewAndInvite: InviteProps; InviteAccepted: InviteProps; InviteDeclined: InviteProps; + UnableToCancelInvite: InviteProps; DeviceNameDisplay: undefined; DeviceNameEdit: undefined; }; @@ -340,5 +342,10 @@ export const createDefaultScreenGroup = ( component={InviteDeclined} options={{headerShown: false}} /> + ); diff --git a/src/frontend/contexts/ProjectContext.tsx b/src/frontend/contexts/ProjectContext.tsx index 4550c6090..09a2d3e63 100644 --- a/src/frontend/contexts/ProjectContext.tsx +++ b/src/frontend/contexts/ProjectContext.tsx @@ -67,7 +67,7 @@ export const ActiveProjectProvider = ({ return () => { cancelled = true; }; - }, [activeProjectId, setActiveProjectId]); + }, [activeProjectId, setActiveProjectId, mapeoApi]); if (!activeProject) { return ; diff --git a/src/frontend/hooks/server/invites.ts b/src/frontend/hooks/server/invites.ts index 6394a1265..9f73f7d8f 100644 --- a/src/frontend/hooks/server/invites.ts +++ b/src/frontend/hooks/server/invites.ts @@ -4,6 +4,7 @@ import { useSuspenseQuery, } from '@tanstack/react-query'; import {useApi} from '../../contexts/ApiContext'; +import {PROJECTS_KEY, useProject, useUpdateActiveProjectId} from './projects'; export const INVITE_KEY = 'pending_invites'; @@ -17,16 +18,27 @@ export function usePendingInvites() { }); } -export function useAcceptInvite() { +export function useAcceptInvite(projectId?: string) { const mapeoApi = useApi(); const queryClient = useQueryClient(); + const switchActiveProject = useUpdateActiveProjectId(); + return useMutation({ mutationFn: async ({inviteId}: {inviteId: string}) => { if (!inviteId) return; mapeoApi.invite.accept({inviteId}); }, onSuccess: () => { - queryClient.invalidateQueries({queryKey: [INVITE_KEY]}); + // This is a workaround. There is a race condition where the project in not available when the invite is accepted. This is temporary and is currently being worked on. + setTimeout(() => { + queryClient + .invalidateQueries({queryKey: [INVITE_KEY, PROJECTS_KEY]}) + .then(() => { + if (projectId) { + switchActiveProject(projectId); + } + }); + }, 5000); }, }); } @@ -61,3 +73,33 @@ export function useClearAllPendingInvites() { }, }); } + +export function useSendInvite() { + const queryClient = useQueryClient(); + const project = useProject(); + type InviteParams = Parameters; + return useMutation({ + mutationFn: ({ + deviceId, + role, + }: { + deviceId: InviteParams[0]; + role: InviteParams[1]; + }) => project.$member.invite(deviceId, role), + onSuccess: () => { + queryClient.invalidateQueries({queryKey: [INVITE_KEY]}); + }, + }); +} + +export function useRequestCancelInvite() { + const queryClient = useQueryClient(); + const project = useProject(); + return useMutation({ + mutationFn: (deviceId: string) => + project.$member.requestCancelInvite(deviceId), + onSuccess: () => { + queryClient.invalidateQueries({queryKey: [INVITE_KEY]}); + }, + }); +} diff --git a/src/frontend/hooks/server/projects.ts b/src/frontend/hooks/server/projects.ts index e54f721f6..7f5c39e90 100644 --- a/src/frontend/hooks/server/projects.ts +++ b/src/frontend/hooks/server/projects.ts @@ -2,6 +2,8 @@ import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'; import {useApi} from '../../contexts/ApiContext'; import {useActiveProjectContext} from '../../contexts/ProjectContext'; +export const PROJECTS_KEY = 'all_projects'; + export function useUpdateActiveProjectId() { const projectContext = useActiveProjectContext(); return projectContext.switchProject; @@ -17,7 +19,7 @@ export function useAllProjects() { return useQuery({ queryFn: async () => await api.listProjects(), - queryKey: ['projects'], + queryKey: [PROJECTS_KEY], }); } diff --git a/src/frontend/hooks/useProjectInvite.ts b/src/frontend/hooks/useProjectInvite.ts index db0c74e20..67da14ec0 100644 --- a/src/frontend/hooks/useProjectInvite.ts +++ b/src/frontend/hooks/useProjectInvite.ts @@ -9,7 +9,7 @@ export function useProjectInvite() { const invites = usePendingInvites().data; // this will eventually sort invite by date const invite = invites[0]; - const acceptMutation = useAcceptInvite(); + const acceptMutation = useAcceptInvite(invite?.projectPublicId); const rejectMutation = useRejectInvite(); const clearAllInvites = useClearAllPendingInvites(); diff --git a/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/UnableToCancelInvite.tsx b/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/UnableToCancelInvite.tsx new file mode 100644 index 000000000..e3531c1ac --- /dev/null +++ b/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/UnableToCancelInvite.tsx @@ -0,0 +1,76 @@ +import * as React from 'react'; +import {StyleSheet, View} from 'react-native'; +import {Button} from '../../../../../sharedComponents/Button'; +import ErrorIcon from '../../../../../images/Error.svg'; +import {defineMessages, useIntl} from 'react-intl'; +import {Text} from '../../../../../sharedComponents/Text'; +import {DeviceNameWithIcon} from '../../../../../sharedComponents/DeviceNameWithIcon'; +import {RoleWithIcon} from '../../../../../sharedComponents/RoleWithIcon'; +import { + COORDINATOR_ROLE_ID, + NativeRootNavigationProps, +} from '../../../../../sharedTypes'; +import {useProjectSettings} from '../../../../../hooks/server/projects'; + +const m = defineMessages({ + unableToCancel: { + id: 'screens.Settings.YourTeam.unableToCancel', + defaultMessage: 'Unable to Cancel Invitation', + }, + deviceHasJoined: { + id: 'screens.Settings.YourTeam.deviceHasJoined', + defaultMessage: 'Device Has Joined {projectName}', + }, + close: { + id: 'screens.Settings.YourTeam.close', + defaultMessage: 'Close', + }, +}); + +export const UnableToCancelInvite = ({ + navigation, + route, +}: NativeRootNavigationProps<'UnableToCancelInvite'>) => { + const {formatMessage} = useIntl(); + const {role, ...deviceInfo} = route.params; + const {data} = useProjectSettings(); + + return ( + + + + + {formatMessage(m.unableToCancel)} + + {data?.name && ( + + {formatMessage(m.deviceHasJoined, {projectName: data.name})} + + )} + + + + + + ); +}; + +const styles = StyleSheet.create({ + container: { + padding: 20, + paddingTop: 80, + alignItems: 'center', + justifyContent: 'space-between', + flex: 1, + }, +}); diff --git a/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/WaitingForInviteAccept.tsx b/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/WaitingForInviteAccept.tsx index 2db3322af..a8f7745fb 100644 --- a/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/WaitingForInviteAccept.tsx +++ b/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/WaitingForInviteAccept.tsx @@ -22,7 +22,11 @@ const m = defineMessages({ }, }); -export const WaitingForInviteAccept = () => { +export const WaitingForInviteAccept = ({ + cancelInvite, +}: { + cancelInvite: () => void; +}) => { const {formatMessage: t} = useIntl(); const [time, setTime] = React.useState(0); const navigation = useNavigationFromRoot(); @@ -53,12 +57,7 @@ export const WaitingForInviteAccept = () => { {t(m.waitingMessage)} {t(m.timerMessage, {seconds: time})} - { - navigation.navigate('YourTeam'); - }} - /> + ); }; diff --git a/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx b/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx index ed0dca8c6..0a4230183 100644 --- a/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx +++ b/src/frontend/screens/Settings/ProjectSettings/YourTeam/ReviewAndInvite/index.tsx @@ -2,11 +2,13 @@ import * as React from 'react'; import {NativeNavigationComponent} from '../../../../../sharedTypes'; import {defineMessages} from 'react-intl'; import {useBottomSheetModal} from '../../../../../sharedComponents/BottomSheetModal'; -import {useQueryClient} from '@tanstack/react-query'; -import {useProject} from '../../../../../hooks/server/projects'; import {ErrorModal} from '../../../../../sharedComponents/ErrorModal'; import {ReviewInvitation} from './ReviewInvitation'; import {WaitingForInviteAccept} from './WaitingForInviteAccept'; +import { + useRequestCancelInvite, + useSendInvite, +} from '../../../../../hooks/server/invites'; const m = defineMessages({ title: { @@ -19,41 +21,55 @@ export const ReviewAndInvite: NativeNavigationComponent<'ReviewAndInvite'> = ({ route, navigation, }) => { - const [inviteStatus, setInviteStatus] = React.useState< - 'reviewing' | 'waiting' - >('reviewing'); const {role, deviceId, deviceType, name} = route.params; const {openSheet, sheetRef, closeSheet, isOpen} = useBottomSheetModal({ openOnMount: false, }); - const project = useProject(); - const queryClient = useQueryClient(); + const sendInviteMutation = useSendInvite(); + const requestCancelInviteMutation = useRequestCancelInvite(); function sendInvite() { - setInviteStatus('waiting'); - project.$member - .invite(deviceId, {roleId: role}) - .then(val => { - if (val === 'ACCEPT') { - queryClient.invalidateQueries({queryKey: ['projectMembers']}); - navigation.navigate('InviteAccepted', route.params); - return; - } + sendInviteMutation.mutate( + {deviceId, role: {roleId: role}}, + { + onSuccess: val => { + // If user has attempted to cancel an invite, but an invite has already been accepted, let user know their cancellation was unsuccessful + if (val === 'ACCEPT' && requestCancelInviteMutation.isPending) { + navigation.navigate('UnableToCancelInvite', {...route.params}); + return; + } + if (val === 'ACCEPT') { + navigation.navigate('InviteAccepted', route.params); + return; + } - if (val === 'REJECT') { - navigation.navigate('InviteDeclined', route.params); - return; - } - }) - .catch(() => { + if (val === 'REJECT') { + navigation.navigate('InviteDeclined', route.params); + return; + } + }, + onError: () => { + openSheet(); + }, + }, + ); + } + + function cancelInvite() { + requestCancelInviteMutation.mutate(deviceId, { + onSuccess: () => { + navigation.navigate('YourTeam'); + }, + onError: () => { openSheet(); - }); + }, + }); } return ( - {inviteStatus === 'reviewing' ? ( + {sendInviteMutation.isIdle ? ( = ({ role={role} /> ) : ( - + )} Date: Tue, 23 Apr 2024 10:56:36 -0500 Subject: [PATCH 10/11] docs: `npm start` is required to develop (#267) --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e801a4f6..e96222b76 100644 --- a/README.md +++ b/README.md @@ -45,12 +45,14 @@ The next version of Mapeo Mobile npm install ``` - 2. (optional) Start the Metro bundler process + 2. Start the Metro bundler process ```sh npm start ``` + Leave this running in a separate terminal window. + 3. Build and run the app (Android) - For this project, using a physical device is more convenient and reliable to work with. It is recommended that you follow React Native's [setup instructions](https://reactnative.dev/docs/running-on-device) for running an app on a device. From cdf151a23c2f9760c31bea7fe49818ad1bb2c4a3 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Tue, 23 Apr 2024 11:42:37 -0500 Subject: [PATCH 11/11] chore: update @babel/traverse (#265) `npm audit` showed a security issue on `@babel/traverse`. I don't think this issue affects us but I ran `npm audit fix @babel/traverse` to fix it in any case. --- package-lock.json | 1022 ++++++++++++++++++++++++++++++--------------- 1 file changed, 677 insertions(+), 345 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7010ce815..ba3188770 100644 --- a/package-lock.json +++ b/package-lock.json @@ -294,67 +294,17 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { "version": "7.22.9", "license": "MIT", @@ -408,12 +358,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.10", - "license": "MIT", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dependencies": { - "@babel/types": "^7.22.10", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -421,12 +372,13 @@ } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "license": "MIT", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -478,16 +430,16 @@ "license": "ISC" }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz", - "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -632,12 +584,12 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -726,13 +678,14 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -789,9 +742,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -858,13 +811,13 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.0.tgz", - "integrity": "sha512-LiT1RqZWeij7X+wGxCoYh3/3b8nVOX6/7BZ9wiQgAIyjoeQWdROaodJCgT+dwtbjHaz0r7bEbHJzjSbVfcOyjQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz", + "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.0", + "@babel/helper-create-class-features-plugin": "^7.24.1", "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-decorators": "^7.24.0" + "@babel/plugin-syntax-decorators": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1022,9 +975,9 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.0.tgz", - "integrity": "sha512-MXW3pQCu9gUiVGzqkGqsgiINDVYXoAnrY8FYF/rmb+OfufNF0zHMpHPN4ulRrinxYT8Vk/aZJxYqOKsDECjKAw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", + "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.0" }, @@ -1813,11 +1766,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", - "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1885,12 +1838,12 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", - "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -2249,16 +2202,16 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", - "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", + "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-react-display-name": "^7.23.3", - "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-transform-react-display-name": "^7.24.1", + "@babel/plugin-transform-react-jsx": "^7.23.4", "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + "@babel/plugin-transform-react-pure-annotations": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -2363,18 +2316,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.11", - "license": "MIT", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dependencies": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.11", - "@babel/types": "^7.22.11", - "debug": "^4.1.0", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2650,23 +2604,23 @@ } }, "node_modules/@expo/cli": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.17.6.tgz", - "integrity": "sha512-vpwQOyhkqQ5Ao96AGaFntRf6dX7h7/e9T7oKZ5KfJiaLRgfmNa/yHFu5cpXG76T2R7Q6aiU4ik0KU3P7nFMzEw==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.17.10.tgz", + "integrity": "sha512-Jw2wY+lsavP9GRqwwLqF/SvB7w2GZ4sWBMcBKTZ8F0lWjwmLGAUt4WYquf20agdmnY/oZUHvWNkrz/t3SflhnA==", "dependencies": { "@babel/runtime": "^7.20.0", "@expo/code-signing-certificates": "0.0.5", "@expo/config": "~8.5.0", - "@expo/config-plugins": "~7.8.0", + "@expo/config-plugins": "~7.9.0", "@expo/devcert": "^1.0.0", - "@expo/env": "~0.2.0", + "@expo/env": "~0.2.2", "@expo/image-utils": "^0.4.0", "@expo/json-file": "^8.2.37", "@expo/metro-config": "~0.17.0", "@expo/osascript": "^2.0.31", "@expo/package-manager": "^1.1.1", "@expo/plist": "^0.1.0", - "@expo/prebuild-config": "6.7.4", + "@expo/prebuild-config": "6.8.1", "@expo/rudder-sdk-node": "1.1.1", "@expo/spawn-async": "1.5.0", "@expo/xcpretty": "^4.3.0", @@ -3070,12 +3024,12 @@ } }, "node_modules/@expo/config": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.5.4.tgz", - "integrity": "sha512-ggOLJPHGzJSJHVBC1LzwXwR6qUn8Mw7hkc5zEKRIdhFRuIQ6s2FE4eOvP87LrNfDF7eZGa6tJQYsiHSmZKG+8Q==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.5.6.tgz", + "integrity": "sha512-wF5awSg6MNn1cb1lIgjnhOn5ov2TEUTnkAVCsOl0QqDwcP+YIerteSFwjn9V52UZvg58L+LKxpCuGbw5IHavbg==", "dependencies": { "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~7.8.2", + "@expo/config-plugins": "~7.9.0", "@expo/config-types": "^50.0.0", "@expo/json-file": "^8.2.37", "getenv": "^1.0.0", @@ -3088,9 +3042,9 @@ } }, "node_modules/@expo/config-plugins": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.8.4.tgz", - "integrity": "sha512-hv03HYxb/5kX8Gxv/BTI8TLc9L06WzqAfHRRXdbar4zkLcP2oTzvsLEF4/L/TIpD3rsnYa0KU42d0gWRxzPCJg==", + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.9.1.tgz", + "integrity": "sha512-ICt6Jed1J0tPYMQrJ8K5Qusgih2I6pZ2PU4VSvxsN3T4n97L13XpYV1vyq1Uc/HMl3UhOwldipmgpEbCfeDqsQ==", "dependencies": { "@expo/config-types": "^50.0.0-alpha.1", "@expo/fingerprint": "^0.6.0", @@ -3320,14 +3274,14 @@ "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==" }, "node_modules/@expo/env": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.2.1.tgz", - "integrity": "sha512-deZmRS7Dvp18VM8s559dq/ZjPlV1D9vtLoLXwHmCK/JYOvtNptdKsfxcWjI7ewmo6ln2PqgNI9HRI74q6Wk2eA==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.2.3.tgz", + "integrity": "sha512-a+uJ/e6MAVxPVVN/HbXU5qxzdqrqDwNQYxCfxtAufgmd5VZj54e5f3TJA3LEEUW3pTSZR8xK0H0EtVN297AZnw==", "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", - "dotenv": "~16.0.3", - "dotenv-expand": "~10.0.0", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", "getenv": "^1.0.0" } }, @@ -3406,9 +3360,9 @@ } }, "node_modules/@expo/image-utils": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.4.1.tgz", - "integrity": "sha512-EZb+VHSmw+a5s2hS9qksTcWylY0FDaIAVufcxoaRS9tHIXLjW5zcKW7Rhj9dSEbZbRVy9yXXdHKa3GQdUQIOFw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.4.2.tgz", + "integrity": "sha512-CxP+1QXgRXsNnmv2FAUA2RWwK6kNBFg4QEmVXn2K9iLoEAI+i+1IQXcUgc+J7nTJl9pO7FIu2gIiEYGYffjLWQ==", "dependencies": { "@expo/spawn-async": "1.5.0", "chalk": "^4.0.0", @@ -3551,16 +3505,16 @@ } }, "node_modules/@expo/metro-config": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.17.5.tgz", - "integrity": "sha512-2YUebeIwr6gFxcIRSVAjWK5D8YSaXBzQoRRl3muJWsH8AC8a+T60xbA3cGhsEICD2zKS5zwnL2yobgs41Ur7nQ==", + "version": "0.17.7", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.17.7.tgz", + "integrity": "sha512-3vAdinAjMeRwdhGWWLX6PziZdAPvnyJ6KVYqnJErHHqH0cA6dgAENT3Vq6PEM1H2HgczKr2d5yG9AMgwy848ow==", "dependencies": { "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", "@babel/parser": "^7.20.0", "@babel/types": "^7.20.0", "@expo/config": "~8.5.0", - "@expo/env": "~0.2.0", + "@expo/env": "~0.2.2", "@expo/json-file": "~8.3.0", "@expo/spawn-async": "^1.7.2", "babel-preset-fbjs": "^3.4.0", @@ -3912,12 +3866,12 @@ } }, "node_modules/@expo/prebuild-config": { - "version": "6.7.4", - "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.7.4.tgz", - "integrity": "sha512-x8EUdCa8DTMZ/dtEXjHAdlP+ljf6oSeSKNzhycXiHhpMSMG9jEhV28ocCwc6cKsjK5GziweEiHwvrj6+vsBlhA==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.8.1.tgz", + "integrity": "sha512-ptK9e0dcj1eYlAWV+fG+QkuAWcLAT1AmtEbj++tn7ZjEj8+LkXRM73LCOEGaF0Er8i8ZWNnaVsgGW4vjgP5ZsA==", "dependencies": { "@expo/config": "~8.5.0", - "@expo/config-plugins": "~7.8.0", + "@expo/config-plugins": "~7.9.0", "@expo/config-types": "^50.0.0-alpha.1", "@expo/image-utils": "^0.4.0", "@expo/json-file": "^8.2.37", @@ -5286,8 +5240,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -5319,8 +5274,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "license": "MIT", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -7924,8 +7880,9 @@ } }, "node_modules/@sideway/formula": { - "version": "3.0.0", - "license": "BSD-3-Clause" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", @@ -8828,9 +8785,10 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.8", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8994,9 +8952,10 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.3.8", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9398,6 +9357,21 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-includes": { "version": "3.1.5", "dev": true, @@ -9449,6 +9423,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/asap": { "version": "2.0.6", "license": "MIT" @@ -9532,8 +9527,12 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -9685,9 +9684,9 @@ } }, "node_modules/babel-preset-expo": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-10.0.1.tgz", - "integrity": "sha512-uWIGmLfbP3dS5+8nesxaW6mQs41d4iP7X82ZwRdisB/wAhKQmuJM9Y1jQe4006uNYkw6Phf2TT03ykLVro7KuQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-10.0.2.tgz", + "integrity": "sha512-hg06qdSTK7MjKmFXSiq6cFoIbI3n3uT8a3NI2EZoISWhu+tedCj4DQduwi+3adFuRuYvAwECI0IYn/5iGh5zWQ==", "dependencies": { "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-transform-export-namespace-from": "^7.22.11", @@ -10177,11 +10176,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11020,6 +11026,54 @@ "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==" }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dayjs": { "version": "1.11.6", "license": "MIT" @@ -11236,6 +11290,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -11245,9 +11315,11 @@ } }, "node_modules/define-properties": { - "version": "1.1.4", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -11510,19 +11582,28 @@ } }, "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "dependencies": { + "dotenv": "^16.4.4" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/drizzle-orm": { @@ -11796,34 +11877,56 @@ } }, "node_modules/es-abstract": { - "version": "1.20.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -11832,6 +11935,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-shim-unscopables": { "version": "1.0.0", "dev": true, @@ -11842,7 +11988,6 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", - "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.1.4", @@ -12493,23 +12638,23 @@ } }, "node_modules/expo": { - "version": "50.0.8", - "resolved": "https://registry.npmjs.org/expo/-/expo-50.0.8.tgz", - "integrity": "sha512-8yXsoMbFRjWyEDNuFRtH0vTFvEjFnnwP+LceS6xmXGp+IW1hKdN1X6Bj1EUocFtepH0ruHDPCof1KvPoWfUWkw==", + "version": "50.0.17", + "resolved": "https://registry.npmjs.org/expo/-/expo-50.0.17.tgz", + "integrity": "sha512-eD8Nh10BgVwecU7EVyogx7X314ajxVpJdFwkXhi341AD61S2WPX31NMHW82XGXas6dbDjdbgtaOMo5H/vylB7Q==", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "0.17.6", - "@expo/config": "8.5.4", - "@expo/config-plugins": "7.8.4", - "@expo/metro-config": "0.17.5", + "@expo/cli": "0.17.10", + "@expo/config": "8.5.6", + "@expo/config-plugins": "7.9.1", + "@expo/metro-config": "0.17.7", "@expo/vector-icons": "^14.0.0", - "babel-preset-expo": "~10.0.1", + "babel-preset-expo": "~10.0.2", "expo-asset": "~9.0.2", - "expo-file-system": "~16.0.7", + "expo-file-system": "~16.0.9", "expo-font": "~11.10.3", "expo-keep-awake": "~12.8.2", "expo-modules-autolinking": "1.10.3", - "expo-modules-core": "1.11.9", + "expo-modules-core": "1.11.13", "fbemitter": "^3.0.0", "whatwg-url-without-unicode": "8.0.0-3" }, @@ -12564,9 +12709,9 @@ } }, "node_modules/expo-file-system": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-16.0.7.tgz", - "integrity": "sha512-BELr1Agj6WK0PKVMcD0rqC3fP5unKfp2KW8/sNhtTHgdzQ/F0Pylq9pTk9u7KEu0ZbEdTpk5EMarLMPwffi3og==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-16.0.9.tgz", + "integrity": "sha512-3gRPvKVv7/Y7AdD9eHMIdfg5YbUn2zbwKofjsloTI5sEC57SLUFJtbLvUCz9Pk63DaSQ7WIE1JM0EASyvuPbuw==", "peerDependencies": { "expo": "*" } @@ -12724,9 +12869,9 @@ } }, "node_modules/expo-modules-core": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.11.9.tgz", - "integrity": "sha512-GTUb81vcPaF+5MtlBI1u9IjrZbGdF1ZUwz3u8Gc+rOLBblkZ7pYsj2mU/tu+k0khTckI9vcH4ZBksXWvE1ncjQ==", + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.11.13.tgz", + "integrity": "sha512-2H5qrGUvmLzmJNPDOnovH1Pfk5H/S/V0BifBmOQyDc9aUh9LaDwkqnChZGIXv8ZHDW8JRlUW0QqyWxTggkbw1A==", "dependencies": { "invariant": "^2.2.4" } @@ -13361,14 +13506,14 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "dev": true, - "license": "MIT", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -13379,7 +13524,6 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13415,12 +13559,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "license": "MIT", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13561,12 +13711,13 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -13746,6 +13897,7 @@ }, "node_modules/has": { "version": "1.0.3", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -13756,7 +13908,6 @@ }, "node_modules/has-bigints": { "version": "1.0.2", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13770,10 +13921,22 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13790,10 +13953,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -13803,9 +13967,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -14215,12 +14379,12 @@ } }, "node_modules/internal-slot": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -14315,13 +14479,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "license": "MIT" }, "node_modules/is-bigint": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" @@ -14332,7 +14510,6 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -14371,9 +14548,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", - "dev": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -14518,9 +14708,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "dev": true, - "license": "MIT", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "engines": { "node": ">= 0.4" }, @@ -14530,7 +14720,6 @@ }, "node_modules/is-number-object": { "version": "1.0.7", - "dev": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -14577,8 +14766,8 @@ }, "node_modules/is-regex": { "version": "1.1.4", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -14591,11 +14780,14 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14614,7 +14806,6 @@ }, "node_modules/is-string": { "version": "1.0.7", - "dev": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -14628,7 +14819,6 @@ }, "node_modules/is-symbol": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" @@ -14641,10 +14831,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "license": "MIT", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -14676,7 +14867,6 @@ }, "node_modules/is-weakref": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -15087,20 +15277,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/jest-cli/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-cli/node_modules/y18n": { "version": "5.0.8", "dev": true, @@ -18702,9 +18878,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.2", - "dev": true, - "license": "MIT", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18731,12 +18907,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "dev": true, - "license": "MIT", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -19443,10 +19619,18 @@ "node": ">=4.0.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -19464,7 +19648,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -19891,8 +20075,9 @@ } }, "node_modules/react-devtools-core": { - "version": "4.28.0", - "license": "MIT", + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz", + "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" @@ -20953,17 +21138,6 @@ "node": ">=12" } }, - "node_modules/react-native/node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/react-native/node_modules/scheduler": { "version": "0.24.0-canary-efb381bbf-20230505", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", @@ -20988,17 +21162,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/react-native/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/react-native/node_modules/ws": { "version": "6.2.2", "license": "MIT", @@ -21176,13 +21339,14 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "dev": true, - "license": "MIT", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -21502,6 +21666,28 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, "node_modules/safe-buffer": { "version": "5.1.2", "license": "MIT" @@ -21513,14 +21699,17 @@ "optional": true }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -21658,6 +21847,36 @@ "version": "2.6.0", "license": "MIT" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "license": "MIT" @@ -21847,7 +22066,6 @@ }, "node_modules/side-channel": { "version": "1.0.4", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.0", @@ -22136,8 +22354,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "license": "BSD-3-Clause", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -22384,27 +22603,47 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "dev": true, - "license": "MIT", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "dev": true, - "license": "MIT", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -22645,8 +22884,9 @@ "license": "CC0-1.0" }, "node_modules/tar": { - "version": "6.2.0", - "license": "ISC", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -23027,9 +23267,14 @@ } }, "node_modules/traverse": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", - "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, "engines": { "node": ">= 0.4" }, @@ -23111,6 +23356,94 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", @@ -23177,7 +23510,6 @@ }, "node_modules/unbox-primitive": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -23653,7 +23985,6 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", @@ -23671,14 +24002,15 @@ "license": "ISC" }, "node_modules/which-typed-array": { - "version": "1.1.11", - "license": "MIT", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4"