@sentry/wizard 4.6.0 → 4.8.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 (218) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +19 -19
  3. package/dist/bin.js +9 -0
  4. package/dist/bin.js.map +1 -1
  5. package/dist/e2e-tests/tests/angular-17.test.d.ts +1 -0
  6. package/dist/e2e-tests/tests/angular-17.test.js +196 -0
  7. package/dist/e2e-tests/tests/angular-17.test.js.map +1 -0
  8. package/dist/e2e-tests/tests/angular-19.test.d.ts +1 -0
  9. package/dist/e2e-tests/tests/angular-19.test.js +194 -0
  10. package/dist/e2e-tests/tests/angular-19.test.js.map +1 -0
  11. package/dist/e2e-tests/tests/expo.test.d.ts +1 -0
  12. package/dist/e2e-tests/tests/expo.test.js +95 -0
  13. package/dist/e2e-tests/tests/expo.test.js.map +1 -0
  14. package/dist/e2e-tests/tests/flutter.test.js +16 -16
  15. package/dist/e2e-tests/tests/flutter.test.js.map +1 -1
  16. package/dist/e2e-tests/tests/help-message.test.d.ts +1 -0
  17. package/dist/e2e-tests/tests/help-message.test.js +56 -0
  18. package/dist/e2e-tests/tests/help-message.test.js.map +1 -0
  19. package/dist/e2e-tests/tests/nextjs-14.test.js +15 -15
  20. package/dist/e2e-tests/tests/nextjs-14.test.js.map +1 -1
  21. package/dist/e2e-tests/tests/nextjs-15.test.js +15 -15
  22. package/dist/e2e-tests/tests/nextjs-15.test.js.map +1 -1
  23. package/dist/e2e-tests/tests/nuxt-3.test.js +13 -12
  24. package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
  25. package/dist/e2e-tests/tests/nuxt-4.test.js +13 -12
  26. package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
  27. package/dist/e2e-tests/tests/react-native.test.d.ts +1 -0
  28. package/dist/e2e-tests/tests/react-native.test.js +97 -0
  29. package/dist/e2e-tests/tests/react-native.test.js.map +1 -0
  30. package/dist/e2e-tests/tests/remix.test.js +24 -24
  31. package/dist/e2e-tests/tests/remix.test.js.map +1 -1
  32. package/dist/e2e-tests/tests/sveltekit.test.js +22 -22
  33. package/dist/e2e-tests/tests/sveltekit.test.js.map +1 -1
  34. package/dist/e2e-tests/utils/index.d.ts +7 -0
  35. package/dist/e2e-tests/utils/index.js +33 -12
  36. package/dist/e2e-tests/utils/index.js.map +1 -1
  37. package/dist/lib/Constants.d.ts +6 -1
  38. package/dist/lib/Constants.js +3 -0
  39. package/dist/lib/Constants.js.map +1 -1
  40. package/dist/lib/Helper/Logging.d.ts +1 -1
  41. package/dist/lib/Helper/Logging.js.map +1 -1
  42. package/dist/lib/Helper/__tests__/File.js +9 -9
  43. package/dist/lib/Helper/__tests__/File.js.map +1 -1
  44. package/dist/lib/Helper/__tests__/MergeConfig.js +17 -17
  45. package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
  46. package/dist/lib/Helper/__tests__/SentryCli.js +23 -22
  47. package/dist/lib/Helper/__tests__/SentryCli.js.map +1 -1
  48. package/dist/lib/Setup.d.ts +2 -1
  49. package/dist/lib/Setup.js +12 -2
  50. package/dist/lib/Setup.js.map +1 -1
  51. package/dist/lib/Steps/BaseStep.d.ts +1 -1
  52. package/dist/lib/Steps/BaseStep.js.map +1 -1
  53. package/dist/lib/Steps/Integrations/Cordova.js.map +1 -1
  54. package/dist/lib/Steps/Welcome.js +5 -0
  55. package/dist/lib/Steps/Welcome.js.map +1 -1
  56. package/dist/lib/__tests__/Env.js +4 -3
  57. package/dist/lib/__tests__/Env.js.map +1 -1
  58. package/dist/src/angular/angular-wizard.d.ts +3 -0
  59. package/dist/src/angular/angular-wizard.js +186 -0
  60. package/dist/src/angular/angular-wizard.js.map +1 -0
  61. package/dist/src/angular/codemods/app-config.d.ts +3 -0
  62. package/dist/src/angular/codemods/app-config.js +211 -0
  63. package/dist/src/angular/codemods/app-config.js.map +1 -0
  64. package/dist/src/angular/codemods/main.d.ts +20 -0
  65. package/dist/src/angular/codemods/main.js +62 -0
  66. package/dist/src/angular/codemods/main.js.map +1 -0
  67. package/dist/src/angular/codemods/sourcemaps.d.ts +21 -0
  68. package/dist/src/angular/codemods/sourcemaps.js +94 -0
  69. package/dist/src/angular/codemods/sourcemaps.js.map +1 -0
  70. package/dist/src/angular/example-component.d.ts +8 -0
  71. package/dist/src/angular/example-component.js +286 -0
  72. package/dist/src/angular/example-component.js.map +1 -0
  73. package/dist/src/angular/sdk-setup.d.ts +6 -0
  74. package/dist/src/angular/sdk-setup.js +99 -0
  75. package/dist/src/angular/sdk-setup.js.map +1 -0
  76. package/dist/src/apple/apple-wizard.js +24 -64
  77. package/dist/src/apple/apple-wizard.js.map +1 -1
  78. package/dist/src/apple/configure-package-manager.d.ts +5 -0
  79. package/dist/src/apple/configure-package-manager.js +68 -0
  80. package/dist/src/apple/configure-package-manager.js.map +1 -0
  81. package/dist/src/apple/configure-sentry-cli.d.ts +4 -0
  82. package/dist/src/apple/configure-sentry-cli.js +47 -0
  83. package/dist/src/apple/configure-sentry-cli.js.map +1 -0
  84. package/dist/src/apple/configure-xcode-project.d.ts +8 -0
  85. package/dist/src/apple/configure-xcode-project.js +11 -0
  86. package/dist/src/apple/configure-xcode-project.js.map +1 -0
  87. package/dist/src/apple/inject-code-snippet.d.ts +6 -0
  88. package/dist/src/apple/inject-code-snippet.js +54 -0
  89. package/dist/src/apple/inject-code-snippet.js.map +1 -0
  90. package/dist/src/apple/templates.js +11 -7
  91. package/dist/src/apple/templates.js.map +1 -1
  92. package/dist/src/apple/xcode-manager.js +3 -6
  93. package/dist/src/apple/xcode-manager.js.map +1 -1
  94. package/dist/src/flutter/flutter-wizard.js +10 -2
  95. package/dist/src/flutter/flutter-wizard.js.map +1 -1
  96. package/dist/src/nextjs/nextjs-wizard.js +26 -12
  97. package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
  98. package/dist/src/nextjs/templates.js +59 -8
  99. package/dist/src/nextjs/templates.js.map +1 -1
  100. package/dist/src/nuxt/templates.js +30 -0
  101. package/dist/src/nuxt/templates.js.map +1 -1
  102. package/dist/src/react-native/expo-metro.js +4 -1
  103. package/dist/src/react-native/expo-metro.js.map +1 -1
  104. package/dist/src/react-native/expo.js +5 -1
  105. package/dist/src/react-native/expo.js.map +1 -1
  106. package/dist/src/react-native/javascript.d.ts +6 -4
  107. package/dist/src/react-native/javascript.js +33 -10
  108. package/dist/src/react-native/javascript.js.map +1 -1
  109. package/dist/src/react-native/metro.js +8 -2
  110. package/dist/src/react-native/metro.js.map +1 -1
  111. package/dist/src/react-native/react-native-wizard.d.ts +4 -0
  112. package/dist/src/react-native/react-native-wizard.js +30 -5
  113. package/dist/src/react-native/react-native-wizard.js.map +1 -1
  114. package/dist/src/react-native/xcode.d.ts +7 -3
  115. package/dist/src/react-native/xcode.js +68 -20
  116. package/dist/src/react-native/xcode.js.map +1 -1
  117. package/dist/src/remix/sdk-example.js +30 -1
  118. package/dist/src/remix/sdk-example.js.map +1 -1
  119. package/dist/src/remix/sdk-setup.js +11 -5
  120. package/dist/src/remix/sdk-setup.js.map +1 -1
  121. package/dist/src/run.d.ts +1 -1
  122. package/dist/src/run.js +7 -2
  123. package/dist/src/run.js.map +1 -1
  124. package/dist/src/sourcemaps/sourcemaps-wizard.d.ts +1 -1
  125. package/dist/src/sourcemaps/sourcemaps-wizard.js +35 -20
  126. package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
  127. package/dist/src/sourcemaps/tools/angular.d.ts +1 -0
  128. package/dist/src/sourcemaps/tools/angular.js +7 -7
  129. package/dist/src/sourcemaps/tools/angular.js.map +1 -1
  130. package/dist/src/sourcemaps/tools/sentry-cli.d.ts +5 -1
  131. package/dist/src/sourcemaps/tools/sentry-cli.js +6 -3
  132. package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
  133. package/dist/src/sourcemaps/tools/tsc.js +5 -1
  134. package/dist/src/sourcemaps/tools/tsc.js.map +1 -1
  135. package/dist/src/sourcemaps/tools/vite.js +4 -1
  136. package/dist/src/sourcemaps/tools/vite.js.map +1 -1
  137. package/dist/src/sourcemaps/tools/webpack.js +4 -1
  138. package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
  139. package/dist/src/sveltekit/sdk-example.js +1 -1
  140. package/dist/src/sveltekit/sdk-example.js.map +1 -1
  141. package/dist/src/sveltekit/sveltekit-wizard.js +2 -2
  142. package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
  143. package/dist/src/sveltekit/templates.js +28 -1
  144. package/dist/src/sveltekit/templates.js.map +1 -1
  145. package/dist/src/utils/clack/index.d.ts +11 -3
  146. package/dist/src/utils/clack/index.js +12 -4
  147. package/dist/src/utils/clack/index.js.map +1 -1
  148. package/dist/src/utils/package-manager.d.ts +2 -0
  149. package/dist/src/utils/package-manager.js +55 -5
  150. package/dist/src/utils/package-manager.js.map +1 -1
  151. package/dist/src/version.d.ts +1 -1
  152. package/dist/src/version.js +1 -1
  153. package/dist/src/version.js.map +1 -1
  154. package/dist/test/android/code-tools.test.js +13 -12
  155. package/dist/test/android/code-tools.test.js.map +1 -1
  156. package/dist/test/angular/angular-wizard.test.d.ts +1 -0
  157. package/dist/test/angular/angular-wizard.test.js +27 -0
  158. package/dist/test/angular/angular-wizard.test.js.map +1 -0
  159. package/dist/test/angular/codemods/sourcemaps.test.d.ts +1 -0
  160. package/dist/test/angular/codemods/sourcemaps.test.js +237 -0
  161. package/dist/test/angular/codemods/sourcemaps.test.js.map +1 -0
  162. package/dist/test/angular/example-component.test.d.ts +1 -0
  163. package/dist/test/angular/example-component.test.js +105 -0
  164. package/dist/test/angular/example-component.test.js.map +1 -0
  165. package/dist/test/apple/cocoapod.test.js +77 -72
  166. package/dist/test/apple/cocoapod.test.js.map +1 -1
  167. package/dist/test/apple/code-tools.test.js +173 -166
  168. package/dist/test/apple/code-tools.test.js.map +1 -1
  169. package/dist/test/apple/fastfile.test.js +86 -83
  170. package/dist/test/apple/fastfile.test.js.map +1 -1
  171. package/dist/test/apple/templates.test.js +32 -27
  172. package/dist/test/apple/templates.test.js.map +1 -1
  173. package/dist/test/apple/xcode-manager.test.js +182 -183
  174. package/dist/test/apple/xcode-manager.test.js.map +1 -1
  175. package/dist/test/flutter/code-tools.test.js +29 -28
  176. package/dist/test/flutter/code-tools.test.js.map +1 -1
  177. package/dist/test/flutter/templates.test.js +15 -14
  178. package/dist/test/flutter/templates.test.js.map +1 -1
  179. package/dist/test/nextjs/templates.test.js +43 -36
  180. package/dist/test/nextjs/templates.test.js.map +1 -1
  181. package/dist/test/nuxt/templates.test.js +25 -24
  182. package/dist/test/nuxt/templates.test.js.map +1 -1
  183. package/dist/test/react-native/expo-metro.test.js +11 -10
  184. package/dist/test/react-native/expo-metro.test.js.map +1 -1
  185. package/dist/test/react-native/expo.test.js +11 -10
  186. package/dist/test/react-native/expo.test.js.map +1 -1
  187. package/dist/test/react-native/gradle.test.js +27 -26
  188. package/dist/test/react-native/gradle.test.js.map +1 -1
  189. package/dist/test/react-native/javascript.test.js +108 -58
  190. package/dist/test/react-native/javascript.test.js.map +1 -1
  191. package/dist/test/react-native/metro.test.js +178 -64
  192. package/dist/test/react-native/metro.test.js.map +1 -1
  193. package/dist/test/react-native/xcode.test.js +138 -37
  194. package/dist/test/react-native/xcode.test.js.map +1 -1
  195. package/dist/test/remix/client-entry.test.js +18 -17
  196. package/dist/test/remix/client-entry.test.js.map +1 -1
  197. package/dist/test/remix/server-instrumentation.test.js +6 -5
  198. package/dist/test/remix/server-instrumentation.test.js.map +1 -1
  199. package/dist/test/sourcemaps/tools/sentry-cli.test.js +20 -20
  200. package/dist/test/sourcemaps/tools/sentry-cli.test.js.map +1 -1
  201. package/dist/test/sourcemaps/tools/tsc.test.js +13 -14
  202. package/dist/test/sourcemaps/tools/tsc.test.js.map +1 -1
  203. package/dist/test/sourcemaps/tools/vite.test.js +13 -14
  204. package/dist/test/sourcemaps/tools/vite.test.js.map +1 -1
  205. package/dist/test/sourcemaps/tools/webpack.test.js +19 -20
  206. package/dist/test/sourcemaps/tools/webpack.test.js.map +1 -1
  207. package/dist/test/sveltekit/templates.test.js +13 -12
  208. package/dist/test/sveltekit/templates.test.js.map +1 -1
  209. package/dist/test/utils/ast-utils.test.js +45 -44
  210. package/dist/test/utils/ast-utils.test.js.map +1 -1
  211. package/dist/test/utils/clack/index.test.js +140 -144
  212. package/dist/test/utils/clack/index.test.js.map +1 -1
  213. package/dist/test/utils/package-manager.test.js +8 -7
  214. package/dist/test/utils/package-manager.test.js.map +1 -1
  215. package/package.json +10 -38
  216. package/dist/e2e-tests/jest.config.d.ts +0 -17
  217. package/dist/e2e-tests/jest.config.js +0 -23
  218. package/dist/e2e-tests/jest.config.js.map +0 -1
@@ -1,32 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
3
4
  const code_tools_1 = require("../../src/android/code-tools");
4
- describe('code-tools', () => {
5
- describe('getLastImportLineLocation', () => {
6
- it('returns proper line index', () => {
5
+ (0, vitest_1.describe)('code-tools', () => {
6
+ (0, vitest_1.describe)('getLastImportLineLocation', () => {
7
+ (0, vitest_1.it)('returns proper line index', () => {
7
8
  const code = `import a.b.c;\n` + `//<insert-location>\n` + `class X {}`;
8
- expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
9
+ (0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
9
10
  });
10
- it('returns proper line index when static import is used', () => {
11
+ (0, vitest_1.it)('returns proper line index when static import is used', () => {
11
12
  const code = `import static a.b.c;\n` + `//<insert-location>\n` + `class X {}`;
12
- expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
13
+ (0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
13
14
  });
14
- it('returns proper line index when wildcard import is used', () => {
15
+ (0, vitest_1.it)('returns proper line index when wildcard import is used', () => {
15
16
  const code = `import a.b.*\n` + `//<insert-location>\n` + `class X {}`;
16
- expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
17
+ (0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
17
18
  });
18
- it('returns proper line index when alias import is used', () => {
19
+ (0, vitest_1.it)('returns proper line index when alias import is used', () => {
19
20
  const code = `import static a.b.c as d\n` + `//<insert-location>\n` + `class X {}`;
20
- expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
21
+ (0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
21
22
  });
22
- it('returns proper line index when multiple imports are present', () => {
23
+ (0, vitest_1.it)('returns proper line index when multiple imports are present', () => {
23
24
  const code = `import static a.b.c as d\n` +
24
25
  `import a.b.*\n` +
25
26
  `import static a.b.c;\n` +
26
27
  `import a.b.c;\n` +
27
28
  `//<insert-location>\n` +
28
29
  `class X {}`;
29
- expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
30
+ (0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
30
31
  });
31
32
  });
32
33
  });
@@ -1 +1 @@
1
- {"version":3,"file":"code-tools.test.js","sourceRoot":"","sources":["../../../test/android/code-tools.test.ts"],"names":[],"mappings":";;AAAA,6DAAyE;AAEzE,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACxE,MAAM,CAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,IAAI,GACR,wBAAwB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACpE,MAAM,CAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,IAAI,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACvE,MAAM,CAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,IAAI,GACR,4BAA4B,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACxE,MAAM,CAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,IAAI,GACR,4BAA4B;gBAC5B,gBAAgB;gBAChB,wBAAwB;gBACxB,iBAAiB;gBACjB,uBAAuB;gBACvB,YAAY,CAAC;YACf,MAAM,CAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { getLastImportLineLocation } from '../../src/android/code-tools';\n\ndescribe('code-tools', () => {\n describe('getLastImportLineLocation', () => {\n it('returns proper line index', () => {\n const code = `import a.b.c;\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when static import is used', () => {\n const code =\n `import static a.b.c;\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when wildcard import is used', () => {\n const code = `import a.b.*\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when alias import is used', () => {\n const code =\n `import static a.b.c as d\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when multiple imports are present', () => {\n const code =\n `import static a.b.c as d\\n` +\n `import a.b.*\\n` +\n `import static a.b.c;\\n` +\n `import a.b.c;\\n` +\n `//<insert-location>\\n` +\n `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n });\n});\n"]}
1
+ {"version":3,"file":"code-tools.test.js","sourceRoot":"","sources":["../../../test/android/code-tools.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,6DAAyE;AAEzE,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACxE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,IAAI,GACR,wBAAwB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACpE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,IAAI,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACvE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,IAAI,GACR,4BAA4B,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACxE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,IAAI,GACR,4BAA4B;gBAC5B,gBAAgB;gBAChB,wBAAwB;gBACxB,iBAAiB;gBACjB,uBAAuB;gBACvB,YAAY,CAAC;YACf,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it } from 'vitest';\nimport { getLastImportLineLocation } from '../../src/android/code-tools';\n\ndescribe('code-tools', () => {\n describe('getLastImportLineLocation', () => {\n it('returns proper line index', () => {\n const code = `import a.b.c;\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when static import is used', () => {\n const code =\n `import static a.b.c;\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when wildcard import is used', () => {\n const code = `import a.b.*\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when alias import is used', () => {\n const code =\n `import static a.b.c as d\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when multiple imports are present', () => {\n const code =\n `import static a.b.c as d\\n` +\n `import a.b.*\\n` +\n `import static a.b.c;\\n` +\n `import a.b.c;\\n` +\n `//<insert-location>\\n` +\n `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const angular_wizard_1 = require("../../src/angular/angular-wizard");
5
+ (0, vitest_1.describe)('buildOutroMessage', () => {
6
+ (0, vitest_1.it)('returns the correct outro message if example component was created', () => {
7
+ (0, vitest_1.expect)((0, angular_wizard_1.buildOutroMessage)(true)).toMatchInlineSnapshot(`
8
+ "
9
+ Successfully installed the Sentry Angular SDK!
10
+
11
+ You can validate your setup by starting your dev environment (ng serve) and throwing an error in the example component.
12
+
13
+ Check out the SDK documentation for further configuration:
14
+ https://docs.sentry.io/platforms/javascript/guides/angular/"
15
+ `);
16
+ });
17
+ (0, vitest_1.it)('returns the correct outro message if example component creation was skipped', () => {
18
+ (0, vitest_1.expect)((0, angular_wizard_1.buildOutroMessage)(false)).toMatchInlineSnapshot(`
19
+ "
20
+ Successfully installed the Sentry Angular SDK!
21
+
22
+ Check out the SDK documentation for further configuration:
23
+ https://docs.sentry.io/platforms/javascript/guides/angular/"
24
+ `);
25
+ });
26
+ });
27
+ //# sourceMappingURL=angular-wizard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-wizard.test.js","sourceRoot":"","sources":["../../../test/angular/angular-wizard.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAE9C,qEAAqE;AAErE,IAAA,iBAAQ,EAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAA,WAAE,EAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,IAAA,eAAM,EAAC,IAAA,kCAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;KAQrD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAA,WAAE,EAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,IAAA,eAAM,EAAC,IAAA,kCAAiB,EAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;KAMtD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it } from 'vitest';\n\nimport { buildOutroMessage } from '../../src/angular/angular-wizard';\n\ndescribe('buildOutroMessage', () => {\n it('returns the correct outro message if example component was created', () => {\n expect(buildOutroMessage(true)).toMatchInlineSnapshot(`\n \"\n Successfully installed the Sentry Angular SDK!\n\n You can validate your setup by starting your dev environment (ng serve) and throwing an error in the example component.\n\n Check out the SDK documentation for further configuration:\n https://docs.sentry.io/platforms/javascript/guides/angular/\"\n `);\n });\n it('returns the correct outro message if example component creation was skipped', () => {\n expect(buildOutroMessage(false)).toMatchInlineSnapshot(`\n \"\n Successfully installed the Sentry Angular SDK!\n\n Check out the SDK documentation for further configuration:\n https://docs.sentry.io/platforms/javascript/guides/angular/\"\n `);\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const vitest_1 = require("vitest");
27
+ const sourcemaps_1 = require("../../../src/angular/codemods/sourcemaps");
28
+ const AngularSourceMapsWizard = __importStar(require("../../../src/sourcemaps/tools/angular"));
29
+ const { readFileSyncMock, writeFileSyncMock } = vitest_1.vi.hoisted(() => {
30
+ return {
31
+ readFileSyncMock: vitest_1.vi.fn(),
32
+ writeFileSyncMock: vitest_1.vi.fn(),
33
+ };
34
+ });
35
+ vitest_1.vi.mock('fs', async () => {
36
+ return {
37
+ ...(await vitest_1.vi.importActual('fs')),
38
+ readFileSync: readFileSyncMock,
39
+ writeFileSync: writeFileSyncMock,
40
+ };
41
+ });
42
+ (0, vitest_1.describe)('addSourcemapEntryToAngularJSON', () => {
43
+ const configureAngularSourcemapGenerationFlowSpy = vitest_1.vi
44
+ .spyOn(AngularSourceMapsWizard, 'configureAngularSourcemapGenerationFlow')
45
+ .mockImplementation(() => Promise.resolve());
46
+ (0, vitest_1.beforeEach)(() => {
47
+ vitest_1.vi.clearAllMocks();
48
+ });
49
+ (0, vitest_1.it)('reads and writes the `angular.json` file correctly', async () => {
50
+ const angularJsonPath = 'angular.json';
51
+ const angularJsonContent = JSON.stringify({
52
+ projects: {
53
+ project1: {
54
+ architect: {
55
+ build: {
56
+ configurations: {
57
+ production: {
58
+ someKey: 'someValue',
59
+ },
60
+ },
61
+ },
62
+ },
63
+ },
64
+ },
65
+ });
66
+ readFileSyncMock.mockReturnValue(angularJsonContent);
67
+ await (0, sourcemaps_1.addSourcemapEntryToAngularJSON)();
68
+ (0, vitest_1.expect)(readFileSyncMock).toHaveBeenCalledWith(vitest_1.expect.stringContaining(angularJsonPath), 'utf-8');
69
+ (0, vitest_1.expect)(writeFileSyncMock).toHaveBeenCalledWith(vitest_1.expect.stringContaining(angularJsonPath), JSON.stringify({
70
+ projects: {
71
+ project1: {
72
+ architect: {
73
+ build: {
74
+ configurations: {
75
+ production: {
76
+ someKey: 'someValue',
77
+ sourceMap: true,
78
+ },
79
+ },
80
+ },
81
+ },
82
+ },
83
+ },
84
+ }, null, 2));
85
+ });
86
+ (0, vitest_1.it)('falls back to printing copy/paste instructions when reading fails', async () => {
87
+ readFileSyncMock.mockImplementation(() => {
88
+ throw new Error('File not found');
89
+ });
90
+ await (0, sourcemaps_1.addSourcemapEntryToAngularJSON)();
91
+ (0, vitest_1.expect)(configureAngularSourcemapGenerationFlowSpy).toHaveBeenCalledOnce();
92
+ (0, vitest_1.expect)(writeFileSyncMock).not.toHaveBeenCalled();
93
+ });
94
+ (0, vitest_1.it)('falls back to printing copy/paste instructions when writing fails', async () => {
95
+ const angularJsonContent = JSON.stringify({
96
+ projects: {
97
+ project1: {},
98
+ },
99
+ });
100
+ readFileSyncMock.mockReturnValue(angularJsonContent);
101
+ writeFileSyncMock.mockImplementation(() => {
102
+ throw new Error('Write failed');
103
+ });
104
+ await (0, sourcemaps_1.addSourcemapEntryToAngularJSON)();
105
+ (0, vitest_1.expect)(configureAngularSourcemapGenerationFlowSpy).toHaveBeenCalledOnce();
106
+ (0, vitest_1.expect)(writeFileSyncMock).toHaveBeenCalled();
107
+ });
108
+ (0, vitest_1.it)('falls back to printing copy/paste instructions when angular.json` has no projects', async () => {
109
+ const angularJsonContent = JSON.stringify({
110
+ projects: {},
111
+ });
112
+ readFileSyncMock.mockReturnValue(angularJsonContent);
113
+ await (0, sourcemaps_1.addSourcemapEntryToAngularJSON)();
114
+ (0, vitest_1.expect)(configureAngularSourcemapGenerationFlowSpy).toHaveBeenCalledOnce();
115
+ (0, vitest_1.expect)(writeFileSyncMock).not.toHaveBeenCalled();
116
+ });
117
+ });
118
+ (0, vitest_1.describe)('addSourceMapsSetting', () => {
119
+ (0, vitest_1.it)('adds sourceMap setting to angular.json', () => {
120
+ const angularJson = {
121
+ projects: {
122
+ project1: {
123
+ architect: {
124
+ build: {
125
+ configurations: {
126
+ production: {},
127
+ },
128
+ },
129
+ },
130
+ },
131
+ project2: {
132
+ architect: {},
133
+ },
134
+ },
135
+ };
136
+ const updatedAngularJson = (0, sourcemaps_1.addSourceMapsSetting)(angularJson);
137
+ (0, vitest_1.expect)(updatedAngularJson).toEqual({
138
+ projects: {
139
+ project1: {
140
+ architect: {
141
+ build: {
142
+ configurations: {
143
+ production: { sourceMap: true },
144
+ },
145
+ },
146
+ },
147
+ },
148
+ project2: {
149
+ architect: {
150
+ build: {
151
+ configurations: {
152
+ production: {
153
+ sourceMap: true,
154
+ },
155
+ },
156
+ },
157
+ },
158
+ },
159
+ },
160
+ });
161
+ });
162
+ (0, vitest_1.it)('returns `undefined` if no projects are found', () => {
163
+ const angularJson = {};
164
+ const updatedAngularJson = (0, sourcemaps_1.addSourceMapsSetting)(angularJson);
165
+ (0, vitest_1.expect)(updatedAngularJson).toBeUndefined();
166
+ });
167
+ (0, vitest_1.it)('returns `undefined` if projects have no architect', () => {
168
+ const angularJson = {
169
+ projects: {},
170
+ };
171
+ const updatedAngularJson = (0, sourcemaps_1.addSourceMapsSetting)(angularJson);
172
+ (0, vitest_1.expect)(updatedAngularJson).toBeUndefined();
173
+ });
174
+ vitest_1.it.each([
175
+ {
176
+ projects: {
177
+ project1: {
178
+ architect: {
179
+ build: {
180
+ configurations: {
181
+ production: {},
182
+ },
183
+ },
184
+ },
185
+ },
186
+ },
187
+ },
188
+ {
189
+ projects: {
190
+ project1: {
191
+ architect: {
192
+ build: {
193
+ configurations: {},
194
+ },
195
+ },
196
+ },
197
+ },
198
+ },
199
+ {
200
+ projects: {
201
+ project1: {
202
+ architect: {
203
+ build: {},
204
+ },
205
+ },
206
+ },
207
+ },
208
+ {
209
+ projects: {
210
+ project1: {
211
+ architect: {},
212
+ },
213
+ },
214
+ },
215
+ {
216
+ projects: {
217
+ project1: {},
218
+ },
219
+ },
220
+ ])('handles incomplete project declarations (%s)', (angularJson) => {
221
+ const updatedAngularJson = (0, sourcemaps_1.addSourceMapsSetting)(angularJson);
222
+ (0, vitest_1.expect)(updatedAngularJson).toEqual({
223
+ projects: {
224
+ project1: {
225
+ architect: {
226
+ build: {
227
+ configurations: {
228
+ production: { sourceMap: true },
229
+ },
230
+ },
231
+ },
232
+ },
233
+ },
234
+ });
235
+ });
236
+ });
237
+ //# sourceMappingURL=sourcemaps.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourcemaps.test.js","sourceRoot":"","sources":["../../../../test/angular/codemods/sourcemaps.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, vi, expect, beforeEach } from 'vitest';\nimport {\n addSourcemapEntryToAngularJSON,\n addSourceMapsSetting,\n} from '../../../src/angular/codemods/sourcemaps';\n\nimport * as AngularSourceMapsWizard from '../../../src/sourcemaps/tools/angular';\n\nconst { readFileSyncMock, writeFileSyncMock } = vi.hoisted(() => {\n return {\n readFileSyncMock: vi.fn(),\n writeFileSyncMock: vi.fn(),\n };\n});\n\nvi.mock('fs', async () => {\n return {\n ...(await vi.importActual('fs')),\n readFileSync: readFileSyncMock,\n writeFileSync: writeFileSyncMock,\n };\n});\n\ndescribe('addSourcemapEntryToAngularJSON', () => {\n const configureAngularSourcemapGenerationFlowSpy = vi\n .spyOn(AngularSourceMapsWizard, 'configureAngularSourcemapGenerationFlow')\n .mockImplementation(() => Promise.resolve());\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it('reads and writes the `angular.json` file correctly', async () => {\n const angularJsonPath = 'angular.json';\n const angularJsonContent = JSON.stringify({\n projects: {\n project1: {\n architect: {\n build: {\n configurations: {\n production: {\n someKey: 'someValue',\n },\n },\n },\n },\n },\n },\n });\n\n readFileSyncMock.mockReturnValue(angularJsonContent);\n\n await addSourcemapEntryToAngularJSON();\n\n expect(readFileSyncMock).toHaveBeenCalledWith(\n expect.stringContaining(angularJsonPath),\n 'utf-8',\n );\n expect(writeFileSyncMock).toHaveBeenCalledWith(\n expect.stringContaining(angularJsonPath),\n JSON.stringify(\n {\n projects: {\n project1: {\n architect: {\n build: {\n configurations: {\n production: {\n someKey: 'someValue',\n sourceMap: true,\n },\n },\n },\n },\n },\n },\n },\n null,\n 2,\n ),\n );\n });\n\n it('falls back to printing copy/paste instructions when reading fails', async () => {\n readFileSyncMock.mockImplementation(() => {\n throw new Error('File not found');\n });\n\n await addSourcemapEntryToAngularJSON();\n\n expect(configureAngularSourcemapGenerationFlowSpy).toHaveBeenCalledOnce();\n expect(writeFileSyncMock).not.toHaveBeenCalled();\n });\n\n it('falls back to printing copy/paste instructions when writing fails', async () => {\n const angularJsonContent = JSON.stringify({\n projects: {\n project1: {},\n },\n });\n\n readFileSyncMock.mockReturnValue(angularJsonContent);\n writeFileSyncMock.mockImplementation(() => {\n throw new Error('Write failed');\n });\n\n await addSourcemapEntryToAngularJSON();\n\n expect(configureAngularSourcemapGenerationFlowSpy).toHaveBeenCalledOnce();\n expect(writeFileSyncMock).toHaveBeenCalled();\n });\n\n it('falls back to printing copy/paste instructions when angular.json` has no projects', async () => {\n const angularJsonContent = JSON.stringify({\n projects: {},\n });\n\n readFileSyncMock.mockReturnValue(angularJsonContent);\n\n await addSourcemapEntryToAngularJSON();\n\n expect(configureAngularSourcemapGenerationFlowSpy).toHaveBeenCalledOnce();\n expect(writeFileSyncMock).not.toHaveBeenCalled();\n });\n});\n\ndescribe('addSourceMapsSetting', () => {\n it('adds sourceMap setting to angular.json', () => {\n const angularJson = {\n projects: {\n project1: {\n architect: {\n build: {\n configurations: {\n production: {},\n },\n },\n },\n },\n project2: {\n architect: {},\n },\n },\n };\n\n const updatedAngularJson = addSourceMapsSetting(angularJson);\n\n expect(updatedAngularJson).toEqual({\n projects: {\n project1: {\n architect: {\n build: {\n configurations: {\n production: { sourceMap: true },\n },\n },\n },\n },\n project2: {\n architect: {\n build: {\n configurations: {\n production: {\n sourceMap: true,\n },\n },\n },\n },\n },\n },\n });\n });\n\n it('returns `undefined` if no projects are found', () => {\n const angularJson = {};\n\n const updatedAngularJson = addSourceMapsSetting(angularJson);\n\n expect(updatedAngularJson).toBeUndefined();\n });\n\n it('returns `undefined` if projects have no architect', () => {\n const angularJson = {\n projects: {},\n };\n\n const updatedAngularJson = addSourceMapsSetting(angularJson);\n\n expect(updatedAngularJson).toBeUndefined();\n });\n\n it.each([\n {\n projects: {\n project1: {\n architect: {\n build: {\n configurations: {\n production: {},\n },\n },\n },\n },\n },\n },\n {\n projects: {\n project1: {\n architect: {\n build: {\n configurations: {},\n },\n },\n },\n },\n },\n {\n projects: {\n project1: {\n architect: {\n build: {},\n },\n },\n },\n },\n {\n projects: {\n project1: {\n architect: {},\n },\n },\n },\n {\n projects: {\n project1: {},\n },\n },\n ])('handles incomplete project declarations (%s)', (angularJson) => {\n const updatedAngularJson = addSourceMapsSetting(angularJson);\n\n expect(updatedAngularJson).toEqual({\n projects: {\n project1: {\n architect: {\n build: {\n configurations: {\n production: { sourceMap: true },\n },\n },\n },\n },\n },\n });\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const vitest_1 = require("vitest");
27
+ const example_component_1 = require("../../src/angular/example-component");
28
+ const clackUtils = __importStar(require("../../src/utils/clack"));
29
+ const fsMocks = vitest_1.vi.hoisted(() => ({
30
+ existsSyncMock: vitest_1.vi.fn(() => true),
31
+ writeFileSyncMock: vitest_1.vi.fn(),
32
+ mkdirSyncMock: vitest_1.vi.fn(),
33
+ }));
34
+ vitest_1.vi.mock('fs', () => ({
35
+ existsSync: fsMocks.existsSyncMock,
36
+ writeFileSync: fsMocks.writeFileSyncMock,
37
+ mkdirSync: fsMocks.mkdirSyncMock,
38
+ }));
39
+ vitest_1.vi.mock('@clack/prompts', () => ({
40
+ log: {
41
+ info: vitest_1.vi.fn(),
42
+ success: vitest_1.vi.fn(),
43
+ warn: vitest_1.vi.fn(),
44
+ error: vitest_1.vi.fn(),
45
+ step: vitest_1.vi.fn(),
46
+ },
47
+ outro: vitest_1.vi.fn(),
48
+ text: vitest_1.vi.fn(),
49
+ confirm: vitest_1.vi.fn(),
50
+ cancel: vitest_1.vi.fn(),
51
+ // passthrough for abortIfCancelled
52
+ isCancel: vitest_1.vi.fn().mockReturnValue(false),
53
+ spinner: vitest_1.vi
54
+ .fn()
55
+ .mockImplementation(() => ({ start: vitest_1.vi.fn(), stop: vitest_1.vi.fn() })),
56
+ select: vitest_1.vi.fn(),
57
+ }));
58
+ (0, vitest_1.describe)('createExampleComponent', () => {
59
+ const showCopyPasteSnippetSpy = vitest_1.vi.spyOn(clackUtils, 'showCopyPasteInstructions');
60
+ (0, vitest_1.beforeEach)(() => {
61
+ vitest_1.vi.clearAllMocks();
62
+ });
63
+ (0, vitest_1.it)('creates an example component file', async () => {
64
+ const options = {
65
+ url: 'https://sentry.io',
66
+ orgSlug: 'myOrg',
67
+ projectId: '123456789',
68
+ };
69
+ // Mock the abortIfCancelled function to return the appRootPath
70
+ vitest_1.vi.spyOn(clackUtils, 'abortIfCancelled').mockResolvedValue('src/app');
71
+ // Mock the getSentryExampleComponentCode function
72
+ const exampleComponentCode = (0, example_component_1.getSentryExampleComponentCode)(options);
73
+ // Call the function to create the example component
74
+ await (0, example_component_1.createExampleComponent)(options);
75
+ (0, vitest_1.expect)(fsMocks.writeFileSyncMock).toHaveBeenCalledWith('./src/app/sentry-example.component.ts', exampleComponentCode);
76
+ (0, vitest_1.expect)(showCopyPasteSnippetSpy).toHaveBeenCalledWith({
77
+ codeSnippet: `import { SentryExample } from './sentry-example.component'
78
+
79
+ @Component({
80
+ selector: 'app-root',
81
+ standalone: true,
82
+ imports: [RouterOutlet, SentryExample],
83
+ template: \`
84
+ <div class="app">
85
+ <h1>Your Application</h1>
86
+ <app-sentry-example></app-sentry-example>
87
+ </div>
88
+ \`,
89
+ })
90
+ `,
91
+ instructions: 'Add the example component one of your pages or components (for example, in app.component.ts).',
92
+ });
93
+ });
94
+ });
95
+ (0, vitest_1.describe)('getSentryExampleComponentCode', () => {
96
+ (0, vitest_1.it)('includes the correct issue stream URL', () => {
97
+ const exampleComponentCode = (0, example_component_1.getSentryExampleComponentCode)({
98
+ orgSlug: 'myOrg',
99
+ projectId: '123456789',
100
+ url: 'https://sentry.io',
101
+ });
102
+ (0, vitest_1.expect)(exampleComponentCode).toContain('https://myorg.sentry.io/issues/?project=123456789');
103
+ });
104
+ });
105
+ //# sourceMappingURL=example-component.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example-component.test.js","sourceRoot":"","sources":["../../../test/angular/example-component.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { beforeEach, describe, expect, it, vi } from 'vitest';\nimport {\n createExampleComponent,\n getSentryExampleComponentCode,\n} from '../../src/angular/example-component';\n\nimport * as clackUtils from '../../src/utils/clack';\n\nconst fsMocks = vi.hoisted(() => ({\n existsSyncMock: vi.fn(() => true),\n writeFileSyncMock: vi.fn(),\n mkdirSyncMock: vi.fn(),\n}));\n\nvi.mock('fs', () => ({\n existsSync: fsMocks.existsSyncMock,\n writeFileSync: fsMocks.writeFileSyncMock,\n mkdirSync: fsMocks.mkdirSyncMock,\n}));\n\nvi.mock('@clack/prompts', () => ({\n log: {\n info: vi.fn(),\n success: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n step: vi.fn(),\n },\n outro: vi.fn(),\n text: vi.fn(),\n confirm: vi.fn(),\n cancel: vi.fn(),\n // passthrough for abortIfCancelled\n isCancel: vi.fn().mockReturnValue(false),\n spinner: vi\n .fn()\n .mockImplementation(() => ({ start: vi.fn(), stop: vi.fn() })),\n select: vi.fn(),\n}));\n\ndescribe('createExampleComponent', () => {\n const showCopyPasteSnippetSpy = vi.spyOn(\n clackUtils,\n 'showCopyPasteInstructions',\n );\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it('creates an example component file', async () => {\n const options = {\n url: 'https://sentry.io',\n orgSlug: 'myOrg',\n projectId: '123456789',\n };\n\n // Mock the abortIfCancelled function to return the appRootPath\n vi.spyOn(clackUtils, 'abortIfCancelled').mockResolvedValue('src/app');\n\n // Mock the getSentryExampleComponentCode function\n const exampleComponentCode = getSentryExampleComponentCode(options);\n\n // Call the function to create the example component\n await createExampleComponent(options);\n\n expect(fsMocks.writeFileSyncMock).toHaveBeenCalledWith(\n './src/app/sentry-example.component.ts',\n exampleComponentCode,\n );\n expect(showCopyPasteSnippetSpy).toHaveBeenCalledWith({\n codeSnippet: `import { SentryExample } from './sentry-example.component'\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet, SentryExample],\n template: \\`\n <div class=\"app\">\n <h1>Your Application</h1>\n <app-sentry-example></app-sentry-example>\n </div>\n \\`,\n})\n`,\n instructions:\n 'Add the example component one of your pages or components (for example, in app.component.ts).',\n });\n });\n});\n\ndescribe('getSentryExampleComponentCode', () => {\n it('includes the correct issue stream URL', () => {\n const exampleComponentCode = getSentryExampleComponentCode({\n orgSlug: 'myOrg',\n projectId: '123456789',\n url: 'https://sentry.io',\n });\n expect(exampleComponentCode).toContain(\n 'https://myorg.sentry.io/issues/?project=123456789',\n );\n });\n});\n"]}