@sentry/wizard 3.42.1 → 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.
Files changed (338) hide show
  1. package/.node-cache/node-v22.14.0-darwin-arm64 +0 -0
  2. package/.node-cache/node-v22.14.0-darwin-x64 +0 -0
  3. package/.node-cache/node-v22.14.0-linux-arm64 +0 -0
  4. package/.node-cache/node-v22.14.0-linux-x64 +0 -0
  5. package/.node-cache/node-v22.14.0-win-x64.exe +0 -0
  6. package/CHANGELOG.md +26 -0
  7. package/COPYING +3575 -0
  8. package/bin.ts +85 -80
  9. package/dist/bin.js +44 -35
  10. package/dist/bin.js.map +1 -1
  11. package/dist/e2e-tests/jest.config.js +1 -1
  12. package/dist/e2e-tests/jest.config.js.map +1 -1
  13. package/dist/e2e-tests/tests/flutter.test.js +62 -147
  14. package/dist/e2e-tests/tests/flutter.test.js.map +1 -1
  15. package/dist/e2e-tests/tests/nextjs.test.js +77 -175
  16. package/dist/e2e-tests/tests/nextjs.test.js.map +1 -1
  17. package/dist/e2e-tests/tests/nuxt-3.test.js +61 -162
  18. package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
  19. package/dist/e2e-tests/tests/nuxt-4.test.js +62 -163
  20. package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
  21. package/dist/e2e-tests/tests/remix.test.js +147 -189
  22. package/dist/e2e-tests/tests/remix.test.js.map +1 -1
  23. package/dist/e2e-tests/tests/sveltekit.test.js +133 -187
  24. package/dist/e2e-tests/tests/sveltekit.test.js.map +1 -1
  25. package/dist/e2e-tests/utils/index.d.ts +1 -1
  26. package/dist/e2e-tests/utils/index.js +113 -195
  27. package/dist/e2e-tests/utils/index.js.map +1 -1
  28. package/dist/lib/Constants.js +5 -5
  29. package/dist/lib/Constants.js.map +1 -1
  30. package/dist/lib/Helper/BottomBar.d.ts +1 -1
  31. package/dist/lib/Helper/BottomBar.js +14 -15
  32. package/dist/lib/Helper/BottomBar.js.map +1 -1
  33. package/dist/lib/Helper/Env.js +5 -2
  34. package/dist/lib/Helper/Env.js.map +1 -1
  35. package/dist/lib/Helper/File.js +14 -27
  36. package/dist/lib/Helper/File.js.map +1 -1
  37. package/dist/lib/Helper/Git.js +24 -59
  38. package/dist/lib/Helper/Git.js.map +1 -1
  39. package/dist/lib/Helper/Logging.js +2 -2
  40. package/dist/lib/Helper/Logging.js.map +1 -1
  41. package/dist/lib/Helper/MergeConfig.js +4 -4
  42. package/dist/lib/Helper/MergeConfig.js.map +1 -1
  43. package/dist/lib/Helper/Package.d.ts +4 -1
  44. package/dist/lib/Helper/Package.js +12 -38
  45. package/dist/lib/Helper/Package.js.map +1 -1
  46. package/dist/lib/Helper/SentryCli.js +77 -149
  47. package/dist/lib/Helper/SentryCli.js.map +1 -1
  48. package/dist/lib/Helper/Wizard.js +29 -124
  49. package/dist/lib/Helper/Wizard.js.map +1 -1
  50. package/dist/lib/Helper/__tests__/File.js +4 -4
  51. package/dist/lib/Helper/__tests__/File.js.map +1 -1
  52. package/dist/lib/Helper/__tests__/MergeConfig.js +24 -24
  53. package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
  54. package/dist/lib/Helper/__tests__/SentryCli.js +33 -23
  55. package/dist/lib/Helper/__tests__/SentryCli.js.map +1 -1
  56. package/dist/lib/Setup.js +23 -85
  57. package/dist/lib/Setup.js.map +1 -1
  58. package/dist/lib/Steps/BaseStep.js +8 -8
  59. package/dist/lib/Steps/BaseStep.js.map +1 -1
  60. package/dist/lib/Steps/ChooseIntegration.js +80 -125
  61. package/dist/lib/Steps/ChooseIntegration.js.map +1 -1
  62. package/dist/lib/Steps/ConfigureProject.js +6 -66
  63. package/dist/lib/Steps/ConfigureProject.js.map +1 -1
  64. package/dist/lib/Steps/Initial.js +16 -104
  65. package/dist/lib/Steps/Initial.js.map +1 -1
  66. package/dist/lib/Steps/Integrations/BaseIntegration.js +24 -118
  67. package/dist/lib/Steps/Integrations/BaseIntegration.js.map +1 -1
  68. package/dist/lib/Steps/Integrations/Cordova.js +95 -183
  69. package/dist/lib/Steps/Integrations/Cordova.js.map +1 -1
  70. package/dist/lib/Steps/Integrations/Electron.js +87 -145
  71. package/dist/lib/Steps/Integrations/Electron.js.map +1 -1
  72. package/dist/lib/Steps/Integrations/MobileProject.js +40 -148
  73. package/dist/lib/Steps/Integrations/MobileProject.js.map +1 -1
  74. package/dist/lib/Steps/OpenSentry.js +63 -126
  75. package/dist/lib/Steps/OpenSentry.js.map +1 -1
  76. package/dist/lib/Steps/PromptForParameters.js +110 -206
  77. package/dist/lib/Steps/PromptForParameters.js.map +1 -1
  78. package/dist/lib/Steps/Result.js +19 -79
  79. package/dist/lib/Steps/Result.js.map +1 -1
  80. package/dist/lib/Steps/SentryProjectSelector.js +57 -148
  81. package/dist/lib/Steps/SentryProjectSelector.js.map +1 -1
  82. package/dist/lib/Steps/ShouldConfigure.js +6 -66
  83. package/dist/lib/Steps/ShouldConfigure.js.map +1 -1
  84. package/dist/lib/Steps/WaitForSentry.js +43 -120
  85. package/dist/lib/Steps/WaitForSentry.js.map +1 -1
  86. package/dist/lib/Steps/Welcome.js +17 -76
  87. package/dist/lib/Steps/Welcome.js.map +1 -1
  88. package/dist/lib/__tests__/Env.js +3 -3
  89. package/dist/lib/__tests__/Env.js.map +1 -1
  90. package/dist/src/android/android-wizard.js +100 -176
  91. package/dist/src/android/android-wizard.js.map +1 -1
  92. package/dist/src/android/code-tools.js +24 -33
  93. package/dist/src/android/code-tools.js.map +1 -1
  94. package/dist/src/android/gradle.js +106 -165
  95. package/dist/src/android/gradle.js.map +1 -1
  96. package/dist/src/android/manifest.js +26 -27
  97. package/dist/src/android/manifest.js.map +1 -1
  98. package/dist/src/android/templates.js +76 -23
  99. package/dist/src/android/templates.js.map +1 -1
  100. package/dist/src/apple/apple-wizard.js +129 -225
  101. package/dist/src/apple/apple-wizard.js.map +1 -1
  102. package/dist/src/apple/cocoapod.js +47 -109
  103. package/dist/src/apple/cocoapod.js.map +1 -1
  104. package/dist/src/apple/code-tools.js +32 -35
  105. package/dist/src/apple/code-tools.js.map +1 -1
  106. package/dist/src/apple/fastlane.js +51 -97
  107. package/dist/src/apple/fastlane.js.map +1 -1
  108. package/dist/src/apple/templates.js +41 -5
  109. package/dist/src/apple/templates.js.map +1 -1
  110. package/dist/src/apple/xcode-manager.d.ts +2 -2
  111. package/dist/src/apple/xcode-manager.js +93 -108
  112. package/dist/src/apple/xcode-manager.js.map +1 -1
  113. package/dist/src/flutter/code-tools.js +79 -127
  114. package/dist/src/flutter/code-tools.js.map +1 -1
  115. package/dist/src/flutter/flutter-wizard.js +75 -136
  116. package/dist/src/flutter/flutter-wizard.js.map +1 -1
  117. package/dist/src/flutter/templates.js +48 -12
  118. package/dist/src/flutter/templates.js.map +1 -1
  119. package/dist/src/nextjs/nextjs-wizard.js +527 -805
  120. package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
  121. package/dist/src/nextjs/templates.js +380 -40
  122. package/dist/src/nextjs/templates.js.map +1 -1
  123. package/dist/src/nextjs/utils.js +5 -5
  124. package/dist/src/nextjs/utils.js.map +1 -1
  125. package/dist/src/nuxt/nuxt-wizard.js +91 -188
  126. package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
  127. package/dist/src/nuxt/sdk-example.js +68 -137
  128. package/dist/src/nuxt/sdk-example.js.map +1 -1
  129. package/dist/src/nuxt/sdk-setup.d.ts +4 -4
  130. package/dist/src/nuxt/sdk-setup.js +180 -336
  131. package/dist/src/nuxt/sdk-setup.js.map +1 -1
  132. package/dist/src/nuxt/templates.js +195 -18
  133. package/dist/src/nuxt/templates.js.map +1 -1
  134. package/dist/src/nuxt/utils.js +29 -76
  135. package/dist/src/nuxt/utils.js.map +1 -1
  136. package/dist/src/react-native/expo-env-file.js +41 -94
  137. package/dist/src/react-native/expo-env-file.js.map +1 -1
  138. package/dist/src/react-native/expo-metro.d.ts +1 -1
  139. package/dist/src/react-native/expo-metro.js +75 -130
  140. package/dist/src/react-native/expo-metro.js.map +1 -1
  141. package/dist/src/react-native/expo.js +61 -114
  142. package/dist/src/react-native/expo.js.map +1 -1
  143. package/dist/src/react-native/git.js +23 -56
  144. package/dist/src/react-native/git.js.map +1 -1
  145. package/dist/src/react-native/glob.js +3 -3
  146. package/dist/src/react-native/glob.js.map +1 -1
  147. package/dist/src/react-native/gradle.js +4 -4
  148. package/dist/src/react-native/gradle.js.map +1 -1
  149. package/dist/src/react-native/javascript.js +51 -95
  150. package/dist/src/react-native/javascript.js.map +1 -1
  151. package/dist/src/react-native/metro.js +176 -296
  152. package/dist/src/react-native/metro.js.map +1 -1
  153. package/dist/src/react-native/react-native-wizard.js +267 -418
  154. package/dist/src/react-native/react-native-wizard.js.map +1 -1
  155. package/dist/src/react-native/uninstall.js +37 -80
  156. package/dist/src/react-native/uninstall.js.map +1 -1
  157. package/dist/src/react-native/xcode.js +57 -55
  158. package/dist/src/react-native/xcode.js.map +1 -1
  159. package/dist/src/remix/codemods/express-server.js +27 -82
  160. package/dist/src/remix/codemods/express-server.js.map +1 -1
  161. package/dist/src/remix/codemods/handle-error.js +28 -31
  162. package/dist/src/remix/codemods/handle-error.js.map +1 -1
  163. package/dist/src/remix/codemods/root-common.js +11 -11
  164. package/dist/src/remix/codemods/root-common.js.map +1 -1
  165. package/dist/src/remix/codemods/root-v1.js +17 -67
  166. package/dist/src/remix/codemods/root-v1.js.map +1 -1
  167. package/dist/src/remix/codemods/root-v2.js +89 -140
  168. package/dist/src/remix/codemods/root-v2.js.map +1 -1
  169. package/dist/src/remix/remix-wizard.js +181 -343
  170. package/dist/src/remix/remix-wizard.js.map +1 -1
  171. package/dist/src/remix/sdk-example.js +84 -66
  172. package/dist/src/remix/sdk-example.js.map +1 -1
  173. package/dist/src/remix/sdk-setup.js +161 -293
  174. package/dist/src/remix/sdk-setup.js.map +1 -1
  175. package/dist/src/remix/templates.js +10 -2
  176. package/dist/src/remix/templates.js.map +1 -1
  177. package/dist/src/remix/utils.js +13 -14
  178. package/dist/src/remix/utils.js.map +1 -1
  179. package/dist/src/run.js +106 -178
  180. package/dist/src/run.js.map +1 -1
  181. package/dist/src/sourcemaps/sourcemaps-wizard.js +248 -372
  182. package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
  183. package/dist/src/sourcemaps/tools/angular.js +32 -66
  184. package/dist/src/sourcemaps/tools/angular.js.map +1 -1
  185. package/dist/src/sourcemaps/tools/create-react-app.js +14 -59
  186. package/dist/src/sourcemaps/tools/create-react-app.js.map +1 -1
  187. package/dist/src/sourcemaps/tools/esbuild.js +34 -77
  188. package/dist/src/sourcemaps/tools/esbuild.js.map +1 -1
  189. package/dist/src/sourcemaps/tools/nextjs.d.ts +2 -2
  190. package/dist/src/sourcemaps/tools/nextjs.js +75 -102
  191. package/dist/src/sourcemaps/tools/nextjs.js.map +1 -1
  192. package/dist/src/sourcemaps/tools/remix.js +53 -93
  193. package/dist/src/sourcemaps/tools/remix.js.map +1 -1
  194. package/dist/src/sourcemaps/tools/rollup.js +35 -76
  195. package/dist/src/sourcemaps/tools/rollup.js.map +1 -1
  196. package/dist/src/sourcemaps/tools/sentry-cli.js +157 -289
  197. package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
  198. package/dist/src/sourcemaps/tools/tsc.js +68 -134
  199. package/dist/src/sourcemaps/tools/tsc.js.map +1 -1
  200. package/dist/src/sourcemaps/tools/vite.js +111 -196
  201. package/dist/src/sourcemaps/tools/vite.js.map +1 -1
  202. package/dist/src/sourcemaps/tools/webpack.d.ts +1 -1
  203. package/dist/src/sourcemaps/tools/webpack.js +158 -260
  204. package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
  205. package/dist/src/sourcemaps/utils/detect-tool.js +9 -54
  206. package/dist/src/sourcemaps/utils/detect-tool.js.map +1 -1
  207. package/dist/src/sourcemaps/utils/other-wizards.js +77 -144
  208. package/dist/src/sourcemaps/utils/other-wizards.js.map +1 -1
  209. package/dist/src/sourcemaps/utils/sdk-version.js +112 -191
  210. package/dist/src/sourcemaps/utils/sdk-version.js.map +1 -1
  211. package/dist/src/sveltekit/sdk-example.js +20 -70
  212. package/dist/src/sveltekit/sdk-example.js.map +1 -1
  213. package/dist/src/sveltekit/sdk-setup.js +250 -411
  214. package/dist/src/sveltekit/sdk-setup.js.map +1 -1
  215. package/dist/src/sveltekit/sveltekit-wizard.js +107 -191
  216. package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
  217. package/dist/src/sveltekit/templates.js +147 -13
  218. package/dist/src/sveltekit/templates.js.map +1 -1
  219. package/dist/src/sveltekit/utils.js +3 -3
  220. package/dist/src/sveltekit/utils.js.map +1 -1
  221. package/dist/src/telemetry.d.ts +2 -2
  222. package/dist/src/telemetry.js +58 -108
  223. package/dist/src/telemetry.js.map +1 -1
  224. package/dist/src/utils/ast-utils.js +39 -54
  225. package/dist/src/utils/ast-utils.js.map +1 -1
  226. package/dist/src/utils/bash.js +28 -75
  227. package/dist/src/utils/bash.js.map +1 -1
  228. package/dist/src/utils/clack-utils.d.ts +3 -7
  229. package/dist/src/utils/clack-utils.js +688 -1083
  230. package/dist/src/utils/clack-utils.js.map +1 -1
  231. package/dist/src/utils/debug.js +6 -10
  232. package/dist/src/utils/debug.js.map +1 -1
  233. package/dist/src/utils/package-json.js +5 -6
  234. package/dist/src/utils/package-json.js.map +1 -1
  235. package/dist/src/utils/package-manager.js +65 -139
  236. package/dist/src/utils/package-manager.js.map +1 -1
  237. package/dist/src/utils/release-registry.js +12 -59
  238. package/dist/src/utils/release-registry.js.map +1 -1
  239. package/dist/src/utils/semver.js +3 -4
  240. package/dist/src/utils/semver.js.map +1 -1
  241. package/dist/src/utils/sentrycli-utils.js +4 -4
  242. package/dist/src/utils/sentrycli-utils.js.map +1 -1
  243. package/dist/src/utils/url.js +5 -6
  244. package/dist/src/utils/url.js.map +1 -1
  245. package/dist/test/android/code-tools.test.js +18 -18
  246. package/dist/test/android/code-tools.test.js.map +1 -1
  247. package/dist/test/apple/cocoapod.test.js +154 -299
  248. package/dist/test/apple/cocoapod.test.js.map +1 -1
  249. package/dist/test/apple/code-tools.test.js +375 -263
  250. package/dist/test/apple/code-tools.test.js.map +1 -1
  251. package/dist/test/apple/fastfile.test.js +319 -271
  252. package/dist/test/apple/fastfile.test.js.map +1 -1
  253. package/dist/test/apple/templates.test.js +114 -30
  254. package/dist/test/apple/templates.test.js.map +1 -1
  255. package/dist/test/apple/xcode-manager.test.js +230 -234
  256. package/dist/test/apple/xcode-manager.test.js.map +1 -1
  257. package/dist/test/flutter/code-tools.test.js +119 -48
  258. package/dist/test/flutter/code-tools.test.js.map +1 -1
  259. package/dist/test/flutter/templates.test.js +63 -20
  260. package/dist/test/flutter/templates.test.js.map +1 -1
  261. package/dist/test/nextjs/templates.test.js +332 -43
  262. package/dist/test/nextjs/templates.test.js.map +1 -1
  263. package/dist/test/nuxt/templates.test.js +161 -33
  264. package/dist/test/nuxt/templates.test.js.map +1 -1
  265. package/dist/test/react-native/expo-metro.test.js +61 -15
  266. package/dist/test/react-native/expo-metro.test.js.map +1 -1
  267. package/dist/test/react-native/expo.test.js +37 -17
  268. package/dist/test/react-native/expo.test.js.map +1 -1
  269. package/dist/test/react-native/gradle.test.js +260 -28
  270. package/dist/test/react-native/gradle.test.js.map +1 -1
  271. package/dist/test/react-native/javascript.test.js +85 -19
  272. package/dist/test/react-native/javascript.test.js.map +1 -1
  273. package/dist/test/react-native/metro.test.js +261 -187
  274. package/dist/test/react-native/metro.test.js.map +1 -1
  275. package/dist/test/react-native/xcode.test.js +243 -62
  276. package/dist/test/react-native/xcode.test.js.map +1 -1
  277. package/dist/test/remix/client-entry.test.js +81 -21
  278. package/dist/test/remix/client-entry.test.js.map +1 -1
  279. package/dist/test/remix/server-instrumentation.test.js +21 -8
  280. package/dist/test/remix/server-instrumentation.test.js.map +1 -1
  281. package/dist/test/sourcemaps/tools/sentry-cli.test.js +20 -72
  282. package/dist/test/sourcemaps/tools/sentry-cli.test.js.map +1 -1
  283. package/dist/test/sourcemaps/tools/tsc.test.js +142 -68
  284. package/dist/test/sourcemaps/tools/tsc.test.js.map +1 -1
  285. package/dist/test/sourcemaps/tools/vite.test.js +106 -75
  286. package/dist/test/sourcemaps/tools/vite.test.js.map +1 -1
  287. package/dist/test/sourcemaps/tools/webpack.test.js +226 -102
  288. package/dist/test/sourcemaps/tools/webpack.test.js.map +1 -1
  289. package/dist/test/sveltekit/templates.test.js +117 -18
  290. package/dist/test/sveltekit/templates.test.js.map +1 -1
  291. package/dist/test/utils/ast-utils.test.js +99 -58
  292. package/dist/test/utils/ast-utils.test.js.map +1 -1
  293. package/dist/test/utils/clack-utils.test.js +142 -247
  294. package/dist/test/utils/clack-utils.test.js.map +1 -1
  295. package/e2e-tests/package.json +1 -1
  296. package/e2e-tests/tests/flutter.test.ts +20 -20
  297. package/e2e-tests/tests/nextjs.test.ts +2 -2
  298. package/e2e-tests/tests/nuxt-3.test.ts +4 -4
  299. package/e2e-tests/tests/nuxt-4.test.ts +3 -3
  300. package/e2e-tests/tests/remix.test.ts +3 -3
  301. package/e2e-tests/tests/sveltekit.test.ts +3 -3
  302. package/e2e-tests/utils/index.ts +33 -15
  303. package/lib/Helper/BottomBar.ts +1 -1
  304. package/lib/Helper/Env.ts +1 -1
  305. package/lib/Helper/Package.ts +12 -10
  306. package/lib/Helper/SentryCli.ts +18 -27
  307. package/lib/Helper/Wizard.ts +1 -2
  308. package/lib/Setup.ts +4 -5
  309. package/lib/Steps/ChooseIntegration.ts +40 -8
  310. package/lib/Steps/Initial.ts +17 -26
  311. package/lib/Steps/Integrations/BaseIntegration.ts +2 -8
  312. package/lib/Steps/Integrations/Cordova.ts +9 -15
  313. package/lib/Steps/Integrations/Electron.ts +23 -20
  314. package/lib/Steps/Integrations/MobileProject.ts +18 -15
  315. package/lib/Steps/OpenSentry.ts +12 -7
  316. package/lib/Steps/PromptForParameters.ts +12 -19
  317. package/lib/Steps/SentryProjectSelector.ts +30 -29
  318. package/lib/Steps/WaitForSentry.ts +29 -23
  319. package/package.json +12 -8
  320. package/src/apple/xcode-manager.ts +10 -10
  321. package/src/nextjs/templates.ts +2 -3
  322. package/src/nuxt/sdk-setup.ts +21 -18
  323. package/src/react-native/expo-metro.ts +2 -2
  324. package/src/react-native/react-native-wizard.ts +1 -2
  325. package/src/react-native/uninstall.ts +1 -2
  326. package/src/react-native/xcode.ts +1 -1
  327. package/src/run.ts +12 -5
  328. package/src/sourcemaps/tools/nextjs.ts +2 -2
  329. package/src/sourcemaps/tools/webpack.ts +3 -3
  330. package/src/telemetry.ts +27 -7
  331. package/src/utils/clack-utils.ts +50 -47
  332. package/test/apple/cocoapod.test.ts +4 -0
  333. package/test/apple/fastfile.test.ts +12 -7
  334. package/test/apple/xcode-manager.test.ts +13 -11
  335. package/test/utils/clack-utils.test.ts +40 -50
  336. package/types/read-env.d.ts +3 -0
  337. package/types/xcode.d.ts +1 -0
  338. package/dist/package.json +0 -128
@@ -1 +1 @@
1
- {"version":3,"file":"react-native-wizard.js","sourceRoot":"","sources":["../../../src/react-native/react-native-wizard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8BAA8B;AAC9B,yEAAyE;AACzE,2DAAmC;AACnC,gDAA0B;AAC1B,qCAAyB;AAEzB,oDAc8B;AAC9B,sDAA+E;AAC/E,8CAA+C;AAC/C,yBAA8B;AAC9B,iCAUiB;AACjB,mCAIkB;AAClB,yCAAsD;AACtD,+BAA8E;AAE9E,2CAA6C;AAC7C,0CAAwD;AACxD,mDAAuC;AACvC,0CAAuD;AACvD,oCAAiD;AACjD,iCAGiB;AACjB,+BAA2E;AAC3E,2CAA0D;AAC1D,iDAAkD;AAElD,mEAAmE;AACnE,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAElB,QAAA,cAAc,GAAG,sBAAsB,CAAC;AACxC,QAAA,sBAAsB,GAAG,SAAS,CAAC;AAEnC,QAAA,UAAU,GAAG,cAAc,CAAC;AAC5B,QAAA,aAAa,GAAG,cAAc,CAAC;AAE/B,QAAA,kBAAkB,GAAG,UAAU,CAAC;AAChC,QAAA,oBAAoB,GAAG,UAAU,CAAC;AAE/C;;;GAGG;AACU,QAAA,iCAAiC,GAAG,UAAU,CAAC;AAE5D;;GAEG;AACU,QAAA,uCAAuC,GAAG,UAAU,CAAC;AAElE;;GAEG;AACU,QAAA,wBAAwB,GAAG,UAAU,CAAC;AAEnD,uDAAuD;AAC1C,QAAA,4CAA4C,GAAG,UAAU,CAAC;AAOvE,SAAsB,oBAAoB,CACxC,MAAgC;;;YAEhC,sBAAO,IAAA,yBAAa,EAClB;oBACE,OAAO,EAAE,MAAM,CAAC,gBAAgB;oBAChC,WAAW,EAAE,cAAc;oBAC3B,aAAa,EAAE,MAAM;iBACtB,EACD,cAAM,OAAA,iCAAiC,CAAC,MAAM,CAAC,EAAzC,CAAyC,CAChD,EAAC;;;CACH;AAXD,oDAWC;AAED,SAAsB,iCAAiC,CACrD,OAAiC;;;;;;oBAEjC,IAAI,OAAO,CAAC,SAAS,EAAE;wBACrB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;wBACjC,sBAAO,IAAA,mCAAuB,EAAC,OAAO,CAAC,EAAC;qBACzC;oBAEO,SAAS,GAAqC,OAAO,UAA5C,EAAE,gBAAgB,GAAmB,OAAO,iBAA1B,EAAE,YAAY,GAAK,OAAO,aAAZ,CAAa;oBAE9D,IAAA,0BAAY,EAAC;wBACX,UAAU,EAAE,4BAA4B;wBACxC,SAAS,WAAA;wBACT,gBAAgB,kBAAA;qBACjB,CAAC,CAAC;oBAEH,qBAAM,IAAA,+CAAiC,GAAE,EAAA;;oBAAzC,SAAyC,CAAC;oBAEtB,qBAAM,IAAA,+BAAiB,GAAE,EAAA;;oBAAvC,WAAW,GAAG,SAAyB;oBACvC,YAAY,GAAG,UAAC,GAAW,IAAK,OAAA,IAAA,kCAAmB,EAAC,GAAG,EAAE,WAAW,CAAC,EAArC,CAAqC,CAAC;oBAE5E,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE;wBAC/B,MAAM,CAAC,MAAM,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;wBACjD,IAAA,oCAA6B,GAAE,CAAC;wBAChC,sBAAO;qBACR;oBAED,qBAAM,IAAA,sCAAwB,EAAC,WAAW,EAAE,kBAAU,EAAE,qBAAa,CAAC,EAAA;;oBAAtE,SAAsE,CAAC;oBAEjE,SAAS,GAAG,IAAA,gCAAiB,EAAC,kBAAU,EAAE,WAAW,CAAC,CAAC;yBACzD,SAAS,EAAT,wBAAS;oBACX,qBAAM,IAAA,yDAA2C,EAAC;4BAChD,WAAW,EAAE,qBAAa;4BAC1B,cAAc,EAAE,SAAS;4BACzB,SAAS,EAAE,kBAAU;4BACrB,kBAAkB,EAAE,0BAAkB;4BACtC,IAAI,EAAE,4BAAqB,0BAAkB,oEAClC,eAAK,CAAC,IAAI,CACnB,0EAA0E,CAC3E,CAAE;yBACJ,CAAC,EAAA;;oBATF,SASE,CAAC;;wBAGL,qBAAM,IAAA,4BAAc,EAAC;wBACnB,WAAW,EAAE,sBAAc;wBAC3B,gBAAgB,EAAE,IAAA,kCAAmB,EAAC,sBAAc,EAAE,WAAW,CAAC;wBAClE,YAAY,cAAA;qBACb,CAAC,EAAA;;oBAJF,SAIE,CAAC;oBACgB,KAAA,gCAAiB,CAAA;0BAClC,sBAAc;oBACd,qBAAM,IAAA,+BAAiB,GAAE,EAAA;;oBAFrB,UAAU,GAAG,4BAEjB,SAAyB,GAC1B;yBACG,UAAU,EAAV,wBAAU;oBACZ,qBAAM,IAAA,yDAA2C,EAAC;4BAChD,WAAW,EAAE,yBAAyB;4BACtC,cAAc,EAAE,UAAU;4BAC1B,SAAS,EAAE,sBAAc;4BACzB,kBAAkB,EAAE,8BAAsB;4BAC1C,IAAI,EAAE,4BAAqB,8BAAsB,kDAA+C;yBACjG,CAAC,EAAA;;oBANF,SAME,CAAC;;wBAEwB,qBAAM,IAAA,8BAAgB,EAC/C,iBAAK,CAAC,OAAO,CAAC;wBACZ,OAAO,EACL,mFAAmF;qBACtF,CAAC,CACH,EAAA;;oBALK,kBAAkB,GAAG,SAK1B;yBACG,CAAC,kBAAkB,EAAnB,yBAAmB;oBACrB,qBAAM,IAAA,mBAAK,EAAC,SAAS,EAAE,CAAC,CAAC,EAAA;;oBAAzB,SAAyB,CAAC;;;oBAG9B,MAAM,CAAC,MAAM,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC;oBAEhE,WAAW,GAAG,IAAA,gCAAiB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;oBACrD,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC;yBACzB,CAAA,WAAW,IAAI,UAAU,CAAA,EAAzB,yBAAyB;oBAC3B,qBAAM,IAAA,yDAA2C,EAAC;4BAChD,WAAW,EAAE,yBAAyB;4BACtC,cAAc,EAAE,UAAU;4BAC1B,SAAS,EAAE,sBAAc;4BACzB,kBAAkB,EAAE,gCAAwB;4BAC5C,IAAI,EAAE,4BAAqB,gCAAwB,uDAAoD;yBACxG,CAAC,EAAA;;oBANF,SAME,CAAC;oBACH,qBAAM,IAAA,yDAA2C,EAAC;4BAChD,WAAW,EAAE,UAAU;4BACvB,cAAc,EAAE,WAAW;4BAC3B,SAAS,EAAE,MAAM;4BACjB,kBAAkB,EAAE,4BAAoB;4BACxC,IAAI,EAAE,4BAAqB,4BAAoB,uDAAoD;yBACpG,CAAC,EAAA;;oBANF,SAME,CAAC;;yBAIH,qBAAM,IAAA,oCAAsB,EAAC,OAAO,EAAE,cAAc,CAAC,EAAA;;oBADjD,KACJ,SAAqD,EAD/C,eAAe,qBAAA,EAAE,SAAS,eAAA,EAAE,SAAS,eAAA;oBAEvC,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC5C,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC;oBACnC,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC;oBAC/B,SAAS,GAA4B;wBACzC,SAAS,WAAA;wBACT,GAAG,EAAE,OAAO;wBACZ,OAAO,EAAE,WAAW;wBACpB,GAAG,EAAE,SAAS;qBACf,CAAC;oBAEF,qBAAM,IAAA,qBAAS,EAAC,cAAc,EAAE;4BAC9B,OAAA,IAAA,0BAAa,EAAC,EAAE,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;wBAA1D,CAA0D,CAC3D,EAAA;;oBAFD,SAEC,CAAC;yBAEE,MAAM,EAAN,yBAAM;oBACR,qBAAM,IAAA,qBAAS,EAAC,uBAAuB,EAAE;4BACvC,OAAA,IAAA,yBAAkB,EAAC,SAAS,CAAC;wBAA7B,CAA6B,CAC9B,EAAA;;oBAFD,SAEC,CAAC;oBACF,qBAAM,IAAA,qBAAS,EAAC,oBAAoB,EAAE,cAAM,OAAA,IAAA,+BAAe,EAAC,SAAS,CAAC,EAA1B,CAA0B,CAAC,EAAA;;oBAAvE,SAAuE,CAAC;;;yBAGtE,MAAM,EAAN,yBAAM;oBACR,qBAAM,IAAA,qBAAS,EAAC,oBAAoB,EAAE,uCAA0B,CAAC,EAAA;;oBAAjE,SAAiE,CAAC;;yBAElE,qBAAM,IAAA,qBAAS,EAAC,oBAAoB,EAAE;wBACpC,OAAA,sBAAsB,CAAC,EAAE,UAAU,YAAA,EAAE,CAAC;oBAAtC,CAAsC,CACvC,EAAA;;oBAFD,SAEC,CAAC;;;yBAGA,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAApB,yBAAoB;oBACtB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oBACjC,qBAAM,IAAA,qBAAS,EAAC,mBAAmB,EAAE;4BACnC,OAAA,eAAe,CAAC,SAAS,EAAE,EAAE,UAAU,YAAA,EAAE,CAAC;wBAA1C,CAA0C,CAC3C,EAAA;;oBAFD,SAEC,CAAC;;;yBAGA,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAxB,yBAAwB;oBAC1B,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;oBACrC,qBAAM,IAAA,qBAAS,EAAC,qBAAqB,EAAE,cAAM,OAAA,iBAAiB,CAAC,SAAS,CAAC,EAA5B,CAA4B,CAAC,EAAA;;oBAA1E,SAA0E,CAAC;;yBAG7E,qBAAM,IAAA,oCAAsB,GAAE,EAAA;;oBAA9B,SAA8B,CAAC;oBAEC,qBAAM,2BAA2B,CAC/D,SAAS,EACT,OAAO,EACP,SAAS,CACV,EAAA;;oBAJK,uBAAuB,GAAG,SAI/B;oBAED,MAAM,CAAC,MAAM,CAAC,4BAA4B,EAAE,uBAAuB,CAAC,CAAC;oBAErE,IAAI,uBAAuB,EAAE;wBAC3B,iBAAK,CAAC,KAAK,CACT,UAAG,eAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,oBAExC,eAAK,CAAC,GAAG,CACT,wGAAwG,CACzG,CAAE,CACD,CAAC;qBACH;yBAAM;wBACL,iBAAK,CAAC,KAAK,CACT,UAAG,eAAK,CAAC,GAAG,CACV,2EAA2E,CAC5E,CAAE,CACJ,CAAC;qBACH;;;;;CACF;AAhKD,8EAgKC;AAED,SAAS,sBAAsB,CAAC,EAI/B;QAHC,UAAU,gBAAA;IAIV,IACE,UAAU;QACV,IAAA,6BAAoB,EAAC;YACnB,OAAO,EAAE,UAAU;YACnB,kBAAkB,EAAE,oDAA4C;YAChE,WAAW,EAAE,IAAI;SAClB,CAAC,EACF;QACA,OAAO,IAAA,kCAA0B,GAAE,CAAC;KACrC;IAED,IACE,UAAU;QACV,IAAA,6BAAoB,EAAC;YACnB,OAAO,EAAE,UAAU;YACnB,kBAAkB,EAAE,+CAAuC;YAC3D,WAAW,EAAE,IAAI;SAClB,CAAC,EACF;QACA,OAAO,IAAA,4CAAoC,GAAE,CAAC;KAC/C;AACH,CAAC;AAED,SAAe,2BAA2B,CACxC,GAAW,EACX,OAAe,EACf,SAAiB;;;;YAEX,eAAe,GAAG,IAAA,uBAAiB,EAAC,EAAE,GAAG,KAAA,EAAE,OAAO,SAAA,EAAE,SAAS,WAAA,EAAE,CAAC,CAAC;YAEvE,iBAAK,CAAC,GAAG;iBACN,IAAI,CAAC,4OAKR,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;YAE/B,oFAAoF;YACpF,sCAAsC;YACtC,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,WAAW,CAAC,mGAErB,CAAC,CACC,CAAC;YAEI,mBAAmB,GAAG,iBAAK,CAAC,OAAO,CAAC;gBACxC,OAAO,EAAE,0CAA0C;aACpD,CAAC,CAAC;YAEH,sBAAO,mBAAmB,EAAC;;;CAC5B;AAED,SAAe,eAAe,CAC5B,MAA+B,EAC/B,OAEC;;;;;wBAED,qBAAM,IAAA,gCAAkB,EAAC,MAAM,wBAC1B,sCAAwB,KAC3B,IAAI,EAAE,iCAAiC,EACvC,QAAQ,EAAE,uBAAuB,EACjC,SAAS,EAAE,KAAK,IAChB,EAAA;;oBALF,SAKE,CAAC;oBAEC,KAAA,IAAA,aAAQ,GAAE,KAAK,QAAQ,CAAA;6BAAvB,wBAAuB;oBAAK,qBAAM,iBAAiB,EAAE,EAAA;;oBAA1B,KAAA,CAAC,SAAyB,CAAC,CAAA;;;6BAAtD,wBAAsD;oBACxD,qBAAM,IAAA,qBAAS,EAAC,aAAa,EAAE,cAAM,OAAA,IAAA,qBAAU,EAAC,KAAK,CAAC,EAAjB,CAAiB,CAAC,EAAA;;oBAAvD,SAAuD,CAAC;;;oBAGpD,gBAAgB,GAAG,IAAA,qBAAS,EAAC,oBAAoB,EAAE;wBACvD,OAAA,IAAA,0BAAmB,EAAC,oBAAa,CAAC;oBAAlC,CAAkC,CACnC,CAAC;oBACF,MAAM,CAAC,MAAM,CACX,sBAAsB,EACtB,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CACzC,CAAC;oBACF,IAAI,CAAC,gBAAgB,EAAE;wBACrB,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,kDAA2C,eAAK,CAAC,IAAI,CAAC,oBAAa,CAAC,MAAG,CACxE,CAAC;wBACF,sBAAO;qBACR;oBAGK,KAAiC,IAAA,qBAAS,EAC9C,qBAAqB,EACrB;wBACE,kJAAkJ;wBAClJ,IAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAChD,yGAAyG;wBACzG,OAAO,CAAC,SAAS,EAAE,CAAC;wBAEpB,IAAM,GAAG,GAAG,IAAA,mCAA2B,EAAC,OAAO,CAAC,CAAC;wBACjD,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACxB,CAAC,CACF,EAXM,YAAY,QAAA,EAAE,cAAc,QAAA,CAWjC;oBACF,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;oBAEhD,IAAA,qBAAS,EAAC,oBAAoB,EAAE;wBAC9B,IAAM,WAAW,GAAG,IAAA,uBAAe,EAAC,cAAc,CAAC,CAAC;wBACpD,MAAM,CAAC,MAAM,CACX,2BAA2B,EAC3B,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CACpC,CAAC;wBACF,IACE,OAAO,CAAC,UAAU;4BAClB,IAAA,6BAAoB,EAAC;gCACnB,OAAO,EAAE,OAAO,CAAC,UAAU;gCAC3B,kBAAkB,EAAE,yCAAiC;gCACrD,WAAW,EAAE,IAAI;6BAClB,CAAC,EACF;4BACA,IAAA,wBAAgB,EACd,WAAW,EACX,sDAA8C,CAC/C,CAAC;yBACH;6BAAM;4BACL,IAAA,wBAAgB,EAAC,WAAW,EAAE,2CAAmC,CAAC,CAAC;yBACpE;wBACD,MAAM,CAAC,MAAM,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;oBAEH,IAAA,qBAAS,EAAC,8BAA8B,EAAE;wBACxC,IAAM,2BAA2B,GAC/B,CAAC,CAAC,IAAA,iCAAyB,EAAC,cAAc,CAAC,CAAC;wBAC9C,MAAM,CAAC,MAAM,CACX,uCAAuC,EACvC,2BAA2B,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAC3D,CAAC;wBACF,IACE,OAAO,CAAC,UAAU;4BAClB,IAAA,6BAAoB,EAAC;gCACnB,OAAO,EAAE,OAAO,CAAC,UAAU;gCAC3B,kBAAkB,EAAE,yCAAiC;gCACrD,WAAW,EAAE,IAAI;6BAClB,CAAC,EACF;4BACA,IAAA,kDAA0C,EAAC,YAAY,EAAE;gCACvD,2BAA2B,6BAAA;6BAC5B,CAAC,CAAC;yBACJ;6BAAM;4BACL,IAAA,uCAA+B,EAAC,YAAY,EAAE;gCAC5C,2BAA2B,6BAAA;6BAC5B,CAAC,CAAC;yBACJ;wBACD,MAAM,CAAC,MAAM,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;oBAClE,CAAC,CAAC,CAAC;oBAEH,IAAA,qBAAS,EAAC,qBAAqB,EAAE;wBAC/B,IAAA,yBAAiB,EAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;oBACpD,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;;;;;CAClD;AAED,SAAe,iBAAiB,CAAC,MAA+B;;;;;wBAC9D,qBAAM,IAAA,gCAAkB,EAAC,MAAM,wBAC1B,sCAAwB,KAC3B,IAAI,EAAE,iCAAiC,EACvC,QAAQ,EAAE,2BAA2B,EACrC,SAAS,EAAE,KAAK,IAChB,EAAA;;oBALF,SAKE,CAAC;oBAEG,kBAAkB,GAAG,IAAA,qBAAS,EAAC,uBAAuB,EAAE;wBAC5D,OAAA,IAAA,0BAAmB,EAAC,uBAAgB,CAAC;oBAArC,CAAqC,CACtC,CAAC;oBACF,MAAM,CAAC,MAAM,CACX,yBAAyB,EACzB,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAC3C,CAAC;oBACF,IAAI,CAAC,kBAAkB,EAAE;wBACvB,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,iCAA0B,eAAK,CAAC,IAAI,CAClC,kBAAkB,CACnB,yBAAe,eAAK,CAAC,IAAI,CAAC,uBAAgB,CAAC,MAAG,CAChD,CAAC;wBACF,sBAAO;qBACR;oBAEK,cAAc,GAAG,IAAA,qBAAS,EAAC,uBAAuB,EAAE;wBACxD,OAAA,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC;oBAA5C,CAA4C,CAC7C,CAAC;oBACI,cAAc,GAClB,IAAA,sDAA6C,EAAC,cAAc,CAAC,CAAC;oBAChE,IAAI,cAAc,EAAE;wBAClB,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;wBACpE,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,kBAAW,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,mCAAgC,CAC1E,CAAC;wBACF,sBAAO;qBACR;oBAEK,qBAAqB,GAAG,IAAA,qBAAS,EAAC,6BAA6B,EAAE;wBACrE,OAAA,IAAA,gCAAuB,EAAC,cAAc,CAAC;oBAAvC,CAAuC,CACxC,CAAC;oBACF,IAAI,CAAC,IAAA,sDAA6C,EAAC,qBAAqB,CAAC,EAAE;wBACzE,MAAM,CAAC,MAAM,CACX,yBAAyB,EACzB,uCAAuC,CACxC,CAAC;wBACF,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,mDAA4C,eAAK,CAAC,IAAI,CACpD,kBAAkB,CACnB,MAAG,CACL,CAAC;wBACF,sBAAO;qBACR;oBAED,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,+BAA+B,CAAC,CAAC;oBAC1E,iBAAK,CAAC,GAAG,CAAC,OAAO,CACf,2CAAoC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAG,CACtE,CAAC;oBAEF,IAAA,qBAAS,EAAC,wBAAwB,EAAE;wBAClC,OAAA,IAAA,4BAAmB,EAAC,kBAAkB,EAAE,qBAAqB,CAAC;oBAA9D,CAA8D,CAC/D,CAAC;oBACF,iBAAK,CAAC,GAAG,CAAC,OAAO,CACf,eAAK,CAAC,KAAK,CAAC,kBAAW,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAS,CAAC,CAChE,CAAC;;;;;CACH;AAED,SAAe,iBAAiB;;;;YAC9B,sBAAO,IAAA,qBAAS,EAAC,qBAAqB,EAAE;;;;oCACP,qBAAM,IAAA,8BAAgB,EACnD,iBAAK,CAAC,MAAM,CAAC;oCACX,OAAO,EAAE,uCAAuC;oCAChD,OAAO,EAAE;wCACP;4CACE,KAAK,EAAE,IAAI;4CACX,KAAK,EAAE,KAAK;4CACZ,IAAI,EAAE,mEAAmE;yCAC1E;wCACD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE;qCAChD;oCACD,YAAY,EAAE,IAAI;iCACnB,CAAC,CACH,EAAA;;gCAbK,sBAAsB,GAAG,SAa9B;gCACD,MAAM,CAAC,MAAM,CAAC,2BAA2B,EAAE,sBAAsB,CAAC,CAAC;gCACnE,sBAAO,sBAAsB,EAAC;;;qBAC/B,CAAC,EAAC;;;CACJ","sourcesContent":["/* eslint-disable max-lines */\n// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack from '@clack/prompts';\nimport chalk from 'chalk';\nimport * as fs from 'fs';\n\nimport {\n CliSetupConfigContent,\n abortIfCancelled,\n addSentryCliConfig,\n confirmContinueIfNoOrDirtyGitRepo,\n confirmContinueIfPackageVersionNotSupported,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n installPackage,\n printWelcome,\n propertiesCliSetupConfig,\n runPrettierIfInstalled,\n abort,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport { podInstall } from '../apple/cocoapod';\nimport { platform } from 'os';\nimport {\n getValidExistingBuildPhases,\n findBundlePhase,\n patchBundlePhase,\n findDebugFilesUploadPhase,\n addDebugFilesUploadPhaseWithCli,\n writeXcodeProject,\n addSentryWithCliToBundleShellScript,\n addSentryWithBundledScriptsToBundleShellScript,\n addDebugFilesUploadPhaseWithBundledScripts,\n} from './xcode';\nimport {\n doesAppBuildGradleIncludeRNSentryGradlePlugin,\n addRNSentryGradlePlugin,\n writeAppBuildGradle,\n} from './gradle';\nimport { runReactNativeUninstall } from './uninstall';\nimport { APP_BUILD_GRADLE, XCODE_PROJECT, getFirstMatchedPath } from './glob';\nimport { ReactNativeWizardOptions } from './options';\nimport { addSentryInit } from './javascript';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport * as Sentry from '@sentry/node';\nimport { fulfillsVersionRange } from '../utils/semver';\nimport { getIssueStreamUrl } from '../utils/url';\nimport {\n patchMetroConfigWithSentrySerializer,\n patchMetroWithSentryConfig,\n} from './metro';\nimport { patchExpoAppConfig, printSentryExpoMigrationOutro } from './expo';\nimport { addSentryToExpoMetroConfig } from './expo-metro';\nimport { addExpoEnvLocal } from './expo-env-file';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\nconst xcode = require('xcode');\n\nexport const RN_SDK_PACKAGE = '@sentry/react-native';\nexport const RN_SDK_SUPPORTED_RANGE = '>=5.0.0';\n\nexport const RN_PACKAGE = 'react-native';\nexport const RN_HUMAN_NAME = 'React Native';\n\nexport const SUPPORTED_RN_RANGE = '>=0.69.0';\nexport const SUPPORTED_EXPO_RANGE = '>=50.0.0';\n\n/**\n * The following SDK version ship with bundled Xcode scripts\n * which simplifies the Xcode Build Phases setup.\n */\nexport const XCODE_SCRIPTS_SUPPORTED_SDK_RANGE = '>=5.11.0';\n\n/**\n * The following SDK version ship with Sentry Metro plugin\n */\nexport const SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE = '>=5.11.0';\n\n/**\n * The following SDK version ship with bundled Expo plugin\n */\nexport const EXPO_SUPPORTED_SDK_RANGE = `>=5.16.0`;\n\n// The following SDK version shipped `withSentryConfig`\nexport const METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE = '>=5.17.0';\n\nexport type RNCliSetupConfigContent = Pick<\n Required<CliSetupConfigContent>,\n 'authToken' | 'org' | 'project' | 'url'\n>;\n\nexport async function runReactNativeWizard(\n params: ReactNativeWizardOptions,\n): Promise<void> {\n return withTelemetry(\n {\n enabled: params.telemetryEnabled,\n integration: 'react-native',\n wizardOptions: params,\n },\n () => runReactNativeWizardWithTelemetry(params),\n );\n}\n\nexport async function runReactNativeWizardWithTelemetry(\n options: ReactNativeWizardOptions,\n): Promise<void> {\n if (options.uninstall) {\n Sentry.setTag('uninstall', true);\n return runReactNativeUninstall(options);\n }\n\n const { promoCode, telemetryEnabled, forceInstall } = options;\n\n printWelcome({\n wizardName: 'Sentry React Native Wizard',\n promoCode,\n telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n const packageJson = await getPackageDotJson();\n const hasInstalled = (dep: string) => hasPackageInstalled(dep, packageJson);\n\n if (hasInstalled('sentry-expo')) {\n Sentry.setTag('has-sentry-expo-installed', true);\n printSentryExpoMigrationOutro();\n return;\n }\n\n await ensurePackageIsInstalled(packageJson, RN_PACKAGE, RN_HUMAN_NAME);\n\n const rnVersion = getPackageVersion(RN_PACKAGE, packageJson);\n if (rnVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: RN_HUMAN_NAME,\n packageVersion: rnVersion,\n packageId: RN_PACKAGE,\n acceptableVersions: SUPPORTED_RN_RANGE,\n note: `Please upgrade to ${SUPPORTED_RN_RANGE} if you wish to use the Sentry Wizard.\nOr setup using ${chalk.cyan(\n 'https://docs.sentry.io/platforms/react-native/manual-setup/manual-setup/',\n )}`,\n });\n }\n\n await installPackage({\n packageName: RN_SDK_PACKAGE,\n alreadyInstalled: hasPackageInstalled(RN_SDK_PACKAGE, packageJson),\n forceInstall,\n });\n const sdkVersion = getPackageVersion(\n RN_SDK_PACKAGE,\n await getPackageDotJson(),\n );\n if (sdkVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Sentry React Native SDK',\n packageVersion: sdkVersion,\n packageId: RN_SDK_PACKAGE,\n acceptableVersions: RN_SDK_SUPPORTED_RANGE,\n note: `Please upgrade to ${RN_SDK_SUPPORTED_RANGE} to continue with the wizard in this project.`,\n });\n } else {\n const continueWithoutSdk = await abortIfCancelled(\n clack.confirm({\n message:\n 'Could not detect Sentry React Native SDK version. Do you want to continue anyway?',\n }),\n );\n if (!continueWithoutSdk) {\n await abort(undefined, 0);\n }\n }\n Sentry.setTag(`detected-sentry-react-native-sdk-version`, sdkVersion);\n\n const expoVersion = getPackageVersion('expo', packageJson);\n const isExpo = !!expoVersion;\n if (expoVersion && sdkVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Sentry React Native SDK',\n packageVersion: sdkVersion,\n packageId: RN_SDK_PACKAGE,\n acceptableVersions: EXPO_SUPPORTED_SDK_RANGE,\n note: `Please upgrade to ${EXPO_SUPPORTED_SDK_RANGE} to continue with the wizard in this Expo project.`,\n });\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Expo SDK',\n packageVersion: expoVersion,\n packageId: 'expo',\n acceptableVersions: SUPPORTED_EXPO_RANGE,\n note: `Please upgrade to ${SUPPORTED_EXPO_RANGE} to continue with the wizard in this Expo project.`,\n });\n }\n\n const { selectedProject, authToken, sentryUrl } =\n await getOrAskForProjectData(options, 'react-native');\n const orgSlug = selectedProject.organization.slug;\n const projectSlug = selectedProject.slug;\n const projectId = selectedProject.id;\n const cliConfig: RNCliSetupConfigContent = {\n authToken,\n org: orgSlug,\n project: projectSlug,\n url: sentryUrl,\n };\n\n await traceStep('patch-app-js', () =>\n addSentryInit({ dsn: selectedProject.keys[0].dsn.public }),\n );\n\n if (isExpo) {\n await traceStep('patch-expo-app-config', () =>\n patchExpoAppConfig(cliConfig),\n );\n await traceStep('add-expo-env-local', () => addExpoEnvLocal(cliConfig));\n }\n\n if (isExpo) {\n await traceStep('patch-metro-config', addSentryToExpoMetroConfig);\n } else {\n await traceStep('patch-metro-config', () =>\n addSentryToMetroConfig({ sdkVersion }),\n );\n }\n\n if (fs.existsSync('ios')) {\n Sentry.setTag('patch-ios', true);\n await traceStep('patch-xcode-files', () =>\n patchXcodeFiles(cliConfig, { sdkVersion }),\n );\n }\n\n if (fs.existsSync('android')) {\n Sentry.setTag('patch-android', true);\n await traceStep('patch-android-files', () => patchAndroidFiles(cliConfig));\n }\n\n await runPrettierIfInstalled();\n\n const confirmedFirstException = await confirmFirstSentryException(\n sentryUrl,\n orgSlug,\n projectId,\n );\n\n Sentry.setTag('user-confirmed-first-error', confirmedFirstException);\n\n if (confirmedFirstException) {\n clack.outro(\n `${chalk.green('Everything is set up!')}\n\n ${chalk.dim(\n 'If you encounter any issues, let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n } else {\n clack.outro(\n `${chalk.dim(\n 'Let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n }\n}\n\nfunction addSentryToMetroConfig({\n sdkVersion,\n}: {\n sdkVersion: string | undefined;\n}) {\n if (\n sdkVersion &&\n fulfillsVersionRange({\n version: sdkVersion,\n acceptableVersions: METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n return patchMetroWithSentryConfig();\n }\n\n if (\n sdkVersion &&\n fulfillsVersionRange({\n version: sdkVersion,\n acceptableVersions: SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n return patchMetroConfigWithSentrySerializer();\n }\n}\n\nasync function confirmFirstSentryException(\n url: string,\n orgSlug: string,\n projectId: string,\n) {\n const issuesStreamUrl = getIssueStreamUrl({ url, orgSlug, projectId });\n\n clack.log\n .step(`To make sure everything is set up correctly, put the following code snippet into your application.\nThe snippet will create a button that, when tapped, sends a test event to Sentry.\n\nAfter that check your project issues:\n\n${chalk.cyan(issuesStreamUrl)}`);\n\n // We want the code snippet to be easily copy-pasteable, without any clack artifacts\n // eslint-disable-next-line no-console\n console.log(\n chalk.greenBright(`\n<Button title='Try!' onPress={ () => { Sentry.captureException(new Error('First error')) }}/>\n`),\n );\n\n const firstErrorConfirmed = clack.confirm({\n message: `Have you successfully sent a test event?`,\n });\n\n return firstErrorConfirmed;\n}\n\nasync function patchXcodeFiles(\n config: RNCliSetupConfigContent,\n context: {\n sdkVersion: string | undefined;\n },\n) {\n await addSentryCliConfig(config, {\n ...propertiesCliSetupConfig,\n name: 'source maps and iOS debug files',\n filename: 'ios/sentry.properties',\n gitignore: false,\n });\n\n if (platform() === 'darwin' && (await confirmPodInstall())) {\n await traceStep('pod-install', () => podInstall('ios'));\n }\n\n const xcodeProjectPath = traceStep('find-xcode-project', () =>\n getFirstMatchedPath(XCODE_PROJECT),\n );\n Sentry.setTag(\n 'xcode-project-status',\n xcodeProjectPath ? 'found' : 'not-found',\n );\n if (!xcodeProjectPath) {\n clack.log.warn(\n `Could not find Xcode project file using ${chalk.cyan(XCODE_PROJECT)}.`,\n );\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const [xcodeProject, buildPhasesMap] = traceStep(\n 'parse-xcode-project',\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const project = xcode.project(xcodeProjectPath);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n project.parseSync();\n\n const map = getValidExistingBuildPhases(project);\n return [project, map];\n },\n );\n Sentry.setTag('xcode-project-status', 'parsed');\n\n traceStep('patch-bundle-phase', () => {\n const bundlePhase = findBundlePhase(buildPhasesMap);\n Sentry.setTag(\n 'xcode-bundle-phase-status',\n bundlePhase ? 'found' : 'not-found',\n );\n if (\n context.sdkVersion &&\n fulfillsVersionRange({\n version: context.sdkVersion,\n acceptableVersions: XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n patchBundlePhase(\n bundlePhase,\n addSentryWithBundledScriptsToBundleShellScript,\n );\n } else {\n patchBundlePhase(bundlePhase, addSentryWithCliToBundleShellScript);\n }\n Sentry.setTag('xcode-bundle-phase-status', 'patched');\n });\n\n traceStep('add-debug-files-upload-phase', () => {\n const debugFilesUploadPhaseExists =\n !!findDebugFilesUploadPhase(buildPhasesMap);\n Sentry.setTag(\n 'xcode-debug-files-upload-phase-status',\n debugFilesUploadPhaseExists ? 'already-exists' : undefined,\n );\n if (\n context.sdkVersion &&\n fulfillsVersionRange({\n version: context.sdkVersion,\n acceptableVersions: XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n addDebugFilesUploadPhaseWithBundledScripts(xcodeProject, {\n debugFilesUploadPhaseExists,\n });\n } else {\n addDebugFilesUploadPhaseWithCli(xcodeProject, {\n debugFilesUploadPhaseExists,\n });\n }\n Sentry.setTag('xcode-debug-files-upload-phase-status', 'added');\n });\n\n traceStep('write-xcode-project', () => {\n writeXcodeProject(xcodeProjectPath, xcodeProject);\n });\n Sentry.setTag('xcode-project-status', 'patched');\n}\n\nasync function patchAndroidFiles(config: RNCliSetupConfigContent) {\n await addSentryCliConfig(config, {\n ...propertiesCliSetupConfig,\n name: 'source maps and iOS debug files',\n filename: 'android/sentry.properties',\n gitignore: false,\n });\n\n const appBuildGradlePath = traceStep('find-app-build-gradle', () =>\n getFirstMatchedPath(APP_BUILD_GRADLE),\n );\n Sentry.setTag(\n 'app-build-gradle-status',\n appBuildGradlePath ? 'found' : 'not-found',\n );\n if (!appBuildGradlePath) {\n clack.log.warn(\n `Could not find Android ${chalk.cyan(\n 'app/build.gradle',\n )} file using ${chalk.cyan(APP_BUILD_GRADLE)}.`,\n );\n return;\n }\n\n const appBuildGradle = traceStep('read-app-build-gradle', () =>\n fs.readFileSync(appBuildGradlePath, 'utf-8'),\n );\n const includesSentry =\n doesAppBuildGradleIncludeRNSentryGradlePlugin(appBuildGradle);\n if (includesSentry) {\n Sentry.setTag('app-build-gradle-status', 'already-includes-sentry');\n clack.log.warn(\n `Android ${chalk.cyan('app/build.gradle')} file already includes Sentry.`,\n );\n return;\n }\n\n const patchedAppBuildGradle = traceStep('add-rn-sentry-gradle-plugin', () =>\n addRNSentryGradlePlugin(appBuildGradle),\n );\n if (!doesAppBuildGradleIncludeRNSentryGradlePlugin(patchedAppBuildGradle)) {\n Sentry.setTag(\n 'app-build-gradle-status',\n 'failed-to-add-rn-sentry-gradle-plugin',\n );\n clack.log.warn(\n `Could not add Sentry RN Gradle Plugin to ${chalk.cyan(\n 'app/build.gradle',\n )}.`,\n );\n return;\n }\n\n Sentry.setTag('app-build-gradle-status', 'added-rn-sentry-gradle-plugin');\n clack.log.success(\n `Added Sentry RN Gradle Plugin to ${chalk.bold('app/build.gradle')}.`,\n );\n\n traceStep('write-app-build-gradle', () =>\n writeAppBuildGradle(appBuildGradlePath, patchedAppBuildGradle),\n );\n clack.log.success(\n chalk.green(`Android ${chalk.cyan('app/build.gradle')} saved.`),\n );\n}\n\nasync function confirmPodInstall(): Promise<boolean> {\n return traceStep('confirm-pod-install', async () => {\n const continueWithPodInstall = await abortIfCancelled(\n clack.select({\n message: 'Do you want to run `pod install` now?',\n options: [\n {\n value: true,\n label: 'Yes',\n hint: 'Recommended for smaller projects, this might take several minutes',\n },\n { value: false, label: `No, I'll do it later` },\n ],\n initialValue: true,\n }),\n );\n Sentry.setTag('continue-with-pod-install', continueWithPodInstall);\n return continueWithPodInstall;\n });\n}\n"]}
1
+ {"version":3,"file":"react-native-wizard.js","sourceRoot":"","sources":["../../../src/react-native/react-native-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-lines */\n// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack from '@clack/prompts';\nimport chalk from 'chalk';\nimport * as fs from 'fs';\n\nimport {\n CliSetupConfigContent,\n abortIfCancelled,\n addSentryCliConfig,\n confirmContinueIfNoOrDirtyGitRepo,\n confirmContinueIfPackageVersionNotSupported,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n installPackage,\n printWelcome,\n propertiesCliSetupConfig,\n runPrettierIfInstalled,\n abort,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport { podInstall } from '../apple/cocoapod';\nimport { platform } from 'os';\nimport {\n getValidExistingBuildPhases,\n findBundlePhase,\n patchBundlePhase,\n findDebugFilesUploadPhase,\n addDebugFilesUploadPhaseWithCli,\n writeXcodeProject,\n addSentryWithCliToBundleShellScript,\n addSentryWithBundledScriptsToBundleShellScript,\n addDebugFilesUploadPhaseWithBundledScripts,\n} from './xcode';\nimport {\n doesAppBuildGradleIncludeRNSentryGradlePlugin,\n addRNSentryGradlePlugin,\n writeAppBuildGradle,\n} from './gradle';\nimport { runReactNativeUninstall } from './uninstall';\nimport { APP_BUILD_GRADLE, XCODE_PROJECT, getFirstMatchedPath } from './glob';\nimport { ReactNativeWizardOptions } from './options';\nimport { addSentryInit } from './javascript';\nimport { traceStep, withTelemetry } from '../telemetry';\nimport * as Sentry from '@sentry/node';\nimport { fulfillsVersionRange } from '../utils/semver';\nimport { getIssueStreamUrl } from '../utils/url';\nimport {\n patchMetroConfigWithSentrySerializer,\n patchMetroWithSentryConfig,\n} from './metro';\nimport { patchExpoAppConfig, printSentryExpoMigrationOutro } from './expo';\nimport { addSentryToExpoMetroConfig } from './expo-metro';\nimport { addExpoEnvLocal } from './expo-env-file';\n\nimport xcode from 'xcode';\n\nexport const RN_SDK_PACKAGE = '@sentry/react-native';\nexport const RN_SDK_SUPPORTED_RANGE = '>=5.0.0';\n\nexport const RN_PACKAGE = 'react-native';\nexport const RN_HUMAN_NAME = 'React Native';\n\nexport const SUPPORTED_RN_RANGE = '>=0.69.0';\nexport const SUPPORTED_EXPO_RANGE = '>=50.0.0';\n\n/**\n * The following SDK version ship with bundled Xcode scripts\n * which simplifies the Xcode Build Phases setup.\n */\nexport const XCODE_SCRIPTS_SUPPORTED_SDK_RANGE = '>=5.11.0';\n\n/**\n * The following SDK version ship with Sentry Metro plugin\n */\nexport const SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE = '>=5.11.0';\n\n/**\n * The following SDK version ship with bundled Expo plugin\n */\nexport const EXPO_SUPPORTED_SDK_RANGE = `>=5.16.0`;\n\n// The following SDK version shipped `withSentryConfig`\nexport const METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE = '>=5.17.0';\n\nexport type RNCliSetupConfigContent = Pick<\n Required<CliSetupConfigContent>,\n 'authToken' | 'org' | 'project' | 'url'\n>;\n\nexport async function runReactNativeWizard(\n params: ReactNativeWizardOptions,\n): Promise<void> {\n return withTelemetry(\n {\n enabled: params.telemetryEnabled,\n integration: 'react-native',\n wizardOptions: params,\n },\n () => runReactNativeWizardWithTelemetry(params),\n );\n}\n\nexport async function runReactNativeWizardWithTelemetry(\n options: ReactNativeWizardOptions,\n): Promise<void> {\n if (options.uninstall) {\n Sentry.setTag('uninstall', true);\n return runReactNativeUninstall(options);\n }\n\n const { promoCode, telemetryEnabled, forceInstall } = options;\n\n printWelcome({\n wizardName: 'Sentry React Native Wizard',\n promoCode,\n telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n const packageJson = await getPackageDotJson();\n const hasInstalled = (dep: string) => hasPackageInstalled(dep, packageJson);\n\n if (hasInstalled('sentry-expo')) {\n Sentry.setTag('has-sentry-expo-installed', true);\n printSentryExpoMigrationOutro();\n return;\n }\n\n await ensurePackageIsInstalled(packageJson, RN_PACKAGE, RN_HUMAN_NAME);\n\n const rnVersion = getPackageVersion(RN_PACKAGE, packageJson);\n if (rnVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: RN_HUMAN_NAME,\n packageVersion: rnVersion,\n packageId: RN_PACKAGE,\n acceptableVersions: SUPPORTED_RN_RANGE,\n note: `Please upgrade to ${SUPPORTED_RN_RANGE} if you wish to use the Sentry Wizard.\nOr setup using ${chalk.cyan(\n 'https://docs.sentry.io/platforms/react-native/manual-setup/manual-setup/',\n )}`,\n });\n }\n\n await installPackage({\n packageName: RN_SDK_PACKAGE,\n alreadyInstalled: hasPackageInstalled(RN_SDK_PACKAGE, packageJson),\n forceInstall,\n });\n const sdkVersion = getPackageVersion(\n RN_SDK_PACKAGE,\n await getPackageDotJson(),\n );\n if (sdkVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Sentry React Native SDK',\n packageVersion: sdkVersion,\n packageId: RN_SDK_PACKAGE,\n acceptableVersions: RN_SDK_SUPPORTED_RANGE,\n note: `Please upgrade to ${RN_SDK_SUPPORTED_RANGE} to continue with the wizard in this project.`,\n });\n } else {\n const continueWithoutSdk = await abortIfCancelled(\n clack.confirm({\n message:\n 'Could not detect Sentry React Native SDK version. Do you want to continue anyway?',\n }),\n );\n if (!continueWithoutSdk) {\n await abort(undefined, 0);\n }\n }\n Sentry.setTag(`detected-sentry-react-native-sdk-version`, sdkVersion);\n\n const expoVersion = getPackageVersion('expo', packageJson);\n const isExpo = !!expoVersion;\n if (expoVersion && sdkVersion) {\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Sentry React Native SDK',\n packageVersion: sdkVersion,\n packageId: RN_SDK_PACKAGE,\n acceptableVersions: EXPO_SUPPORTED_SDK_RANGE,\n note: `Please upgrade to ${EXPO_SUPPORTED_SDK_RANGE} to continue with the wizard in this Expo project.`,\n });\n await confirmContinueIfPackageVersionNotSupported({\n packageName: 'Expo SDK',\n packageVersion: expoVersion,\n packageId: 'expo',\n acceptableVersions: SUPPORTED_EXPO_RANGE,\n note: `Please upgrade to ${SUPPORTED_EXPO_RANGE} to continue with the wizard in this Expo project.`,\n });\n }\n\n const { selectedProject, authToken, sentryUrl } =\n await getOrAskForProjectData(options, 'react-native');\n const orgSlug = selectedProject.organization.slug;\n const projectSlug = selectedProject.slug;\n const projectId = selectedProject.id;\n const cliConfig: RNCliSetupConfigContent = {\n authToken,\n org: orgSlug,\n project: projectSlug,\n url: sentryUrl,\n };\n\n await traceStep('patch-app-js', () =>\n addSentryInit({ dsn: selectedProject.keys[0].dsn.public }),\n );\n\n if (isExpo) {\n await traceStep('patch-expo-app-config', () =>\n patchExpoAppConfig(cliConfig),\n );\n await traceStep('add-expo-env-local', () => addExpoEnvLocal(cliConfig));\n }\n\n if (isExpo) {\n await traceStep('patch-metro-config', addSentryToExpoMetroConfig);\n } else {\n await traceStep('patch-metro-config', () =>\n addSentryToMetroConfig({ sdkVersion }),\n );\n }\n\n if (fs.existsSync('ios')) {\n Sentry.setTag('patch-ios', true);\n await traceStep('patch-xcode-files', () =>\n patchXcodeFiles(cliConfig, { sdkVersion }),\n );\n }\n\n if (fs.existsSync('android')) {\n Sentry.setTag('patch-android', true);\n await traceStep('patch-android-files', () => patchAndroidFiles(cliConfig));\n }\n\n await runPrettierIfInstalled();\n\n const confirmedFirstException = await confirmFirstSentryException(\n sentryUrl,\n orgSlug,\n projectId,\n );\n\n Sentry.setTag('user-confirmed-first-error', confirmedFirstException);\n\n if (confirmedFirstException) {\n clack.outro(\n `${chalk.green('Everything is set up!')}\n\n ${chalk.dim(\n 'If you encounter any issues, let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n } else {\n clack.outro(\n `${chalk.dim(\n 'Let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n }\n}\n\nfunction addSentryToMetroConfig({\n sdkVersion,\n}: {\n sdkVersion: string | undefined;\n}) {\n if (\n sdkVersion &&\n fulfillsVersionRange({\n version: sdkVersion,\n acceptableVersions: METRO_WITH_SENTRY_CONFIG_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n return patchMetroWithSentryConfig();\n }\n\n if (\n sdkVersion &&\n fulfillsVersionRange({\n version: sdkVersion,\n acceptableVersions: SENTRY_METRO_PLUGIN_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n return patchMetroConfigWithSentrySerializer();\n }\n}\n\nasync function confirmFirstSentryException(\n url: string,\n orgSlug: string,\n projectId: string,\n) {\n const issuesStreamUrl = getIssueStreamUrl({ url, orgSlug, projectId });\n\n clack.log\n .step(`To make sure everything is set up correctly, put the following code snippet into your application.\nThe snippet will create a button that, when tapped, sends a test event to Sentry.\n\nAfter that check your project issues:\n\n${chalk.cyan(issuesStreamUrl)}`);\n\n // We want the code snippet to be easily copy-pasteable, without any clack artifacts\n // eslint-disable-next-line no-console\n console.log(\n chalk.greenBright(`\n<Button title='Try!' onPress={ () => { Sentry.captureException(new Error('First error')) }}/>\n`),\n );\n\n const firstErrorConfirmed = clack.confirm({\n message: `Have you successfully sent a test event?`,\n });\n\n return firstErrorConfirmed;\n}\n\nasync function patchXcodeFiles(\n config: RNCliSetupConfigContent,\n context: {\n sdkVersion: string | undefined;\n },\n) {\n await addSentryCliConfig(config, {\n ...propertiesCliSetupConfig,\n name: 'source maps and iOS debug files',\n filename: 'ios/sentry.properties',\n gitignore: false,\n });\n\n if (platform() === 'darwin' && (await confirmPodInstall())) {\n await traceStep('pod-install', () => podInstall('ios'));\n }\n\n const xcodeProjectPath = traceStep('find-xcode-project', () =>\n getFirstMatchedPath(XCODE_PROJECT),\n );\n Sentry.setTag(\n 'xcode-project-status',\n xcodeProjectPath ? 'found' : 'not-found',\n );\n if (!xcodeProjectPath) {\n clack.log.warn(\n `Could not find Xcode project file using ${chalk.cyan(XCODE_PROJECT)}.`,\n );\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const [xcodeProject, buildPhasesMap] = traceStep(\n 'parse-xcode-project',\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const project = xcode.project(xcodeProjectPath);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n project.parseSync();\n\n const map = getValidExistingBuildPhases(project);\n return [project, map];\n },\n );\n Sentry.setTag('xcode-project-status', 'parsed');\n\n traceStep('patch-bundle-phase', () => {\n const bundlePhase = findBundlePhase(buildPhasesMap);\n Sentry.setTag(\n 'xcode-bundle-phase-status',\n bundlePhase ? 'found' : 'not-found',\n );\n if (\n context.sdkVersion &&\n fulfillsVersionRange({\n version: context.sdkVersion,\n acceptableVersions: XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n patchBundlePhase(\n bundlePhase,\n addSentryWithBundledScriptsToBundleShellScript,\n );\n } else {\n patchBundlePhase(bundlePhase, addSentryWithCliToBundleShellScript);\n }\n Sentry.setTag('xcode-bundle-phase-status', 'patched');\n });\n\n traceStep('add-debug-files-upload-phase', () => {\n const debugFilesUploadPhaseExists =\n !!findDebugFilesUploadPhase(buildPhasesMap);\n Sentry.setTag(\n 'xcode-debug-files-upload-phase-status',\n debugFilesUploadPhaseExists ? 'already-exists' : undefined,\n );\n if (\n context.sdkVersion &&\n fulfillsVersionRange({\n version: context.sdkVersion,\n acceptableVersions: XCODE_SCRIPTS_SUPPORTED_SDK_RANGE,\n canBeLatest: true,\n })\n ) {\n addDebugFilesUploadPhaseWithBundledScripts(xcodeProject, {\n debugFilesUploadPhaseExists,\n });\n } else {\n addDebugFilesUploadPhaseWithCli(xcodeProject, {\n debugFilesUploadPhaseExists,\n });\n }\n Sentry.setTag('xcode-debug-files-upload-phase-status', 'added');\n });\n\n traceStep('write-xcode-project', () => {\n writeXcodeProject(xcodeProjectPath, xcodeProject);\n });\n Sentry.setTag('xcode-project-status', 'patched');\n}\n\nasync function patchAndroidFiles(config: RNCliSetupConfigContent) {\n await addSentryCliConfig(config, {\n ...propertiesCliSetupConfig,\n name: 'source maps and iOS debug files',\n filename: 'android/sentry.properties',\n gitignore: false,\n });\n\n const appBuildGradlePath = traceStep('find-app-build-gradle', () =>\n getFirstMatchedPath(APP_BUILD_GRADLE),\n );\n Sentry.setTag(\n 'app-build-gradle-status',\n appBuildGradlePath ? 'found' : 'not-found',\n );\n if (!appBuildGradlePath) {\n clack.log.warn(\n `Could not find Android ${chalk.cyan(\n 'app/build.gradle',\n )} file using ${chalk.cyan(APP_BUILD_GRADLE)}.`,\n );\n return;\n }\n\n const appBuildGradle = traceStep('read-app-build-gradle', () =>\n fs.readFileSync(appBuildGradlePath, 'utf-8'),\n );\n const includesSentry =\n doesAppBuildGradleIncludeRNSentryGradlePlugin(appBuildGradle);\n if (includesSentry) {\n Sentry.setTag('app-build-gradle-status', 'already-includes-sentry');\n clack.log.warn(\n `Android ${chalk.cyan('app/build.gradle')} file already includes Sentry.`,\n );\n return;\n }\n\n const patchedAppBuildGradle = traceStep('add-rn-sentry-gradle-plugin', () =>\n addRNSentryGradlePlugin(appBuildGradle),\n );\n if (!doesAppBuildGradleIncludeRNSentryGradlePlugin(patchedAppBuildGradle)) {\n Sentry.setTag(\n 'app-build-gradle-status',\n 'failed-to-add-rn-sentry-gradle-plugin',\n );\n clack.log.warn(\n `Could not add Sentry RN Gradle Plugin to ${chalk.cyan(\n 'app/build.gradle',\n )}.`,\n );\n return;\n }\n\n Sentry.setTag('app-build-gradle-status', 'added-rn-sentry-gradle-plugin');\n clack.log.success(\n `Added Sentry RN Gradle Plugin to ${chalk.bold('app/build.gradle')}.`,\n );\n\n traceStep('write-app-build-gradle', () =>\n writeAppBuildGradle(appBuildGradlePath, patchedAppBuildGradle),\n );\n clack.log.success(\n chalk.green(`Android ${chalk.cyan('app/build.gradle')} saved.`),\n );\n}\n\nasync function confirmPodInstall(): Promise<boolean> {\n return traceStep('confirm-pod-install', async () => {\n const continueWithPodInstall = await abortIfCancelled(\n clack.select({\n message: 'Do you want to run `pod install` now?',\n options: [\n {\n value: true,\n label: 'Yes',\n hint: 'Recommended for smaller projects, this might take several minutes',\n },\n { value: false, label: `No, I'll do it later` },\n ],\n initialValue: true,\n }),\n );\n Sentry.setTag('continue-with-pod-install', continueWithPodInstall);\n return continueWithPodInstall;\n });\n}\n"]}
@@ -22,113 +22,70 @@ 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.runReactNativeUninstall = void 0;
66
- var fs = __importStar(require("fs"));
30
+ const fs = __importStar(require("fs"));
67
31
  // @ts-ignore - clack is ESM and TS complains about that. It works though
68
- var prompts_1 = __importDefault(require("@clack/prompts"));
69
- var chalk_1 = __importDefault(require("chalk"));
70
- var clack_utils_1 = require("../utils/clack-utils");
71
- var xcode_1 = require("./xcode");
72
- var glob_1 = require("./glob");
73
- var gradle_1 = require("./gradle");
74
- var metro_1 = require("./metro");
75
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
76
- var xcode = require('xcode');
77
- function runReactNativeUninstall(options) {
78
- return __awaiter(this, void 0, void 0, function () {
79
- return __generator(this, function (_a) {
80
- switch (_a.label) {
81
- case 0:
82
- (0, clack_utils_1.printWelcome)({
83
- wizardName: 'Sentry React Native Uninstall Wizard',
84
- message: 'This wizard will remove Sentry from your React Native project.',
85
- telemetryEnabled: options.telemetryEnabled,
86
- });
87
- return [4 /*yield*/, (0, clack_utils_1.confirmContinueIfNoOrDirtyGitRepo)()];
88
- case 1:
89
- _a.sent();
90
- return [4 /*yield*/, (0, metro_1.unPatchMetroConfig)()];
91
- case 2:
92
- _a.sent();
93
- unPatchXcodeFiles();
94
- unPatchAndroidFiles();
95
- prompts_1.default.note("To make sure your project builds after removing Sentry please run:\n\n1. ".concat(chalk_1.default.bold('yarn remove @sentry/react-native'), "\n2. ").concat(chalk_1.default.bold('cd ios && pod install'), "\n3. Remove all occurrences of ").concat(chalk_1.default.bold('@sentry/react-native'), " from your application code."));
96
- prompts_1.default.outro("".concat(chalk_1.default.green('Uninstall is done!'), "\n\n ").concat(chalk_1.default.dim('If you encounter any issues, let us know here: https://github.com/getsentry/sentry-react-native/issues')));
97
- return [2 /*return*/];
98
- }
99
- });
32
+ const prompts_1 = __importDefault(require("@clack/prompts"));
33
+ const chalk_1 = __importDefault(require("chalk"));
34
+ const clack_utils_1 = require("../utils/clack-utils");
35
+ const xcode_1 = require("./xcode");
36
+ const glob_1 = require("./glob");
37
+ const gradle_1 = require("./gradle");
38
+ const metro_1 = require("./metro");
39
+ const xcode_2 = __importDefault(require("xcode"));
40
+ async function runReactNativeUninstall(options) {
41
+ (0, clack_utils_1.printWelcome)({
42
+ wizardName: 'Sentry React Native Uninstall Wizard',
43
+ message: 'This wizard will remove Sentry from your React Native project.',
44
+ telemetryEnabled: options.telemetryEnabled,
100
45
  });
46
+ await (0, clack_utils_1.confirmContinueIfNoOrDirtyGitRepo)();
47
+ await (0, metro_1.unPatchMetroConfig)();
48
+ unPatchXcodeFiles();
49
+ unPatchAndroidFiles();
50
+ prompts_1.default.note(`To make sure your project builds after removing Sentry please run:
51
+
52
+ 1. ${chalk_1.default.bold('yarn remove @sentry/react-native')}
53
+ 2. ${chalk_1.default.bold('cd ios && pod install')}
54
+ 3. Remove all occurrences of ${chalk_1.default.bold('@sentry/react-native')} from your application code.`);
55
+ prompts_1.default.outro(`${chalk_1.default.green('Uninstall is done!')}
56
+
57
+ ${chalk_1.default.dim('If you encounter any issues, let us know here: https://github.com/getsentry/sentry-react-native/issues')}`);
101
58
  }
102
59
  exports.runReactNativeUninstall = runReactNativeUninstall;
103
60
  function unPatchXcodeFiles() {
104
- var xcodeProjectPath = (0, glob_1.getFirstMatchedPath)(glob_1.XCODE_PROJECT);
61
+ const xcodeProjectPath = (0, glob_1.getFirstMatchedPath)(glob_1.XCODE_PROJECT);
105
62
  if (!xcodeProjectPath) {
106
- prompts_1.default.log.warn("Could not find Xcode project file using ".concat(chalk_1.default.bold(glob_1.XCODE_PROJECT), "."));
63
+ prompts_1.default.log.warn(`Could not find Xcode project file using ${chalk_1.default.bold(glob_1.XCODE_PROJECT)}.`);
107
64
  return;
108
65
  }
109
66
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
110
- var xcodeProject = xcode.project(xcodeProjectPath);
67
+ const xcodeProject = xcode_2.default.project(xcodeProjectPath);
111
68
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
112
69
  xcodeProject.parseSync();
113
- var buildPhases = (0, xcode_1.getValidExistingBuildPhases)(xcodeProject);
114
- var bundlePhase = (0, xcode_1.findBundlePhase)(buildPhases);
70
+ const buildPhases = (0, xcode_1.getValidExistingBuildPhases)(xcodeProject);
71
+ const bundlePhase = (0, xcode_1.findBundlePhase)(buildPhases);
115
72
  (0, xcode_1.unPatchBundlePhase)(bundlePhase);
116
73
  (0, xcode_1.unPatchDebugFilesUploadPhase)(xcodeProject);
117
74
  (0, xcode_1.writeXcodeProject)(xcodeProjectPath, xcodeProject);
118
75
  }
119
76
  function unPatchAndroidFiles() {
120
- var appBuildGradlePath = (0, glob_1.getFirstMatchedPath)(glob_1.APP_BUILD_GRADLE);
77
+ const appBuildGradlePath = (0, glob_1.getFirstMatchedPath)(glob_1.APP_BUILD_GRADLE);
121
78
  if (!appBuildGradlePath) {
122
- prompts_1.default.log.warn("Could not find Android app/build.gradle file using ".concat(chalk_1.default.bold(glob_1.APP_BUILD_GRADLE), "."));
79
+ prompts_1.default.log.warn(`Could not find Android app/build.gradle file using ${chalk_1.default.bold(glob_1.APP_BUILD_GRADLE)}.`);
123
80
  return;
124
81
  }
125
- var appBuildGradle = fs.readFileSync(appBuildGradlePath, 'utf-8');
126
- var includesSentry = (0, gradle_1.doesAppBuildGradleIncludeRNSentryGradlePlugin)(appBuildGradle);
82
+ const appBuildGradle = fs.readFileSync(appBuildGradlePath, 'utf-8');
83
+ const includesSentry = (0, gradle_1.doesAppBuildGradleIncludeRNSentryGradlePlugin)(appBuildGradle);
127
84
  if (!includesSentry) {
128
- prompts_1.default.log.warn("Sentry not found in Android app/build.gradle.");
85
+ prompts_1.default.log.warn(`Sentry not found in Android app/build.gradle.`);
129
86
  return;
130
87
  }
131
- var patchedAppBuildGradle = (0, gradle_1.removeRNSentryGradlePlugin)(appBuildGradle);
88
+ const patchedAppBuildGradle = (0, gradle_1.removeRNSentryGradlePlugin)(appBuildGradle);
132
89
  (0, gradle_1.writeAppBuildGradle)(appBuildGradlePath, patchedAppBuildGradle);
133
90
  }
134
91
  //# sourceMappingURL=uninstall.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/react-native/uninstall.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,yEAAyE;AACzE,2DAAmC;AACnC,gDAA0B;AAE1B,oDAG8B;AAC9B,iCAMiB;AACjB,+BAA8E;AAC9E,mCAIkB;AAElB,iCAA6C;AAE7C,mEAAmE;AACnE,IAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE/B,SAAsB,uBAAuB,CAC3C,OAAiC;;;;;oBAEjC,IAAA,0BAAY,EAAC;wBACX,UAAU,EAAE,sCAAsC;wBAClD,OAAO,EAAE,gEAAgE;wBACzE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;qBAC3C,CAAC,CAAC;oBAEH,qBAAM,IAAA,+CAAiC,GAAE,EAAA;;oBAAzC,SAAyC,CAAC;oBAE1C,qBAAM,IAAA,0BAAkB,GAAE,EAAA;;oBAA1B,SAA0B,CAAC;oBAE3B,iBAAiB,EAAE,CAAC;oBAEpB,mBAAmB,EAAE,CAAC;oBAEtB,iBAAK,CAAC,IAAI,CACR,mFAEC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,kBAC9C,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,4CACT,eAAK,CAAC,IAAI,CACnC,sBAAsB,CACvB,iCAA8B,CAChC,CAAC;oBAEF,iBAAK,CAAC,KAAK,CACT,UAAG,eAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,oBAEnC,eAAK,CAAC,GAAG,CACT,wGAAwG,CACzG,CAAE,CACH,CAAC;;;;;CACH;AAlCD,0DAkCC;AAED,SAAS,iBAAiB;IACxB,IAAM,gBAAgB,GAAG,IAAA,0BAAmB,EAAC,oBAAa,CAAC,CAAC;IAC5D,IAAI,CAAC,gBAAgB,EAAE;QACrB,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,kDAA2C,eAAK,CAAC,IAAI,CAAC,oBAAa,CAAC,MAAG,CACxE,CAAC;QACF,OAAO;KACR;IAED,kJAAkJ;IAClJ,IAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrD,yGAAyG;IACzG,YAAY,CAAC,SAAS,EAAE,CAAC;IACzB,IAAM,WAAW,GAAG,IAAA,mCAA2B,EAAC,YAAY,CAAC,CAAC;IAE9D,IAAM,WAAW,GAAG,IAAA,uBAAe,EAAC,WAAW,CAAC,CAAC;IACjD,IAAA,0BAAkB,EAAC,WAAW,CAAC,CAAC;IAEhC,IAAA,oCAA4B,EAAC,YAAY,CAAC,CAAC;IAE3C,IAAA,yBAAiB,EAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAM,kBAAkB,GAAG,IAAA,0BAAmB,EAAC,uBAAgB,CAAC,CAAC;IACjE,IAAI,CAAC,kBAAkB,EAAE;QACvB,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,6DAAsD,eAAK,CAAC,IAAI,CAC9D,uBAAgB,CACjB,MAAG,CACL,CAAC;QACF,OAAO;KACR;IAED,IAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACpE,IAAM,cAAc,GAClB,IAAA,sDAA6C,EAAC,cAAc,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,EAAE;QACnB,iBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAChE,OAAO;KACR;IAED,IAAM,qBAAqB,GAAG,IAAA,mCAA0B,EAAC,cAAc,CAAC,CAAC;IAEzE,IAAA,4BAAmB,EAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;AACjE,CAAC","sourcesContent":["import * as fs from 'fs';\n// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack from '@clack/prompts';\nimport chalk from 'chalk';\n\nimport {\n confirmContinueIfNoOrDirtyGitRepo,\n printWelcome,\n} from '../utils/clack-utils';\nimport {\n findBundlePhase,\n getValidExistingBuildPhases,\n unPatchBundlePhase,\n unPatchDebugFilesUploadPhase,\n writeXcodeProject,\n} from './xcode';\nimport { APP_BUILD_GRADLE, XCODE_PROJECT, getFirstMatchedPath } from './glob';\nimport {\n doesAppBuildGradleIncludeRNSentryGradlePlugin,\n removeRNSentryGradlePlugin,\n writeAppBuildGradle,\n} from './gradle';\nimport { ReactNativeWizardOptions } from './options';\nimport { unPatchMetroConfig } from './metro';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\nconst xcode = require('xcode');\n\nexport async function runReactNativeUninstall(\n options: ReactNativeWizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry React Native Uninstall Wizard',\n message: 'This wizard will remove Sentry from your React Native project.',\n telemetryEnabled: options.telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n await unPatchMetroConfig();\n\n unPatchXcodeFiles();\n\n unPatchAndroidFiles();\n\n clack.note(\n `To make sure your project builds after removing Sentry please run:\n\n1. ${chalk.bold('yarn remove @sentry/react-native')}\n2. ${chalk.bold('cd ios && pod install')}\n3. Remove all occurrences of ${chalk.bold(\n '@sentry/react-native',\n )} from your application code.`,\n );\n\n clack.outro(\n `${chalk.green('Uninstall is done!')}\n\n ${chalk.dim(\n 'If you encounter any issues, let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n}\n\nfunction unPatchXcodeFiles() {\n const xcodeProjectPath = getFirstMatchedPath(XCODE_PROJECT);\n if (!xcodeProjectPath) {\n clack.log.warn(\n `Could not find Xcode project file using ${chalk.bold(XCODE_PROJECT)}.`,\n );\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const xcodeProject = xcode.project(xcodeProjectPath);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n xcodeProject.parseSync();\n const buildPhases = getValidExistingBuildPhases(xcodeProject);\n\n const bundlePhase = findBundlePhase(buildPhases);\n unPatchBundlePhase(bundlePhase);\n\n unPatchDebugFilesUploadPhase(xcodeProject);\n\n writeXcodeProject(xcodeProjectPath, xcodeProject);\n}\n\nfunction unPatchAndroidFiles() {\n const appBuildGradlePath = getFirstMatchedPath(APP_BUILD_GRADLE);\n if (!appBuildGradlePath) {\n clack.log.warn(\n `Could not find Android app/build.gradle file using ${chalk.bold(\n APP_BUILD_GRADLE,\n )}.`,\n );\n return;\n }\n\n const appBuildGradle = fs.readFileSync(appBuildGradlePath, 'utf-8');\n const includesSentry =\n doesAppBuildGradleIncludeRNSentryGradlePlugin(appBuildGradle);\n if (!includesSentry) {\n clack.log.warn(`Sentry not found in Android app/build.gradle.`);\n return;\n }\n\n const patchedAppBuildGradle = removeRNSentryGradlePlugin(appBuildGradle);\n\n writeAppBuildGradle(appBuildGradlePath, patchedAppBuildGradle);\n}\n"]}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/react-native/uninstall.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,yEAAyE;AACzE,6DAAmC;AACnC,kDAA0B;AAE1B,sDAG8B;AAC9B,mCAMiB;AACjB,iCAA8E;AAC9E,qCAIkB;AAElB,mCAA6C;AAE7C,kDAA0B;AAEnB,KAAK,UAAU,uBAAuB,CAC3C,OAAiC;IAEjC,IAAA,0BAAY,EAAC;QACX,UAAU,EAAE,sCAAsC;QAClD,OAAO,EAAE,gEAAgE;QACzE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC3C,CAAC,CAAC;IAEH,MAAM,IAAA,+CAAiC,GAAE,CAAC;IAE1C,MAAM,IAAA,0BAAkB,GAAE,CAAC;IAE3B,iBAAiB,EAAE,CAAC;IAEpB,mBAAmB,EAAE,CAAC;IAEtB,iBAAK,CAAC,IAAI,CACR;;KAEC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC;KAC9C,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC;+BACT,eAAK,CAAC,IAAI,CACnC,sBAAsB,CACvB,8BAA8B,CAChC,CAAC;IAEF,iBAAK,CAAC,KAAK,CACT,GAAG,eAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;;KAEnC,eAAK,CAAC,GAAG,CACT,wGAAwG,CACzG,EAAE,CACH,CAAC;AACJ,CAAC;AAlCD,0DAkCC;AAED,SAAS,iBAAiB;IACxB,MAAM,gBAAgB,GAAG,IAAA,0BAAmB,EAAC,oBAAa,CAAC,CAAC;IAC5D,IAAI,CAAC,gBAAgB,EAAE;QACrB,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,2CAA2C,eAAK,CAAC,IAAI,CAAC,oBAAa,CAAC,GAAG,CACxE,CAAC;QACF,OAAO;KACR;IAED,kJAAkJ;IAClJ,MAAM,YAAY,GAAG,eAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrD,yGAAyG;IACzG,YAAY,CAAC,SAAS,EAAE,CAAC;IACzB,MAAM,WAAW,GAAG,IAAA,mCAA2B,EAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,IAAA,uBAAe,EAAC,WAAW,CAAC,CAAC;IACjD,IAAA,0BAAkB,EAAC,WAAW,CAAC,CAAC;IAEhC,IAAA,oCAA4B,EAAC,YAAY,CAAC,CAAC;IAE3C,IAAA,yBAAiB,EAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,kBAAkB,GAAG,IAAA,0BAAmB,EAAC,uBAAgB,CAAC,CAAC;IACjE,IAAI,CAAC,kBAAkB,EAAE;QACvB,iBAAK,CAAC,GAAG,CAAC,IAAI,CACZ,sDAAsD,eAAK,CAAC,IAAI,CAC9D,uBAAgB,CACjB,GAAG,CACL,CAAC;QACF,OAAO;KACR;IAED,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,cAAc,GAClB,IAAA,sDAA6C,EAAC,cAAc,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,EAAE;QACnB,iBAAK,CAAC,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAChE,OAAO;KACR;IAED,MAAM,qBAAqB,GAAG,IAAA,mCAA0B,EAAC,cAAc,CAAC,CAAC;IAEzE,IAAA,4BAAmB,EAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;AACjE,CAAC","sourcesContent":["import * as fs from 'fs';\n// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack from '@clack/prompts';\nimport chalk from 'chalk';\n\nimport {\n confirmContinueIfNoOrDirtyGitRepo,\n printWelcome,\n} from '../utils/clack-utils';\nimport {\n findBundlePhase,\n getValidExistingBuildPhases,\n unPatchBundlePhase,\n unPatchDebugFilesUploadPhase,\n writeXcodeProject,\n} from './xcode';\nimport { APP_BUILD_GRADLE, XCODE_PROJECT, getFirstMatchedPath } from './glob';\nimport {\n doesAppBuildGradleIncludeRNSentryGradlePlugin,\n removeRNSentryGradlePlugin,\n writeAppBuildGradle,\n} from './gradle';\nimport { ReactNativeWizardOptions } from './options';\nimport { unPatchMetroConfig } from './metro';\n\nimport xcode from 'xcode';\n\nexport async function runReactNativeUninstall(\n options: ReactNativeWizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry React Native Uninstall Wizard',\n message: 'This wizard will remove Sentry from your React Native project.',\n telemetryEnabled: options.telemetryEnabled,\n });\n\n await confirmContinueIfNoOrDirtyGitRepo();\n\n await unPatchMetroConfig();\n\n unPatchXcodeFiles();\n\n unPatchAndroidFiles();\n\n clack.note(\n `To make sure your project builds after removing Sentry please run:\n\n1. ${chalk.bold('yarn remove @sentry/react-native')}\n2. ${chalk.bold('cd ios && pod install')}\n3. Remove all occurrences of ${chalk.bold(\n '@sentry/react-native',\n )} from your application code.`,\n );\n\n clack.outro(\n `${chalk.green('Uninstall is done!')}\n\n ${chalk.dim(\n 'If you encounter any issues, let us know here: https://github.com/getsentry/sentry-react-native/issues',\n )}`,\n );\n}\n\nfunction unPatchXcodeFiles() {\n const xcodeProjectPath = getFirstMatchedPath(XCODE_PROJECT);\n if (!xcodeProjectPath) {\n clack.log.warn(\n `Could not find Xcode project file using ${chalk.bold(XCODE_PROJECT)}.`,\n );\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n const xcodeProject = xcode.project(xcodeProjectPath);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n xcodeProject.parseSync();\n const buildPhases = getValidExistingBuildPhases(xcodeProject);\n\n const bundlePhase = findBundlePhase(buildPhases);\n unPatchBundlePhase(bundlePhase);\n\n unPatchDebugFilesUploadPhase(xcodeProject);\n\n writeXcodeProject(xcodeProjectPath, xcodeProject);\n}\n\nfunction unPatchAndroidFiles() {\n const appBuildGradlePath = getFirstMatchedPath(APP_BUILD_GRADLE);\n if (!appBuildGradlePath) {\n clack.log.warn(\n `Could not find Android app/build.gradle file using ${chalk.bold(\n APP_BUILD_GRADLE,\n )}.`,\n );\n return;\n }\n\n const appBuildGradle = fs.readFileSync(appBuildGradlePath, 'utf-8');\n const includesSentry =\n doesAppBuildGradleIncludeRNSentryGradlePlugin(appBuildGradle);\n if (!includesSentry) {\n clack.log.warn(`Sentry not found in Android app/build.gradle.`);\n return;\n }\n\n const patchedAppBuildGradle = removeRNSentryGradlePlugin(appBuildGradle);\n\n writeAppBuildGradle(appBuildGradlePath, patchedAppBuildGradle);\n}\n"]}
@@ -30,16 +30,16 @@ exports.writeXcodeProject = exports.findDebugFilesUploadPhase = exports.unPatchD
30
30
  /* eslint-disable @typescript-eslint/no-unsafe-assignment */
31
31
  /* eslint-disable @typescript-eslint/no-unsafe-call */
32
32
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
33
- var fs = __importStar(require("fs"));
33
+ const fs = __importStar(require("node:fs"));
34
34
  // @ts-ignore - clack is ESM and TS complains about that. It works though
35
- var prompts_1 = __importDefault(require("@clack/prompts"));
36
- var chalk_1 = __importDefault(require("chalk"));
35
+ const prompts_1 = __importDefault(require("@clack/prompts"));
36
+ const chalk_1 = __importDefault(require("chalk"));
37
37
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
38
  function getValidExistingBuildPhases(xcodeProject) {
39
- var map = {};
40
- var raw = xcodeProject.hash.project.objects.PBXShellScriptBuildPhase || {};
41
- for (var key in raw) {
42
- var val = raw[key];
39
+ const map = {};
40
+ const raw = xcodeProject.hash.project.objects.PBXShellScriptBuildPhase || {};
41
+ for (const key in raw) {
42
+ const val = raw[key];
43
43
  val.isa && (map[key] = val);
44
44
  }
45
45
  return map;
@@ -47,31 +47,31 @@ function getValidExistingBuildPhases(xcodeProject) {
47
47
  exports.getValidExistingBuildPhases = getValidExistingBuildPhases;
48
48
  function patchBundlePhase(bundlePhase, patch) {
49
49
  if (!bundlePhase) {
50
- prompts_1.default.log.warn("Could not find ".concat(chalk_1.default.cyan('Bundle React Native code and images'), " build phase."));
50
+ prompts_1.default.log.warn(`Could not find ${chalk_1.default.cyan('Bundle React Native code and images')} build phase.`);
51
51
  return;
52
52
  }
53
- var bundlePhaseIncludesSentry = doesBundlePhaseIncludeSentry(bundlePhase);
53
+ const bundlePhaseIncludesSentry = doesBundlePhaseIncludeSentry(bundlePhase);
54
54
  if (bundlePhaseIncludesSentry) {
55
- prompts_1.default.log.warn("Build phase ".concat(chalk_1.default.cyan('Bundle React Native code and images'), " already includes Sentry."));
55
+ prompts_1.default.log.warn(`Build phase ${chalk_1.default.cyan('Bundle React Native code and images')} already includes Sentry.`);
56
56
  return;
57
57
  }
58
- var script = JSON.parse(bundlePhase.shellScript);
58
+ const script = JSON.parse(bundlePhase.shellScript);
59
59
  bundlePhase.shellScript = JSON.stringify(patch(script));
60
- prompts_1.default.log.success("Patched Build phase ".concat(chalk_1.default.cyan('Bundle React Native code and images'), "."));
60
+ prompts_1.default.log.success(`Patched Build phase ${chalk_1.default.cyan('Bundle React Native code and images')}.`);
61
61
  }
62
62
  exports.patchBundlePhase = patchBundlePhase;
63
63
  function unPatchBundlePhase(bundlePhase) {
64
64
  if (!bundlePhase) {
65
- prompts_1.default.log.warn("Could not find ".concat(chalk_1.default.cyan('Bundle React Native code and images'), " build phase."));
65
+ prompts_1.default.log.warn(`Could not find ${chalk_1.default.cyan('Bundle React Native code and images')} build phase.`);
66
66
  return;
67
67
  }
68
68
  if (!bundlePhase.shellScript.match(/sentry-cli\s+react-native\s+xcode/i) &&
69
69
  !bundlePhase.shellScript.includes('sentry-xcode.sh')) {
70
- prompts_1.default.log.success("Build phase ".concat(chalk_1.default.cyan('Bundle React Native code and images'), " does not include Sentry."));
70
+ prompts_1.default.log.success(`Build phase ${chalk_1.default.cyan('Bundle React Native code and images')} does not include Sentry.`);
71
71
  return;
72
72
  }
73
73
  bundlePhase.shellScript = JSON.stringify(removeSentryFromBundleShellScript(JSON.parse(bundlePhase.shellScript)));
74
- prompts_1.default.log.success("Build phase ".concat(chalk_1.default.cyan('Bundle React Native code and images'), " unpatched successfully."));
74
+ prompts_1.default.log.success(`Build phase ${chalk_1.default.cyan('Bundle React Native code and images')} unpatched successfully.`);
75
75
  }
76
76
  exports.unPatchBundlePhase = unPatchBundlePhase;
77
77
  function removeSentryFromBundleShellScript(script) {
@@ -91,30 +91,28 @@ function removeSentryFromBundleShellScript(script) {
91
91
  }
92
92
  exports.removeSentryFromBundleShellScript = removeSentryFromBundleShellScript;
93
93
  function findBundlePhase(buildPhases) {
94
- return Object.values(buildPhases).find(function (buildPhase) {
95
- return buildPhase.shellScript.match(/\/scripts\/react-native-xcode\.sh/i);
96
- });
94
+ return Object.values(buildPhases).find((buildPhase) => buildPhase.shellScript.match(/\/scripts\/react-native-xcode\.sh/i));
97
95
  }
98
96
  exports.findBundlePhase = findBundlePhase;
99
97
  function doesBundlePhaseIncludeSentry(buildPhase) {
100
- var containsSentryCliRNCommand = !!buildPhase.shellScript.match(/sentry-cli\s+react-native\s+xcode/i);
101
- var containsBundledScript = buildPhase.shellScript.includes('sentry-xcode.sh');
98
+ const containsSentryCliRNCommand = !!buildPhase.shellScript.match(/sentry-cli\s+react-native\s+xcode/i);
99
+ const containsBundledScript = buildPhase.shellScript.includes('sentry-xcode.sh');
102
100
  return containsSentryCliRNCommand || containsBundledScript;
103
101
  }
104
102
  exports.doesBundlePhaseIncludeSentry = doesBundlePhaseIncludeSentry;
105
103
  function addSentryWithBundledScriptsToBundleShellScript(script) {
106
- var isLikelyPlainReactNativeScript = script.includes('$REACT_NATIVE_XCODE');
104
+ const isLikelyPlainReactNativeScript = script.includes('$REACT_NATIVE_XCODE');
107
105
  if (isLikelyPlainReactNativeScript) {
108
106
  return script.replace('$REACT_NATIVE_XCODE',
109
107
  // eslint-disable-next-line no-useless-escape
110
108
  '\\"/bin/sh ../node_modules/@sentry/react-native/scripts/sentry-xcode.sh $REACT_NATIVE_XCODE\\"');
111
109
  }
112
- var isLikelyExpoScript = script.includes('expo');
110
+ const isLikelyExpoScript = script.includes('expo');
113
111
  if (isLikelyExpoScript) {
114
- var SENTRY_REACT_NATIVE_XCODE_PATH_1 = "`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('@sentry/react-native/package.json')) + '/scripts/sentry-xcode.sh'\"`";
112
+ const SENTRY_REACT_NATIVE_XCODE_PATH = "`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('@sentry/react-native/package.json')) + '/scripts/sentry-xcode.sh'\"`";
115
113
  return script.replace(/^.*?(packager|scripts)\/react-native-xcode\.sh\s*(\\'\\\\")?/m,
116
114
  // eslint-disable-next-line no-useless-escape
117
- function (match) { return "/bin/sh ".concat(SENTRY_REACT_NATIVE_XCODE_PATH_1, " ").concat(match); });
115
+ (match) => `/bin/sh ${SENTRY_REACT_NATIVE_XCODE_PATH} ${match}`);
118
116
  }
119
117
  return script;
120
118
  }
@@ -122,78 +120,82 @@ exports.addSentryWithBundledScriptsToBundleShellScript = addSentryWithBundledScr
122
120
  function addSentryWithCliToBundleShellScript(script) {
123
121
  return ('export SENTRY_PROPERTIES=sentry.properties\n' +
124
122
  'export EXTRA_PACKAGER_ARGS="--sourcemap-output $DERIVED_FILE_DIR/main.jsbundle.map"\n' +
125
- script.replace('$REACT_NATIVE_XCODE', function () {
126
- // eslint-disable-next-line no-useless-escape
127
- return '\\"../node_modules/@sentry/cli/bin/sentry-cli react-native xcode $REACT_NATIVE_XCODE\\"';
128
- }) +
123
+ script.replace('$REACT_NATIVE_XCODE', () =>
124
+ // eslint-disable-next-line no-useless-escape
125
+ '\\"../node_modules/@sentry/cli/bin/sentry-cli react-native xcode $REACT_NATIVE_XCODE\\"') +
129
126
  '\n/bin/sh -c "$WITH_ENVIRONMENT ../node_modules/@sentry/react-native/scripts/collect-modules.sh"\n');
130
127
  }
131
128
  exports.addSentryWithCliToBundleShellScript = addSentryWithCliToBundleShellScript;
132
129
  function addDebugFilesUploadPhaseWithBundledScripts(
133
130
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
134
- xcodeProject, _a) {
135
- var debugFilesUploadPhaseExists = _a.debugFilesUploadPhaseExists;
131
+ xcodeProject, { debugFilesUploadPhaseExists }) {
136
132
  if (debugFilesUploadPhaseExists) {
137
- prompts_1.default.log.warn("Build phase ".concat(chalk_1.default.cyan('Upload Debug Symbols to Sentry'), " already exists."));
133
+ prompts_1.default.log.warn(`Build phase ${chalk_1.default.cyan('Upload Debug Symbols to Sentry')} already exists.`);
138
134
  return;
139
135
  }
140
136
  xcodeProject.addBuildPhase([], 'PBXShellScriptBuildPhase', 'Upload Debug Symbols to Sentry', null, {
141
137
  shellPath: '/bin/sh',
142
- shellScript: "/bin/sh ../node_modules/@sentry/react-native/scripts/sentry-xcode-debug-files.sh",
138
+ shellScript: `/bin/sh ../node_modules/@sentry/react-native/scripts/sentry-xcode-debug-files.sh`,
143
139
  });
144
- prompts_1.default.log.success("Added Build phase ".concat(chalk_1.default.cyan('Upload Debug Symbols to Sentry'), "."));
140
+ prompts_1.default.log.success(`Added Build phase ${chalk_1.default.cyan('Upload Debug Symbols to Sentry')}.`);
145
141
  }
146
142
  exports.addDebugFilesUploadPhaseWithBundledScripts = addDebugFilesUploadPhaseWithBundledScripts;
147
143
  function addDebugFilesUploadPhaseWithCli(
148
144
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
149
- xcodeProject, _a) {
150
- var debugFilesUploadPhaseExists = _a.debugFilesUploadPhaseExists;
145
+ xcodeProject, { debugFilesUploadPhaseExists }) {
151
146
  if (debugFilesUploadPhaseExists) {
152
- prompts_1.default.log.warn("Build phase ".concat(chalk_1.default.cyan('Upload Debug Symbols to Sentry'), " already exists."));
147
+ prompts_1.default.log.warn(`Build phase ${chalk_1.default.cyan('Upload Debug Symbols to Sentry')} already exists.`);
153
148
  return;
154
149
  }
155
150
  xcodeProject.addBuildPhase([], 'PBXShellScriptBuildPhase', 'Upload Debug Symbols to Sentry', null, {
156
151
  shellPath: '/bin/sh',
157
- shellScript: "\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nif [ -f \"$WITH_ENVIRONMENT\" ]; then\n . \"$WITH_ENVIRONMENT\"\nfi\nexport SENTRY_PROPERTIES=sentry.properties\n[ \"$SENTRY_INCLUDE_NATIVE_SOURCES\" = \"true\" ] && INCLUDE_SOURCES_FLAG=\"--include-sources\" || INCLUDE_SOURCES_FLAG=\"\"\n../node_modules/@sentry/cli/bin/sentry-cli debug-files upload \"$INCLUDE_SOURCES_FLAG\" \"$DWARF_DSYM_FOLDER_PATH\"\n",
152
+ shellScript: `
153
+ WITH_ENVIRONMENT="../node_modules/react-native/scripts/xcode/with-environment.sh"
154
+ if [ -f "$WITH_ENVIRONMENT" ]; then
155
+ . "$WITH_ENVIRONMENT"
156
+ fi
157
+ export SENTRY_PROPERTIES=sentry.properties
158
+ [ "$SENTRY_INCLUDE_NATIVE_SOURCES" = "true" ] && INCLUDE_SOURCES_FLAG="--include-sources" || INCLUDE_SOURCES_FLAG=""
159
+ ../node_modules/@sentry/cli/bin/sentry-cli debug-files upload "$INCLUDE_SOURCES_FLAG" "$DWARF_DSYM_FOLDER_PATH"
160
+ `,
158
161
  });
159
- prompts_1.default.log.success("Added Build phase ".concat(chalk_1.default.cyan('Upload Debug Symbols to Sentry'), "."));
162
+ prompts_1.default.log.success(`Added Build phase ${chalk_1.default.cyan('Upload Debug Symbols to Sentry')}.`);
160
163
  }
161
164
  exports.addDebugFilesUploadPhaseWithCli = addDebugFilesUploadPhaseWithCli;
162
165
  function unPatchDebugFilesUploadPhase(
163
166
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
167
  xcodeProject) {
165
- var buildPhasesMap = xcodeProject.hash.project.objects.PBXShellScriptBuildPhase || {};
168
+ const buildPhasesMap = xcodeProject.hash.project.objects.PBXShellScriptBuildPhase || {};
166
169
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
167
- var debugFilesUploadPhaseResult = findDebugFilesUploadPhase(buildPhasesMap);
170
+ const debugFilesUploadPhaseResult = findDebugFilesUploadPhase(buildPhasesMap);
168
171
  if (!debugFilesUploadPhaseResult) {
169
- prompts_1.default.log.success("Build phase ".concat(chalk_1.default.cyan('Upload Debug Symbols to Sentry'), " not found."));
172
+ prompts_1.default.log.success(`Build phase ${chalk_1.default.cyan('Upload Debug Symbols to Sentry')} not found.`);
170
173
  return;
171
174
  }
172
- var debugFilesUploadPhaseKey = debugFilesUploadPhaseResult[0];
173
- var firstTarget = xcodeProject.getFirstTarget().uuid;
174
- var nativeTargets = xcodeProject.hash.project.objects.PBXNativeTarget;
175
+ const [debugFilesUploadPhaseKey] = debugFilesUploadPhaseResult;
176
+ const firstTarget = xcodeProject.getFirstTarget().uuid;
177
+ const nativeTargets = xcodeProject.hash.project.objects.PBXNativeTarget;
175
178
  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
176
179
  delete buildPhasesMap[debugFilesUploadPhaseKey];
177
180
  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
178
- delete buildPhasesMap["".concat(debugFilesUploadPhaseKey, "_comment")];
179
- var phases = nativeTargets[firstTarget].buildPhases;
181
+ delete buildPhasesMap[`${debugFilesUploadPhaseKey}_comment`];
182
+ const phases = nativeTargets[firstTarget].buildPhases;
180
183
  if (phases) {
181
- for (var i = 0; i < phases.length; i++) {
184
+ for (let i = 0; i < phases.length; i++) {
182
185
  if (phases[i].value === debugFilesUploadPhaseKey) {
183
186
  phases.splice(i, 1);
184
187
  break;
185
188
  }
186
189
  }
187
190
  }
188
- prompts_1.default.log.success("Build phase ".concat(chalk_1.default.cyan('Upload Debug Symbols to Sentry'), " removed successfully."));
191
+ prompts_1.default.log.success(`Build phase ${chalk_1.default.cyan('Upload Debug Symbols to Sentry')} removed successfully.`);
189
192
  }
190
193
  exports.unPatchDebugFilesUploadPhase = unPatchDebugFilesUploadPhase;
191
194
  function findDebugFilesUploadPhase(buildPhasesMap) {
192
- return Object.entries(buildPhasesMap).find(function (_a) {
193
- var _ = _a[0], buildPhase = _a[1];
194
- var containsCliDebugUpload = typeof buildPhase !== 'string' &&
195
+ return Object.entries(buildPhasesMap).find(([_, buildPhase]) => {
196
+ const containsCliDebugUpload = typeof buildPhase !== 'string' &&
195
197
  !!buildPhase.shellScript.match(/sentry-cli\s+(upload-dsym|debug-files upload)\b/);
196
- var containsBundledDebugUpload = typeof buildPhase !== 'string' &&
198
+ const containsBundledDebugUpload = typeof buildPhase !== 'string' &&
197
199
  buildPhase.shellScript.includes('sentry-xcode-debug-files.sh');
198
200
  return containsCliDebugUpload || containsBundledDebugUpload;
199
201
  });
@@ -201,13 +203,13 @@ function findDebugFilesUploadPhase(buildPhasesMap) {
201
203
  exports.findDebugFilesUploadPhase = findDebugFilesUploadPhase;
202
204
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
203
205
  function writeXcodeProject(xcodeProjectPath, xcodeProject) {
204
- var newContent = xcodeProject.writeSync();
205
- var currentContent = fs.readFileSync(xcodeProjectPath, 'utf-8');
206
+ const newContent = xcodeProject.writeSync();
207
+ const currentContent = fs.readFileSync(xcodeProjectPath, 'utf-8');
206
208
  if (newContent === currentContent) {
207
209
  return;
208
210
  }
209
211
  fs.writeFileSync(xcodeProjectPath, newContent, 'utf-8');
210
- prompts_1.default.log.success(chalk_1.default.green("Xcode project ".concat(chalk_1.default.cyan(xcodeProjectPath), " changes saved.")));
212
+ prompts_1.default.log.success(chalk_1.default.green(`Xcode project ${chalk_1.default.cyan(xcodeProjectPath)} changes saved.`));
211
213
  }
212
214
  exports.writeXcodeProject = writeXcodeProject;
213
215
  //# sourceMappingURL=xcode.js.map