diff --git a/mobile_app/package-lock.json b/mobile_app/package-lock.json index 9b67337..768ef23 100644 --- a/mobile_app/package-lock.json +++ b/mobile_app/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@expo-google-fonts/space-grotesk": "^0.4.1", "@expo/vector-icons": "^15.0.3", - "@magicred-1/react-native-lxmf": "^0.2.79", + "@magicred-1/react-native-lxmf": "^0.2.80", "@msgpack/msgpack": "^3.1.3", "@noble/ciphers": "^2.2.0", "@noble/curves": "^2.2.0", @@ -21,7 +21,6 @@ "@react-navigation/bottom-tabs": "^7.4.0", "@react-navigation/elements": "^2.6.3", "@react-navigation/native": "^7.1.8", - "@sentry/react-native": "~7.2.0", "@solana-mobile/mobile-wallet-adapter-protocol": "^2.2.8", "@solana-mobile/mobile-wallet-adapter-protocol-web3js": "^2.2.8", "@solana/spl-token": "^0.4.14", @@ -2742,9 +2741,9 @@ } }, "node_modules/@magicred-1/react-native-lxmf": { - "version": "0.2.79", - "resolved": "https://registry.npmjs.org/@magicred-1/react-native-lxmf/-/react-native-lxmf-0.2.79.tgz", - "integrity": "sha512-z55axRdwKWlgZgbJ1KTwHW9TsqrsJIO9XDGxi0+A6+rs7GxB4RKSmdt1uajKzxKghijaSog9UzOEn0zlon+dhA==", + "version": "0.2.80", + "resolved": "https://registry.npmjs.org/@magicred-1/react-native-lxmf/-/react-native-lxmf-0.2.80.tgz", + "integrity": "sha512-+Vp1xy7v3XATU+2wJYjrFYGp6f9597nVNT9FI0ASdyz9LTP1JnrafoAW9ToukKnI3AysaB8sW5GxjXoZ+TmMtA==", "license": "MIT", "dependencies": { "@expo/config-plugins": "^9.0.0" @@ -3533,336 +3532,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@sentry-internal/browser-utils": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.12.0.tgz", - "integrity": "sha512-dozbx389jhKynj0d657FsgbBVOar7pX3mb6GjqCxslXF0VKpZH2Xks0U32RgDY/nK27O+o095IWz7YvjVmPkDw==", - "license": "MIT", - "dependencies": { - "@sentry/core": "10.12.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry-internal/feedback": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.12.0.tgz", - "integrity": "sha512-0+7ceO6yQPPqfxRc9ue/xoPHKcnB917ezPaehGQNfAFNQB9PNTG1y55+8mRu0Fw+ANbZeCt/HyoCmXuRdxmkpg==", - "license": "MIT", - "dependencies": { - "@sentry/core": "10.12.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry-internal/replay": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.12.0.tgz", - "integrity": "sha512-/1093gSNGN5KlOBsuyAl33JkzGiG38kCnxswQLZWpPpR6LBbR1Ddb18HjhDpoQNNEZybJBgJC3a5NKl43C2TSQ==", - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "10.12.0", - "@sentry/core": "10.12.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.12.0.tgz", - "integrity": "sha512-W/z1/+69i3INNfPjD1KuinSNaRQaApjzwb37IFmiyF440F93hxmEYgXHk3poOlYYaigl2JMYbysGPWOiXnqUXA==", - "license": "MIT", - "dependencies": { - "@sentry-internal/replay": "10.12.0", - "@sentry/core": "10.12.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.3.0.tgz", - "integrity": "sha512-OuxqBprXRyhe8Pkfyz/4yHQJc5c3lm+TmYWSSx8u48g5yKewSQDOxkiLU5pAk3WnbLPy8XwU/PN+2BG0YFU9Nw==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/@sentry/browser": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.12.0.tgz", - "integrity": "sha512-lKyaB2NFmr7SxPjmMTLLhQ7xfxaY3kdkMhpzuRI5qwOngtKt4+FtvNYHRuz+PTtEFv4OaHhNNbRn6r91gWguQg==", - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "10.12.0", - "@sentry-internal/feedback": "10.12.0", - "@sentry-internal/replay": "10.12.0", - "@sentry-internal/replay-canvas": "10.12.0", - "@sentry/core": "10.12.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/cli": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.55.0.tgz", - "integrity": "sha512-cynvcIM2xL8ddwELyFRSpZQw4UtFZzoM2rId2l9vg7+wDREPDocMJB9lEQpBIo3eqhp9JswqUT037yjO6iJ5Sw==", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.7", - "progress": "^2.0.3", - "proxy-from-env": "^1.1.0", - "which": "^2.0.2" - }, - "bin": { - "sentry-cli": "bin/sentry-cli" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@sentry/cli-darwin": "2.55.0", - "@sentry/cli-linux-arm": "2.55.0", - "@sentry/cli-linux-arm64": "2.55.0", - "@sentry/cli-linux-i686": "2.55.0", - "@sentry/cli-linux-x64": "2.55.0", - "@sentry/cli-win32-arm64": "2.55.0", - "@sentry/cli-win32-i686": "2.55.0", - "@sentry/cli-win32-x64": "2.55.0" - } - }, - "node_modules/@sentry/cli-darwin": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.55.0.tgz", - "integrity": "sha512-jGHE7SHHzqXUmnsmRLgorVH6nmMmTjQQXdPZbSL5tRtH8d3OIYrVNr5D72DSgD26XAPBDMV0ibqOQ9NKoiSpfA==", - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-arm": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.55.0.tgz", - "integrity": "sha512-ATjU0PsiWADSPLF/kZroLZ7FPKd5W9TDWHVkKNwIUNTei702LFgTjNeRwOIzTgSvG3yTmVEqtwFQfFN/7hnVXQ==", - "cpu": [ - "arm" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-arm64": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.55.0.tgz", - "integrity": "sha512-jNB/0/gFcOuDCaY/TqeuEpsy/k52dwyk1SOV3s1ku4DUsln6govTppeAGRewY3T1Rj9B2vgIWTrnB8KVh9+Rgg==", - "cpu": [ - "arm64" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-i686": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.55.0.tgz", - "integrity": "sha512-8LZjo6PncTM6bWdaggscNOi5r7F/fqRREsCwvd51dcjGj7Kp1plqo9feEzYQ+jq+KUzVCiWfHrUjddFmYyZJrg==", - "cpu": [ - "x86", - "ia32" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-linux-x64": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.55.0.tgz", - "integrity": "sha512-5LUVvq74Yj2cZZy5g5o/54dcWEaX4rf3myTHy73AKhRj1PABtOkfexOLbF9xSrZy95WXWaXyeH+k5n5z/vtHfA==", - "cpu": [ - "x64" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-win32-arm64": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.55.0.tgz", - "integrity": "sha512-cWIQdzm1pfLwPARsV6dUb8TVd6Y3V1A2VWxjTons3Ift6GvtVmiAe0OWL8t2Yt95i8v61kTD/6Tq21OAaogqzA==", - "cpu": [ - "arm64" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-win32-i686": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.55.0.tgz", - "integrity": "sha512-ldepCn2t9r4I0wvgk7NRaA7coJyy4rTQAzM66u9j5nTEsUldf66xym6esd5ZZRAaJUjffqvHqUIr/lrieTIrVg==", - "cpu": [ - "x86", - "ia32" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli-win32-x64": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.55.0.tgz", - "integrity": "sha512-4hPc/I/9tXx+HLTdTGwlagtAfDSIa2AoTUP30tl32NAYQhx9a6niUbPAemK2qfxesiufJ7D2djX83rCw6WnJVA==", - "cpu": [ - "x64" - ], - "license": "BSD-3-Clause", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@sentry/cli/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@sentry/cli/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@sentry/core": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.12.0.tgz", - "integrity": "sha512-Jrf0Yo7DvmI/ZQcvBnA0xKNAFkJlVC/fMlvcin+5IrFNRcqOToZ2vtF+XqTgjRZymXQNE8s1QTD7IomPHk0TAw==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/react": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.12.0.tgz", - "integrity": "sha512-TpqgdoYbkf5JynmmW2oQhHQ/h5w+XPYk0cEb/UrsGlvJvnBSR+5tgh0AqxCSi3gvtp82rAXI5w1TyRPBbhLDBw==", - "license": "MIT", - "dependencies": { - "@sentry/browser": "10.12.0", - "@sentry/core": "10.12.0", - "hoist-non-react-statics": "^3.3.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react": "^16.14.0 || 17.x || 18.x || 19.x" - } - }, - "node_modules/@sentry/react-native": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-7.2.0.tgz", - "integrity": "sha512-rjqYgEjntPz1sPysud78wi4B9ui7LBVPsG6qr8s/htLMYho9GPGFA5dF+eqsQWqMX8NDReAxNkLTC4+gCNklLQ==", - "license": "MIT", - "dependencies": { - "@sentry/babel-plugin-component-annotate": "4.3.0", - "@sentry/browser": "10.12.0", - "@sentry/cli": "2.55.0", - "@sentry/core": "10.12.0", - "@sentry/react": "10.12.0", - "@sentry/types": "10.12.0" - }, - "bin": { - "sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js" - }, - "peerDependencies": { - "expo": ">=49.0.0", - "react": ">=17.0.0", - "react-native": ">=0.65.0" - }, - "peerDependenciesMeta": { - "expo": { - "optional": true - } - } - }, - "node_modules/@sentry/types": { - "version": "10.12.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-10.12.0.tgz", - "integrity": "sha512-sKGj3l3V8ZKISh2Tu88bHfnm5ztkRtSLdmpZ6TmCeJdSM9pV+RRd6CMJ0RnSEXmYHselPNUod521t2NQFd4W1w==", - "license": "MIT", - "dependencies": { - "@sentry/core": "10.12.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@sinclair/typebox": { "version": "0.27.10", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", @@ -12512,12 +12181,6 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", diff --git a/mobile_app/package.json b/mobile_app/package.json index 8ed82b5..8ddeabe 100644 --- a/mobile_app/package.json +++ b/mobile_app/package.json @@ -20,7 +20,7 @@ "dependencies": { "@expo-google-fonts/space-grotesk": "^0.4.1", "@expo/vector-icons": "^15.0.3", - "@magicred-1/react-native-lxmf": "^0.2.79", + "@magicred-1/react-native-lxmf": "^0.2.80", "@msgpack/msgpack": "^3.1.3", "@noble/ciphers": "^2.2.0", "@noble/curves": "^2.2.0", @@ -30,8 +30,7 @@ "@react-navigation/bottom-tabs": "^7.4.0", "@react-navigation/elements": "^2.6.3", "@react-navigation/native": "^7.1.8", - "@sentry/react-native": "~7.2.0", - "@solana-mobile/mobile-wallet-adapter-protocol": "^2.2.8", +"@solana-mobile/mobile-wallet-adapter-protocol": "^2.2.8", "@solana-mobile/mobile-wallet-adapter-protocol-web3js": "^2.2.8", "@solana/spl-token": "^0.4.14", "@solana/web3.js": "^1.98.4", diff --git a/mobile_app/src/observability/sentry.ts b/mobile_app/src/observability/sentry.ts index 3c0346c..d8418a4 100644 --- a/mobile_app/src/observability/sentry.ts +++ b/mobile_app/src/observability/sentry.ts @@ -1,44 +1,30 @@ /** * Crash/error observability — Sentry removed. * - * `@sentry/react-native` was removed: its native Gradle step (`sentry.gradle` - * source-map/symbol upload via `sentry-cli`) broke CI, and the app opted out of - * third-party crash reporting. This is a no-op shim that preserves the former - * import surface (`Sentry`, `initObservability`, `observabilityEnabled`) so - * `app/_layout.tsx` and `ErrorBoundary.tsx` compile and run unchanged. The - * ErrorBoundary still renders its fallback UI — it just no longer reports. - * - * The `errorHandler` global handler (console.error + native crash path) is - * unaffected and remains the crash signal. + * @sentry/react-native was removed: its native Gradle/Xcode steps (source-map + * upload via sentry-cli) require an auth token and break CI builds. + * This no-op shim preserves the import surface so app/_layout.tsx and + * ErrorBoundary.tsx compile and run unchanged. The ErrorBoundary still renders + * its fallback UI — it just no longer reports to Sentry. The global + * errorHandler (console.error + native crash path) remains the crash signal. */ -/** Always false — Sentry is gone. Kept for callers that gate on it. */ -export const observabilityEnabled = false; - -/** No-op: Sentry removed. Safe to call once at app entry. */ -export function initObservability(): void { - /* no-op */ -} - interface NoopScope { setTag(key: string, value: string): void; setContext(key: string, value: Record | null): void; } -const noopScope: NoopScope = { - setTag: () => {}, - setContext: () => {}, -}; +const noopScope: NoopScope = { setTag: () => {}, setContext: () => {} }; + +/** Always false — Sentry is gone. */ +export const observabilityEnabled = false; + +/** No-op. */ +export function initObservability(): void { /* no-op */ } -/** No-op stand-in for the `@sentry/react-native` API the app referenced. */ +/** No-op stand-in for @sentry/react-native. */ export const Sentry = { - wrap(component: T): T { - return component; - }, - withScope(callback: (scope: NoopScope) => void): void { - callback(noopScope); - }, - captureException(_error: unknown): void { - /* no-op */ - }, + wrap(component: T): T { return component; }, + withScope(callback: (scope: NoopScope) => void): void { callback(noopScope); }, + captureException(_error: unknown): void { /* no-op */ }, };