diff --git a/app.config.js b/app.config.js index ca417206bf..87ed614ee9 100644 --- a/app.config.js +++ b/app.config.js @@ -259,12 +259,6 @@ module.exports = function (_config) { }, ], 'react-native-compressor', - [ - '@bitdrift/react-native', - { - networkInstrumentation: true, - }, - ], './plugins/starterPackAppClipExtension/withStarterPackAppClip.js', './plugins/withGradleJVMHeapSizeIncrease.js', './plugins/withAndroidManifestLargeHeapPlugin.js', diff --git a/eslint.config.mjs b/eslint.config.mjs index a864bea059..c3c36b4c4f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -72,6 +72,7 @@ export default defineConfig( sourceType: 'module', globals: { ...globals.browser, + ...globals.node, }, parserOptions: { parser: tsParser, diff --git a/jest/jestSetup.js b/jest/jestSetup.js index 8def1158c0..ec5d4a9361 100644 --- a/jest/jestSetup.js +++ b/jest/jestSetup.js @@ -114,5 +114,4 @@ jest.mock('statsig-react-native-expo', () => ({ }, })) -jest.mock('../src/logger/bitdrift/lib', () => ({})) jest.mock('../src/lib/statsig/statsig', () => ({})) diff --git a/package.json b/package.json index b89ec45d6f..2f3f913f12 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ }, "dependencies": { "@atproto/api": "^0.18.15", - "@bitdrift/react-native": "^0.6.8", "@braintree/sanitize-url": "^6.0.2", "@bsky.app/alf": "^0.1.6", "@bsky.app/expo-image-crop-tool": "^0.5.0", diff --git a/src/App.native.tsx b/src/App.native.tsx index 8f0768815f..7f49c0a145 100644 --- a/src/App.native.tsx +++ b/src/App.native.tsx @@ -1,5 +1,4 @@ import '#/logger/sentry/setup' -import '#/logger/bitdrift/setup' import '#/view/icons' import React, {useEffect, useState} from 'react' @@ -66,8 +65,10 @@ import {Provider as PolicyUpdateOverlayProvider} from '#/components/PolicyUpdate import {Provider as PortalProvider} from '#/components/Portal' import {Provider as VideoVolumeProvider} from '#/components/Post/Embed/VideoEmbed/VideoVolumeContext' import {ToastOutlet} from '#/components/Toast' -import {Provider as AgeAssuranceV2Provider} from '#/ageAssurance' -import {prefetchAgeAssuranceConfig} from '#/ageAssurance' +import { + prefetchAgeAssuranceConfig, + Provider as AgeAssuranceV2Provider, +} from '#/ageAssurance' import {IS_ANDROID, IS_IOS} from '#/env' import { prefetchLiveEvents, diff --git a/src/logger/bitdrift/lib/index.ts b/src/logger/bitdrift/lib/index.ts deleted file mode 100644 index fccd2c57a2..0000000000 --- a/src/logger/bitdrift/lib/index.ts +++ /dev/null @@ -1 +0,0 @@ -export {debug, error, info, warn} from '@bitdrift/react-native' diff --git a/src/logger/bitdrift/lib/index.web.ts b/src/logger/bitdrift/lib/index.web.ts deleted file mode 100644 index 5db69450fa..0000000000 --- a/src/logger/bitdrift/lib/index.web.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function debug() {} -export function error() {} -export function info() {} -export function warn() {} diff --git a/src/logger/bitdrift/setup/index.ts b/src/logger/bitdrift/setup/index.ts deleted file mode 100644 index dd2560acc6..0000000000 --- a/src/logger/bitdrift/setup/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import {init, SessionStrategy} from '@bitdrift/react-native' -import {Statsig} from 'statsig-react-native-expo' - -import {initPromise} from '#/lib/statsig/statsig' -import {BITDRIFT_API_KEY} from '#/env' - -initPromise.then(() => { - let isEnabled = false - let isNetworkEnabled = false - try { - if (Statsig.checkGate('enable_bitdrift_v2')) { - isEnabled = true - } - if (Statsig.checkGate('enable_bitdrift_v2_networking')) { - isNetworkEnabled = true - } - } catch (e) { - // Statsig may complain about it being called too early. - } - if (isEnabled && BITDRIFT_API_KEY) { - init(BITDRIFT_API_KEY, SessionStrategy.Activity, { - url: 'https://api-bsky.bitdrift.io', - // Only effects iOS, Android instrumentation is set via Gradle Plugin - enableNetworkInstrumentation: isNetworkEnabled, - }) - } -}) diff --git a/src/logger/bitdrift/setup/index.web.ts b/src/logger/bitdrift/setup/index.web.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/logger/index.ts b/src/logger/index.ts index bede4ef6c9..3da8908c79 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -3,7 +3,6 @@ import {nanoid} from 'nanoid/non-secure' import {logEvent} from '#/lib/statsig/statsig' import {add} from '#/logger/logDump' import {type MetricEvents} from '#/logger/metrics' -import {bitdriftTransport} from '#/logger/transports/bitdrift' import {consoleTransport} from '#/logger/transports/console' import {sentryTransport} from '#/logger/transports/sentry' import { @@ -13,7 +12,6 @@ import { type Transport, } from '#/logger/types' import {enabledLogLevels} from '#/logger/util' -import {IS_NATIVE} from '#/env' import {ENV} from '#/env' export {type MetricEvents as Metrics} from '#/logger/metrics' @@ -21,9 +19,7 @@ export {type MetricEvents as Metrics} from '#/logger/metrics' const TRANSPORTS: Transport[] = (function configureTransports() { switch (ENV) { case 'production': { - return [sentryTransport, IS_NATIVE && bitdriftTransport].filter( - Boolean, - ) as Transport[] + return [sentryTransport].filter(Boolean) } case 'test': { return [] diff --git a/src/logger/transports/bitdrift.ts b/src/logger/transports/bitdrift.ts deleted file mode 100644 index d6b9728d44..0000000000 --- a/src/logger/transports/bitdrift.ts +++ /dev/null @@ -1,24 +0,0 @@ -import {debug, error, info, warn} from '#/logger/bitdrift/lib' -import {LogLevel, type Transport} from '#/logger/types' -import {prepareMetadata} from '#/logger/util' - -const logFunctions = { - [LogLevel.Debug]: debug, - [LogLevel.Info]: info, - [LogLevel.Log]: info, - [LogLevel.Warn]: warn, - [LogLevel.Error]: error, -} as const - -export const bitdriftTransport: Transport = ( - level, - context, - message, - metadata, -) => { - const log = logFunctions[level] - log(message.toString(), { - __context__: context, - ...prepareMetadata(metadata), - }) -} diff --git a/src/state/session/logging.ts b/src/state/session/logging.ts index bf847f08f5..da017d823f 100644 --- a/src/state/session/logging.ts +++ b/src/state/session/logging.ts @@ -1,8 +1,5 @@ import {type AtpSessionData, type AtpSessionEvent} from '@atproto/api' -import {sha256} from 'js-sha256' -import {Statsig} from 'statsig-react-native-expo' -import {IS_INTERNAL} from '#/env' import {type Schema} from '../persisted' import {type Action, type State} from './reducer' import {type SessionAccount} from './types' @@ -68,92 +65,9 @@ export function wrapSessionReducerForLogging(reducer: Reducer): Reducer { } } -let nextMessageIndex = 0 -const MAX_SLICE_LENGTH = 1000 - -// Not gated. -export function addSessionErrorLog(did: string, event: AtpSessionEvent) { - try { - if (!Statsig.initializeCalled() || !Statsig.getStableID()) { - return - } - const stack = (new Error().stack ?? '').slice(0, MAX_SLICE_LENGTH) - Statsig.logEvent('session:error', null, { - did, - event, - stack, - }) - } catch (e) { - console.error(e) - } -} - -export function addSessionDebugLog(log: Log) { - try { - if (!Statsig.initializeCalled() || !Statsig.getStableID()) { - // Drop these logs for now. - return - } - // DISABLING THIS GATE DUE TO EME @TODO EME-GATE - if (!IS_INTERNAL) { - return - } - // if (!Statsig.checkGate('debug_session')) { - // return - // } - const messageIndex = nextMessageIndex++ - const {type, ...content} = log - let payload = JSON.stringify(content, replacer) - - let nextSliceIndex = 0 - while (payload.length > 0) { - const sliceIndex = nextSliceIndex++ - const slice = payload.slice(0, MAX_SLICE_LENGTH) - payload = payload.slice(MAX_SLICE_LENGTH) - Statsig.logEvent('session:debug', null, { - realmId, - messageIndex: String(messageIndex), - messageType: type, - sliceIndex: String(sliceIndex), - slice, - }) - } - } catch (e) { - console.error(e) - } -} - -let agentIds = new WeakMap() -let realmId = Math.random().toString(36).slice(2) -let nextAgentId = 1 - -function getAgentId(agent: object) { - let id = agentIds.get(agent) - if (id === undefined) { - id = realmId + '::' + nextAgentId++ - agentIds.set(agent, id) - } - return id -} - -function replacer(key: string, value: unknown) { - if (typeof value === 'object' && value != null && 'api' in value) { - return getAgentId(value) - } - if ( - key === 'service' || - key === 'email' || - key === 'emailConfirmed' || - key === 'emailAuthFactor' || - key === 'pdsUrl' - ) { - return undefined - } - if ( - typeof value === 'string' && - (key === 'refreshJwt' || key === 'accessJwt') - ) { - return sha256(value) - } - return value -} +/** + * Stubs, previously used to log session errors to Statsig. We may revive this + * using Sentry or Bitdrift in the future. + */ +export function addSessionErrorLog(_did: string, _event: AtpSessionEvent) {} +export function addSessionDebugLog(_log: Log) {} diff --git a/yarn.lock b/yarn.lock index cc81ec14ef..017574fad8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3663,14 +3663,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@bitdrift/react-native@^0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@bitdrift/react-native/-/react-native-0.6.8.tgz#386495857bc81345de418750b5ca0e3c3b964f6c" - integrity sha512-ixjJTEfUz3GeQ7srxpoYpnOGVx+iDA/A8Y3CZe5cg+/b0d8xur8fBKFoRBiXXohzJnYq4W8MIWIhLAwm5sD9oA== - dependencies: - "@expo/config-plugins" "^9.0.14" - fast-json-stringify "^6.0.0" - "@braintree/sanitize-url@^6.0.2": version "6.0.4" resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" @@ -4096,26 +4088,6 @@ node-forge "^1.2.1" nullthrows "^1.1.1" -"@expo/config-plugins@^9.0.14": - version "9.0.14" - resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-9.0.14.tgz#c57cc86c238b276823ff66d96e4722366d57b12c" - integrity sha512-Lx1ebV95rTFKKQmbu4wMPLz65rKn7mqSpfANdCx+KwRxuLY2JQls8V4h3lQjG6dW8NWf9qV5QaEFAgNB6VMyOQ== - dependencies: - "@expo/config-types" "^52.0.3" - "@expo/json-file" "~9.0.1" - "@expo/plist" "^0.2.1" - "@expo/sdk-runtime-versions" "^1.0.0" - chalk "^4.1.2" - debug "^4.3.5" - getenv "^1.0.0" - glob "^10.4.2" - resolve-from "^5.0.0" - semver "^7.5.4" - slash "^3.0.0" - slugify "^1.6.6" - xcode "^3.0.1" - xml2js "0.6.0" - "@expo/config-plugins@~54.0.1": version "54.0.1" resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-54.0.1.tgz#cf811b38c7cf6ee32c611265605683032bf13b48" @@ -4156,11 +4128,6 @@ xcode "^3.0.1" xml2js "0.6.0" -"@expo/config-types@^52.0.3": - version "52.0.3" - resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-52.0.3.tgz#511f2f868172c93abeac7183beeb921dc72d6e1e" - integrity sha512-muxvuARmbysH5OGaiBRlh1Y6vfdmL56JtpXxB+y2Hfhu0ezG1U4FjZYBIacthckZPvnDCcP3xIu1R+eTo7/QFA== - "@expo/config-types@^54.0.8": version "54.0.8" resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-54.0.8.tgz#2aa1f96e0abad6a125d0ff1092b303280f7962e9" @@ -4300,15 +4267,6 @@ "@babel/code-frame" "~7.10.4" json5 "^2.2.3" -"@expo/json-file@~9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-9.0.1.tgz#ff60654caf1fa3c33f9b17dcd1e9691eb854a318" - integrity sha512-ZVPhbbEBEwafPCJ0+kI25O2Iivt3XKHEKAADCml1q2cmOIbQnKgLyn8DpOJXqWEyRQr/VWS+hflBh8DU2YFSqg== - dependencies: - "@babel/code-frame" "~7.10.4" - json5 "^2.2.3" - write-file-atomic "^2.3.0" - "@expo/metro-config@54.0.10", "@expo/metro-config@~54.0.10": version "54.0.10" resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-54.0.10.tgz#f15ecb8cea476a3f27b182a87b8740291395170e" @@ -4374,15 +4332,6 @@ ora "^3.4.0" resolve-workspace-root "^2.0.0" -"@expo/plist@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.2.1.tgz#a315e1964ee9eece5c56040d460db5de7af85889" - integrity sha512-9TaXGuNxa0LQwHQn4rYiU6YaERv6dPnQgsdKWq2rKKTr6LWOtGNQCi/yOk/HBLeZSxBm59APT5/6x60uRvr0Mg== - dependencies: - "@xmldom/xmldom" "~0.7.7" - base64-js "^1.2.3" - xmlbuilder "^14.0.0" - "@expo/plist@^0.4.7": version "0.4.7" resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.4.7.tgz#40fa796e93d5be0452ce72e5110e69c8ac915403" @@ -4498,13 +4447,6 @@ resolved "https://registry.yarnpkg.com/@fastify/deepmerge/-/deepmerge-1.3.0.tgz#8116858108f0c7d9fd460d05a7d637a13fe3239a" integrity sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A== -"@fastify/merge-json-schemas@^0.2.0": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz#3aa30d2f0c81a8ac5995b6d94ed4eaa2c3055824" - integrity sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A== - dependencies: - dequal "^2.0.3" - "@floating-ui/core@^1.0.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" @@ -6262,7 +6204,7 @@ resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.1.tgz#78244efe12930c56fd255d7923865857c41ac8cb" integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw== -"@react-native-async-storage/async-storage@2.2.0", "@react-native-async-storage/async-storage@^1.15.2": +"@react-native-async-storage/async-storage@2.2.0", "@react-native-async-storage/async-storage@^1.21.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz#a3aa565253e46286655560172f4e366e8969f5ad" integrity sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw== @@ -8318,11 +8260,6 @@ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== -"@xmldom/xmldom@~0.7.7": - version "0.7.13" - resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.13.tgz#ff34942667a4e19a9f4a0996a76814daac364cf3" - integrity sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g== - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -8433,13 +8370,6 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv-formats@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" - integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== - dependencies: - ajv "^8.0.0" - ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" @@ -8472,16 +8402,6 @@ ajv@^8.0.0, ajv@^8.10.0, ajv@^8.11.0, ajv@^8.9.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^8.12.0: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" - integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== - dependencies: - fast-deep-equal "^3.1.3" - fast-uri "^3.0.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - anser@^1.4.9: version "1.4.10" resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" @@ -10434,11 +10354,6 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -11609,7 +11524,7 @@ expo-clipboard@~8.0.8: resolved "https://registry.yarnpkg.com/expo-clipboard/-/expo-clipboard-8.0.8.tgz#5e52054a4bbaebef090ec6fe5eaa200072ff94f7" integrity sha512-VKoBkHIpZZDJTB0jRO4/PZskHdMNOEz3P/41tmM6fDuODMpqhvyWK053X0ebspkxiawJX9lX33JXHBCvVsTTOA== -expo-constants@18.0.8, expo-constants@^13.0.2, expo-constants@~18.0.11: +expo-constants@18.0.8, expo-constants@~18.0.11: version "18.0.8" resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-18.0.8.tgz#14f8388136de6e83d651bd68b326a675dfb7051c" integrity sha512-Tetphsx6RVImCTZeBAclRQMy0WOODY3y6qrUoc88YGUBVm8fAKkErCSWxLTCc6nFcJxdoOMYi62LgNIUFjZCLA== @@ -11654,7 +11569,7 @@ expo-dev-menu@7.0.18: dependencies: expo-dev-menu-interface "2.0.0" -expo-device@7.1.4, expo-device@~4.1.1: +expo-device@7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-7.1.4.tgz#84ae7c2520cc45f15a9cb0433ae1226c33f7a8ef" integrity sha512-HS04IiE1Fy0FRjBLurr9e5A6yj3kbmQB+2jCZvbSGpsjBnCLdSk/LCii4f5VFhPIBWJLyYuN5QqJyEAw6BcS4Q== @@ -12027,18 +11942,6 @@ fast-json-stringify@^5.8.0: fast-uri "^2.1.0" rfdc "^1.2.0" -fast-json-stringify@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/fast-json-stringify/-/fast-json-stringify-6.0.1.tgz#82f1cb45fa96d0ca24b601f1738066976d6e2430" - integrity sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg== - dependencies: - "@fastify/merge-json-schemas" "^0.2.0" - ajv "^8.12.0" - ajv-formats "^3.0.1" - fast-uri "^3.0.0" - json-schema-ref-resolver "^2.0.0" - rfdc "^1.2.0" - fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -12066,11 +11969,6 @@ fast-uri@^2.1.0: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.2.0.tgz#519a0f849bef714aad10e9753d69d8f758f7445a" integrity sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg== -fast-uri@^3.0.0, fast-uri@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" - integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== - fast-xml-parser@5.2.5: version "5.2.5" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz#4809fdfb1310494e341098c25cb1341a01a9144a" @@ -14354,6 +14252,11 @@ js-sha256@^0.10.1: resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.10.1.tgz#b40104ba1368e823fdd5f41b66b104b15a0da60d" integrity sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw== +js-sha256@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.1.tgz#712262e8fc9569d6f7f6eea72c0d8e5ccc7c976c" + integrity sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg== + js-sha256@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" @@ -14448,13 +14351,6 @@ json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -json-schema-ref-resolver@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/json-schema-ref-resolver/-/json-schema-ref-resolver-2.0.1.tgz#c92f16b452df069daac53e1984159e0f9af0598d" - integrity sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q== - dependencies: - dequal "^2.0.3" - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -17276,14 +17172,7 @@ react-native-gesture-handler@~2.28.0: hoist-non-react-statics "^3.3.0" invariant "^2.2.4" -react-native-get-random-values@^1.6.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.10.0.tgz#c2c5f12a4ef8b1175145347b4a4b9f9a40d9ffc8" - integrity sha512-gZ1zbXhbb8+Jy9qYTV8c4Nf45/VB4g1jmXuavY5rPfUn7x3ok9Vl3FTl0dnE92Z4FFtfbUNNwtSfcmomdtWg+A== - dependencies: - fast-base64-decode "^1.0.0" - -react-native-get-random-values@~1.11.0: +react-native-get-random-values@^1.8.0, react-native-get-random-values@~1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.11.0.tgz#1ca70d1271f4b08af92958803b89dccbda78728d" integrity sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ== @@ -18721,13 +18610,13 @@ standard-as-callback@^2.1.0: resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== -statsig-js@4.45.1: - version "4.45.1" - resolved "https://registry.yarnpkg.com/statsig-js/-/statsig-js-4.45.1.tgz#b1f5b9c52adc4a8aece376fb011416c89227932f" - integrity sha512-h94RzFQsJCQCNwQXpZ9OBXcvCxDnkXF6OrCekd81ySvY2l4JSowpxMWX3Iw6IDFzfTfKdER9JQzFLhMSQbT+YQ== +statsig-js@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/statsig-js/-/statsig-js-5.0.0.tgz#a1755567fd5f4793cd1f19d61a3c80867d9916a6" + integrity sha512-Xhi0IzsOdIN2V4jfSrHmeGf+KQrNar79CynE7y3dBuTXpXpWc9ymB67CzcbiY+melJ337+NuNjvBdrrRw2cAhQ== dependencies: - js-sha256 "^0.10.1" - uuid "^8.3.2" + js-sha256 "^0.11.0" + uuid "^9.0.1" statsig-node@^5.23.1: version "5.25.1" @@ -18740,24 +18629,22 @@ statsig-node@^5.23.1: uuid "^8.3.2" statsig-react-native-expo@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/statsig-react-native-expo/-/statsig-react-native-expo-4.6.1.tgz#0bdf49fee7112f7f28bff2405f4ba0c1727bb3d6" - integrity sha512-rB60c+WSrQPmjW9j75d+acUtwSOe38PE2KTDHiOv1Mf+0TCcFtGYlJmKCibWvbeXR7ZAyjjGeroh23bCSEZauQ== + version "4.7.2" + resolved "https://registry.yarnpkg.com/statsig-react-native-expo/-/statsig-react-native-expo-4.7.2.tgz#c27821b0119758eaa0a6769ee956d640aa6d5255" + integrity sha512-hLc+3IMaPh+nEfcQWPHTuBVJbcIoy/i9DB3wFwY0OOromKM/MizMDrPGhsyQJwNF2JRxZE26jGE7AMfXYgu2xw== dependencies: - "@react-native-async-storage/async-storage" "^1.15.2" - expo-constants "^13.0.2" - expo-device "~4.1.1" + "@react-native-async-storage/async-storage" "^1.21.0" js-sha256 "^0.9.0" - react-native-get-random-values "^1.6.0" - statsig-react "^1.21.1" + react-native-get-random-values "^1.8.0" + statsig-react "2.0.0" uuid "^8.3.2" -statsig-react@^1.21.1: - version "1.35.0" - resolved "https://registry.yarnpkg.com/statsig-react/-/statsig-react-1.35.0.tgz#ad5730b83f564c640623e954fcbcbe848e939946" - integrity sha512-KLN7dhq6FvAl25Z0QN6IINFBgM3yn0GMafoE698tYZqRf911xvevFaR7qUXiTz3W9vmFYrmFRouqVMfCv7DW0A== +statsig-react@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/statsig-react/-/statsig-react-2.0.0.tgz#1daf77266b58873a25cf86e75471c75099670811" + integrity sha512-KnM8bxjGhKC/0nr+tUzSppuNRQbUH8OVGVeNX5C8Rjoyu+N+OTl2I/ufIHQFEzRCmrsNpLmniPLFbdY2T544rA== dependencies: - statsig-js "4.45.1" + statsig-js "5.0.0" statuses@2.0.1: version "2.0.1" @@ -19969,7 +19856,7 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.0: +uuid@^9.0.0, uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== @@ -20452,15 +20339,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - write-file-atomic@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" @@ -20517,11 +20395,6 @@ xml@^1.0.1: resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== -xmlbuilder@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-14.0.0.tgz#876b5aec4f05ffd5feb97b0a871c855d16fbeb8c" - integrity sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg== - xmlbuilder@^15.1.1: version "15.1.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5"