@sentry/wizard 3.42.1 → 4.0.1
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/CHANGELOG.md +30 -0
- 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/package.json +16 -9
- package/bin.ts +0 -138
- package/codecov.yml +0 -15
- package/dist/package.json +0 -128
- package/e2e-tests/.env.example +0 -11
- package/e2e-tests/README.md +0 -63
- package/e2e-tests/jest.config.ts +0 -22
- package/e2e-tests/package.json +0 -14
- package/e2e-tests/run.sh +0 -15
- package/e2e-tests/test-applications/apple/damaged-missing-configuration-list/Project.xcodeproj/project.pbxproj +0 -52
- package/e2e-tests/test-applications/apple/damaged-missing-configuration-list/Project.xcodeproj/xcshareddata/xcschemes/Project1.xcscheme +0 -78
- package/e2e-tests/test-applications/apple/no-targets/Project.xcodeproj/project.pbxproj +0 -62
- package/e2e-tests/test-applications/apple/no-targets/Project.xcodeproj/xcshareddata/xcschemes/Project1.xcscheme +0 -78
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project.xcodeproj/project.pbxproj +0 -470
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project.xcodeproj/xcshareddata/xcschemes/Project1.xcscheme +0 -78
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project1/ContentView.swift +0 -7
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project1/Project1App.swift +0 -10
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project2/ContentView.swift +0 -7
- package/e2e-tests/test-applications/apple/spm-swiftui-multi-targets/Project2/Project2App.swift +0 -10
- package/e2e-tests/test-applications/apple/spm-swiftui-single-target/Project.xcodeproj/project.pbxproj +0 -382
- package/e2e-tests/test-applications/apple/spm-swiftui-single-target/Project.xcodeproj/xcshareddata/xcschemes/Project.xcscheme +0 -78
- package/e2e-tests/test-applications/apple/spm-swiftui-single-target/Sources/ContentView.swift +0 -7
- package/e2e-tests/test-applications/apple/spm-swiftui-single-target/Sources/MainApp.swift +0 -10
- package/e2e-tests/test-applications/flutter-test-app/.metadata +0 -45
- package/e2e-tests/test-applications/flutter-test-app/README.md +0 -16
- package/e2e-tests/test-applications/flutter-test-app/analysis_options.yaml +0 -28
- package/e2e-tests/test-applications/flutter-test-app/android/app/build.gradle +0 -44
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/debug/AndroidManifest.xml +0 -7
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/AndroidManifest.xml +0 -45
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/kotlin/com/example/flutter_magic/MainActivity.kt +0 -5
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/drawable/launch_background.xml +0 -12
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/drawable-v21/launch_background.xml +0 -12
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/values/styles.xml +0 -18
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/main/res/values-night/styles.xml +0 -18
- package/e2e-tests/test-applications/flutter-test-app/android/app/src/profile/AndroidManifest.xml +0 -7
- package/e2e-tests/test-applications/flutter-test-app/android/build.gradle +0 -18
- package/e2e-tests/test-applications/flutter-test-app/android/gradle/wrapper/gradle-wrapper.properties +0 -5
- package/e2e-tests/test-applications/flutter-test-app/android/gradle.properties +0 -3
- package/e2e-tests/test-applications/flutter-test-app/android/settings.gradle +0 -25
- package/e2e-tests/test-applications/flutter-test-app/lib/main.dart +0 -125
- package/e2e-tests/test-applications/flutter-test-app/linux/CMakeLists.txt +0 -145
- package/e2e-tests/test-applications/flutter-test-app/linux/flutter/CMakeLists.txt +0 -88
- package/e2e-tests/test-applications/flutter-test-app/linux/flutter/generated_plugin_registrant.cc +0 -11
- package/e2e-tests/test-applications/flutter-test-app/linux/flutter/generated_plugin_registrant.h +0 -15
- package/e2e-tests/test-applications/flutter-test-app/linux/flutter/generated_plugins.cmake +0 -23
- package/e2e-tests/test-applications/flutter-test-app/linux/main.cc +0 -6
- package/e2e-tests/test-applications/flutter-test-app/linux/my_application.cc +0 -124
- package/e2e-tests/test-applications/flutter-test-app/linux/my_application.h +0 -18
- package/e2e-tests/test-applications/flutter-test-app/macos/Flutter/Flutter-Debug.xcconfig +0 -2
- package/e2e-tests/test-applications/flutter-test-app/macos/Flutter/Flutter-Release.xcconfig +0 -2
- package/e2e-tests/test-applications/flutter-test-app/macos/Flutter/GeneratedPluginRegistrant.swift +0 -10
- package/e2e-tests/test-applications/flutter-test-app/macos/Podfile +0 -43
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/AppDelegate.swift +0 -9
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -68
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Base.lproj/MainMenu.xib +0 -343
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Configs/AppInfo.xcconfig +0 -14
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Configs/Debug.xcconfig +0 -2
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Configs/Release.xcconfig +0 -2
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Configs/Warnings.xcconfig +0 -13
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/DebugProfile.entitlements +0 -12
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Info.plist +0 -32
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/MainFlutterWindow.swift +0 -15
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner/Release.entitlements +0 -8
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner.xcodeproj/project.pbxproj +0 -705
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +0 -98
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner.xcworkspace/contents.xcworkspacedata +0 -7
- package/e2e-tests/test-applications/flutter-test-app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/e2e-tests/test-applications/flutter-test-app/macos/RunnerTests/RunnerTests.swift +0 -12
- package/e2e-tests/test-applications/flutter-test-app/pubspec.lock +0 -213
- package/e2e-tests/test-applications/flutter-test-app/pubspec.yaml +0 -89
- package/e2e-tests/test-applications/flutter-test-app/test/widget_test.dart +0 -30
- package/e2e-tests/test-applications/flutter-test-app/web/favicon.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/web/icons/Icon-192.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/web/icons/Icon-512.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/web/icons/Icon-maskable-192.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/web/icons/Icon-maskable-512.png +0 -0
- package/e2e-tests/test-applications/flutter-test-app/web/index.html +0 -38
- package/e2e-tests/test-applications/flutter-test-app/web/manifest.json +0 -35
- package/e2e-tests/test-applications/flutter-test-app/windows/CMakeLists.txt +0 -108
- package/e2e-tests/test-applications/flutter-test-app/windows/flutter/CMakeLists.txt +0 -109
- package/e2e-tests/test-applications/flutter-test-app/windows/flutter/generated_plugin_registrant.cc +0 -11
- package/e2e-tests/test-applications/flutter-test-app/windows/flutter/generated_plugin_registrant.h +0 -15
- package/e2e-tests/test-applications/flutter-test-app/windows/flutter/generated_plugins.cmake +0 -23
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/CMakeLists.txt +0 -40
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/Runner.rc +0 -121
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/flutter_window.cpp +0 -71
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/flutter_window.h +0 -33
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/main.cpp +0 -43
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/resource.h +0 -16
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/resources/app_icon.ico +0 -0
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/runner.exe.manifest +0 -14
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/utils.cpp +0 -65
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/utils.h +0 -19
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/win32_window.cpp +0 -288
- package/e2e-tests/test-applications/flutter-test-app/windows/runner/win32_window.h +0 -102
- package/e2e-tests/test-applications/nextjs-test-app/next.config.mjs +0 -4
- package/e2e-tests/test-applications/nextjs-test-app/package.json +0 -22
- package/e2e-tests/test-applications/nextjs-test-app/src/app/layout.tsx +0 -20
- package/e2e-tests/test-applications/nextjs-test-app/src/app/page.tsx +0 -90
- package/e2e-tests/test-applications/nuxt-3-test-app/README.md +0 -75
- package/e2e-tests/test-applications/nuxt-3-test-app/nuxt.config.ts +0 -5
- package/e2e-tests/test-applications/nuxt-3-test-app/package.json +0 -18
- package/e2e-tests/test-applications/nuxt-3-test-app/public/favicon.ico +0 -0
- package/e2e-tests/test-applications/nuxt-3-test-app/public/robots.txt +0 -1
- package/e2e-tests/test-applications/nuxt-4-test-app/README.md +0 -75
- package/e2e-tests/test-applications/nuxt-4-test-app/nuxt.config.ts +0 -6
- package/e2e-tests/test-applications/nuxt-4-test-app/package.json +0 -18
- package/e2e-tests/test-applications/nuxt-4-test-app/public/favicon.ico +0 -0
- package/e2e-tests/test-applications/nuxt-4-test-app/public/robots.txt +0 -1
- package/e2e-tests/test-applications/remix-test-app/app/entry.client.tsx +0 -18
- package/e2e-tests/test-applications/remix-test-app/app/entry.server.tsx +0 -140
- package/e2e-tests/test-applications/remix-test-app/app/root.tsx +0 -30
- package/e2e-tests/test-applications/remix-test-app/app/routes/_index.tsx +0 -48
- package/e2e-tests/test-applications/remix-test-app/app/tailwind.css +0 -3
- package/e2e-tests/test-applications/remix-test-app/package.json +0 -37
- package/e2e-tests/test-applications/remix-test-app/postcss.config.js +0 -6
- package/e2e-tests/test-applications/remix-test-app/tailwind.config.ts +0 -9
- package/e2e-tests/test-applications/remix-test-app/vite.config.ts +0 -16
- package/e2e-tests/test-applications/sveltekit-test-app/package.json +0 -21
- package/e2e-tests/test-applications/sveltekit-test-app/src/app.d.ts +0 -13
- package/e2e-tests/test-applications/sveltekit-test-app/src/app.html +0 -11
- package/e2e-tests/test-applications/sveltekit-test-app/src/lib/index.ts +0 -1
- package/e2e-tests/test-applications/sveltekit-test-app/src/routes/+page.svelte +0 -2
- package/e2e-tests/test-applications/sveltekit-test-app/svelte.config.js +0 -18
- package/e2e-tests/test-applications/sveltekit-test-app/vite.config.ts +0 -6
- package/e2e-tests/tests/flutter.test.ts +0 -127
- package/e2e-tests/tests/nextjs.test.ts +0 -161
- package/e2e-tests/tests/nuxt-3.test.ts +0 -189
- package/e2e-tests/tests/nuxt-4.test.ts +0 -188
- package/e2e-tests/tests/remix.test.ts +0 -277
- package/e2e-tests/tests/sveltekit.test.ts +0 -284
- package/e2e-tests/utils/index.ts +0 -438
- package/index.ts +0 -2
- package/lib/Constants.ts +0 -118
- package/lib/Helper/BottomBar.ts +0 -28
- package/lib/Helper/Env.ts +0 -7
- package/lib/Helper/File.ts +0 -65
- package/lib/Helper/Git.ts +0 -39
- package/lib/Helper/Logging.ts +0 -44
- package/lib/Helper/MergeConfig.ts +0 -19
- package/lib/Helper/Package.ts +0 -78
- package/lib/Helper/SentryCli.ts +0 -148
- package/lib/Helper/Wizard.ts +0 -59
- package/lib/Helper/__tests__/File.ts +0 -15
- package/lib/Helper/__tests__/MergeConfig.ts +0 -98
- package/lib/Helper/__tests__/SentryCli.ts +0 -86
- package/lib/Helper/test-fixtures/next.config.1-merged.js +0 -18
- package/lib/Helper/test-fixtures/next.config.1.js +0 -6
- package/lib/Helper/test-fixtures/next.config.2.js +0 -8
- package/lib/Helper/test-fixtures/next.config.3-merged.js +0 -21
- package/lib/Helper/test-fixtures/next.config.3.js +0 -9
- package/lib/Helper/test-fixtures/next.config.4-merged.js +0 -21
- package/lib/Helper/test-fixtures/next.config.4.js +0 -9
- package/lib/Setup.ts +0 -41
- package/lib/Steps/BaseStep.ts +0 -25
- package/lib/Steps/ChooseIntegration.ts +0 -112
- package/lib/Steps/ConfigureProject.ts +0 -10
- package/lib/Steps/Initial.ts +0 -44
- package/lib/Steps/Integrations/BaseIntegration.ts +0 -48
- package/lib/Steps/Integrations/Cordova.ts +0 -289
- package/lib/Steps/Integrations/Electron.ts +0 -161
- package/lib/Steps/Integrations/MobileProject.ts +0 -69
- package/lib/Steps/OpenSentry.ts +0 -75
- package/lib/Steps/PromptForParameters.ts +0 -207
- package/lib/Steps/Result.ts +0 -22
- package/lib/Steps/SentryProjectSelector.ts +0 -82
- package/lib/Steps/ShouldConfigure.ts +0 -10
- package/lib/Steps/WaitForSentry.ts +0 -50
- package/lib/Steps/Welcome.ts +0 -21
- package/lib/Steps/index.ts +0 -10
- package/lib/__tests__/Env.ts +0 -29
- package/scripts/NextJs/configs/_error.js +0 -39
- package/scripts/NextJs/configs/next.config.js +0 -36
- package/scripts/NextJs/configs/next.config.template.js +0 -12
- package/scripts/NextJs/configs/sentry.client.config.js +0 -17
- package/scripts/NextJs/configs/sentry.edge.config.js +0 -17
- package/scripts/NextJs/configs/sentry.server.config.js +0 -17
- package/scripts/NextJs/sentry_sample_error.js +0 -47
- package/scripts/craft-pre-release.sh +0 -10
- package/src/android/android-wizard.ts +0 -192
- package/src/android/code-tools.ts +0 -170
- package/src/android/gradle.ts +0 -250
- package/src/android/manifest.ts +0 -180
- package/src/android/templates.ts +0 -86
- package/src/apple/apple-wizard.ts +0 -269
- package/src/apple/cocoapod.ts +0 -73
- package/src/apple/code-tools.ts +0 -147
- package/src/apple/fastlane.ts +0 -170
- package/src/apple/templates.ts +0 -65
- package/src/apple/xcode-manager.ts +0 -404
- package/src/flutter/code-tools.ts +0 -284
- package/src/flutter/flutter-wizard.ts +0 -164
- package/src/flutter/templates.ts +0 -90
- package/src/nextjs/nextjs-wizard.ts +0 -1007
- package/src/nextjs/templates.ts +0 -526
- package/src/nextjs/utils.ts +0 -21
- package/src/nuxt/nuxt-wizard.ts +0 -188
- package/src/nuxt/sdk-example.ts +0 -135
- package/src/nuxt/sdk-setup.ts +0 -349
- package/src/nuxt/templates.ts +0 -303
- package/src/nuxt/types.ts +0 -8
- package/src/nuxt/utils.ts +0 -42
- package/src/react-native/expo-env-file.ts +0 -55
- package/src/react-native/expo-metro.ts +0 -212
- package/src/react-native/expo.ts +0 -175
- package/src/react-native/git.ts +0 -25
- package/src/react-native/glob.ts +0 -13
- package/src/react-native/gradle.ts +0 -26
- package/src/react-native/javascript.ts +0 -103
- package/src/react-native/metro.ts +0 -599
- package/src/react-native/options.ts +0 -5
- package/src/react-native/react-native-wizard.ts +0 -513
- package/src/react-native/uninstall.ts +0 -110
- package/src/react-native/xcode.ts +0 -302
- package/src/remix/codemods/express-server.ts +0 -44
- package/src/remix/codemods/handle-error.ts +0 -118
- package/src/remix/codemods/root-common.ts +0 -63
- package/src/remix/codemods/root-v1.ts +0 -41
- package/src/remix/codemods/root-v2.ts +0 -153
- package/src/remix/remix-wizard.ts +0 -261
- package/src/remix/sdk-example.ts +0 -120
- package/src/remix/sdk-setup.ts +0 -546
- package/src/remix/templates.ts +0 -11
- package/src/remix/utils.ts +0 -96
- package/src/run.ts +0 -204
- package/src/sourcemaps/sourcemaps-wizard.ts +0 -364
- package/src/sourcemaps/tools/angular.ts +0 -42
- package/src/sourcemaps/tools/create-react-app.ts +0 -19
- package/src/sourcemaps/tools/esbuild.ts +0 -65
- package/src/sourcemaps/tools/nextjs.ts +0 -114
- package/src/sourcemaps/tools/remix.ts +0 -90
- package/src/sourcemaps/tools/rollup.ts +0 -67
- package/src/sourcemaps/tools/sentry-cli.ts +0 -287
- package/src/sourcemaps/tools/tsc.ts +0 -144
- package/src/sourcemaps/tools/types.ts +0 -11
- package/src/sourcemaps/tools/vite.ts +0 -300
- package/src/sourcemaps/tools/webpack.ts +0 -383
- package/src/sourcemaps/utils/detect-tool.ts +0 -46
- package/src/sourcemaps/utils/other-wizards.ts +0 -167
- package/src/sourcemaps/utils/sdk-version.ts +0 -266
- package/src/sveltekit/sdk-example.ts +0 -56
- package/src/sveltekit/sdk-setup.ts +0 -667
- package/src/sveltekit/sveltekit-wizard.ts +0 -192
- package/src/sveltekit/templates.ts +0 -185
- package/src/sveltekit/utils.ts +0 -50
- package/src/telemetry.ts +0 -124
- package/src/utils/ast-utils.ts +0 -270
- package/src/utils/bash.ts +0 -57
- package/src/utils/clack-utils.ts +0 -1533
- package/src/utils/debug.ts +0 -20
- package/src/utils/package-json.ts +0 -51
- package/src/utils/package-manager.ts +0 -172
- package/src/utils/release-registry.ts +0 -19
- package/src/utils/semver.ts +0 -33
- package/src/utils/sentrycli-utils.ts +0 -24
- package/src/utils/string.ts +0 -7
- package/src/utils/types.ts +0 -77
- package/src/utils/url.ts +0 -27
- package/src/utils/vendor/is-unicorn-supported.ts +0 -29
- package/test/android/code-tools.test.ts +0 -49
- package/test/apple/cocoapod.test.ts +0 -306
- package/test/apple/code-tools.test.ts +0 -1042
- package/test/apple/fastfile.test.ts +0 -550
- package/test/apple/templates.test.ts +0 -191
- package/test/apple/xcode-manager.test.ts +0 -1066
- package/test/flutter/code-tools.test.ts +0 -212
- package/test/flutter/templates.test.ts +0 -100
- package/test/nextjs/templates.test.ts +0 -429
- package/test/nuxt/templates.test.ts +0 -255
- package/test/react-native/expo-metro.test.ts +0 -81
- package/test/react-native/expo.test.ts +0 -86
- package/test/react-native/gradle.test.ts +0 -310
- package/test/react-native/javascript.test.ts +0 -134
- package/test/react-native/metro.test.ts +0 -396
- package/test/react-native/xcode.test.ts +0 -401
- package/test/remix/client-entry.test.ts +0 -122
- package/test/remix/server-instrumentation.test.ts +0 -36
- package/test/sourcemaps/tools/sentry-cli.test.ts +0 -57
- package/test/sourcemaps/tools/tsc.test.ts +0 -181
- package/test/sourcemaps/tools/vite.test.ts +0 -149
- package/test/sourcemaps/tools/webpack.test.ts +0 -303
- package/test/sveltekit/templates.test.ts +0 -152
- package/test/utils/ast-utils.test.ts +0 -264
- package/test/utils/clack-utils.test.ts +0 -234
- package/types/xcode.d.ts +0 -526
|
@@ -23,54 +23,190 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
const Sentry = __importStar(require("@sentry/node"));
|
|
27
|
+
const fs = __importStar(require("fs"));
|
|
28
|
+
const os = __importStar(require("os"));
|
|
29
|
+
const path = __importStar(require("path"));
|
|
30
|
+
const code_tools_1 = require("../../src/apple/code-tools");
|
|
31
31
|
// @ts-ignore - clack is ESM and TS complains about that. It works though
|
|
32
|
-
|
|
32
|
+
const clack = __importStar(require("@clack/prompts"));
|
|
33
33
|
// Test Constants
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
34
|
+
const invalidAppDelegateSwift = `func application() {}`;
|
|
35
|
+
const validAppDelegateSwift = `
|
|
36
|
+
import UIKit
|
|
37
|
+
|
|
38
|
+
@main
|
|
39
|
+
class AppDelegate: UIResponder, UIApplicationDelegate {
|
|
40
|
+
|
|
41
|
+
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
|
42
|
+
// Override point for customization after application launch.
|
|
43
|
+
return true
|
|
44
|
+
}
|
|
45
|
+
}`;
|
|
46
|
+
const validAppDelegateSwiftWithSentry = `
|
|
47
|
+
import UIKit
|
|
48
|
+
import Sentry
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@main
|
|
52
|
+
class AppDelegate: UIResponder, UIApplicationDelegate {
|
|
53
|
+
|
|
54
|
+
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
|
55
|
+
SentrySDK.start { options in
|
|
56
|
+
options.dsn = "https://example.com/sentry-dsn"
|
|
57
|
+
options.debug = true // Enabled debug when first installing is always helpful
|
|
58
|
+
// Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.
|
|
59
|
+
// We recommend adjusting this value in production.
|
|
60
|
+
options.tracesSampleRate = 1.0
|
|
61
|
+
|
|
62
|
+
// Sample rate for profiling, applied on top of TracesSampleRate.
|
|
63
|
+
// We recommend adjusting this value in production.
|
|
64
|
+
options.profilesSampleRate = 1.0
|
|
65
|
+
|
|
66
|
+
// Uncomment the following lines to add more data to your events
|
|
67
|
+
// options.attachScreenshot = true // This adds a screenshot to the error events
|
|
68
|
+
// options.attachViewHierarchy = true // This adds the view hierarchy to the error events
|
|
69
|
+
}
|
|
70
|
+
// Remove the next line after confirming that your Sentry integration is working.
|
|
71
|
+
SentrySDK.capture(message: "This app uses Sentry! :)")
|
|
72
|
+
|
|
73
|
+
// Override point for customization after application launch.
|
|
74
|
+
return true
|
|
75
|
+
}
|
|
76
|
+
}`;
|
|
77
|
+
const invalidAppDelegateObjC = `
|
|
78
|
+
- (BOOL)application:(UIApplication *) {
|
|
79
|
+
return NO;
|
|
80
|
+
}`;
|
|
81
|
+
const validAppDelegateObjC = `
|
|
82
|
+
#import "AppDelegate.h"
|
|
83
|
+
|
|
84
|
+
@interface AppDelegate ()
|
|
85
|
+
|
|
86
|
+
@end
|
|
87
|
+
|
|
88
|
+
@implementation AppDelegate
|
|
89
|
+
|
|
90
|
+
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
|
91
|
+
// Override point for customization after application launch.
|
|
92
|
+
return YES;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@end`;
|
|
96
|
+
const validAppDelegateObjCWithSentry = `@import Sentry;
|
|
97
|
+
|
|
98
|
+
#import "AppDelegate.h"
|
|
99
|
+
|
|
100
|
+
@interface AppDelegate ()
|
|
101
|
+
|
|
102
|
+
@end
|
|
103
|
+
|
|
104
|
+
@implementation AppDelegate
|
|
105
|
+
|
|
106
|
+
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
|
107
|
+
[SentrySDK startWithConfigureOptions:^(SentryOptions * options) {
|
|
108
|
+
options.dsn = @"https://example.com/sentry-dsn";
|
|
109
|
+
options.debug = YES; // Enabled debug when first installing is always helpful
|
|
110
|
+
// Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.
|
|
111
|
+
// We recommend adjusting this value in production.
|
|
112
|
+
options.tracesSampleRate = @1.0;
|
|
113
|
+
|
|
114
|
+
// Sample rate for profiling, applied on top of TracesSampleRate.
|
|
115
|
+
// We recommend adjusting this value in production.
|
|
116
|
+
options.profilesSampleRate = @1.0;
|
|
117
|
+
|
|
118
|
+
//Uncomment the following lines to add more data to your events
|
|
119
|
+
//options.attachScreenshot = YES; //This will add a screenshot to the error events
|
|
120
|
+
//options.attachViewHierarchy = YES; //This will add the view hierarchy to the error events
|
|
121
|
+
}];
|
|
122
|
+
//Remove the next line after confirming that your Sentry integration is working.
|
|
123
|
+
[SentrySDK captureMessage:@"This app uses Sentry!"];
|
|
124
|
+
|
|
125
|
+
// Override point for customization after application launch.
|
|
126
|
+
return YES;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@end`;
|
|
130
|
+
const invalidAppDelegateSwiftUI = `
|
|
131
|
+
struct MyApp: App {
|
|
132
|
+
var body: some Scene {
|
|
133
|
+
WindowGroup { Text("Hello, world!") }
|
|
134
|
+
}
|
|
135
|
+
}`;
|
|
136
|
+
const validAppDelegateSwiftUI = `
|
|
137
|
+
import SwiftUI
|
|
138
|
+
|
|
139
|
+
@main
|
|
140
|
+
struct TestApp: App {
|
|
141
|
+
var body: some Scene {
|
|
142
|
+
WindowGroup {
|
|
143
|
+
ContentView()
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}`;
|
|
147
|
+
const validAppDelegateSwiftUIWithSentry = `
|
|
148
|
+
import SwiftUI
|
|
149
|
+
import Sentry
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
@main
|
|
153
|
+
struct TestApp: App {
|
|
154
|
+
init() {
|
|
155
|
+
SentrySDK.start { options in
|
|
156
|
+
options.dsn = "https://example.com/sentry-dsn"
|
|
157
|
+
options.debug = true // Enabled debug when first installing is always helpful
|
|
158
|
+
// Set tracesSampleRate to 1.0 to capture 100% of transactions for performance monitoring.
|
|
159
|
+
// We recommend adjusting this value in production.
|
|
160
|
+
options.tracesSampleRate = 1.0
|
|
161
|
+
|
|
162
|
+
// Sample rate for profiling, applied on top of TracesSampleRate.
|
|
163
|
+
// We recommend adjusting this value in production.
|
|
164
|
+
options.profilesSampleRate = 1.0
|
|
165
|
+
|
|
166
|
+
// Uncomment the following lines to add more data to your events
|
|
167
|
+
// options.attachScreenshot = true // This adds a screenshot to the error events
|
|
168
|
+
// options.attachViewHierarchy = true // This adds the view hierarchy to the error events
|
|
169
|
+
}
|
|
170
|
+
// Remove the next line after confirming that your Sentry integration is working.
|
|
171
|
+
SentrySDK.capture(message: "This app uses Sentry! :)")
|
|
172
|
+
}
|
|
173
|
+
var body: some Scene {
|
|
174
|
+
WindowGroup {
|
|
175
|
+
ContentView()
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}`;
|
|
179
|
+
const prepareTempDir = () => {
|
|
180
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'code-tools-test'));
|
|
45
181
|
return tempDir;
|
|
46
182
|
};
|
|
47
|
-
|
|
48
|
-
|
|
183
|
+
const prepareAppDelegateFile = (dir, content, ext) => {
|
|
184
|
+
const filePath = path.join(dir, `AppDelegate.${ext}`);
|
|
49
185
|
fs.writeFileSync(filePath, content, 'utf8');
|
|
50
186
|
return filePath;
|
|
51
187
|
};
|
|
52
|
-
|
|
188
|
+
const dsn = 'https://example.com/sentry-dsn';
|
|
53
189
|
// Mock Setup
|
|
54
190
|
jest.mock('../../src/utils/bash');
|
|
55
191
|
jest.spyOn(Sentry, 'setTag').mockImplementation();
|
|
56
192
|
jest.spyOn(Sentry, 'captureException').mockImplementation();
|
|
57
193
|
// Test Suite
|
|
58
|
-
describe('code-tools',
|
|
59
|
-
beforeEach(
|
|
194
|
+
describe('code-tools', () => {
|
|
195
|
+
beforeEach(() => {
|
|
60
196
|
jest.spyOn(clack.log, 'info').mockImplementation();
|
|
61
197
|
});
|
|
62
|
-
afterEach(
|
|
198
|
+
afterEach(() => {
|
|
63
199
|
jest.clearAllMocks();
|
|
64
200
|
});
|
|
65
|
-
describe('#isAppDelegateFile',
|
|
66
|
-
|
|
67
|
-
|
|
201
|
+
describe('#isAppDelegateFile', () => {
|
|
202
|
+
const prepareTestFile = (content, ext) => {
|
|
203
|
+
const tempDir = prepareTempDir();
|
|
68
204
|
return prepareAppDelegateFile(tempDir, content, ext);
|
|
69
205
|
};
|
|
70
|
-
describe('swift files',
|
|
71
|
-
describe('swift app launch regex',
|
|
72
|
-
describe('valid cases',
|
|
73
|
-
|
|
206
|
+
describe('swift files', () => {
|
|
207
|
+
describe('swift app launch regex', () => {
|
|
208
|
+
describe('valid cases', () => {
|
|
209
|
+
const variations = [
|
|
74
210
|
{
|
|
75
211
|
name: 'with underscores',
|
|
76
212
|
code: 'func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {',
|
|
@@ -92,24 +228,20 @@ describe('code-tools', function () {
|
|
|
92
228
|
code: 'func applicationDidFinishLaunching ( _ aNotification: Notification ) {',
|
|
93
229
|
},
|
|
94
230
|
];
|
|
95
|
-
|
|
96
|
-
describe(
|
|
97
|
-
it(
|
|
231
|
+
for (const variation of variations) {
|
|
232
|
+
describe(`${variation.name}`, () => {
|
|
233
|
+
it(`should return true`, () => {
|
|
98
234
|
// -- Arrange --
|
|
99
|
-
|
|
235
|
+
const filePath = prepareTestFile(variation.code, 'swift');
|
|
100
236
|
// -- Act --
|
|
101
|
-
|
|
237
|
+
const result = code_tools_1.exportForTesting.isAppDelegateFile(filePath);
|
|
102
238
|
// -- Assert --
|
|
103
239
|
expect(result).toBeTruthy();
|
|
104
240
|
});
|
|
105
241
|
});
|
|
106
|
-
};
|
|
107
|
-
for (var _i = 0, variations_1 = variations; _i < variations_1.length; _i++) {
|
|
108
|
-
var variation = variations_1[_i];
|
|
109
|
-
_loop_1(variation);
|
|
110
242
|
}
|
|
111
|
-
describe('invalid cases',
|
|
112
|
-
|
|
243
|
+
describe('invalid cases', () => {
|
|
244
|
+
const variations = [
|
|
113
245
|
{
|
|
114
246
|
name: 'missing application method',
|
|
115
247
|
code: 'import UIKit',
|
|
@@ -123,29 +255,25 @@ describe('code-tools', function () {
|
|
|
123
255
|
code: 'asdf;jk23;uas()d{',
|
|
124
256
|
},
|
|
125
257
|
];
|
|
126
|
-
|
|
127
|
-
describe(
|
|
128
|
-
it('should return false',
|
|
258
|
+
for (const variation of variations) {
|
|
259
|
+
describe(`${variation.name}`, () => {
|
|
260
|
+
it('should return false', () => {
|
|
129
261
|
// -- Arrange --
|
|
130
|
-
|
|
262
|
+
const filePath = prepareTestFile(variation.code, 'swift');
|
|
131
263
|
// -- Act --
|
|
132
|
-
|
|
264
|
+
const result = code_tools_1.exportForTesting.isAppDelegateFile(filePath);
|
|
133
265
|
// -- Assert --
|
|
134
266
|
expect(result).toBeFalsy();
|
|
135
267
|
});
|
|
136
268
|
});
|
|
137
|
-
};
|
|
138
|
-
for (var _i = 0, variations_2 = variations; _i < variations_2.length; _i++) {
|
|
139
|
-
var variation = variations_2[_i];
|
|
140
|
-
_loop_2(variation);
|
|
141
269
|
}
|
|
142
270
|
});
|
|
143
271
|
});
|
|
144
272
|
});
|
|
145
273
|
});
|
|
146
|
-
describe('objc files',
|
|
147
|
-
describe('valid cases',
|
|
148
|
-
|
|
274
|
+
describe('objc files', () => {
|
|
275
|
+
describe('valid cases', () => {
|
|
276
|
+
const variations = [
|
|
149
277
|
{
|
|
150
278
|
name: 'basic',
|
|
151
279
|
code: '- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {',
|
|
@@ -155,51 +283,43 @@ describe('code-tools', function () {
|
|
|
155
283
|
code: '- ( BOOL ) application: ( UIApplication * ) application didFinishLaunchingWithOptions: ( NSDictionary * ) launchOptions {',
|
|
156
284
|
},
|
|
157
285
|
];
|
|
158
|
-
|
|
159
|
-
describe(
|
|
160
|
-
it('should return true',
|
|
286
|
+
for (const variation of variations) {
|
|
287
|
+
describe(`${variation.name}`, () => {
|
|
288
|
+
it('should return true', () => {
|
|
161
289
|
// -- Arrange --
|
|
162
|
-
|
|
290
|
+
const filePath = prepareTestFile(variation.code, 'm');
|
|
163
291
|
// -- Act --
|
|
164
|
-
|
|
292
|
+
const result = code_tools_1.exportForTesting.isAppDelegateFile(filePath);
|
|
165
293
|
// -- Assert --
|
|
166
294
|
expect(result).toBeTruthy();
|
|
167
295
|
});
|
|
168
296
|
});
|
|
169
|
-
};
|
|
170
|
-
for (var _i = 0, variations_3 = variations; _i < variations_3.length; _i++) {
|
|
171
|
-
var variation = variations_3[_i];
|
|
172
|
-
_loop_3(variation);
|
|
173
297
|
}
|
|
174
298
|
});
|
|
175
|
-
describe('invalid cases',
|
|
176
|
-
|
|
299
|
+
describe('invalid cases', () => {
|
|
300
|
+
const variations = [
|
|
177
301
|
{
|
|
178
302
|
name: 'missing application method',
|
|
179
303
|
code: 'import UIKit',
|
|
180
304
|
},
|
|
181
305
|
];
|
|
182
|
-
|
|
183
|
-
describe(
|
|
184
|
-
it('should return false',
|
|
306
|
+
for (const variation of variations) {
|
|
307
|
+
describe(`${variation.name}`, () => {
|
|
308
|
+
it('should return false', () => {
|
|
185
309
|
// -- Arrange --
|
|
186
|
-
|
|
310
|
+
const filePath = prepareTestFile(variation.code, 'm');
|
|
187
311
|
// -- Act --
|
|
188
|
-
|
|
312
|
+
const result = code_tools_1.exportForTesting.isAppDelegateFile(filePath);
|
|
189
313
|
// -- Assert --
|
|
190
314
|
expect(result).toBeFalsy();
|
|
191
315
|
});
|
|
192
316
|
});
|
|
193
|
-
};
|
|
194
|
-
for (var _i = 0, variations_4 = variations; _i < variations_4.length; _i++) {
|
|
195
|
-
var variation = variations_4[_i];
|
|
196
|
-
_loop_4(variation);
|
|
197
317
|
}
|
|
198
318
|
});
|
|
199
319
|
});
|
|
200
|
-
describe('swiftui files',
|
|
201
|
-
describe('valid cases',
|
|
202
|
-
|
|
320
|
+
describe('swiftui files', () => {
|
|
321
|
+
describe('valid cases', () => {
|
|
322
|
+
const variations = [
|
|
203
323
|
{
|
|
204
324
|
name: 'basic',
|
|
205
325
|
code: '@main struct MyApp: App {',
|
|
@@ -213,25 +333,21 @@ describe('code-tools', function () {
|
|
|
213
333
|
code: '@main struct App: SwiftUI.App {',
|
|
214
334
|
},
|
|
215
335
|
];
|
|
216
|
-
|
|
217
|
-
describe(
|
|
218
|
-
it('should return true',
|
|
336
|
+
for (const variation of variations) {
|
|
337
|
+
describe(`${variation.name}`, () => {
|
|
338
|
+
it('should return true', () => {
|
|
219
339
|
// -- Arrange --
|
|
220
|
-
|
|
340
|
+
const filePath = prepareTestFile(variation.code, 'swift');
|
|
221
341
|
// -- Act --
|
|
222
|
-
|
|
342
|
+
const result = code_tools_1.exportForTesting.isAppDelegateFile(filePath);
|
|
223
343
|
// -- Assert --
|
|
224
344
|
expect(result).toBeTruthy();
|
|
225
345
|
});
|
|
226
346
|
});
|
|
227
|
-
};
|
|
228
|
-
for (var _i = 0, variations_5 = variations; _i < variations_5.length; _i++) {
|
|
229
|
-
var variation = variations_5[_i];
|
|
230
|
-
_loop_5(variation);
|
|
231
347
|
}
|
|
232
348
|
});
|
|
233
|
-
describe('invalid cases',
|
|
234
|
-
|
|
349
|
+
describe('invalid cases', () => {
|
|
350
|
+
const variations = [
|
|
235
351
|
{
|
|
236
352
|
name: 'missing @main',
|
|
237
353
|
code: 'struct App: App {',
|
|
@@ -249,419 +365,415 @@ describe('code-tools', function () {
|
|
|
249
365
|
code: '@main struct App: MySwiftUI.App {',
|
|
250
366
|
},
|
|
251
367
|
];
|
|
252
|
-
|
|
253
|
-
describe(
|
|
254
|
-
it('should return false',
|
|
368
|
+
for (const variation of variations) {
|
|
369
|
+
describe(`${variation.name}`, () => {
|
|
370
|
+
it('should return false', () => {
|
|
255
371
|
// -- Arrange --
|
|
256
|
-
|
|
372
|
+
const filePath = prepareTestFile(variation.code, 'swift');
|
|
257
373
|
// -- Act --
|
|
258
|
-
|
|
374
|
+
const result = code_tools_1.exportForTesting.isAppDelegateFile(filePath);
|
|
259
375
|
// -- Assert --
|
|
260
376
|
expect(result).toBeFalsy();
|
|
261
377
|
});
|
|
262
378
|
});
|
|
263
|
-
};
|
|
264
|
-
for (var _i = 0, variations_6 = variations; _i < variations_6.length; _i++) {
|
|
265
|
-
var variation = variations_6[_i];
|
|
266
|
-
_loop_6(variation);
|
|
267
379
|
}
|
|
268
380
|
});
|
|
269
381
|
});
|
|
270
|
-
describe('file not found',
|
|
271
|
-
it('should throw an error',
|
|
382
|
+
describe('file not found', () => {
|
|
383
|
+
it('should throw an error', () => {
|
|
272
384
|
// -- Arrange --
|
|
273
|
-
|
|
385
|
+
const invalidPath = path.join(os.tmpdir(), 'invalid-path');
|
|
274
386
|
// -- Act & Assert --
|
|
275
|
-
expect(
|
|
387
|
+
expect(() => code_tools_1.exportForTesting.isAppDelegateFile(invalidPath)).toThrow();
|
|
276
388
|
});
|
|
277
389
|
});
|
|
278
390
|
});
|
|
279
|
-
describe('#findAppDidFinishLaunchingWithOptions',
|
|
280
|
-
describe('no files given',
|
|
281
|
-
it('should check files in directory',
|
|
391
|
+
describe('#findAppDidFinishLaunchingWithOptions', () => {
|
|
392
|
+
describe('no files given', () => {
|
|
393
|
+
it('should check files in directory', () => {
|
|
282
394
|
// -- Arrange --
|
|
283
|
-
|
|
284
|
-
|
|
395
|
+
const tempDir = prepareTempDir();
|
|
396
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateSwift, 'swift');
|
|
285
397
|
// -- Act --
|
|
286
|
-
|
|
398
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
287
399
|
// -- Assert --
|
|
288
400
|
expect(result).toBe(filePath);
|
|
289
401
|
});
|
|
290
402
|
});
|
|
291
|
-
describe('SwiftUI file found',
|
|
292
|
-
describe('is app delegate',
|
|
293
|
-
it('should return the file path',
|
|
403
|
+
describe('SwiftUI file found', () => {
|
|
404
|
+
describe('is app delegate', () => {
|
|
405
|
+
it('should return the file path', () => {
|
|
294
406
|
// -- Arrange --
|
|
295
|
-
|
|
296
|
-
|
|
407
|
+
const tempDir = prepareTempDir();
|
|
408
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateSwiftUI, 'swift');
|
|
297
409
|
// -- Act --
|
|
298
|
-
|
|
410
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
299
411
|
// -- Assert --
|
|
300
412
|
expect(result).toBe(filePath);
|
|
301
413
|
});
|
|
302
414
|
});
|
|
303
|
-
describe('is not app delegate',
|
|
304
|
-
it('should be ignored',
|
|
415
|
+
describe('is not app delegate', () => {
|
|
416
|
+
it('should be ignored', () => {
|
|
305
417
|
// -- Arrange --
|
|
306
|
-
|
|
418
|
+
const tempDir = prepareTempDir();
|
|
307
419
|
prepareAppDelegateFile(tempDir, invalidAppDelegateSwiftUI, 'swift');
|
|
308
420
|
// -- Act --
|
|
309
|
-
|
|
421
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
310
422
|
// -- Assert --
|
|
311
423
|
expect(result).toBeNull();
|
|
312
424
|
});
|
|
313
425
|
});
|
|
314
426
|
});
|
|
315
|
-
describe('Swift file found',
|
|
316
|
-
describe('is app delegate',
|
|
317
|
-
it('should return the file path',
|
|
427
|
+
describe('Swift file found', () => {
|
|
428
|
+
describe('is app delegate', () => {
|
|
429
|
+
it('should return the file path', () => {
|
|
318
430
|
// -- Arrange --
|
|
319
|
-
|
|
320
|
-
|
|
431
|
+
const tempDir = prepareTempDir();
|
|
432
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateSwift, 'swift');
|
|
321
433
|
// -- Act --
|
|
322
|
-
|
|
434
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
323
435
|
// -- Assert --
|
|
324
436
|
expect(result).toBe(filePath);
|
|
325
437
|
});
|
|
326
438
|
});
|
|
327
|
-
describe('is not app delegate',
|
|
328
|
-
it('should be ignored',
|
|
439
|
+
describe('is not app delegate', () => {
|
|
440
|
+
it('should be ignored', () => {
|
|
329
441
|
// -- Arrange --
|
|
330
|
-
|
|
442
|
+
const tempDir = prepareTempDir();
|
|
331
443
|
prepareAppDelegateFile(tempDir, invalidAppDelegateSwift, 'swift');
|
|
332
444
|
// -- Act --
|
|
333
|
-
|
|
445
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
334
446
|
// -- Assert --
|
|
335
447
|
expect(result).toBeNull();
|
|
336
448
|
});
|
|
337
449
|
});
|
|
338
450
|
});
|
|
339
|
-
describe('Objective-C file found',
|
|
340
|
-
describe('is app delegate',
|
|
341
|
-
it('should return the file path',
|
|
451
|
+
describe('Objective-C file found', () => {
|
|
452
|
+
describe('is app delegate', () => {
|
|
453
|
+
it('should return the file path', () => {
|
|
342
454
|
// -- Arrange --
|
|
343
|
-
|
|
344
|
-
|
|
455
|
+
const tempDir = prepareTempDir();
|
|
456
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateObjC, 'm');
|
|
345
457
|
// -- Act --
|
|
346
|
-
|
|
458
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
347
459
|
// -- Assert --
|
|
348
460
|
expect(result).toBe(filePath);
|
|
349
461
|
});
|
|
350
462
|
});
|
|
351
|
-
describe('is not app delegate',
|
|
352
|
-
it('should be ignored',
|
|
463
|
+
describe('is not app delegate', () => {
|
|
464
|
+
it('should be ignored', () => {
|
|
353
465
|
// -- Arrange --
|
|
354
|
-
|
|
466
|
+
const tempDir = prepareTempDir();
|
|
355
467
|
prepareAppDelegateFile(tempDir, invalidAppDelegateObjC, 'm');
|
|
356
468
|
// -- Act --
|
|
357
|
-
|
|
469
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
358
470
|
// -- Assert --
|
|
359
471
|
expect(result).toBeNull();
|
|
360
472
|
});
|
|
361
473
|
});
|
|
362
474
|
});
|
|
363
|
-
describe('Objective-C++ file found',
|
|
364
|
-
describe('is app delegate',
|
|
365
|
-
it('should return the file path',
|
|
475
|
+
describe('Objective-C++ file found', () => {
|
|
476
|
+
describe('is app delegate', () => {
|
|
477
|
+
it('should return the file path', () => {
|
|
366
478
|
// -- Arrange --
|
|
367
|
-
|
|
368
|
-
|
|
479
|
+
const tempDir = prepareTempDir();
|
|
480
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateObjC, 'mm');
|
|
369
481
|
// -- Act --
|
|
370
|
-
|
|
482
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir, [filePath]);
|
|
371
483
|
// -- Assert --
|
|
372
484
|
expect(result).toBe(filePath);
|
|
373
485
|
});
|
|
374
486
|
});
|
|
375
|
-
describe('is not app delegate',
|
|
376
|
-
it('should be ignored',
|
|
487
|
+
describe('is not app delegate', () => {
|
|
488
|
+
it('should be ignored', () => {
|
|
377
489
|
// -- Arrange --
|
|
378
|
-
|
|
490
|
+
const tempDir = prepareTempDir();
|
|
379
491
|
prepareAppDelegateFile(tempDir, invalidAppDelegateObjC, 'mm');
|
|
380
492
|
// -- Act --
|
|
381
|
-
|
|
493
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
382
494
|
// -- Assert --
|
|
383
495
|
expect(result).toBeNull();
|
|
384
496
|
});
|
|
385
497
|
});
|
|
386
498
|
});
|
|
387
|
-
describe('file in list not found',
|
|
388
|
-
it('should return null',
|
|
499
|
+
describe('file in list not found', () => {
|
|
500
|
+
it('should return null', () => {
|
|
389
501
|
// -- Arrange --
|
|
390
|
-
|
|
391
|
-
|
|
502
|
+
const tempDir = prepareTempDir();
|
|
503
|
+
const filePath = prepareAppDelegateFile(tempDir, invalidAppDelegateSwift, 'swift');
|
|
392
504
|
// -- Act --
|
|
393
|
-
|
|
505
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir, [filePath]);
|
|
394
506
|
// -- Assert --
|
|
395
507
|
expect(result).toBeNull();
|
|
396
508
|
});
|
|
397
509
|
});
|
|
398
|
-
describe('unrelated file found',
|
|
399
|
-
it('should be ignored',
|
|
510
|
+
describe('unrelated file found', () => {
|
|
511
|
+
it('should be ignored', () => {
|
|
400
512
|
// -- Arrange --
|
|
401
|
-
|
|
402
|
-
|
|
513
|
+
const tempDir = prepareTempDir();
|
|
514
|
+
const filePath = prepareAppDelegateFile(tempDir, invalidAppDelegateSwift, 'swift');
|
|
403
515
|
// -- Act --
|
|
404
|
-
|
|
516
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir, [filePath]);
|
|
405
517
|
// -- Assert --
|
|
406
518
|
expect(result).toBeNull();
|
|
407
519
|
});
|
|
408
520
|
});
|
|
409
|
-
describe('directory in list',
|
|
410
|
-
describe('name starts with dot',
|
|
411
|
-
it('should be ignored',
|
|
521
|
+
describe('directory in list', () => {
|
|
522
|
+
describe('name starts with dot', () => {
|
|
523
|
+
it('should be ignored', () => {
|
|
412
524
|
// -- Arrange --
|
|
413
|
-
|
|
414
|
-
|
|
525
|
+
const tempDir = prepareTempDir();
|
|
526
|
+
const hiddenDir = path.join(tempDir, '.hidden');
|
|
415
527
|
fs.mkdirSync(hiddenDir);
|
|
416
528
|
prepareAppDelegateFile(hiddenDir, validAppDelegateSwift, 'swift');
|
|
417
529
|
// -- Act --
|
|
418
|
-
|
|
530
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
419
531
|
// -- Assert --
|
|
420
532
|
expect(result).toBeNull();
|
|
421
533
|
});
|
|
422
534
|
});
|
|
423
|
-
describe('name ends with .xcodeproj',
|
|
424
|
-
it('should be ignored',
|
|
535
|
+
describe('name ends with .xcodeproj', () => {
|
|
536
|
+
it('should be ignored', () => {
|
|
425
537
|
// -- Arrange --
|
|
426
|
-
|
|
427
|
-
|
|
538
|
+
const tempDir = prepareTempDir();
|
|
539
|
+
const xcodeDir = path.join(tempDir, 'MyProject.xcodeproj');
|
|
428
540
|
fs.mkdirSync(xcodeDir);
|
|
429
541
|
prepareAppDelegateFile(xcodeDir, validAppDelegateSwift, 'swift');
|
|
430
542
|
// -- Act --
|
|
431
|
-
|
|
543
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
432
544
|
// -- Assert --
|
|
433
545
|
expect(result).toBeNull();
|
|
434
546
|
});
|
|
435
547
|
});
|
|
436
|
-
describe('name ends with .xcassets',
|
|
437
|
-
it('should be ignored',
|
|
548
|
+
describe('name ends with .xcassets', () => {
|
|
549
|
+
it('should be ignored', () => {
|
|
438
550
|
// -- Arrange --
|
|
439
|
-
|
|
440
|
-
|
|
551
|
+
const tempDir = prepareTempDir();
|
|
552
|
+
const xcassetsDir = path.join(tempDir, 'MyProject.xcassets');
|
|
441
553
|
fs.mkdirSync(xcassetsDir);
|
|
442
554
|
prepareAppDelegateFile(xcassetsDir, validAppDelegateSwift, 'swift');
|
|
443
555
|
// -- Act --
|
|
444
|
-
|
|
556
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
445
557
|
// -- Assert --
|
|
446
558
|
expect(result).toBeNull();
|
|
447
559
|
});
|
|
448
560
|
});
|
|
449
|
-
describe('is not a directory',
|
|
450
|
-
it('should be ignored',
|
|
561
|
+
describe('is not a directory', () => {
|
|
562
|
+
it('should be ignored', () => {
|
|
451
563
|
// -- Arrange --
|
|
452
|
-
|
|
453
|
-
|
|
564
|
+
const tempDir = prepareTempDir();
|
|
565
|
+
const filePath = path.join(tempDir, 'some-file');
|
|
454
566
|
fs.writeFileSync(filePath, validAppDelegateSwift, 'utf8');
|
|
455
567
|
// -- Act --
|
|
456
|
-
|
|
568
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
457
569
|
// -- Assert --
|
|
458
570
|
expect(result).toBeNull();
|
|
459
571
|
});
|
|
460
572
|
});
|
|
461
573
|
});
|
|
462
|
-
describe('multiple files could be app delegate',
|
|
463
|
-
it('should return the first one',
|
|
574
|
+
describe('multiple files could be app delegate', () => {
|
|
575
|
+
it('should return the first one', () => {
|
|
464
576
|
// -- Arrange --
|
|
465
|
-
|
|
466
|
-
|
|
577
|
+
const tempDir = prepareTempDir();
|
|
578
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateSwift, 'swift');
|
|
467
579
|
prepareAppDelegateFile(tempDir, validAppDelegateSwift, 'swift');
|
|
468
580
|
// -- Act --
|
|
469
|
-
|
|
581
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
470
582
|
// -- Assert --
|
|
471
583
|
expect(result).toBe(filePath);
|
|
472
584
|
});
|
|
473
585
|
});
|
|
474
|
-
describe('multiple nested directories with app delegate',
|
|
475
|
-
it('should return the first one',
|
|
586
|
+
describe('multiple nested directories with app delegate', () => {
|
|
587
|
+
it('should return the first one', () => {
|
|
476
588
|
// -- Arrange --
|
|
477
|
-
|
|
478
|
-
|
|
589
|
+
const tempDir = prepareTempDir();
|
|
590
|
+
const nestedDir = path.join(tempDir, 'nested');
|
|
479
591
|
fs.mkdirSync(nestedDir);
|
|
480
|
-
|
|
481
|
-
|
|
592
|
+
const nestedFilePath = prepareAppDelegateFile(nestedDir, validAppDelegateSwift, 'swift');
|
|
593
|
+
const nestedDir2 = path.join(tempDir, 'nested2');
|
|
482
594
|
fs.mkdirSync(nestedDir2);
|
|
483
595
|
prepareAppDelegateFile(nestedDir2, validAppDelegateSwift, 'swift');
|
|
484
596
|
// -- Act --
|
|
485
|
-
|
|
597
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir);
|
|
486
598
|
// -- Assert --
|
|
487
599
|
expect(result).toBe(nestedFilePath);
|
|
488
600
|
});
|
|
489
601
|
});
|
|
490
|
-
describe('no app delegate found',
|
|
491
|
-
it('should return null',
|
|
602
|
+
describe('no app delegate found', () => {
|
|
603
|
+
it('should return null', () => {
|
|
492
604
|
// -- Arrange --
|
|
493
|
-
|
|
605
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'code-tools-test'));
|
|
494
606
|
// -- Act --
|
|
495
|
-
|
|
607
|
+
const result = code_tools_1.exportForTesting.findAppDidFinishLaunchingWithOptions(tempDir, []);
|
|
496
608
|
// -- Assert --
|
|
497
609
|
expect(result).toBeNull();
|
|
498
610
|
});
|
|
499
611
|
});
|
|
500
612
|
});
|
|
501
|
-
describe('#addCodeSnippetToProject',
|
|
502
|
-
describe('app delegate file is not found',
|
|
503
|
-
it('should return false',
|
|
613
|
+
describe('#addCodeSnippetToProject', () => {
|
|
614
|
+
describe('app delegate file is not found', () => {
|
|
615
|
+
it('should return false', () => {
|
|
504
616
|
// -- Arrange --
|
|
505
|
-
|
|
617
|
+
const tempDir = prepareTempDir();
|
|
506
618
|
// -- Act --
|
|
507
|
-
|
|
619
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, ['AppDelegate.swift'], 'https://example.com/sentry-dsn');
|
|
508
620
|
// -- Assert --
|
|
509
621
|
expect(result).toBeFalsy();
|
|
510
622
|
});
|
|
511
623
|
});
|
|
512
|
-
describe('app delegate file is found',
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
beforeEach(
|
|
624
|
+
describe('app delegate file is found', () => {
|
|
625
|
+
let tempDir;
|
|
626
|
+
let appDelegatePath;
|
|
627
|
+
beforeEach(() => {
|
|
516
628
|
// -- Arrange --
|
|
517
629
|
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'code-tools-test'));
|
|
518
630
|
appDelegatePath = path.join(tempDir, 'AppDelegate.swift');
|
|
519
631
|
fs.writeFileSync(appDelegatePath, validAppDelegateSwift, 'utf8');
|
|
520
632
|
});
|
|
521
|
-
describe('is Swift file',
|
|
522
|
-
describe('Sentry is not initialized',
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
beforeEach(
|
|
633
|
+
describe('is Swift file', () => {
|
|
634
|
+
describe('Sentry is not initialized', () => {
|
|
635
|
+
let tempDir;
|
|
636
|
+
let filePath;
|
|
637
|
+
beforeEach(() => {
|
|
526
638
|
tempDir = prepareTempDir();
|
|
527
639
|
filePath = prepareAppDelegateFile(tempDir, validAppDelegateSwift, 'swift');
|
|
528
640
|
});
|
|
529
|
-
it('should add the code snippet',
|
|
641
|
+
it('should add the code snippet', () => {
|
|
530
642
|
// -- Act --
|
|
531
|
-
|
|
643
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
532
644
|
// -- Assert --
|
|
533
645
|
expect(result).toBeTruthy();
|
|
534
|
-
|
|
646
|
+
const modifiedFileContent = fs.readFileSync(filePath, 'utf8');
|
|
535
647
|
expect(modifiedFileContent).toBe(validAppDelegateSwiftWithSentry);
|
|
536
648
|
});
|
|
537
|
-
it("should set tag 'code-language'",
|
|
649
|
+
it("should set tag 'code-language'", () => {
|
|
538
650
|
// -- Act --
|
|
539
|
-
|
|
651
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
540
652
|
// -- Assert --
|
|
541
653
|
expect(result).toBeTruthy();
|
|
542
654
|
expect(Sentry.setTag).toHaveBeenCalledWith('code-language', 'swift');
|
|
543
655
|
});
|
|
544
|
-
it("should set tag 'ui-engine'",
|
|
656
|
+
it("should set tag 'ui-engine'", () => {
|
|
545
657
|
// -- Act --
|
|
546
|
-
|
|
658
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
547
659
|
// -- Assert --
|
|
548
660
|
expect(result).toBeTruthy();
|
|
549
661
|
expect(Sentry.setTag).toHaveBeenCalledWith('ui-engine', 'uikit');
|
|
550
662
|
});
|
|
551
663
|
});
|
|
552
|
-
describe('Sentry is already initialized',
|
|
553
|
-
it('should not add the code snippet',
|
|
664
|
+
describe('Sentry is already initialized', () => {
|
|
665
|
+
it('should not add the code snippet', () => {
|
|
554
666
|
// -- Arrange --
|
|
555
|
-
|
|
556
|
-
|
|
667
|
+
const tempDir = prepareTempDir();
|
|
668
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateSwiftWithSentry, 'swift');
|
|
557
669
|
// -- Act --
|
|
558
|
-
|
|
670
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
559
671
|
// -- Assert --
|
|
560
672
|
expect(result).toBeTruthy();
|
|
561
|
-
|
|
673
|
+
const modifiedFileContent = fs.readFileSync(filePath, 'utf8');
|
|
562
674
|
expect(modifiedFileContent).toBe(validAppDelegateSwiftWithSentry);
|
|
563
675
|
});
|
|
564
676
|
});
|
|
565
|
-
describe('is SwiftUI file',
|
|
566
|
-
describe('Sentry is not initialized',
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
beforeEach(
|
|
677
|
+
describe('is SwiftUI file', () => {
|
|
678
|
+
describe('Sentry is not initialized', () => {
|
|
679
|
+
let tempDir;
|
|
680
|
+
let filePath;
|
|
681
|
+
beforeEach(() => {
|
|
570
682
|
tempDir = prepareTempDir();
|
|
571
683
|
filePath = prepareAppDelegateFile(tempDir, validAppDelegateSwiftUI, 'swift');
|
|
572
684
|
});
|
|
573
|
-
it('should add the code snippet',
|
|
685
|
+
it('should add the code snippet', () => {
|
|
574
686
|
// -- Act --
|
|
575
|
-
|
|
687
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
576
688
|
// -- Assert --
|
|
577
689
|
expect(result).toBeTruthy();
|
|
578
|
-
|
|
690
|
+
const modifiedFileContent = fs.readFileSync(filePath, 'utf8');
|
|
579
691
|
expect(modifiedFileContent).toBe(validAppDelegateSwiftUIWithSentry);
|
|
580
692
|
});
|
|
581
|
-
it("should set tag 'code-language'",
|
|
693
|
+
it("should set tag 'code-language'", () => {
|
|
582
694
|
// -- Act --
|
|
583
|
-
|
|
695
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
584
696
|
// -- Assert --
|
|
585
697
|
expect(result).toBeTruthy();
|
|
586
698
|
expect(Sentry.setTag).toHaveBeenNthCalledWith(1, 'code-language', 'swift');
|
|
587
699
|
});
|
|
588
|
-
it("should set tag 'ui-engine'",
|
|
700
|
+
it("should set tag 'ui-engine'", () => {
|
|
589
701
|
// -- Act --
|
|
590
|
-
|
|
702
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
591
703
|
// -- Assert --
|
|
592
704
|
expect(result).toBeTruthy();
|
|
593
705
|
expect(Sentry.setTag).toHaveBeenNthCalledWith(2, 'ui-engine', 'swiftui');
|
|
594
706
|
});
|
|
595
707
|
});
|
|
596
|
-
describe('Sentry is already initialized',
|
|
597
|
-
it('should not add the code snippet',
|
|
708
|
+
describe('Sentry is already initialized', () => {
|
|
709
|
+
it('should not add the code snippet', () => {
|
|
598
710
|
// -- Arrange --
|
|
599
|
-
|
|
600
|
-
|
|
711
|
+
const tempDir = prepareTempDir();
|
|
712
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateSwiftUIWithSentry, 'swift');
|
|
601
713
|
// -- Act --
|
|
602
|
-
|
|
714
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
603
715
|
// -- Assert --
|
|
604
716
|
expect(result).toBeTruthy();
|
|
605
|
-
|
|
717
|
+
const modifiedFileContent = fs.readFileSync(filePath, 'utf8');
|
|
606
718
|
expect(modifiedFileContent).toBe(validAppDelegateSwiftUIWithSentry);
|
|
607
719
|
});
|
|
608
720
|
});
|
|
609
721
|
});
|
|
610
|
-
describe('is not matching SwiftUI regex',
|
|
611
|
-
it('should not add the code snippet',
|
|
722
|
+
describe('is not matching SwiftUI regex', () => {
|
|
723
|
+
it('should not add the code snippet', () => {
|
|
612
724
|
// -- Arrange --
|
|
613
|
-
|
|
614
|
-
|
|
725
|
+
const tempDir = prepareTempDir();
|
|
726
|
+
const filePath = prepareAppDelegateFile(tempDir, invalidAppDelegateSwiftUI, 'swift');
|
|
615
727
|
// -- Act --
|
|
616
|
-
|
|
728
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
617
729
|
// -- Assert --
|
|
618
730
|
expect(result).toBeFalsy();
|
|
619
731
|
});
|
|
620
732
|
});
|
|
621
733
|
});
|
|
622
|
-
describe('is Objective-C file',
|
|
623
|
-
describe('Sentry is not initialized',
|
|
624
|
-
it('should add the code snippet',
|
|
734
|
+
describe('is Objective-C file', () => {
|
|
735
|
+
describe('Sentry is not initialized', () => {
|
|
736
|
+
it('should add the code snippet', () => {
|
|
625
737
|
// -- Act --
|
|
626
|
-
|
|
627
|
-
|
|
738
|
+
const tempDir = prepareTempDir();
|
|
739
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateObjC, 'm');
|
|
628
740
|
// -- Act --
|
|
629
|
-
|
|
741
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
630
742
|
// -- Assert --
|
|
631
743
|
expect(result).toBeTruthy();
|
|
632
|
-
|
|
744
|
+
const modifiedFileContent = fs.readFileSync(filePath, 'utf8');
|
|
633
745
|
expect(modifiedFileContent).toBe(validAppDelegateObjCWithSentry);
|
|
634
746
|
});
|
|
635
747
|
});
|
|
636
|
-
describe('Sentry is already initialized',
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
beforeEach(
|
|
748
|
+
describe('Sentry is already initialized', () => {
|
|
749
|
+
let tempDir;
|
|
750
|
+
let filePath;
|
|
751
|
+
beforeEach(() => {
|
|
640
752
|
tempDir = prepareTempDir();
|
|
641
753
|
filePath = prepareAppDelegateFile(tempDir, validAppDelegateObjCWithSentry, 'm');
|
|
642
754
|
});
|
|
643
|
-
it('should not add the code snippet',
|
|
755
|
+
it('should not add the code snippet', () => {
|
|
644
756
|
// -- Act --
|
|
645
|
-
|
|
757
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
646
758
|
// -- Assert --
|
|
647
759
|
expect(result).toBeTruthy();
|
|
648
|
-
|
|
760
|
+
const modifiedFileContent = fs.readFileSync(filePath, 'utf8');
|
|
649
761
|
expect(modifiedFileContent).toBe(validAppDelegateObjCWithSentry);
|
|
650
762
|
});
|
|
651
|
-
it('should log info',
|
|
763
|
+
it('should log info', () => {
|
|
652
764
|
// -- Act --
|
|
653
|
-
|
|
765
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
654
766
|
// -- Assert --
|
|
655
767
|
expect(result).toBeTruthy();
|
|
656
768
|
expect(clack.log.info).toHaveBeenCalledWith('Sentry is already initialized in your AppDelegate. Skipping adding the code snippet.');
|
|
657
769
|
});
|
|
658
770
|
});
|
|
659
|
-
it("should set tag 'code-language'",
|
|
771
|
+
it("should set tag 'code-language'", () => {
|
|
660
772
|
// -- Arrange --
|
|
661
|
-
|
|
662
|
-
|
|
773
|
+
const tempDir = prepareTempDir();
|
|
774
|
+
const filePath = prepareAppDelegateFile(tempDir, validAppDelegateObjC, 'm');
|
|
663
775
|
// -- Act --
|
|
664
|
-
|
|
776
|
+
const result = (0, code_tools_1.addCodeSnippetToProject)(tempDir, [filePath], dsn);
|
|
665
777
|
// -- Assert --
|
|
666
778
|
expect(result).toBeTruthy();
|
|
667
779
|
expect(Sentry.setTag).toHaveBeenCalledWith('code-language', 'objc');
|