@sentry/wizard 3.42.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.node-cache/node-v22.14.0-darwin-arm64 +0 -0
- package/.node-cache/node-v22.14.0-darwin-x64 +0 -0
- package/.node-cache/node-v22.14.0-linux-arm64 +0 -0
- package/.node-cache/node-v22.14.0-linux-x64 +0 -0
- package/.node-cache/node-v22.14.0-win-x64.exe +0 -0
- package/CHANGELOG.md +30 -0
- package/COPYING +3575 -0
- package/bin.ts +85 -80
- package/dist/bin.js +44 -35
- package/dist/bin.js.map +1 -1
- package/dist/e2e-tests/jest.config.js +1 -1
- package/dist/e2e-tests/jest.config.js.map +1 -1
- package/dist/e2e-tests/tests/flutter.test.js +62 -147
- package/dist/e2e-tests/tests/flutter.test.js.map +1 -1
- package/dist/e2e-tests/tests/nextjs.test.js +77 -175
- package/dist/e2e-tests/tests/nextjs.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-3.test.js +61 -162
- package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-4.test.js +62 -163
- package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
- package/dist/e2e-tests/tests/remix.test.js +147 -189
- package/dist/e2e-tests/tests/remix.test.js.map +1 -1
- package/dist/e2e-tests/tests/sveltekit.test.js +133 -187
- package/dist/e2e-tests/tests/sveltekit.test.js.map +1 -1
- package/dist/e2e-tests/utils/index.d.ts +1 -1
- package/dist/e2e-tests/utils/index.js +113 -195
- package/dist/e2e-tests/utils/index.js.map +1 -1
- package/dist/lib/Constants.js +5 -5
- package/dist/lib/Constants.js.map +1 -1
- package/dist/lib/Helper/BottomBar.d.ts +1 -1
- package/dist/lib/Helper/BottomBar.js +14 -15
- package/dist/lib/Helper/BottomBar.js.map +1 -1
- package/dist/lib/Helper/Env.js +5 -2
- package/dist/lib/Helper/Env.js.map +1 -1
- package/dist/lib/Helper/File.js +14 -27
- package/dist/lib/Helper/File.js.map +1 -1
- package/dist/lib/Helper/Git.js +24 -59
- package/dist/lib/Helper/Git.js.map +1 -1
- package/dist/lib/Helper/Logging.js +2 -2
- package/dist/lib/Helper/Logging.js.map +1 -1
- package/dist/lib/Helper/MergeConfig.js +4 -4
- package/dist/lib/Helper/MergeConfig.js.map +1 -1
- package/dist/lib/Helper/Package.d.ts +4 -1
- package/dist/lib/Helper/Package.js +12 -38
- package/dist/lib/Helper/Package.js.map +1 -1
- package/dist/lib/Helper/SentryCli.js +77 -149
- package/dist/lib/Helper/SentryCli.js.map +1 -1
- package/dist/lib/Helper/Wizard.js +29 -124
- package/dist/lib/Helper/Wizard.js.map +1 -1
- package/dist/lib/Helper/__tests__/File.js +4 -4
- package/dist/lib/Helper/__tests__/File.js.map +1 -1
- package/dist/lib/Helper/__tests__/MergeConfig.js +24 -24
- package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
- package/dist/lib/Helper/__tests__/SentryCli.js +33 -23
- package/dist/lib/Helper/__tests__/SentryCli.js.map +1 -1
- package/dist/lib/Setup.js +23 -85
- package/dist/lib/Setup.js.map +1 -1
- package/dist/lib/Steps/BaseStep.js +8 -8
- package/dist/lib/Steps/BaseStep.js.map +1 -1
- package/dist/lib/Steps/ChooseIntegration.js +80 -125
- package/dist/lib/Steps/ChooseIntegration.js.map +1 -1
- package/dist/lib/Steps/ConfigureProject.js +6 -66
- package/dist/lib/Steps/ConfigureProject.js.map +1 -1
- package/dist/lib/Steps/Initial.js +16 -104
- package/dist/lib/Steps/Initial.js.map +1 -1
- package/dist/lib/Steps/Integrations/BaseIntegration.js +24 -118
- package/dist/lib/Steps/Integrations/BaseIntegration.js.map +1 -1
- package/dist/lib/Steps/Integrations/Cordova.js +95 -183
- package/dist/lib/Steps/Integrations/Cordova.js.map +1 -1
- package/dist/lib/Steps/Integrations/Electron.js +87 -145
- package/dist/lib/Steps/Integrations/Electron.js.map +1 -1
- package/dist/lib/Steps/Integrations/MobileProject.js +40 -148
- package/dist/lib/Steps/Integrations/MobileProject.js.map +1 -1
- package/dist/lib/Steps/OpenSentry.js +63 -126
- package/dist/lib/Steps/OpenSentry.js.map +1 -1
- package/dist/lib/Steps/PromptForParameters.js +110 -206
- package/dist/lib/Steps/PromptForParameters.js.map +1 -1
- package/dist/lib/Steps/Result.js +19 -79
- package/dist/lib/Steps/Result.js.map +1 -1
- package/dist/lib/Steps/SentryProjectSelector.js +57 -148
- package/dist/lib/Steps/SentryProjectSelector.js.map +1 -1
- package/dist/lib/Steps/ShouldConfigure.js +6 -66
- package/dist/lib/Steps/ShouldConfigure.js.map +1 -1
- package/dist/lib/Steps/WaitForSentry.js +43 -120
- package/dist/lib/Steps/WaitForSentry.js.map +1 -1
- package/dist/lib/Steps/Welcome.js +17 -76
- package/dist/lib/Steps/Welcome.js.map +1 -1
- package/dist/lib/__tests__/Env.js +3 -3
- package/dist/lib/__tests__/Env.js.map +1 -1
- package/dist/src/android/android-wizard.js +100 -176
- package/dist/src/android/android-wizard.js.map +1 -1
- package/dist/src/android/code-tools.js +24 -33
- package/dist/src/android/code-tools.js.map +1 -1
- package/dist/src/android/gradle.js +106 -165
- package/dist/src/android/gradle.js.map +1 -1
- package/dist/src/android/manifest.js +26 -27
- package/dist/src/android/manifest.js.map +1 -1
- package/dist/src/android/templates.js +76 -23
- package/dist/src/android/templates.js.map +1 -1
- package/dist/src/apple/apple-wizard.js +129 -225
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/apple/cocoapod.js +47 -109
- package/dist/src/apple/cocoapod.js.map +1 -1
- package/dist/src/apple/code-tools.js +32 -35
- package/dist/src/apple/code-tools.js.map +1 -1
- package/dist/src/apple/fastlane.js +51 -97
- package/dist/src/apple/fastlane.js.map +1 -1
- package/dist/src/apple/templates.js +41 -5
- package/dist/src/apple/templates.js.map +1 -1
- package/dist/src/apple/xcode-manager.d.ts +2 -2
- package/dist/src/apple/xcode-manager.js +93 -108
- package/dist/src/apple/xcode-manager.js.map +1 -1
- package/dist/src/flutter/code-tools.js +79 -127
- package/dist/src/flutter/code-tools.js.map +1 -1
- package/dist/src/flutter/flutter-wizard.js +75 -136
- package/dist/src/flutter/flutter-wizard.js.map +1 -1
- package/dist/src/flutter/templates.js +48 -12
- package/dist/src/flutter/templates.js.map +1 -1
- package/dist/src/nextjs/nextjs-wizard.js +527 -805
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/nextjs/templates.js +380 -40
- package/dist/src/nextjs/templates.js.map +1 -1
- package/dist/src/nextjs/utils.js +5 -5
- package/dist/src/nextjs/utils.js.map +1 -1
- package/dist/src/nuxt/nuxt-wizard.js +91 -188
- package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
- package/dist/src/nuxt/sdk-example.js +68 -137
- package/dist/src/nuxt/sdk-example.js.map +1 -1
- package/dist/src/nuxt/sdk-setup.d.ts +4 -4
- package/dist/src/nuxt/sdk-setup.js +180 -336
- package/dist/src/nuxt/sdk-setup.js.map +1 -1
- package/dist/src/nuxt/templates.js +195 -18
- package/dist/src/nuxt/templates.js.map +1 -1
- package/dist/src/nuxt/utils.js +29 -76
- package/dist/src/nuxt/utils.js.map +1 -1
- package/dist/src/react-native/expo-env-file.js +41 -94
- package/dist/src/react-native/expo-env-file.js.map +1 -1
- package/dist/src/react-native/expo-metro.d.ts +1 -1
- package/dist/src/react-native/expo-metro.js +75 -130
- package/dist/src/react-native/expo-metro.js.map +1 -1
- package/dist/src/react-native/expo.js +61 -114
- package/dist/src/react-native/expo.js.map +1 -1
- package/dist/src/react-native/git.js +23 -56
- package/dist/src/react-native/git.js.map +1 -1
- package/dist/src/react-native/glob.js +3 -3
- package/dist/src/react-native/glob.js.map +1 -1
- package/dist/src/react-native/gradle.js +4 -4
- package/dist/src/react-native/gradle.js.map +1 -1
- package/dist/src/react-native/javascript.js +51 -95
- package/dist/src/react-native/javascript.js.map +1 -1
- package/dist/src/react-native/metro.js +176 -296
- package/dist/src/react-native/metro.js.map +1 -1
- package/dist/src/react-native/react-native-wizard.js +267 -418
- package/dist/src/react-native/react-native-wizard.js.map +1 -1
- package/dist/src/react-native/uninstall.js +37 -80
- package/dist/src/react-native/uninstall.js.map +1 -1
- package/dist/src/react-native/xcode.js +57 -55
- package/dist/src/react-native/xcode.js.map +1 -1
- package/dist/src/remix/codemods/express-server.js +27 -82
- package/dist/src/remix/codemods/express-server.js.map +1 -1
- package/dist/src/remix/codemods/handle-error.js +28 -31
- package/dist/src/remix/codemods/handle-error.js.map +1 -1
- package/dist/src/remix/codemods/root-common.js +11 -11
- package/dist/src/remix/codemods/root-common.js.map +1 -1
- package/dist/src/remix/codemods/root-v1.js +17 -67
- package/dist/src/remix/codemods/root-v1.js.map +1 -1
- package/dist/src/remix/codemods/root-v2.js +89 -140
- package/dist/src/remix/codemods/root-v2.js.map +1 -1
- package/dist/src/remix/remix-wizard.js +181 -343
- package/dist/src/remix/remix-wizard.js.map +1 -1
- package/dist/src/remix/sdk-example.js +84 -66
- package/dist/src/remix/sdk-example.js.map +1 -1
- package/dist/src/remix/sdk-setup.js +161 -293
- package/dist/src/remix/sdk-setup.js.map +1 -1
- package/dist/src/remix/templates.js +10 -2
- package/dist/src/remix/templates.js.map +1 -1
- package/dist/src/remix/utils.js +13 -14
- package/dist/src/remix/utils.js.map +1 -1
- package/dist/src/run.js +106 -178
- package/dist/src/run.js.map +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.js +248 -372
- package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
- package/dist/src/sourcemaps/tools/angular.js +32 -66
- package/dist/src/sourcemaps/tools/angular.js.map +1 -1
- package/dist/src/sourcemaps/tools/create-react-app.js +14 -59
- package/dist/src/sourcemaps/tools/create-react-app.js.map +1 -1
- package/dist/src/sourcemaps/tools/esbuild.js +34 -77
- package/dist/src/sourcemaps/tools/esbuild.js.map +1 -1
- package/dist/src/sourcemaps/tools/nextjs.d.ts +2 -2
- package/dist/src/sourcemaps/tools/nextjs.js +75 -102
- package/dist/src/sourcemaps/tools/nextjs.js.map +1 -1
- package/dist/src/sourcemaps/tools/remix.js +53 -93
- package/dist/src/sourcemaps/tools/remix.js.map +1 -1
- package/dist/src/sourcemaps/tools/rollup.js +35 -76
- package/dist/src/sourcemaps/tools/rollup.js.map +1 -1
- package/dist/src/sourcemaps/tools/sentry-cli.js +157 -289
- package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
- package/dist/src/sourcemaps/tools/tsc.js +68 -134
- package/dist/src/sourcemaps/tools/tsc.js.map +1 -1
- package/dist/src/sourcemaps/tools/vite.js +111 -196
- package/dist/src/sourcemaps/tools/vite.js.map +1 -1
- package/dist/src/sourcemaps/tools/webpack.d.ts +1 -1
- package/dist/src/sourcemaps/tools/webpack.js +158 -260
- package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
- package/dist/src/sourcemaps/utils/detect-tool.js +9 -54
- package/dist/src/sourcemaps/utils/detect-tool.js.map +1 -1
- package/dist/src/sourcemaps/utils/other-wizards.js +77 -144
- package/dist/src/sourcemaps/utils/other-wizards.js.map +1 -1
- package/dist/src/sourcemaps/utils/sdk-version.js +112 -191
- package/dist/src/sourcemaps/utils/sdk-version.js.map +1 -1
- package/dist/src/sveltekit/sdk-example.js +20 -70
- package/dist/src/sveltekit/sdk-example.js.map +1 -1
- package/dist/src/sveltekit/sdk-setup.js +250 -411
- package/dist/src/sveltekit/sdk-setup.js.map +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.js +107 -191
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/sveltekit/templates.js +147 -13
- package/dist/src/sveltekit/templates.js.map +1 -1
- package/dist/src/sveltekit/utils.js +3 -3
- package/dist/src/sveltekit/utils.js.map +1 -1
- package/dist/src/telemetry.d.ts +2 -2
- package/dist/src/telemetry.js +58 -108
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/utils/ast-utils.js +39 -54
- package/dist/src/utils/ast-utils.js.map +1 -1
- package/dist/src/utils/bash.js +28 -75
- package/dist/src/utils/bash.js.map +1 -1
- package/dist/src/utils/clack-utils.d.ts +3 -7
- package/dist/src/utils/clack-utils.js +688 -1083
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/debug.js +6 -10
- package/dist/src/utils/debug.js.map +1 -1
- package/dist/src/utils/package-json.js +5 -6
- package/dist/src/utils/package-json.js.map +1 -1
- package/dist/src/utils/package-manager.js +65 -139
- package/dist/src/utils/package-manager.js.map +1 -1
- package/dist/src/utils/release-registry.js +12 -59
- package/dist/src/utils/release-registry.js.map +1 -1
- package/dist/src/utils/semver.js +3 -4
- package/dist/src/utils/semver.js.map +1 -1
- package/dist/src/utils/sentrycli-utils.js +4 -4
- package/dist/src/utils/sentrycli-utils.js.map +1 -1
- package/dist/src/utils/url.js +5 -6
- package/dist/src/utils/url.js.map +1 -1
- package/dist/test/android/code-tools.test.js +18 -18
- package/dist/test/android/code-tools.test.js.map +1 -1
- package/dist/test/apple/cocoapod.test.js +154 -299
- package/dist/test/apple/cocoapod.test.js.map +1 -1
- package/dist/test/apple/code-tools.test.js +375 -263
- package/dist/test/apple/code-tools.test.js.map +1 -1
- package/dist/test/apple/fastfile.test.js +319 -271
- package/dist/test/apple/fastfile.test.js.map +1 -1
- package/dist/test/apple/templates.test.js +114 -30
- package/dist/test/apple/templates.test.js.map +1 -1
- package/dist/test/apple/xcode-manager.test.js +230 -234
- package/dist/test/apple/xcode-manager.test.js.map +1 -1
- package/dist/test/flutter/code-tools.test.js +119 -48
- package/dist/test/flutter/code-tools.test.js.map +1 -1
- package/dist/test/flutter/templates.test.js +63 -20
- package/dist/test/flutter/templates.test.js.map +1 -1
- package/dist/test/nextjs/templates.test.js +332 -43
- package/dist/test/nextjs/templates.test.js.map +1 -1
- package/dist/test/nuxt/templates.test.js +161 -33
- package/dist/test/nuxt/templates.test.js.map +1 -1
- package/dist/test/react-native/expo-metro.test.js +61 -15
- package/dist/test/react-native/expo-metro.test.js.map +1 -1
- package/dist/test/react-native/expo.test.js +37 -17
- package/dist/test/react-native/expo.test.js.map +1 -1
- package/dist/test/react-native/gradle.test.js +260 -28
- package/dist/test/react-native/gradle.test.js.map +1 -1
- package/dist/test/react-native/javascript.test.js +85 -19
- package/dist/test/react-native/javascript.test.js.map +1 -1
- package/dist/test/react-native/metro.test.js +261 -187
- package/dist/test/react-native/metro.test.js.map +1 -1
- package/dist/test/react-native/xcode.test.js +243 -62
- package/dist/test/react-native/xcode.test.js.map +1 -1
- package/dist/test/remix/client-entry.test.js +81 -21
- package/dist/test/remix/client-entry.test.js.map +1 -1
- package/dist/test/remix/server-instrumentation.test.js +21 -8
- package/dist/test/remix/server-instrumentation.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/sentry-cli.test.js +20 -72
- package/dist/test/sourcemaps/tools/sentry-cli.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/tsc.test.js +142 -68
- package/dist/test/sourcemaps/tools/tsc.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/vite.test.js +106 -75
- package/dist/test/sourcemaps/tools/vite.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/webpack.test.js +226 -102
- package/dist/test/sourcemaps/tools/webpack.test.js.map +1 -1
- package/dist/test/sveltekit/templates.test.js +117 -18
- package/dist/test/sveltekit/templates.test.js.map +1 -1
- package/dist/test/utils/ast-utils.test.js +99 -58
- package/dist/test/utils/ast-utils.test.js.map +1 -1
- package/dist/test/utils/clack-utils.test.js +142 -247
- package/dist/test/utils/clack-utils.test.js.map +1 -1
- package/e2e-tests/package.json +1 -1
- package/e2e-tests/tests/flutter.test.ts +20 -20
- package/e2e-tests/tests/nextjs.test.ts +2 -2
- package/e2e-tests/tests/nuxt-3.test.ts +4 -4
- package/e2e-tests/tests/nuxt-4.test.ts +3 -3
- package/e2e-tests/tests/remix.test.ts +3 -3
- package/e2e-tests/tests/sveltekit.test.ts +3 -3
- package/e2e-tests/utils/index.ts +33 -15
- package/lib/Helper/BottomBar.ts +1 -1
- package/lib/Helper/Env.ts +1 -1
- package/lib/Helper/Package.ts +12 -10
- package/lib/Helper/SentryCli.ts +18 -27
- package/lib/Helper/Wizard.ts +1 -2
- package/lib/Setup.ts +4 -5
- package/lib/Steps/ChooseIntegration.ts +40 -8
- package/lib/Steps/Initial.ts +17 -26
- package/lib/Steps/Integrations/BaseIntegration.ts +2 -8
- package/lib/Steps/Integrations/Cordova.ts +9 -15
- package/lib/Steps/Integrations/Electron.ts +23 -20
- package/lib/Steps/Integrations/MobileProject.ts +18 -15
- package/lib/Steps/OpenSentry.ts +12 -7
- package/lib/Steps/PromptForParameters.ts +12 -19
- package/lib/Steps/SentryProjectSelector.ts +30 -29
- package/lib/Steps/WaitForSentry.ts +29 -23
- package/package.json +12 -8
- package/src/apple/xcode-manager.ts +10 -10
- package/src/nextjs/templates.ts +2 -6
- package/src/nuxt/sdk-setup.ts +21 -18
- package/src/react-native/expo-metro.ts +2 -2
- package/src/react-native/react-native-wizard.ts +1 -2
- package/src/react-native/uninstall.ts +1 -2
- package/src/react-native/xcode.ts +1 -1
- package/src/run.ts +12 -5
- package/src/sourcemaps/tools/nextjs.ts +2 -5
- package/src/sourcemaps/tools/webpack.ts +3 -3
- package/src/telemetry.ts +27 -7
- package/src/utils/clack-utils.ts +50 -47
- package/test/apple/cocoapod.test.ts +4 -0
- package/test/apple/fastfile.test.ts +12 -7
- package/test/apple/xcode-manager.test.ts +13 -11
- package/test/nextjs/templates.test.ts +0 -12
- package/test/utils/clack-utils.test.ts +40 -50
- package/types/read-env.d.ts +3 -0
- package/types/xcode.d.ts +1 -0
- package/dist/package.json +0 -128
|
@@ -22,230 +22,131 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
-
function step(op) {
|
|
39
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
42
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
-
switch (op[0]) {
|
|
44
|
-
case 0: case 1: t = op; break;
|
|
45
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
-
default:
|
|
49
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
-
if (t[2]) _.ops.pop();
|
|
54
|
-
_.trys.pop(); continue;
|
|
55
|
-
}
|
|
56
|
-
op = body.call(thisArg, _);
|
|
57
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
62
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
27
|
};
|
|
64
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
29
|
exports.getModuleExportsAssignmentRight = exports.getMetroConfigObject = exports.addSentryMetroRequireToMetroConfig = exports.addSentrySerializerRequireToMetroConfig = exports.addSentrySerializerToMetroConfig = exports.writeMetroConfig = exports.parseMetroConfig = exports.removeSentryRequire = exports.removeSentrySerializerFromMetroConfig = exports.unPatchMetroConfig = exports.patchMetroConfigWithSentrySerializer = exports.patchMetroWithSentryConfigInMemory = exports.patchMetroWithSentryConfig = exports.metroConfigPath = void 0;
|
|
66
30
|
// @ts-ignore - clack is ESM and TS complains about that. It works though
|
|
67
|
-
|
|
31
|
+
const clack = __importStar(require("@clack/prompts"));
|
|
68
32
|
// @ts-ignore - magicast is ESM and TS complains about that. It works though
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
33
|
+
const magicast_1 = require("magicast");
|
|
34
|
+
const fs = __importStar(require("fs"));
|
|
35
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
36
|
+
const ast_utils_1 = require("../utils/ast-utils");
|
|
37
|
+
const clack_utils_1 = require("../utils/clack-utils");
|
|
38
|
+
const recast = __importStar(require("recast"));
|
|
39
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
40
|
+
const b = recast.types.builders;
|
|
77
41
|
exports.metroConfigPath = 'metro.config.js';
|
|
78
|
-
function patchMetroWithSentryConfig() {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return [2 /*return*/];
|
|
94
|
-
}
|
|
95
|
-
return [4 /*yield*/, writeMetroConfig(mod)];
|
|
96
|
-
case 3:
|
|
97
|
-
saved = _a.sent();
|
|
98
|
-
if (!saved) return [3 /*break*/, 4];
|
|
99
|
-
clack.log.success(chalk_1.default.green("".concat(chalk_1.default.cyan(exports.metroConfigPath), " changes saved.")));
|
|
100
|
-
return [3 /*break*/, 6];
|
|
101
|
-
case 4:
|
|
102
|
-
clack.log.warn("Could not save changes to ".concat(chalk_1.default.cyan(exports.metroConfigPath), ", please follow the manual steps."));
|
|
103
|
-
return [4 /*yield*/, showInstructions()];
|
|
104
|
-
case 5: return [2 /*return*/, _a.sent()];
|
|
105
|
-
case 6: return [2 /*return*/];
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
});
|
|
42
|
+
async function patchMetroWithSentryConfig() {
|
|
43
|
+
const mod = await parseMetroConfig();
|
|
44
|
+
const showInstructions = () => (0, clack_utils_1.showCopyPasteInstructions)(exports.metroConfigPath, getMetroWithSentryConfigSnippet(true));
|
|
45
|
+
const success = await patchMetroWithSentryConfigInMemory(mod, showInstructions);
|
|
46
|
+
if (!success) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const saved = await writeMetroConfig(mod);
|
|
50
|
+
if (saved) {
|
|
51
|
+
clack.log.success(chalk_1.default.green(`${chalk_1.default.cyan(exports.metroConfigPath)} changes saved.`));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
clack.log.warn(`Could not save changes to ${chalk_1.default.cyan(exports.metroConfigPath)}, please follow the manual steps.`);
|
|
55
|
+
return await showInstructions();
|
|
56
|
+
}
|
|
109
57
|
}
|
|
110
58
|
exports.patchMetroWithSentryConfig = patchMetroWithSentryConfig;
|
|
111
|
-
function patchMetroWithSentryConfigInMemory(mod, showInstructions) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
case 6:
|
|
141
|
-
_a.sent();
|
|
142
|
-
return [2 /*return*/, false];
|
|
143
|
-
case 7:
|
|
144
|
-
addedSentryMetroImport = addSentryMetroRequireToMetroConfig(mod.$ast);
|
|
145
|
-
if (!!addedSentryMetroImport) return [3 /*break*/, 9];
|
|
146
|
-
clack.log.warn('Could not add `@sentry/react-native/metro` import to Metro config, please follow the manual steps.');
|
|
147
|
-
return [4 /*yield*/, showInstructions()];
|
|
148
|
-
case 8:
|
|
149
|
-
_a.sent();
|
|
150
|
-
return [2 /*return*/, false];
|
|
151
|
-
case 9:
|
|
152
|
-
clack.log.success("Added Sentry Metro plugin to ".concat(chalk_1.default.cyan(exports.metroConfigPath), "."));
|
|
153
|
-
return [2 /*return*/, true];
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
});
|
|
59
|
+
async function patchMetroWithSentryConfigInMemory(mod, showInstructions) {
|
|
60
|
+
if ((0, ast_utils_1.hasSentryContent)(mod.$ast)) {
|
|
61
|
+
const shouldContinue = await confirmPathMetroConfig();
|
|
62
|
+
if (!shouldContinue) {
|
|
63
|
+
await showInstructions();
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const configExpression = getModuleExportsAssignmentRight(mod.$ast);
|
|
68
|
+
if (!configExpression) {
|
|
69
|
+
clack.log.warn('Could not find Metro config, please follow the manual steps.');
|
|
70
|
+
await showInstructions();
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
const wrappedConfig = wrapWithSentryConfig(configExpression);
|
|
74
|
+
const replacedModuleExportsRight = replaceModuleExportsRight(mod.$ast, wrappedConfig);
|
|
75
|
+
if (!replacedModuleExportsRight) {
|
|
76
|
+
clack.log.warn('Could not automatically wrap the config export, please follow the manual steps.');
|
|
77
|
+
await showInstructions();
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
const addedSentryMetroImport = addSentryMetroRequireToMetroConfig(mod.$ast);
|
|
81
|
+
if (!addedSentryMetroImport) {
|
|
82
|
+
clack.log.warn('Could not add `@sentry/react-native/metro` import to Metro config, please follow the manual steps.');
|
|
83
|
+
await showInstructions();
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
clack.log.success(`Added Sentry Metro plugin to ${chalk_1.default.cyan(exports.metroConfigPath)}.`);
|
|
87
|
+
return true;
|
|
157
88
|
}
|
|
158
89
|
exports.patchMetroWithSentryConfigInMemory = patchMetroWithSentryConfigInMemory;
|
|
159
|
-
function patchMetroConfigWithSentrySerializer() {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
return [4 /*yield*/, showInstructions()];
|
|
193
|
-
case 7: return [2 /*return*/, _a.sent()];
|
|
194
|
-
case 8:
|
|
195
|
-
clack.log.success("Added Sentry Metro plugin to ".concat(chalk_1.default.cyan(exports.metroConfigPath), "."));
|
|
196
|
-
return [4 /*yield*/, writeMetroConfig(mod)];
|
|
197
|
-
case 9:
|
|
198
|
-
saved = _a.sent();
|
|
199
|
-
if (!saved) return [3 /*break*/, 10];
|
|
200
|
-
clack.log.success(chalk_1.default.green("".concat(chalk_1.default.cyan(exports.metroConfigPath), " changes saved.")));
|
|
201
|
-
return [3 /*break*/, 12];
|
|
202
|
-
case 10:
|
|
203
|
-
clack.log.warn("Could not save changes to ".concat(chalk_1.default.cyan(exports.metroConfigPath), ", please follow the manual steps."));
|
|
204
|
-
return [4 /*yield*/, showInstructions()];
|
|
205
|
-
case 11: return [2 /*return*/, _a.sent()];
|
|
206
|
-
case 12: return [2 /*return*/];
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
});
|
|
90
|
+
async function patchMetroConfigWithSentrySerializer() {
|
|
91
|
+
const mod = await parseMetroConfig();
|
|
92
|
+
const showInstructions = () => (0, clack_utils_1.showCopyPasteInstructions)(exports.metroConfigPath, getMetroSentrySerializerSnippet(true));
|
|
93
|
+
if ((0, ast_utils_1.hasSentryContent)(mod.$ast)) {
|
|
94
|
+
const shouldContinue = await confirmPathMetroConfig();
|
|
95
|
+
if (!shouldContinue) {
|
|
96
|
+
return await showInstructions();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const configObj = getMetroConfigObject(mod.$ast);
|
|
100
|
+
if (!configObj) {
|
|
101
|
+
clack.log.warn('Could not find Metro config object, please follow the manual steps.');
|
|
102
|
+
return showInstructions();
|
|
103
|
+
}
|
|
104
|
+
const addedSentrySerializer = addSentrySerializerToMetroConfig(configObj);
|
|
105
|
+
if (!addedSentrySerializer) {
|
|
106
|
+
clack.log.warn('Could not add Sentry serializer to Metro config, please follow the manual steps.');
|
|
107
|
+
return await showInstructions();
|
|
108
|
+
}
|
|
109
|
+
const addedSentrySerializerImport = addSentrySerializerRequireToMetroConfig(mod.$ast);
|
|
110
|
+
if (!addedSentrySerializerImport) {
|
|
111
|
+
clack.log.warn('Could not add Sentry serializer import to Metro config, please follow the manual steps.');
|
|
112
|
+
return await showInstructions();
|
|
113
|
+
}
|
|
114
|
+
clack.log.success(`Added Sentry Metro plugin to ${chalk_1.default.cyan(exports.metroConfigPath)}.`);
|
|
115
|
+
const saved = await writeMetroConfig(mod);
|
|
116
|
+
if (saved) {
|
|
117
|
+
clack.log.success(chalk_1.default.green(`${chalk_1.default.cyan(exports.metroConfigPath)} changes saved.`));
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
clack.log.warn(`Could not save changes to ${chalk_1.default.cyan(exports.metroConfigPath)}, please follow the manual steps.`);
|
|
121
|
+
return await showInstructions();
|
|
122
|
+
}
|
|
210
123
|
}
|
|
211
124
|
exports.patchMetroConfigWithSentrySerializer = patchMetroConfigWithSentrySerializer;
|
|
212
|
-
function unPatchMetroConfig() {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
saved = _a.sent();
|
|
226
|
-
if (saved) {
|
|
227
|
-
clack.log.success("Removed Sentry Metro plugin from ".concat(chalk_1.default.cyan(exports.metroConfigPath), "."));
|
|
228
|
-
}
|
|
229
|
-
return [3 /*break*/, 4];
|
|
230
|
-
case 3:
|
|
231
|
-
clack.log.warn("No Sentry Metro plugin found in ".concat(chalk_1.default.cyan(exports.metroConfigPath), "."));
|
|
232
|
-
_a.label = 4;
|
|
233
|
-
case 4: return [2 /*return*/];
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
});
|
|
125
|
+
async function unPatchMetroConfig() {
|
|
126
|
+
const mod = await parseMetroConfig();
|
|
127
|
+
const removedAtLeastOneRequire = removeSentryRequire(mod.$ast);
|
|
128
|
+
const removedSerializerConfig = removeSentrySerializerFromMetroConfig(mod.$ast);
|
|
129
|
+
if (removedAtLeastOneRequire || removedSerializerConfig) {
|
|
130
|
+
const saved = await writeMetroConfig(mod);
|
|
131
|
+
if (saved) {
|
|
132
|
+
clack.log.success(`Removed Sentry Metro plugin from ${chalk_1.default.cyan(exports.metroConfigPath)}.`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
clack.log.warn(`No Sentry Metro plugin found in ${chalk_1.default.cyan(exports.metroConfigPath)}.`);
|
|
137
|
+
}
|
|
237
138
|
}
|
|
238
139
|
exports.unPatchMetroConfig = unPatchMetroConfig;
|
|
239
140
|
function removeSentrySerializerFromMetroConfig(program) {
|
|
240
|
-
|
|
141
|
+
const configObject = getMetroConfigObject(program);
|
|
241
142
|
if (!configObject) {
|
|
242
143
|
return false;
|
|
243
144
|
}
|
|
244
|
-
|
|
145
|
+
const serializerProp = getSerializerProp(configObject);
|
|
245
146
|
if ('invalid' === serializerProp || 'undefined' === serializerProp) {
|
|
246
147
|
return false;
|
|
247
148
|
}
|
|
248
|
-
|
|
149
|
+
const customSerializerProp = getCustomSerializerProp(serializerProp);
|
|
249
150
|
if ('invalid' === customSerializerProp ||
|
|
250
151
|
'undefined' === customSerializerProp) {
|
|
251
152
|
return false;
|
|
@@ -257,17 +158,17 @@ function removeSentrySerializerFromMetroConfig(program) {
|
|
|
257
158
|
if (customSerializerProp.value.arguments.length === 0) {
|
|
258
159
|
// FROM serializer: { customSerializer: createSentryMetroSerializer() }
|
|
259
160
|
// TO serializer: {}
|
|
260
|
-
|
|
261
|
-
serializerProp.value.properties = serializerProp.value.properties.filter(
|
|
161
|
+
let removed = false;
|
|
162
|
+
serializerProp.value.properties = serializerProp.value.properties.filter((p) => {
|
|
262
163
|
if (p.type === 'ObjectProperty' &&
|
|
263
164
|
p.key.type === 'Identifier' &&
|
|
264
165
|
p.key.name === 'customSerializer') {
|
|
265
|
-
|
|
166
|
+
removed = true;
|
|
266
167
|
return false;
|
|
267
168
|
}
|
|
268
169
|
return true;
|
|
269
170
|
});
|
|
270
|
-
if (
|
|
171
|
+
if (removed) {
|
|
271
172
|
return true;
|
|
272
173
|
}
|
|
273
174
|
}
|
|
@@ -287,43 +188,24 @@ function removeSentryRequire(program) {
|
|
|
287
188
|
return (0, ast_utils_1.removeRequire)(program, '@sentry');
|
|
288
189
|
}
|
|
289
190
|
exports.removeSentryRequire = removeSentryRequire;
|
|
290
|
-
function parseMetroConfig() {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
return __generator(this, function (_a) {
|
|
294
|
-
switch (_a.label) {
|
|
295
|
-
case 0: return [4 /*yield*/, fs.promises.readFile(exports.metroConfigPath)];
|
|
296
|
-
case 1:
|
|
297
|
-
metroConfigContent = (_a.sent()).toString();
|
|
298
|
-
return [2 /*return*/, (0, magicast_1.parseModule)(metroConfigContent)];
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
});
|
|
191
|
+
async function parseMetroConfig() {
|
|
192
|
+
const metroConfigContent = (await fs.promises.readFile(exports.metroConfigPath)).toString();
|
|
193
|
+
return (0, magicast_1.parseModule)(metroConfigContent);
|
|
302
194
|
}
|
|
303
195
|
exports.parseMetroConfig = parseMetroConfig;
|
|
304
|
-
function writeMetroConfig(mod) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
_a.sent();
|
|
314
|
-
return [3 /*break*/, 3];
|
|
315
|
-
case 2:
|
|
316
|
-
e_1 = _a.sent();
|
|
317
|
-
clack.log.error("Failed to write to ".concat(chalk_1.default.cyan(exports.metroConfigPath), ": ").concat(JSON.stringify(e_1)));
|
|
318
|
-
return [2 /*return*/, false];
|
|
319
|
-
case 3: return [2 /*return*/, true];
|
|
320
|
-
}
|
|
321
|
-
});
|
|
322
|
-
});
|
|
196
|
+
async function writeMetroConfig(mod) {
|
|
197
|
+
try {
|
|
198
|
+
await (0, magicast_1.writeFile)(mod.$ast, exports.metroConfigPath);
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
clack.log.error(`Failed to write to ${chalk_1.default.cyan(exports.metroConfigPath)}: ${JSON.stringify(e)}`);
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
return true;
|
|
323
205
|
}
|
|
324
206
|
exports.writeMetroConfig = writeMetroConfig;
|
|
325
207
|
function addSentrySerializerToMetroConfig(configObj) {
|
|
326
|
-
|
|
208
|
+
const serializerProp = getSerializerProp(configObj);
|
|
327
209
|
if ('invalid' === serializerProp) {
|
|
328
210
|
return false;
|
|
329
211
|
}
|
|
@@ -334,7 +216,7 @@ function addSentrySerializerToMetroConfig(configObj) {
|
|
|
334
216
|
])));
|
|
335
217
|
return true;
|
|
336
218
|
}
|
|
337
|
-
|
|
219
|
+
const customSerializerProp = getCustomSerializerProp(serializerProp);
|
|
338
220
|
// case 2: serializer.customSerializer property doesn't exist yet, so we just add it
|
|
339
221
|
if ('undefined' === customSerializerProp &&
|
|
340
222
|
serializerProp.value.type === 'ObjectExpression') {
|
|
@@ -345,10 +227,8 @@ function addSentrySerializerToMetroConfig(configObj) {
|
|
|
345
227
|
}
|
|
346
228
|
exports.addSentrySerializerToMetroConfig = addSentrySerializerToMetroConfig;
|
|
347
229
|
function getCustomSerializerProp(prop) {
|
|
348
|
-
|
|
349
|
-
prop.value.properties.find(
|
|
350
|
-
return p.key.type === 'Identifier' && p.key.name === 'customSerializer';
|
|
351
|
-
});
|
|
230
|
+
const customSerializerProp = prop.value.type === 'ObjectExpression' &&
|
|
231
|
+
prop.value.properties.find((p) => p.key.type === 'Identifier' && p.key.name === 'customSerializer');
|
|
352
232
|
if (!customSerializerProp) {
|
|
353
233
|
return 'undefined';
|
|
354
234
|
}
|
|
@@ -358,9 +238,7 @@ function getCustomSerializerProp(prop) {
|
|
|
358
238
|
return 'invalid';
|
|
359
239
|
}
|
|
360
240
|
function getSerializerProp(obj) {
|
|
361
|
-
|
|
362
|
-
return p.key.type === 'Identifier' && p.key.name === 'serializer';
|
|
363
|
-
});
|
|
241
|
+
const serializerProp = obj.properties.find((p) => p.key.type === 'Identifier' && p.key.name === 'serializer');
|
|
364
242
|
if (!serializerProp) {
|
|
365
243
|
return 'undefined';
|
|
366
244
|
}
|
|
@@ -370,9 +248,9 @@ function getSerializerProp(obj) {
|
|
|
370
248
|
return 'invalid';
|
|
371
249
|
}
|
|
372
250
|
function addSentrySerializerRequireToMetroConfig(program) {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
251
|
+
const lastRequireIndex = (0, ast_utils_1.getLastRequireIndex)(program);
|
|
252
|
+
const sentrySerializerRequire = createSentrySerializerRequire();
|
|
253
|
+
const sentryImportIndex = lastRequireIndex + 1;
|
|
376
254
|
if (sentryImportIndex < program.body.length) {
|
|
377
255
|
// insert after last require
|
|
378
256
|
program.body.splice(lastRequireIndex + 1, 0, sentrySerializerRequire);
|
|
@@ -385,9 +263,9 @@ function addSentrySerializerRequireToMetroConfig(program) {
|
|
|
385
263
|
}
|
|
386
264
|
exports.addSentrySerializerRequireToMetroConfig = addSentrySerializerRequireToMetroConfig;
|
|
387
265
|
function addSentryMetroRequireToMetroConfig(program) {
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
266
|
+
const lastRequireIndex = (0, ast_utils_1.getLastRequireIndex)(program);
|
|
267
|
+
const sentryMetroRequire = createSentryMetroRequire();
|
|
268
|
+
const sentryImportIndex = lastRequireIndex + 1;
|
|
391
269
|
if (sentryImportIndex < program.body.length) {
|
|
392
270
|
// insert after last require
|
|
393
271
|
program.body.splice(lastRequireIndex + 1, 0, sentryMetroRequire);
|
|
@@ -403,7 +281,7 @@ function wrapWithSentryConfig(configObj) {
|
|
|
403
281
|
return b.callExpression(b.identifier('withSentryConfig'), [configObj]);
|
|
404
282
|
}
|
|
405
283
|
function replaceModuleExportsRight(program, wrappedConfig) {
|
|
406
|
-
|
|
284
|
+
const moduleExports = getModuleExports(program);
|
|
407
285
|
if (!moduleExports) {
|
|
408
286
|
return false;
|
|
409
287
|
}
|
|
@@ -445,42 +323,32 @@ function createSentryMetroRequire() {
|
|
|
445
323
|
])),
|
|
446
324
|
]);
|
|
447
325
|
}
|
|
448
|
-
function confirmPathMetroConfig() {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
case 1:
|
|
468
|
-
shouldContinue = _a.sent();
|
|
469
|
-
if (!shouldContinue) {
|
|
470
|
-
Sentry.setTag('ast-mod-fail-reason', 'has-sentry-content');
|
|
471
|
-
}
|
|
472
|
-
return [2 /*return*/, shouldContinue];
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
|
-
});
|
|
326
|
+
async function confirmPathMetroConfig() {
|
|
327
|
+
const shouldContinue = await (0, clack_utils_1.abortIfCancelled)(clack.select({
|
|
328
|
+
message: `Metro Config already contains Sentry-related code. Should the wizard modify it anyway?`,
|
|
329
|
+
options: [
|
|
330
|
+
{
|
|
331
|
+
label: 'Yes, add the Sentry Metro plugin',
|
|
332
|
+
value: true,
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
label: 'No, show me instructions to manually add the plugin',
|
|
336
|
+
value: false,
|
|
337
|
+
},
|
|
338
|
+
],
|
|
339
|
+
initialValue: true,
|
|
340
|
+
}));
|
|
341
|
+
if (!shouldContinue) {
|
|
342
|
+
Sentry.setTag('ast-mod-fail-reason', 'has-sentry-content');
|
|
343
|
+
}
|
|
344
|
+
return shouldContinue;
|
|
476
345
|
}
|
|
477
346
|
/**
|
|
478
347
|
* Returns value from `module.exports = value` or `const config = value`
|
|
479
348
|
*/
|
|
480
349
|
function getMetroConfigObject(program) {
|
|
481
|
-
var _a;
|
|
482
350
|
// check config variable
|
|
483
|
-
|
|
351
|
+
const configVariable = program.body.find((s) => {
|
|
484
352
|
if (s.type === 'VariableDeclaration' &&
|
|
485
353
|
s.declarations.length === 1 &&
|
|
486
354
|
s.declarations[0].type === 'VariableDeclarator' &&
|
|
@@ -490,8 +358,8 @@ function getMetroConfigObject(program) {
|
|
|
490
358
|
}
|
|
491
359
|
return false;
|
|
492
360
|
});
|
|
493
|
-
if (
|
|
494
|
-
|
|
361
|
+
if (configVariable?.declarations[0].type === 'VariableDeclarator' &&
|
|
362
|
+
configVariable?.declarations[0].init?.type === 'ObjectExpression') {
|
|
495
363
|
Sentry.setTag('metro-config', 'config-variable');
|
|
496
364
|
return configVariable.declarations[0].init;
|
|
497
365
|
}
|
|
@@ -500,8 +368,8 @@ function getMetroConfigObject(program) {
|
|
|
500
368
|
exports.getMetroConfigObject = getMetroConfigObject;
|
|
501
369
|
function getModuleExportsObject(program) {
|
|
502
370
|
// check module.exports
|
|
503
|
-
|
|
504
|
-
if (
|
|
371
|
+
const moduleExports = getModuleExportsAssignmentRight(program);
|
|
372
|
+
if (moduleExports?.type === 'ObjectExpression') {
|
|
505
373
|
return moduleExports;
|
|
506
374
|
}
|
|
507
375
|
Sentry.setTag('metro-config', 'not-found');
|
|
@@ -509,13 +377,13 @@ function getModuleExportsObject(program) {
|
|
|
509
377
|
}
|
|
510
378
|
function getModuleExportsAssignmentRight(program) {
|
|
511
379
|
// check module.exports
|
|
512
|
-
|
|
513
|
-
if (
|
|
380
|
+
const moduleExports = getModuleExports(program);
|
|
381
|
+
if (moduleExports?.expression.type === 'AssignmentExpression' &&
|
|
514
382
|
(moduleExports.expression.right.type === 'ObjectExpression' ||
|
|
515
383
|
moduleExports.expression.right.type === 'CallExpression' ||
|
|
516
384
|
moduleExports.expression.right.type === 'Identifier')) {
|
|
517
385
|
Sentry.setTag('metro-config', 'module-exports');
|
|
518
|
-
return moduleExports
|
|
386
|
+
return moduleExports?.expression.right;
|
|
519
387
|
}
|
|
520
388
|
Sentry.setTag('metro-config', 'not-found');
|
|
521
389
|
return undefined;
|
|
@@ -523,7 +391,7 @@ function getModuleExportsAssignmentRight(program) {
|
|
|
523
391
|
exports.getModuleExportsAssignmentRight = getModuleExportsAssignmentRight;
|
|
524
392
|
function getModuleExports(program) {
|
|
525
393
|
// find module.exports
|
|
526
|
-
return program.body.find(
|
|
394
|
+
return program.body.find((s) => {
|
|
527
395
|
if (s.type === 'ExpressionStatement' &&
|
|
528
396
|
s.expression.type === 'AssignmentExpression' &&
|
|
529
397
|
s.expression.left.type === 'MemberExpression' &&
|
|
@@ -537,13 +405,25 @@ function getModuleExports(program) {
|
|
|
537
405
|
});
|
|
538
406
|
}
|
|
539
407
|
function getMetroSentrySerializerSnippet(colors) {
|
|
540
|
-
return (0, clack_utils_1.makeCodeSnippet)(colors,
|
|
541
|
-
|
|
542
|
-
|
|
408
|
+
return (0, clack_utils_1.makeCodeSnippet)(colors, (unchanged, plus, _) => unchanged(`const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');";
|
|
409
|
+
${plus("const {createSentryMetroSerializer} = require('@sentry/react-native/dist/js/tools/sentryMetroSerializer');")}
|
|
410
|
+
|
|
411
|
+
const config = {
|
|
412
|
+
${plus(`serializer: {
|
|
413
|
+
customSerializer: createSentryMetroSerializer(),
|
|
414
|
+
},`)}
|
|
415
|
+
};
|
|
416
|
+
|
|
417
|
+
module.exports = mergeConfig(getDefaultConfig(__dirname), config);
|
|
418
|
+
`));
|
|
543
419
|
}
|
|
544
420
|
function getMetroWithSentryConfigSnippet(colors) {
|
|
545
|
-
return (0, clack_utils_1.makeCodeSnippet)(colors,
|
|
546
|
-
|
|
547
|
-
|
|
421
|
+
return (0, clack_utils_1.makeCodeSnippet)(colors, (unchanged, plus, _) => unchanged(`const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');";
|
|
422
|
+
${plus("const {withSentryConfig} = require('@sentry/react-native/metro');")}
|
|
423
|
+
|
|
424
|
+
const config = {};
|
|
425
|
+
|
|
426
|
+
module.exports = ${plus('withSentryConfig(')}mergeConfig(getDefaultConfig(__dirname), config)${plus(')')};
|
|
427
|
+
`));
|
|
548
428
|
}
|
|
549
429
|
//# sourceMappingURL=metro.js.map
|