diff --git a/.github/workflows/buildAdHoc.yml b/.github/workflows/buildAdHoc.yml index 14e1fc066ea7a..6f3d64cbbea6c 100644 --- a/.github/workflows/buildAdHoc.yml +++ b/.github/workflows/buildAdHoc.yml @@ -209,6 +209,8 @@ jobs: const androidLink = '${{ needs.buildAndroid.outputs.ROCK_ARTIFACT_URL }}' || ''; const iosLink = '${{ needs.buildIOS.outputs.ROCK_ARTIFACT_URL }}' || ''; const mobileExpensifySHA = '${{ steps.getMobileExpensifySHA.outputs.SHA }}' || ''; + const androidSentryLink = '${{ needs.buildAndroid.outputs.SENTRY_URL }}' || ''; + const iosSentryLink = '${{ needs.buildIOS.outputs.SENTRY_URL }}' || ''; const webFailed = '${{ needs.buildWeb.result }}' === 'failure' || '${{ needs.deployWebAdHoc.result }}' === 'failure'; const webStatus = webLink ? '✅ Success' : webFailed ? '❌ Failed' : '⏭️ Skipped'; @@ -235,6 +237,15 @@ jobs: ], ]); + if (androidSentryLink || iosSentryLink) { + summary.addHeading('Bundle Size Analysis', 3); + summary.addTable([ + [{data: 'Platform', header: true}, {data: 'Sentry Size Analysis', header: true}], + ['Android', androidSentryLink ? `${androidSentryLink}` : '-'], + ['iOS', iosSentryLink ? `${iosSentryLink}` : '-'], + ]); + } + if (mobileExpensifySHA) { const mobileExpensifyUrl = `https://github.com/Expensify/Mobile-Expensify/commit/${mobileExpensifySHA}`; const label = '${{ inputs.MOBILE_EXPENSIFY_REF }}' ? 'Mobile-Expensify SHA (Custom)' : 'Mobile-Expensify Submodule SHA'; diff --git a/.github/workflows/buildAndroid.yml b/.github/workflows/buildAndroid.yml index 1e1c9ef457e5f..f2e8ab0018162 100644 --- a/.github/workflows/buildAndroid.yml +++ b/.github/workflows/buildAndroid.yml @@ -35,6 +35,9 @@ on: ROCK_ARTIFACT_URL: description: URL to download the ad-hoc build artifact (adhoc only) value: ${{ jobs.build.outputs.ROCK_ARTIFACT_URL }} + SENTRY_URL: + description: URL to Sentry size analysis + value: ${{ jobs.build.outputs.SENTRY_URL }} AAB_FILENAME: description: Filename of the AAB artifact (empty if no AAB was produced) value: ${{ jobs.build.outputs.AAB_FILENAME }} @@ -57,6 +60,7 @@ jobs: outputs: VERSION_CODE: ${{ steps.getAndroidVersion.outputs.VERSION_CODE }} ROCK_ARTIFACT_URL: ${{ steps.set-artifact-url.outputs.ARTIFACT_URL }} + SENTRY_URL: ${{ steps.sentry-upload.outputs.SENTRY_URL }} AAB_FILENAME: ${{ steps.collectArtifacts.outputs.AAB_FILENAME }} APK_FILENAME: ${{ steps.collectArtifacts.outputs.APK_FILENAME }} SOURCEMAP_FILENAME: index.android.bundle.map @@ -170,7 +174,7 @@ jobs: FORCE_NATIVE_BUILD: ${{ inputs.force-native-build == 'true' && github.run_id || '' }} with: variant: ${{ inputs.variant }} - aab: ${{ inputs.variant == 'Release' }} + aab: true sign: true re-sign: true ad-hoc: ${{ inputs.variant == 'Adhoc' }} @@ -185,6 +189,27 @@ jobs: custom-identifier: ${{ steps.computeIdentifier.outputs.IDENTIFIER }} validate-elf-alignment: false + - name: Set artifact URL output + id: set-artifact-url + if: ${{ inputs.variant == 'Adhoc' }} + run: echo "ARTIFACT_URL=$ARTIFACT_URL" >> "$GITHUB_OUTPUT" + + - name: Upload Android build to Sentry for size analysis + id: sentry-upload + if: ${{ env.ARTIFACT_PATH != '' }} + continue-on-error: true + timeout-minutes: 5 + run: | + OUTPUT=$(npx sentry-cli build upload "$ARTIFACT_PATH" --org expensify --project app --build-configuration ${{ inputs.variant == 'Adhoc' && 'AdHoc' || 'Release' }} --log-level debug 2>&1) + echo "$OUTPUT" + SENTRY_URL=$(echo "$OUTPUT" | grep -oE 'https://expensify\.sentry\.io/[^ ]+' | head -1) + if [ -n "$SENTRY_URL" ]; then + echo "::notice::Android Sentry size analysis: $SENTRY_URL" + echo "SENTRY_URL=$SENTRY_URL" >> "$GITHUB_OUTPUT" + fi + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + - name: Upload Gradle profile report if: always() # v6 @@ -194,11 +219,6 @@ jobs: path: Mobile-Expensify/Android/build/reports/profile/ if-no-files-found: ignore - - name: Set artifact URL output - id: set-artifact-url - if: ${{ inputs.variant == 'Adhoc' }} - run: echo "ARTIFACT_URL=$ARTIFACT_URL" >> "$GITHUB_OUTPUT" - - name: Collect build artifacts id: collectArtifacts run: | @@ -214,7 +234,7 @@ jobs: echo "APK_FILENAME=Expensify.apk" } >> "$GITHUB_OUTPUT" else - echo "::warning::No AAB file found (expected for remote-cache hits on Adhoc builds)" + echo "::warning::No AAB file found (expected for remote-cache hits)" echo "HAS_AAB=false" >> "$GITHUB_OUTPUT" fi @@ -290,3 +310,4 @@ jobs: with: name: ${{ inputs.artifact-prefix }}android-apk-artifact path: Expensify.apk + diff --git a/.github/workflows/buildIOS.yml b/.github/workflows/buildIOS.yml index ae43bcd2d8e7f..a5b6339992abb 100644 --- a/.github/workflows/buildIOS.yml +++ b/.github/workflows/buildIOS.yml @@ -35,6 +35,9 @@ on: ROCK_ARTIFACT_URL: description: URL to download the ad-hoc build artifact (adhoc only) value: ${{ jobs.build.outputs.ROCK_ARTIFACT_URL }} + SENTRY_URL: + description: URL to Sentry size analysis + value: ${{ jobs.build.outputs.SENTRY_URL }} IPA_FILENAME: description: Filename of the IPA artifact produced by the build value: ${{ jobs.build.outputs.IPA_FILENAME }} @@ -55,6 +58,7 @@ jobs: outputs: IOS_VERSION: ${{ steps.getIOSVersion.outputs.IOS_VERSION }} ROCK_ARTIFACT_URL: ${{ steps.set-artifact-url.outputs.ARTIFACT_URL }} + SENTRY_URL: ${{ steps.sentry-upload.outputs.SENTRY_URL }} IPA_FILENAME: ${{ steps.set-ipa-filename.outputs.IPA_FILENAME }} DSYM_FILENAME: ${{ steps.set-ipa-filename.outputs.DSYM_FILENAME }} SOURCEMAP_FILENAME: main.jsbundle.map @@ -235,6 +239,22 @@ jobs: comment-bot: false custom-identifier: ${{ steps.computeIdentifier.outputs.IDENTIFIER }} + - name: Upload iOS build to Sentry for size analysis + id: sentry-upload + if: ${{ env.ARTIFACT_PATH != '' }} + continue-on-error: true + timeout-minutes: 5 + run: | + OUTPUT=$(npx sentry-cli build upload "$ARTIFACT_PATH" --org expensify --project app --build-configuration ${{ inputs.variant == 'Adhoc' && 'AdHoc' || 'Release' }} --log-level debug 2>&1) + echo "$OUTPUT" + SENTRY_URL=$(echo "$OUTPUT" | grep -oE 'https://expensify\.sentry\.io/[^ ]+' | head -1) + if [ -n "$SENTRY_URL" ]; then + echo "::notice::iOS Sentry size analysis: $SENTRY_URL" + echo "SENTRY_URL=$SENTRY_URL" >> "$GITHUB_OUTPUT" + fi + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + - name: Set artifact URL output id: set-artifact-url if: ${{ inputs.variant == 'Adhoc' }} @@ -303,3 +323,4 @@ jobs: with: name: ${{ inputs.artifact-prefix }}ios-sourcemap-artifact path: Mobile-Expensify/main.jsbundle.map + diff --git a/package-lock.json b/package-lock.json index 3c7332195f435..afe02288ef82f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -182,6 +182,7 @@ "@rock-js/platform-ios": "0.12.10", "@rock-js/plugin-metro": "0.12.10", "@rock-js/provider-s3": "0.12.10", + "@sentry/cli": "3.2.2", "@sentry/webpack-plugin": "4.6.0", "@storybook/addon-a11y": "10.1.10", "@storybook/addon-docs": "10.1.10", @@ -13726,6 +13727,180 @@ "node": ">= 14" } }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.4.tgz", + "integrity": "sha512-ArDrpuS8JtDYEvwGleVE+FgR+qHaOp77IgdGSacz6SZy6Lv90uX0Nu4UrHCQJz8/xwIcNxSqnN22lq0dH4IqTg==", + "dev": true, + "hasInstallScript": true, + "license": "FSL-1.1-MIT", + "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.58.4", + "@sentry/cli-linux-arm": "2.58.4", + "@sentry/cli-linux-arm64": "2.58.4", + "@sentry/cli-linux-i686": "2.58.4", + "@sentry/cli-linux-x64": "2.58.4", + "@sentry/cli-win32-arm64": "2.58.4", + "@sentry/cli-win32-i686": "2.58.4", + "@sentry/cli-win32-x64": "2.58.4" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-darwin": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.4.tgz", + "integrity": "sha512-kbTD+P4X8O+nsNwPxCywtj3q22ecyRHWff98rdcmtRrvwz8CKi/T4Jxn/fnn2i4VEchy08OWBuZAqaA5Kh2hRQ==", + "dev": true, + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-linux-arm": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.4.tgz", + "integrity": "sha512-rdQ8beTwnN48hv7iV7e7ZKucPec5NJkRdrrycMJMZlzGBPi56LqnclgsHySJ6Kfq506A2MNuQnKGaf/sBC9REA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-linux-arm64": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.4.tgz", + "integrity": "sha512-0g0KwsOozkLtzN8/0+oMZoOuQ0o7W6O+hx+ydVU1bktaMGKEJLMAWxOQNjsh1TcBbNIXVOKM/I8l0ROhaAb8Ig==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-linux-i686": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.4.tgz", + "integrity": "sha512-NseoIQAFtkziHyjZNPTu1Gm1opeQHt7Wm1LbLrGWVIRvUOzlslO9/8i6wETUZ6TjlQxBVRgd3Q0lRBG2A8rFYA==", + "cpu": [ + "x86", + "ia32" + ], + "dev": true, + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-linux-x64": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.4.tgz", + "integrity": "sha512-d3Arz+OO/wJYTqCYlSN3Ktm+W8rynQ/IMtSZLK8nu0ryh5mJOh+9XlXY6oDXw4YlsM8qCRrNquR8iEI1Y/IH+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-win32-arm64": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.4.tgz", + "integrity": "sha512-bqYrF43+jXdDBh0f8HIJU3tbvlOFtGyRjHB8AoRuMQv9TEDUfENZyCelhdjA+KwDKYl48R1Yasb4EHNzsoO83w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-win32-i686": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.4.tgz", + "integrity": "sha512-3triFD6jyvhVcXOmGyttf+deKZcC1tURdhnmDUIBkiDPJKGT/N5xa4qAtHJlAB/h8L9jgYih9bvJnvvFVM7yug==", + "cpu": [ + "x86", + "ia32" + ], + "dev": true, + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/bundler-plugin-core/node_modules/@sentry/cli-win32-x64": { + "version": "2.58.4", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.4.tgz", + "integrity": "sha512-cSzN4PjM1RsCZ4pxMjI0VI7yNCkxiJ5jmWncyiwHXGiXrV1eXYdQ3n1LhUYLZ91CafyprR0OhDcE+RVZ26Qb5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@sentry/bundler-plugin-core/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -13815,56 +13990,58 @@ "license": "MIT" }, "node_modules/@sentry/cli": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.0.tgz", - "integrity": "sha512-ywfV2uYkNaW5BGFBgIEX+urkxWtY03GYKN08OLYJpfJeOWl5tzxAKKg+AkMZqnqsDqjCf8gLjZh7sF4jY+ZE1Q==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.2.2.tgz", + "integrity": "sha512-qmjsm9+Bq/3QGTnIfOsJdhq+8LI3imxAPbGNBpRj4R0YFk+b1ry9huRHCLgkMcRFWtPkJmGZwEq2Z7e+02QPLA==", + "dev": true, "hasInstallScript": true, - "license": "BSD-3-Clause", + "license": "FSL-1.1-MIT", "dependencies": { - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.7", "progress": "^2.0.3", "proxy-from-env": "^1.1.0", + "undici": "^6.22.0", "which": "^2.0.2" }, "bin": { "sentry-cli": "bin/sentry-cli" }, "engines": { - "node": ">= 10" + "node": ">= 18" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.58.0", - "@sentry/cli-linux-arm": "2.58.0", - "@sentry/cli-linux-arm64": "2.58.0", - "@sentry/cli-linux-i686": "2.58.0", - "@sentry/cli-linux-x64": "2.58.0", - "@sentry/cli-win32-arm64": "2.58.0", - "@sentry/cli-win32-i686": "2.58.0", - "@sentry/cli-win32-x64": "2.58.0" + "@sentry/cli-darwin": "3.2.2", + "@sentry/cli-linux-arm": "3.2.2", + "@sentry/cli-linux-arm64": "3.2.2", + "@sentry/cli-linux-i686": "3.2.2", + "@sentry/cli-linux-x64": "3.2.2", + "@sentry/cli-win32-arm64": "3.2.2", + "@sentry/cli-win32-i686": "3.2.2", + "@sentry/cli-win32-x64": "3.2.2" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.0.tgz", - "integrity": "sha512-dI8+85N2xNsQeJZBbfGkjFScYH0xP/8+TDgoA5YiWWxsD/qSlWv1pf2VCR83smMyfcjIkDiPYIxBDticD67skQ==", - "license": "BSD-3-Clause", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.2.2.tgz", + "integrity": "sha512-y1uglMBbo9dYqC92hTQBkuGk7SegLPo1cVwJzX0dhplJoBMuanLMhOMYd1J20qhkDdBhguflCHGf0tOzNTGWhg==", + "dev": true, + "license": "FSL-1.1-MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.0.tgz", - "integrity": "sha512-QxBWSQkm2OL8d0XXTUOcX5RYZzZGkMw48ubU4g/c4rlT06PuJV56Z03jsMQdJWUDzKmVYoJdvFV/whxYIkwmWw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.2.2.tgz", + "integrity": "sha512-CC7N3hjOgs3cwrW0T9hqirFVUpKO6ASjdd0JT4DQHaAn34pruv8J+OoSnj1jkrT2DHxDkNNZPOFSK05AnHr8wA==", "cpu": [ "arm" ], - "license": "BSD-3-Clause", + "dev": true, + "license": "FSL-1.1-MIT", "optional": true, "os": [ "linux", @@ -13872,17 +14049,18 @@ "android" ], "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.0.tgz", - "integrity": "sha512-Fso5GImxQOigZqLHAHhz85w71zxS1bvL52PI/tcjadmKrIaJdD3ANukC0UcKyKuj9xhr/k1ufNR7V+2BD16kmg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.2.2.tgz", + "integrity": "sha512-SIGJknEQNDw9S/8QPTl8QLVe2IEiTKH3NeeHQ/Q2XWXig1ZebJfm4iTrdu47ypszIfxHeLvQkkVrr8mRKq16xA==", "cpu": [ "arm64" ], - "license": "BSD-3-Clause", + "dev": true, + "license": "FSL-1.1-MIT", "optional": true, "os": [ "linux", @@ -13890,18 +14068,19 @@ "android" ], "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.0.tgz", - "integrity": "sha512-Av+T5YwuTtbOpe/Fyr/lsbl5XIZTFspHCiAt4Kgtllme6T1ASIDhQDXDh/OVJ8So4pHkToTn3iH8mm8vLqBqOA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.2.2.tgz", + "integrity": "sha512-W2hQ2DvIlZI05j2JN/87lfeo51F24zmQOJU6Uz+fZz/mkSvpnjeWxjAvfDNVGlLxp7XSoDbhHfrLBxdIh6jMeg==", "cpu": [ "x86", "ia32" ], - "license": "BSD-3-Clause", + "dev": true, + "license": "FSL-1.1-MIT", "optional": true, "os": [ "linux", @@ -13909,17 +14088,18 @@ "android" ], "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.0.tgz", - "integrity": "sha512-AxK0eqZbHn0NGWsAE8bzt/iRMMUlqsx77kru/TIBQy9cMMJaq+rLb63W7HWXln4ER32nPZYx+JuhHD9UNiAFHA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.2.2.tgz", + "integrity": "sha512-4mh3yvOUxO63lq3teexRvalD1mWaRVjpgL2cCMKA2wkB69lcL5nK2gkdzDUKx2y/elluVdvGPPZaqOr1bfNI0w==", "cpu": [ "x64" ], - "license": "BSD-3-Clause", + "dev": true, + "license": "FSL-1.1-MIT", "optional": true, "os": [ "linux", @@ -13927,56 +14107,59 @@ "android" ], "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@sentry/cli-win32-arm64": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.0.tgz", - "integrity": "sha512-lIRTfGjD1TQIOuFh4rJGWt3zXyeXAlfoYYQbzG/rP6gXstiGENQtfEXZyKT+wlIGSqtbBGVfL8xp65ryjbXSgQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.2.2.tgz", + "integrity": "sha512-TQgfkdJgd8Y/lPzDibqc5Hamg8Hl5rN1sZwX80n4r9Ly46Yzu8Bv6KUhoNL/ktAvw9Aeko6Bx54rwZnzxFZHwg==", "cpu": [ "arm64" ], - "license": "BSD-3-Clause", + "dev": true, + "license": "FSL-1.1-MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.0.tgz", - "integrity": "sha512-7VdB3QZ/3t2FABgIwRP2SoJcDmZaPPPZofVmJem+FgeONeLOUvHQw9WSLG4y5Dfc9yi5wO31H1ClW4uxv8EtuA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.2.2.tgz", + "integrity": "sha512-vAcnq0SdYuvwIdREgF5APocjW3d9Z17xLwugpaAz8wpOjCeC1iMEFWqbz5k49i4iDkDVNFRMENiVvWVSu1kEnA==", "cpu": [ "x86", "ia32" ], - "license": "BSD-3-Clause", + "dev": true, + "license": "FSL-1.1-MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.58.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.0.tgz", - "integrity": "sha512-uItx4P4v9cKbgVbOpuShvIV8g42qLmZorPHwg3pYUu78c85xAWrmiXL+0JKNUf5JVBEHeHB+rIu08AZfDMhxig==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.2.2.tgz", + "integrity": "sha512-xWPTXjSSdmoyG/0ee7A9KSfsScGHCdaXMP6ASt4bMx3yYJO7ziEoZzfJE2M6oglz+woAm0LV9+O/n7g80tixlQ==", "cpu": [ "x64" ], - "license": "BSD-3-Clause", + "dev": true, + "license": "FSL-1.1-MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@sentry/core": { @@ -14032,6 +14215,171 @@ } } }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.58.0.tgz", + "integrity": "sha512-ywfV2uYkNaW5BGFBgIEX+urkxWtY03GYKN08OLYJpfJeOWl5tzxAKKg+AkMZqnqsDqjCf8gLjZh7sF4jY+ZE1Q==", + "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.58.0", + "@sentry/cli-linux-arm": "2.58.0", + "@sentry/cli-linux-arm64": "2.58.0", + "@sentry/cli-linux-i686": "2.58.0", + "@sentry/cli-linux-x64": "2.58.0", + "@sentry/cli-win32-arm64": "2.58.0", + "@sentry/cli-win32-i686": "2.58.0", + "@sentry/cli-win32-x64": "2.58.0" + } + }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli-darwin": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.58.0.tgz", + "integrity": "sha512-dI8+85N2xNsQeJZBbfGkjFScYH0xP/8+TDgoA5YiWWxsD/qSlWv1pf2VCR83smMyfcjIkDiPYIxBDticD67skQ==", + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-arm": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.58.0.tgz", + "integrity": "sha512-QxBWSQkm2OL8d0XXTUOcX5RYZzZGkMw48ubU4g/c4rlT06PuJV56Z03jsMQdJWUDzKmVYoJdvFV/whxYIkwmWw==", + "cpu": [ + "arm" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-arm64": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.58.0.tgz", + "integrity": "sha512-Fso5GImxQOigZqLHAHhz85w71zxS1bvL52PI/tcjadmKrIaJdD3ANukC0UcKyKuj9xhr/k1ufNR7V+2BD16kmg==", + "cpu": [ + "arm64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-i686": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.58.0.tgz", + "integrity": "sha512-Av+T5YwuTtbOpe/Fyr/lsbl5XIZTFspHCiAt4Kgtllme6T1ASIDhQDXDh/OVJ8So4pHkToTn3iH8mm8vLqBqOA==", + "cpu": [ + "x86", + "ia32" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli-linux-x64": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.58.0.tgz", + "integrity": "sha512-AxK0eqZbHn0NGWsAE8bzt/iRMMUlqsx77kru/TIBQy9cMMJaq+rLb63W7HWXln4ER32nPZYx+JuhHD9UNiAFHA==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-arm64": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.58.0.tgz", + "integrity": "sha512-lIRTfGjD1TQIOuFh4rJGWt3zXyeXAlfoYYQbzG/rP6gXstiGENQtfEXZyKT+wlIGSqtbBGVfL8xp65ryjbXSgQ==", + "cpu": [ + "arm64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-i686": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.58.0.tgz", + "integrity": "sha512-7VdB3QZ/3t2FABgIwRP2SoJcDmZaPPPZofVmJem+FgeONeLOUvHQw9WSLG4y5Dfc9yi5wO31H1ClW4uxv8EtuA==", + "cpu": [ + "x86", + "ia32" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/react-native/node_modules/@sentry/cli-win32-x64": { + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.58.0.tgz", + "integrity": "sha512-uItx4P4v9cKbgVbOpuShvIV8g42qLmZorPHwg3pYUu78c85xAWrmiXL+0JKNUf5JVBEHeHB+rIu08AZfDMhxig==", + "cpu": [ + "x64" + ], + "license": "BSD-3-Clause", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@sentry/types": { "version": "10.24.0", "resolved": "https://registry.npmjs.org/@sentry/types/-/types-10.24.0.tgz", @@ -38112,9 +38460,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.21.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz", - "integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "license": "MIT", "engines": { "node": ">=18.17" diff --git a/package.json b/package.json index 3dd61e7d92bf1..4f220fffdc8ef 100644 --- a/package.json +++ b/package.json @@ -246,6 +246,7 @@ "@rock-js/platform-ios": "0.12.10", "@rock-js/plugin-metro": "0.12.10", "@rock-js/provider-s3": "0.12.10", + "@sentry/cli": "3.2.2", "@sentry/webpack-plugin": "4.6.0", "@storybook/addon-a11y": "10.1.10", "@storybook/addon-docs": "10.1.10",