From bdd844f9e7264b752d7e1ca378c05fec6d1e66fb Mon Sep 17 00:00:00 2001 From: Debashish Patra Date: Wed, 1 Jan 2025 18:03:38 +0530 Subject: [PATCH] fix: users pinned to the wrong account (#183) fix: mismatching avatar on hub tabs --- apps/mobile/app/(tabs)/_layout.tsx | 70 +------------ .../AppBottomSheetSelectAccount.tsx | 47 +++------ apps/mobile/components/lib/Avatar.tsx | 13 +-- apps/mobile/components/lib/Menu.tsx | 54 ++++++++++ .../components/screens/home/SocialHub.tsx | 6 +- apps/mobile/package.json | 5 +- apps/mobile/states/_global.ts | 1 + yarn.lock | 99 ++----------------- 8 files changed, 90 insertions(+), 205 deletions(-) diff --git a/apps/mobile/app/(tabs)/_layout.tsx b/apps/mobile/app/(tabs)/_layout.tsx index bd3b35fa..2b70339c 100644 --- a/apps/mobile/app/(tabs)/_layout.tsx +++ b/apps/mobile/app/(tabs)/_layout.tsx @@ -1,24 +1,15 @@ import { Tabs } from 'expo-router'; -import FontAwesome6 from '@expo/vector-icons/FontAwesome6'; import Ionicons from '@expo/vector-icons/Ionicons'; import { View } from 'react-native'; -import { useAppNotificationBadge } from '../../hooks/app/useAppNotificationBadge'; import WithAppAssetsContext from '../../hooks/app/useAssets'; -import AntDesign from '@expo/vector-icons/AntDesign'; import { HomeNavigationIcon, ProfileTabNavbarIcon, } from '../../components/lib/Icon'; -import useGlobalState from '../../states/_global'; -import { useShallow } from 'zustand/react/shallow'; +import { useAppTheme } from '../../hooks/utility/global-state-extractors'; export default function TabLayout() { - const { notificationCount } = useAppNotificationBadge(); - const { theme } = useGlobalState( - useShallow((o) => ({ - theme: o.colorScheme, - })), - ); + const { theme } = useAppTheme(); return ( @@ -26,67 +17,12 @@ export default function TabLayout() { { - let badgeCount = undefined; - if (route.name === 'notifications') { - badgeCount = - notificationCount === 0 ? undefined : notificationCount; - } + screenOptions={() => { return { - tabBarItemStyle: { flex: 1 }, tabBarHideOnKeyboard: true, - tabBarIcon: ({ focused, color, size }) => { - let iconName; - let renderer = 'ionicons'; - console.log(route.name); - switch (route.name) { - case 'Home': { - iconName = focused ? 'index' : 'index'; - break; - } - case 'SearchTab': { - iconName = focused ? 'compass' : 'compass'; - renderer = 'fa6'; - break; - } - case 'Favourites': { - iconName = focused ? 'appstore1' : 'appstore1'; - renderer = 'antdesign'; - break; - } - case 'Notifications': { - iconName = focused ? 'notifications' : 'notifications'; - break; - } - case 'Accounts': { - iconName = focused ? 'person' : 'person'; - } - } - switch (renderer) { - case 'antdesign': - return ( - - ); - case 'fa6': - return ( - - ); - default: - return ; - } - }, // tabBarBadge: badgeCount, - tabBarBadgeStyle: { - // backgroundColor: 'black', - color: 'yellow', - }, tabBarStyle: { backgroundColor: theme.palette.bg, borderTopWidth: 0, - height: 52, }, tabBarIconStyle: { height: 42, diff --git a/apps/mobile/components/dhaaga-bottom-sheet/modules/select-account/AppBottomSheetSelectAccount.tsx b/apps/mobile/components/dhaaga-bottom-sheet/modules/select-account/AppBottomSheetSelectAccount.tsx index 56ea3716..e5c4e6a2 100644 --- a/apps/mobile/components/dhaaga-bottom-sheet/modules/select-account/AppBottomSheetSelectAccount.tsx +++ b/apps/mobile/components/dhaaga-bottom-sheet/modules/select-account/AppBottomSheetSelectAccount.tsx @@ -1,6 +1,6 @@ import { memo } from 'react'; import { AnimatedFlashList } from '@shopify/flash-list'; -import { Pressable, Text, TouchableOpacity, View } from 'react-native'; +import { Pressable, Text, View } from 'react-native'; import { APP_FONTS } from '../../../../styles/AppFonts'; import { AccountDetails, @@ -16,13 +16,12 @@ import { import useGlobalState from '../../../../states/_global'; import { useShallow } from 'zustand/react/shallow'; import { useAppListAccounts } from '../../../../hooks/db/useAppListAccounts'; -import { AppIcon } from '../../../lib/Icon'; import { APP_ROUTING_ENUM } from '../../../../utils/route-list'; -import { APP_COLOR_PALETTE_EMPHASIS } from '../../../../utils/theming.util'; import { useAppBottomSheet_Improved, useAppTheme, } from '../../../../hooks/utility/global-state-extractors'; +import { AppBottomSheetMenu } from '../../../lib/Menu'; type FlashListItemProps = { acct: Account; @@ -148,39 +147,15 @@ const AppBottomSheetSelectAccount = memo(() => { ( - - - Select Account - - - - - + )} data={data} renderItem={({ item }) => } diff --git a/apps/mobile/components/lib/Avatar.tsx b/apps/mobile/components/lib/Avatar.tsx index bfab90cd..3e291d26 100644 --- a/apps/mobile/components/lib/Avatar.tsx +++ b/apps/mobile/components/lib/Avatar.tsx @@ -1,9 +1,9 @@ import { memo } from 'react'; import { Image } from 'expo-image'; -import useGlobalState from '../../states/_global'; -import { useShallow } from 'zustand/react/shallow'; import { StyleProp, Text, View, ViewStyle } from 'react-native'; import { APP_FONTS } from '../../styles/AppFonts'; +import { Account } from '../../database/_schema'; +import { useAppTheme } from '../../hooks/utility/global-state-extractors'; type AppAvatarProps = { uri: string; @@ -29,18 +29,15 @@ export const AppAvatar = memo(({ uri, size }: AppAvatarProps) => { type SocialHubAvatarCircleProps = { size?: number; style?: StyleProp; + acct: Account; }; export function SocialHubAvatarCircle({ size, style, + acct, }: SocialHubAvatarCircleProps) { - const { acct, theme } = useGlobalState( - useShallow((o) => ({ - acct: o.acct, - theme: o.colorScheme, - })), - ); + const { theme } = useAppTheme(); if (!acct) return ; diff --git a/apps/mobile/components/lib/Menu.tsx b/apps/mobile/components/lib/Menu.tsx index f2f35999..f6147871 100644 --- a/apps/mobile/components/lib/Menu.tsx +++ b/apps/mobile/components/lib/Menu.tsx @@ -12,6 +12,7 @@ import { useShallow } from 'zustand/react/shallow'; import { APP_ICON_ENUM, AppIcon } from './Icon'; import { useAppTheme } from '../../hooks/utility/global-state-extractors'; import { Loader } from './Loader'; +import { APP_COLOR_PALETTE_EMPHASIS } from '../../utils/theming.util'; type AppMenuOptionType = { appIconId: any; @@ -170,11 +171,64 @@ type AppBottomSheetMenuWithBackNavigationProps = { nextLoading?: boolean; }; +type AppBottomSheetMenuHeaderProps = { + title: string; + desc?: string; + menuItems: { + iconId: string; + onPress: () => void; + }[]; +}; + /** * * @constructor */ export class AppBottomSheetMenu { + static Header({ title, menuItems }: AppBottomSheetMenuHeaderProps) { + const { theme } = useAppTheme(); + return ( + + + {title} + + + {menuItems.map((o, i) => ( + + + + ))} + + + ); + } + static WithBackNavigation({ onBack, onNext, diff --git a/apps/mobile/components/screens/home/SocialHub.tsx b/apps/mobile/components/screens/home/SocialHub.tsx index 00dbeb68..9a37b9cc 100644 --- a/apps/mobile/components/screens/home/SocialHub.tsx +++ b/apps/mobile/components/screens/home/SocialHub.tsx @@ -203,7 +203,11 @@ function SocialHubTab({ account }: SocialHubTabProps) { style={{ marginTop: 8 }} leftDecorator={ - + } index={Index} diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 4f87ec4e..da61e407 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -9,7 +9,7 @@ "aab": "eas build -p android --profile aab", "client": "eas build -p android --profile dev", "lite": "react-native build-android --mode=release && cd android && ./gradlew assembleRelease", - "postins tall": "cd ../.. && yarn build" + "postinstall": "cd ../.. && yarn build" }, "dependencies": { "@atproto/api": "^0.13.23", @@ -20,6 +20,7 @@ "@expo/metro-config": "~0.19.0", "@expo/vector-icons": "^14.0.4", "@huggingface/inference": "^2.8.1", + "@react-native-masked-view/masked-view": "0.3.2", "@rneui/base": "^4.0.0-rc.7", "@rneui/themed": "^4.0.0-rc.8", "@shopify/flash-list": "1.7.1", @@ -37,7 +38,6 @@ "expo-image-picker": "~16.0.3", "expo-linking": "~7.0.3", "expo-localization": "^16.0.0", - "expo-notifications": "~0.29.11", "expo-router": "~4.0.15", "expo-splash-screen": "~0.29.18", "expo-sqlite": "~15.0.5", @@ -51,7 +51,6 @@ "react": "18.3.1", "react-i18next": "^15.2.0", "react-native": "0.76.5", - "react-native-awesome-gallery": "^0.4.3", "react-native-gesture-handler": "~2.20.2", "react-native-pager-view": "6.5.1", "react-native-reanimated": "~3.16.1", diff --git a/apps/mobile/states/_global.ts b/apps/mobile/states/_global.ts index dadac5fb..6b426a28 100644 --- a/apps/mobile/states/_global.ts +++ b/apps/mobile/states/_global.ts @@ -338,6 +338,7 @@ const useGlobalState = create()( get().db, restoreResult.value.acct, ); + state.profileSessionManager = new ProfileSessionManager(get().db); state.router = restoreResult.value.router; state.driver = restoreResult.value.acct.driver as KNOWN_SOFTWARE; state.publishers.postPub = new PostPublisherService( diff --git a/yarn.lock b/yarn.lock index 62cebdfe..c5ebb24e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1251,11 +1251,6 @@ resolved "https://registry.yarnpkg.com/@huggingface/tasks/-/tasks-0.12.30.tgz#ed1295c12cd85fc1ff4621485703be92083148b0" integrity sha512-A1ITdxbEzx9L8wKR8pF7swyrTLxWNDFIGDLUWInxvks2ruQ8PLRBZe8r0EcjC3CDdtlj9jV1V4cgV35K/iy3GQ== -"@ide/backoff@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@ide/backoff/-/backoff-1.0.0.tgz#466842c25bd4a4833e0642fab41ccff064010176" - integrity sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g== - "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1618,6 +1613,11 @@ prompts "^2.4.2" semver "^7.5.2" +"@react-native-masked-view/masked-view@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@react-native-masked-view/masked-view/-/masked-view-0.3.2.tgz#7064533a573e3539ec912f59c1f457371bf49dd9" + integrity sha512-XwuQoW7/GEgWRMovOQtX3A4PrXhyaZm0lVUiY8qJDvdngjLms9Cpdck6SmGAUNqQwcj2EadHC1HwL0bEyoa/SQ== + "@react-native/assets-registry@0.76.5": version "0.76.5" resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.76.5.tgz#3343338813aa6354df9fec52af50d0b5f7f3d013" @@ -2362,17 +2362,6 @@ asap@~2.0.3, asap@~2.0.6: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -assert@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" - integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== - dependencies: - call-bind "^1.0.2" - is-nan "^1.3.2" - object-is "^1.1.5" - object.assign "^4.1.4" - util "^0.12.5" - ast-types@0.15.2: version "0.15.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" @@ -2563,11 +2552,6 @@ babel-preset-jest@^29.6.3: babel-plugin-jest-hoist "^29.6.3" babel-preset-current-node-syntax "^1.0.0" -badgin@^1.1.5: - version "1.2.3" - resolved "https://registry.yarnpkg.com/badgin/-/badgin-1.2.3.tgz#994b5f519827d7d5422224825b2c8faea2bc43ad" - integrity sha512-NQGA7LcfCpSzIbGRbkgjgdWkjy7HI+Th5VLxTJfW5EeaAf3fnS+xWQaQOCYiny+q6QSvxqoSO04vCx+4u++EJw== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -2746,7 +2730,7 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1: es-errors "^1.3.0" function-bind "^1.1.2" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.7, call-bind@^1.0.8: +call-bind@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== @@ -3341,7 +3325,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-data-property@^1.0.1, define-data-property@^1.1.4: +define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== @@ -3355,15 +3339,6 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - del@^6.0.0: version "6.1.1" resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" @@ -3663,11 +3638,6 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -expo-application@~6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-6.0.1.tgz#bb5e1f15636c51c571a0062e8f9d4e504da967e4" - integrity sha512-w+1quSmKp8SYKT+GAFHSN5c6u+PqoVRIfpsLyRQrQdOnBA9dA8Hw6JT9sHNFmA30A2v1b/sdYZE3qKuRJFNSWQ== - expo-asset@~11.0.1: version "11.0.1" resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-11.0.1.tgz#8608f5ea4639698553725b6690dd621f6f70f206" @@ -3829,19 +3799,6 @@ expo-modules-core@2.1.2: dependencies: invariant "^2.2.4" -expo-notifications@~0.29.11: - version "0.29.11" - resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.29.11.tgz#0691f88c91f6598671cec8e2ff12922ea1493edf" - integrity sha512-u/Csc3YNOPjjuyjAeyj5ne7XR/Z0ABYVquhSnyjEj2Fp8mSldOPCMvaEA01pTFj+8HTlkjX5RZDvQ7cR62ngOA== - dependencies: - "@expo/image-utils" "^0.6.0" - "@ide/backoff" "^1.0.0" - abort-controller "^3.0.0" - assert "^2.0.0" - badgin "^1.1.5" - expo-application "~6.0.0" - expo-constants "~17.0.0" - expo-router@~4.0.15: version "4.0.15" resolved "https://registry.yarnpkg.com/expo-router/-/expo-router-4.0.15.tgz#bdc00b90bd60ab5ccb35ae51f31dcbc96c179949" @@ -4298,7 +4255,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: +has-property-descriptors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== @@ -4616,14 +4573,6 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-nan@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -5755,31 +5704,6 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-is@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" - integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.7" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" - integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - has-symbols "^1.1.0" - object-keys "^1.1.1" - on-finished@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -6322,11 +6246,6 @@ react-is@^18.0.0, react-is@^18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-native-awesome-gallery@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/react-native-awesome-gallery/-/react-native-awesome-gallery-0.4.3.tgz#ea15f27a8558ce0c433fb928c55ae13638ca8187" - integrity sha512-Q1dONPP5i8S/fSqxZKnSs3SMaGNp+89e97i6pzkHMcylRXttsN8m3BaVco9WxZEKhvBFRFw+Ay0Ft0u9Q6h2qA== - react-native-gesture-handler@~2.20.2: version "2.20.2" resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.20.2.tgz#73844c8e9c417459c2f2981bc4d8f66ba8a5ee66" @@ -7550,7 +7469,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.12.3, util@^0.12.5: +util@^0.12.3: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==