@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.
- package/.node-cache/node-v22.14.0-darwin-arm64 +0 -0
- package/.node-cache/node-v22.14.0-darwin-x64 +0 -0
- package/.node-cache/node-v22.14.0-linux-arm64 +0 -0
- package/.node-cache/node-v22.14.0-linux-x64 +0 -0
- package/.node-cache/node-v22.14.0-win-x64.exe +0 -0
- package/CHANGELOG.md +26 -0
- package/COPYING +3575 -0
- package/bin.ts +85 -80
- package/dist/bin.js +44 -35
- package/dist/bin.js.map +1 -1
- package/dist/e2e-tests/jest.config.js +1 -1
- package/dist/e2e-tests/jest.config.js.map +1 -1
- package/dist/e2e-tests/tests/flutter.test.js +62 -147
- package/dist/e2e-tests/tests/flutter.test.js.map +1 -1
- package/dist/e2e-tests/tests/nextjs.test.js +77 -175
- package/dist/e2e-tests/tests/nextjs.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-3.test.js +61 -162
- package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-4.test.js +62 -163
- package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
- package/dist/e2e-tests/tests/remix.test.js +147 -189
- package/dist/e2e-tests/tests/remix.test.js.map +1 -1
- package/dist/e2e-tests/tests/sveltekit.test.js +133 -187
- package/dist/e2e-tests/tests/sveltekit.test.js.map +1 -1
- package/dist/e2e-tests/utils/index.d.ts +1 -1
- package/dist/e2e-tests/utils/index.js +113 -195
- package/dist/e2e-tests/utils/index.js.map +1 -1
- package/dist/lib/Constants.js +5 -5
- package/dist/lib/Constants.js.map +1 -1
- package/dist/lib/Helper/BottomBar.d.ts +1 -1
- package/dist/lib/Helper/BottomBar.js +14 -15
- package/dist/lib/Helper/BottomBar.js.map +1 -1
- package/dist/lib/Helper/Env.js +5 -2
- package/dist/lib/Helper/Env.js.map +1 -1
- package/dist/lib/Helper/File.js +14 -27
- package/dist/lib/Helper/File.js.map +1 -1
- package/dist/lib/Helper/Git.js +24 -59
- package/dist/lib/Helper/Git.js.map +1 -1
- package/dist/lib/Helper/Logging.js +2 -2
- package/dist/lib/Helper/Logging.js.map +1 -1
- package/dist/lib/Helper/MergeConfig.js +4 -4
- package/dist/lib/Helper/MergeConfig.js.map +1 -1
- package/dist/lib/Helper/Package.d.ts +4 -1
- package/dist/lib/Helper/Package.js +12 -38
- package/dist/lib/Helper/Package.js.map +1 -1
- package/dist/lib/Helper/SentryCli.js +77 -149
- package/dist/lib/Helper/SentryCli.js.map +1 -1
- package/dist/lib/Helper/Wizard.js +29 -124
- package/dist/lib/Helper/Wizard.js.map +1 -1
- package/dist/lib/Helper/__tests__/File.js +4 -4
- package/dist/lib/Helper/__tests__/File.js.map +1 -1
- package/dist/lib/Helper/__tests__/MergeConfig.js +24 -24
- package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
- package/dist/lib/Helper/__tests__/SentryCli.js +33 -23
- package/dist/lib/Helper/__tests__/SentryCli.js.map +1 -1
- package/dist/lib/Setup.js +23 -85
- package/dist/lib/Setup.js.map +1 -1
- package/dist/lib/Steps/BaseStep.js +8 -8
- package/dist/lib/Steps/BaseStep.js.map +1 -1
- package/dist/lib/Steps/ChooseIntegration.js +80 -125
- package/dist/lib/Steps/ChooseIntegration.js.map +1 -1
- package/dist/lib/Steps/ConfigureProject.js +6 -66
- package/dist/lib/Steps/ConfigureProject.js.map +1 -1
- package/dist/lib/Steps/Initial.js +16 -104
- package/dist/lib/Steps/Initial.js.map +1 -1
- package/dist/lib/Steps/Integrations/BaseIntegration.js +24 -118
- package/dist/lib/Steps/Integrations/BaseIntegration.js.map +1 -1
- package/dist/lib/Steps/Integrations/Cordova.js +95 -183
- package/dist/lib/Steps/Integrations/Cordova.js.map +1 -1
- package/dist/lib/Steps/Integrations/Electron.js +87 -145
- package/dist/lib/Steps/Integrations/Electron.js.map +1 -1
- package/dist/lib/Steps/Integrations/MobileProject.js +40 -148
- package/dist/lib/Steps/Integrations/MobileProject.js.map +1 -1
- package/dist/lib/Steps/OpenSentry.js +63 -126
- package/dist/lib/Steps/OpenSentry.js.map +1 -1
- package/dist/lib/Steps/PromptForParameters.js +110 -206
- package/dist/lib/Steps/PromptForParameters.js.map +1 -1
- package/dist/lib/Steps/Result.js +19 -79
- package/dist/lib/Steps/Result.js.map +1 -1
- package/dist/lib/Steps/SentryProjectSelector.js +57 -148
- package/dist/lib/Steps/SentryProjectSelector.js.map +1 -1
- package/dist/lib/Steps/ShouldConfigure.js +6 -66
- package/dist/lib/Steps/ShouldConfigure.js.map +1 -1
- package/dist/lib/Steps/WaitForSentry.js +43 -120
- package/dist/lib/Steps/WaitForSentry.js.map +1 -1
- package/dist/lib/Steps/Welcome.js +17 -76
- package/dist/lib/Steps/Welcome.js.map +1 -1
- package/dist/lib/__tests__/Env.js +3 -3
- package/dist/lib/__tests__/Env.js.map +1 -1
- package/dist/src/android/android-wizard.js +100 -176
- package/dist/src/android/android-wizard.js.map +1 -1
- package/dist/src/android/code-tools.js +24 -33
- package/dist/src/android/code-tools.js.map +1 -1
- package/dist/src/android/gradle.js +106 -165
- package/dist/src/android/gradle.js.map +1 -1
- package/dist/src/android/manifest.js +26 -27
- package/dist/src/android/manifest.js.map +1 -1
- package/dist/src/android/templates.js +76 -23
- package/dist/src/android/templates.js.map +1 -1
- package/dist/src/apple/apple-wizard.js +129 -225
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/apple/cocoapod.js +47 -109
- package/dist/src/apple/cocoapod.js.map +1 -1
- package/dist/src/apple/code-tools.js +32 -35
- package/dist/src/apple/code-tools.js.map +1 -1
- package/dist/src/apple/fastlane.js +51 -97
- package/dist/src/apple/fastlane.js.map +1 -1
- package/dist/src/apple/templates.js +41 -5
- package/dist/src/apple/templates.js.map +1 -1
- package/dist/src/apple/xcode-manager.d.ts +2 -2
- package/dist/src/apple/xcode-manager.js +93 -108
- package/dist/src/apple/xcode-manager.js.map +1 -1
- package/dist/src/flutter/code-tools.js +79 -127
- package/dist/src/flutter/code-tools.js.map +1 -1
- package/dist/src/flutter/flutter-wizard.js +75 -136
- package/dist/src/flutter/flutter-wizard.js.map +1 -1
- package/dist/src/flutter/templates.js +48 -12
- package/dist/src/flutter/templates.js.map +1 -1
- package/dist/src/nextjs/nextjs-wizard.js +527 -805
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/nextjs/templates.js +380 -40
- package/dist/src/nextjs/templates.js.map +1 -1
- package/dist/src/nextjs/utils.js +5 -5
- package/dist/src/nextjs/utils.js.map +1 -1
- package/dist/src/nuxt/nuxt-wizard.js +91 -188
- package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
- package/dist/src/nuxt/sdk-example.js +68 -137
- package/dist/src/nuxt/sdk-example.js.map +1 -1
- package/dist/src/nuxt/sdk-setup.d.ts +4 -4
- package/dist/src/nuxt/sdk-setup.js +180 -336
- package/dist/src/nuxt/sdk-setup.js.map +1 -1
- package/dist/src/nuxt/templates.js +195 -18
- package/dist/src/nuxt/templates.js.map +1 -1
- package/dist/src/nuxt/utils.js +29 -76
- package/dist/src/nuxt/utils.js.map +1 -1
- package/dist/src/react-native/expo-env-file.js +41 -94
- package/dist/src/react-native/expo-env-file.js.map +1 -1
- package/dist/src/react-native/expo-metro.d.ts +1 -1
- package/dist/src/react-native/expo-metro.js +75 -130
- package/dist/src/react-native/expo-metro.js.map +1 -1
- package/dist/src/react-native/expo.js +61 -114
- package/dist/src/react-native/expo.js.map +1 -1
- package/dist/src/react-native/git.js +23 -56
- package/dist/src/react-native/git.js.map +1 -1
- package/dist/src/react-native/glob.js +3 -3
- package/dist/src/react-native/glob.js.map +1 -1
- package/dist/src/react-native/gradle.js +4 -4
- package/dist/src/react-native/gradle.js.map +1 -1
- package/dist/src/react-native/javascript.js +51 -95
- package/dist/src/react-native/javascript.js.map +1 -1
- package/dist/src/react-native/metro.js +176 -296
- package/dist/src/react-native/metro.js.map +1 -1
- package/dist/src/react-native/react-native-wizard.js +267 -418
- package/dist/src/react-native/react-native-wizard.js.map +1 -1
- package/dist/src/react-native/uninstall.js +37 -80
- package/dist/src/react-native/uninstall.js.map +1 -1
- package/dist/src/react-native/xcode.js +57 -55
- package/dist/src/react-native/xcode.js.map +1 -1
- package/dist/src/remix/codemods/express-server.js +27 -82
- package/dist/src/remix/codemods/express-server.js.map +1 -1
- package/dist/src/remix/codemods/handle-error.js +28 -31
- package/dist/src/remix/codemods/handle-error.js.map +1 -1
- package/dist/src/remix/codemods/root-common.js +11 -11
- package/dist/src/remix/codemods/root-common.js.map +1 -1
- package/dist/src/remix/codemods/root-v1.js +17 -67
- package/dist/src/remix/codemods/root-v1.js.map +1 -1
- package/dist/src/remix/codemods/root-v2.js +89 -140
- package/dist/src/remix/codemods/root-v2.js.map +1 -1
- package/dist/src/remix/remix-wizard.js +181 -343
- package/dist/src/remix/remix-wizard.js.map +1 -1
- package/dist/src/remix/sdk-example.js +84 -66
- package/dist/src/remix/sdk-example.js.map +1 -1
- package/dist/src/remix/sdk-setup.js +161 -293
- package/dist/src/remix/sdk-setup.js.map +1 -1
- package/dist/src/remix/templates.js +10 -2
- package/dist/src/remix/templates.js.map +1 -1
- package/dist/src/remix/utils.js +13 -14
- package/dist/src/remix/utils.js.map +1 -1
- package/dist/src/run.js +106 -178
- package/dist/src/run.js.map +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.js +248 -372
- package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
- package/dist/src/sourcemaps/tools/angular.js +32 -66
- package/dist/src/sourcemaps/tools/angular.js.map +1 -1
- package/dist/src/sourcemaps/tools/create-react-app.js +14 -59
- package/dist/src/sourcemaps/tools/create-react-app.js.map +1 -1
- package/dist/src/sourcemaps/tools/esbuild.js +34 -77
- package/dist/src/sourcemaps/tools/esbuild.js.map +1 -1
- package/dist/src/sourcemaps/tools/nextjs.d.ts +2 -2
- package/dist/src/sourcemaps/tools/nextjs.js +75 -102
- package/dist/src/sourcemaps/tools/nextjs.js.map +1 -1
- package/dist/src/sourcemaps/tools/remix.js +53 -93
- package/dist/src/sourcemaps/tools/remix.js.map +1 -1
- package/dist/src/sourcemaps/tools/rollup.js +35 -76
- package/dist/src/sourcemaps/tools/rollup.js.map +1 -1
- package/dist/src/sourcemaps/tools/sentry-cli.js +157 -289
- package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
- package/dist/src/sourcemaps/tools/tsc.js +68 -134
- package/dist/src/sourcemaps/tools/tsc.js.map +1 -1
- package/dist/src/sourcemaps/tools/vite.js +111 -196
- package/dist/src/sourcemaps/tools/vite.js.map +1 -1
- package/dist/src/sourcemaps/tools/webpack.d.ts +1 -1
- package/dist/src/sourcemaps/tools/webpack.js +158 -260
- package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
- package/dist/src/sourcemaps/utils/detect-tool.js +9 -54
- package/dist/src/sourcemaps/utils/detect-tool.js.map +1 -1
- package/dist/src/sourcemaps/utils/other-wizards.js +77 -144
- package/dist/src/sourcemaps/utils/other-wizards.js.map +1 -1
- package/dist/src/sourcemaps/utils/sdk-version.js +112 -191
- package/dist/src/sourcemaps/utils/sdk-version.js.map +1 -1
- package/dist/src/sveltekit/sdk-example.js +20 -70
- package/dist/src/sveltekit/sdk-example.js.map +1 -1
- package/dist/src/sveltekit/sdk-setup.js +250 -411
- package/dist/src/sveltekit/sdk-setup.js.map +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.js +107 -191
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/sveltekit/templates.js +147 -13
- package/dist/src/sveltekit/templates.js.map +1 -1
- package/dist/src/sveltekit/utils.js +3 -3
- package/dist/src/sveltekit/utils.js.map +1 -1
- package/dist/src/telemetry.d.ts +2 -2
- package/dist/src/telemetry.js +58 -108
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/utils/ast-utils.js +39 -54
- package/dist/src/utils/ast-utils.js.map +1 -1
- package/dist/src/utils/bash.js +28 -75
- package/dist/src/utils/bash.js.map +1 -1
- package/dist/src/utils/clack-utils.d.ts +3 -7
- package/dist/src/utils/clack-utils.js +688 -1083
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/debug.js +6 -10
- package/dist/src/utils/debug.js.map +1 -1
- package/dist/src/utils/package-json.js +5 -6
- package/dist/src/utils/package-json.js.map +1 -1
- package/dist/src/utils/package-manager.js +65 -139
- package/dist/src/utils/package-manager.js.map +1 -1
- package/dist/src/utils/release-registry.js +12 -59
- package/dist/src/utils/release-registry.js.map +1 -1
- package/dist/src/utils/semver.js +3 -4
- package/dist/src/utils/semver.js.map +1 -1
- package/dist/src/utils/sentrycli-utils.js +4 -4
- package/dist/src/utils/sentrycli-utils.js.map +1 -1
- package/dist/src/utils/url.js +5 -6
- package/dist/src/utils/url.js.map +1 -1
- package/dist/test/android/code-tools.test.js +18 -18
- package/dist/test/android/code-tools.test.js.map +1 -1
- package/dist/test/apple/cocoapod.test.js +154 -299
- package/dist/test/apple/cocoapod.test.js.map +1 -1
- package/dist/test/apple/code-tools.test.js +375 -263
- package/dist/test/apple/code-tools.test.js.map +1 -1
- package/dist/test/apple/fastfile.test.js +319 -271
- package/dist/test/apple/fastfile.test.js.map +1 -1
- package/dist/test/apple/templates.test.js +114 -30
- package/dist/test/apple/templates.test.js.map +1 -1
- package/dist/test/apple/xcode-manager.test.js +230 -234
- package/dist/test/apple/xcode-manager.test.js.map +1 -1
- package/dist/test/flutter/code-tools.test.js +119 -48
- package/dist/test/flutter/code-tools.test.js.map +1 -1
- package/dist/test/flutter/templates.test.js +63 -20
- package/dist/test/flutter/templates.test.js.map +1 -1
- package/dist/test/nextjs/templates.test.js +332 -43
- package/dist/test/nextjs/templates.test.js.map +1 -1
- package/dist/test/nuxt/templates.test.js +161 -33
- package/dist/test/nuxt/templates.test.js.map +1 -1
- package/dist/test/react-native/expo-metro.test.js +61 -15
- package/dist/test/react-native/expo-metro.test.js.map +1 -1
- package/dist/test/react-native/expo.test.js +37 -17
- package/dist/test/react-native/expo.test.js.map +1 -1
- package/dist/test/react-native/gradle.test.js +260 -28
- package/dist/test/react-native/gradle.test.js.map +1 -1
- package/dist/test/react-native/javascript.test.js +85 -19
- package/dist/test/react-native/javascript.test.js.map +1 -1
- package/dist/test/react-native/metro.test.js +261 -187
- package/dist/test/react-native/metro.test.js.map +1 -1
- package/dist/test/react-native/xcode.test.js +243 -62
- package/dist/test/react-native/xcode.test.js.map +1 -1
- package/dist/test/remix/client-entry.test.js +81 -21
- package/dist/test/remix/client-entry.test.js.map +1 -1
- package/dist/test/remix/server-instrumentation.test.js +21 -8
- package/dist/test/remix/server-instrumentation.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/sentry-cli.test.js +20 -72
- package/dist/test/sourcemaps/tools/sentry-cli.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/tsc.test.js +142 -68
- package/dist/test/sourcemaps/tools/tsc.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/vite.test.js +106 -75
- package/dist/test/sourcemaps/tools/vite.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/webpack.test.js +226 -102
- package/dist/test/sourcemaps/tools/webpack.test.js.map +1 -1
- package/dist/test/sveltekit/templates.test.js +117 -18
- package/dist/test/sveltekit/templates.test.js.map +1 -1
- package/dist/test/utils/ast-utils.test.js +99 -58
- package/dist/test/utils/ast-utils.test.js.map +1 -1
- package/dist/test/utils/clack-utils.test.js +142 -247
- package/dist/test/utils/clack-utils.test.js.map +1 -1
- package/e2e-tests/package.json +1 -1
- package/e2e-tests/tests/flutter.test.ts +20 -20
- package/e2e-tests/tests/nextjs.test.ts +2 -2
- package/e2e-tests/tests/nuxt-3.test.ts +4 -4
- package/e2e-tests/tests/nuxt-4.test.ts +3 -3
- package/e2e-tests/tests/remix.test.ts +3 -3
- package/e2e-tests/tests/sveltekit.test.ts +3 -3
- package/e2e-tests/utils/index.ts +33 -15
- package/lib/Helper/BottomBar.ts +1 -1
- package/lib/Helper/Env.ts +1 -1
- package/lib/Helper/Package.ts +12 -10
- package/lib/Helper/SentryCli.ts +18 -27
- package/lib/Helper/Wizard.ts +1 -2
- package/lib/Setup.ts +4 -5
- package/lib/Steps/ChooseIntegration.ts +40 -8
- package/lib/Steps/Initial.ts +17 -26
- package/lib/Steps/Integrations/BaseIntegration.ts +2 -8
- package/lib/Steps/Integrations/Cordova.ts +9 -15
- package/lib/Steps/Integrations/Electron.ts +23 -20
- package/lib/Steps/Integrations/MobileProject.ts +18 -15
- package/lib/Steps/OpenSentry.ts +12 -7
- package/lib/Steps/PromptForParameters.ts +12 -19
- package/lib/Steps/SentryProjectSelector.ts +30 -29
- package/lib/Steps/WaitForSentry.ts +29 -23
- package/package.json +12 -8
- package/src/apple/xcode-manager.ts +10 -10
- package/src/nextjs/templates.ts +2 -3
- package/src/nuxt/sdk-setup.ts +21 -18
- package/src/react-native/expo-metro.ts +2 -2
- package/src/react-native/react-native-wizard.ts +1 -2
- package/src/react-native/uninstall.ts +1 -2
- package/src/react-native/xcode.ts +1 -1
- package/src/run.ts +12 -5
- package/src/sourcemaps/tools/nextjs.ts +2 -2
- package/src/sourcemaps/tools/webpack.ts +3 -3
- package/src/telemetry.ts +27 -7
- package/src/utils/clack-utils.ts +50 -47
- package/test/apple/cocoapod.test.ts +4 -0
- package/test/apple/fastfile.test.ts +12 -7
- package/test/apple/xcode-manager.test.ts +13 -11
- package/test/utils/clack-utils.test.ts +40 -50
- package/types/read-env.d.ts +3 -0
- package/types/xcode.d.ts +1 -0
- package/dist/package.json +0 -128
|
@@ -22,80 +22,33 @@ 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
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
62
|
-
var t = {};
|
|
63
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
64
|
-
t[p] = s[p];
|
|
65
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
66
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
67
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
68
|
-
t[p[i]] = s[p[i]];
|
|
69
|
-
}
|
|
70
|
-
return t;
|
|
71
|
-
};
|
|
72
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
73
26
|
exports.SentryCli = void 0;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
27
|
+
const fs = __importStar(require("node:fs"));
|
|
28
|
+
const path = __importStar(require("node:path"));
|
|
29
|
+
const Git_1 = require("./Git");
|
|
30
|
+
const Logging_1 = require("./Logging");
|
|
31
|
+
const SENTRYCLIRC_FILENAME = '.sentryclirc';
|
|
32
|
+
const GITIGNORE_FILENAME = '.gitignore';
|
|
33
|
+
const PROPERTIES_FILENAME = 'sentry.properties';
|
|
34
|
+
class SentryCli {
|
|
35
|
+
_argv;
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/typedef
|
|
37
|
+
_resolve = require.resolve;
|
|
38
|
+
constructor(_argv) {
|
|
84
39
|
this._argv = _argv;
|
|
85
|
-
// eslint-disable-next-line @typescript-eslint/typedef
|
|
86
|
-
this._resolve = require.resolve;
|
|
87
40
|
}
|
|
88
|
-
|
|
41
|
+
setResolveFunction(resolve) {
|
|
89
42
|
this._resolve = resolve;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
43
|
+
}
|
|
44
|
+
convertAnswersToProperties(answers) {
|
|
45
|
+
const props = {};
|
|
93
46
|
props['defaults/url'] = this._argv.url;
|
|
94
|
-
props['defaults/org'] =
|
|
95
|
-
props['defaults/project'] =
|
|
96
|
-
props['auth/token'] =
|
|
47
|
+
props['defaults/org'] = answers.config?.organization?.slug ?? null;
|
|
48
|
+
props['defaults/project'] = answers.config?.project?.slug ?? null;
|
|
49
|
+
props['auth/token'] = answers.config?.auth?.token ?? null;
|
|
97
50
|
try {
|
|
98
|
-
|
|
51
|
+
const cliPath = this._resolve('@sentry/cli/bin/sentry-cli', {
|
|
99
52
|
paths: [process.cwd()],
|
|
100
53
|
});
|
|
101
54
|
props['cli/executable'] = path
|
|
@@ -103,42 +56,35 @@ var SentryCli = /** @class */ (function () {
|
|
|
103
56
|
.replace(/\\/g, '\\\\');
|
|
104
57
|
}
|
|
105
58
|
catch (e) {
|
|
106
|
-
// we do nothing and leave
|
|
59
|
+
// we do nothing and leave everything as it is
|
|
107
60
|
}
|
|
108
61
|
return props;
|
|
109
|
-
}
|
|
62
|
+
}
|
|
110
63
|
/** Create the contents of a `sentry.properties` file */
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
for (
|
|
114
|
-
|
|
115
|
-
if (
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
rv.push("".concat(key, "=").concat(value));
|
|
124
|
-
}
|
|
64
|
+
dumpProperties(props) {
|
|
65
|
+
const rv = [];
|
|
66
|
+
for (const [key, value] of Object.entries(props)) {
|
|
67
|
+
const normalizedKey = key.replace(/\//g, '.');
|
|
68
|
+
if (value === undefined || value === null) {
|
|
69
|
+
// comment that property out since it has no value
|
|
70
|
+
rv.push(`#${normalizedKey}=`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
rv.push(`${normalizedKey}=${value}`);
|
|
125
74
|
}
|
|
126
75
|
}
|
|
127
76
|
// eslint-disable-next-line prefer-template
|
|
128
77
|
return rv.join('\n') + '\n';
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
for (
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
var section = "[".concat(sectionName, "]\n").concat(props);
|
|
137
|
-
dumpedSections.push(section);
|
|
138
|
-
}
|
|
78
|
+
}
|
|
79
|
+
dumpConfig(config) {
|
|
80
|
+
const dumpedSections = [];
|
|
81
|
+
for (const [sectionName, val] of Object.entries(config)) {
|
|
82
|
+
const props = this.dumpProperties(val);
|
|
83
|
+
const section = `[${sectionName}]\n${props}`;
|
|
84
|
+
dumpedSections.push(section);
|
|
139
85
|
}
|
|
140
86
|
return dumpedSections.join('\n');
|
|
141
|
-
}
|
|
87
|
+
}
|
|
142
88
|
/**
|
|
143
89
|
* Creates `.sentryclirc` and `sentry.properties` files with the CLI properties
|
|
144
90
|
* obtained from the user answers (or from logging into Sentry).
|
|
@@ -149,60 +95,42 @@ var SentryCli = /** @class */ (function () {
|
|
|
149
95
|
* @param sentryCli instance of the Sentry CLI
|
|
150
96
|
* @param cliProps the properties to write to the files
|
|
151
97
|
*/
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
case 9:
|
|
190
|
-
_c.sent();
|
|
191
|
-
(0, Logging_1.green)('✓ Successfully created sentry.properties');
|
|
192
|
-
return [3 /*break*/, 11];
|
|
193
|
-
case 10:
|
|
194
|
-
_b = _c.sent();
|
|
195
|
-
(0, Logging_1.red)("\u26A0 Could not add org and project data to ".concat(PROPERTIES_FILENAME));
|
|
196
|
-
(0, Logging_1.l)('See docs for a manual setup: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-sentry-cli');
|
|
197
|
-
return [3 /*break*/, 11];
|
|
198
|
-
case 11:
|
|
199
|
-
(0, Logging_1.nl)();
|
|
200
|
-
return [2 /*return*/];
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
};
|
|
205
|
-
return SentryCli;
|
|
206
|
-
}());
|
|
98
|
+
async createSentryCliConfig(cliProps) {
|
|
99
|
+
const { 'auth/token': authToken, ...cliPropsToWrite } = cliProps;
|
|
100
|
+
/**
|
|
101
|
+
* To not commit the auth token to the VCS, instead of adding it to the
|
|
102
|
+
* properties file (like the rest of props), it's added to the Sentry CLI
|
|
103
|
+
* config, which is added to the gitignore. This way makes the properties
|
|
104
|
+
* file safe to commit without exposing any auth tokens.
|
|
105
|
+
*/
|
|
106
|
+
if (authToken) {
|
|
107
|
+
try {
|
|
108
|
+
await fs.promises.appendFile(SENTRYCLIRC_FILENAME, this.dumpConfig({ auth: { token: authToken } }));
|
|
109
|
+
(0, Logging_1.green)(`✓ Successfully added the auth token to ${SENTRYCLIRC_FILENAME}`);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
(0, Logging_1.red)(`⚠ Could not add the auth token to ${SENTRYCLIRC_FILENAME}, ` +
|
|
113
|
+
`please add it to identify your user account:\n${authToken}`);
|
|
114
|
+
(0, Logging_1.nl)();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
(0, Logging_1.red)(`⚠ Did not find an auth token, please add your token to ${SENTRYCLIRC_FILENAME}`);
|
|
119
|
+
(0, Logging_1.l)('To generate an auth token, visit https://sentry.io/settings/account/api/auth-tokens/');
|
|
120
|
+
(0, Logging_1.l)('To learn how to configure Sentry CLI, visit ' +
|
|
121
|
+
'https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-sentry-cli');
|
|
122
|
+
}
|
|
123
|
+
await (0, Git_1.addToGitignore)(SENTRYCLIRC_FILENAME, `⚠ Could not add ${SENTRYCLIRC_FILENAME} to ${GITIGNORE_FILENAME}, please add it to not commit your auth key.`);
|
|
124
|
+
try {
|
|
125
|
+
await fs.promises.writeFile(`./${PROPERTIES_FILENAME}`, this.dumpProperties(cliPropsToWrite));
|
|
126
|
+
(0, Logging_1.green)('✓ Successfully created sentry.properties');
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
(0, Logging_1.red)(`⚠ Could not add org and project data to ${PROPERTIES_FILENAME}`);
|
|
130
|
+
(0, Logging_1.l)('See docs for a manual setup: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-sentry-cli');
|
|
131
|
+
}
|
|
132
|
+
(0, Logging_1.nl)();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
207
135
|
exports.SentryCli = SentryCli;
|
|
208
136
|
//# sourceMappingURL=SentryCli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SentryCli.js","sourceRoot":"","sources":["../../../lib/Helper/SentryCli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SentryCli.js","sourceRoot":"","sources":["../../../lib/Helper/SentryCli.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'node:fs';\nimport type { Answers } from 'inquirer';\nimport * as path from 'node:path';\n\nimport type { Args } from '../Constants';\nimport { addToGitignore } from './Git';\nimport { green, l, nl, red } from './Logging';\n\nconst SENTRYCLIRC_FILENAME = '.sentryclirc';\nconst GITIGNORE_FILENAME = '.gitignore';\nconst PROPERTIES_FILENAME = 'sentry.properties';\n\nexport interface SentryCliProps {\n [s: string]: string;\n}\n\ntype SentryCliConfig = Record<string, SentryCliProps>;\n\nexport class SentryCli {\n // eslint-disable-next-line @typescript-eslint/typedef\n private _resolve = require.resolve;\n\n public constructor(protected _argv: Args) {}\n\n public setResolveFunction(resolve: (path: string) => string): void {\n this._resolve = resolve as any;\n }\n\n public convertAnswersToProperties(answers: Answers): SentryCliProps {\n const props: SentryCliProps = {};\n props['defaults/url'] = this._argv.url;\n props['defaults/org'] = answers.config?.organization?.slug ?? null;\n props['defaults/project'] = answers.config?.project?.slug ?? null;\n props['auth/token'] = answers.config?.auth?.token ?? null;\n try {\n const cliPath = this._resolve('@sentry/cli/bin/sentry-cli', {\n paths: [process.cwd()],\n });\n props['cli/executable'] = path\n .relative(process.cwd(), cliPath)\n .replace(/\\\\/g, '\\\\\\\\');\n } catch (e) {\n // we do nothing and leave everything as it is\n }\n return props;\n }\n\n /** Create the contents of a `sentry.properties` file */\n public dumpProperties(props: SentryCliProps): string {\n const rv = [];\n for (const [key, value] of Object.entries(props)) {\n const normalizedKey = key.replace(/\\//g, '.');\n if (value === undefined || value === null) {\n // comment that property out since it has no value\n rv.push(`#${normalizedKey}=`);\n } else {\n rv.push(`${normalizedKey}=${value}`);\n }\n }\n // eslint-disable-next-line prefer-template\n return rv.join('\\n') + '\\n';\n }\n\n public dumpConfig(config: SentryCliConfig): string {\n const dumpedSections: string[] = [];\n for (const [sectionName, val] of Object.entries(config)) {\n const props = this.dumpProperties(val);\n const section = `[${sectionName}]\\n${props}`;\n dumpedSections.push(section);\n }\n return dumpedSections.join('\\n');\n }\n\n /**\n * Creates `.sentryclirc` and `sentry.properties` files with the CLI properties\n * obtained from the user answers (or from logging into Sentry).\n * The `.sentryclirc` only contains the auth token and will be added to the\n * user's `.gitignore` file. The properties file contains the rest of the\n * properties (org, project, etc.).\n *\n * @param sentryCli instance of the Sentry CLI\n * @param cliProps the properties to write to the files\n */\n public async createSentryCliConfig(cliProps: SentryCliProps): Promise<void> {\n const { 'auth/token': authToken, ...cliPropsToWrite } = cliProps;\n\n /**\n * To not commit the auth token to the VCS, instead of adding it to the\n * properties file (like the rest of props), it's added to the Sentry CLI\n * config, which is added to the gitignore. This way makes the properties\n * file safe to commit without exposing any auth tokens.\n */\n if (authToken) {\n try {\n await fs.promises.appendFile(\n SENTRYCLIRC_FILENAME,\n this.dumpConfig({ auth: { token: authToken } }),\n );\n green(`✓ Successfully added the auth token to ${SENTRYCLIRC_FILENAME}`);\n } catch {\n red(\n `⚠ Could not add the auth token to ${SENTRYCLIRC_FILENAME}, ` +\n `please add it to identify your user account:\\n${authToken}`,\n );\n nl();\n }\n } else {\n red(\n `⚠ Did not find an auth token, please add your token to ${SENTRYCLIRC_FILENAME}`,\n );\n l(\n 'To generate an auth token, visit https://sentry.io/settings/account/api/auth-tokens/',\n );\n l(\n 'To learn how to configure Sentry CLI, visit ' +\n 'https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-sentry-cli',\n );\n }\n\n await addToGitignore(\n SENTRYCLIRC_FILENAME,\n `⚠ Could not add ${SENTRYCLIRC_FILENAME} to ${GITIGNORE_FILENAME}, please add it to not commit your auth key.`,\n );\n\n try {\n await fs.promises.writeFile(\n `./${PROPERTIES_FILENAME}`,\n this.dumpProperties(cliPropsToWrite),\n );\n green('✓ Successfully created sentry.properties');\n } catch {\n red(`⚠ Could not add org and project data to ${PROPERTIES_FILENAME}`);\n l(\n 'See docs for a manual setup: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#configure-sentry-cli',\n );\n }\n nl();\n }\n}\n"]}
|
|
@@ -1,79 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
-
if (mod && mod.__esModule) return mod;
|
|
31
|
-
var result = {};
|
|
32
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
-
__setModuleDefault(result, mod);
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
47
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
-
function step(op) {
|
|
50
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
|
-
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;
|
|
53
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
-
switch (op[0]) {
|
|
55
|
-
case 0: case 1: t = op; break;
|
|
56
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
-
default:
|
|
60
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
-
if (t[2]) _.ops.pop();
|
|
65
|
-
_.trys.pop(); continue;
|
|
66
|
-
}
|
|
67
|
-
op = body.call(thisArg, _);
|
|
68
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
73
3
|
exports.startWizard = exports.getCurrentIntegration = void 0;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var Logging_1 = require("./Logging");
|
|
4
|
+
const BottomBar_1 = require("./BottomBar");
|
|
5
|
+
const Logging_1 = require("./Logging");
|
|
77
6
|
function sanitizeAndValidateArgs(argv) {
|
|
78
7
|
if (argv.quiet === undefined) {
|
|
79
8
|
argv.quiet = true;
|
|
@@ -90,60 +19,36 @@ function sanitizeAndValidateArgs(argv) {
|
|
|
90
19
|
argv.promoCode = argv['promo-code'];
|
|
91
20
|
}
|
|
92
21
|
function getCurrentIntegration(answers) {
|
|
93
|
-
return
|
|
22
|
+
return answers.integration;
|
|
94
23
|
}
|
|
95
24
|
exports.getCurrentIntegration = getCurrentIntegration;
|
|
96
|
-
function startWizard(argv) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
25
|
+
async function startWizard(argv, ...steps) {
|
|
26
|
+
try {
|
|
27
|
+
sanitizeAndValidateArgs(argv);
|
|
28
|
+
if (argv.debug) {
|
|
29
|
+
(0, Logging_1.debug)(argv);
|
|
30
|
+
}
|
|
31
|
+
if (argv.quiet) {
|
|
32
|
+
(0, Logging_1.dim)("Quiet mode On, DAMA, don't ask me anything");
|
|
33
|
+
}
|
|
34
|
+
return await steps
|
|
35
|
+
.map((step) => new step(argv))
|
|
36
|
+
.reduce(async (answer, step) => {
|
|
37
|
+
const prevAnswer = await answer;
|
|
38
|
+
const answers = await step.emit(prevAnswer);
|
|
39
|
+
return { ...prevAnswer, ...answers };
|
|
40
|
+
}, Promise.resolve({}));
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
BottomBar_1.BottomBar.hide();
|
|
44
|
+
(0, Logging_1.nl)();
|
|
45
|
+
(0, Logging_1.red)('Sentry Wizard failed with:');
|
|
46
|
+
(0, Logging_1.red)(argv.debug ? e : e.message);
|
|
47
|
+
(0, Logging_1.nl)();
|
|
48
|
+
(0, Logging_1.red)('Protip: Add --debug to see whats going on');
|
|
49
|
+
(0, Logging_1.red)('OR use --help to see your options');
|
|
50
|
+
process.exit(1);
|
|
100
51
|
}
|
|
101
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
102
|
-
var e_1;
|
|
103
|
-
var _this = this;
|
|
104
|
-
return __generator(this, function (_a) {
|
|
105
|
-
switch (_a.label) {
|
|
106
|
-
case 0:
|
|
107
|
-
_a.trys.push([0, 2, , 3]);
|
|
108
|
-
sanitizeAndValidateArgs(argv);
|
|
109
|
-
if (argv.debug) {
|
|
110
|
-
(0, Logging_1.debug)(argv);
|
|
111
|
-
}
|
|
112
|
-
if (argv.quiet) {
|
|
113
|
-
(0, Logging_1.dim)("Quiet mode On, DAMA, don't ask me anything");
|
|
114
|
-
}
|
|
115
|
-
return [4 /*yield*/, steps
|
|
116
|
-
.map(function (step) { return new step(argv); })
|
|
117
|
-
.reduce(function (answer, step) { return __awaiter(_this, void 0, void 0, function () {
|
|
118
|
-
var prevAnswer, answers;
|
|
119
|
-
return __generator(this, function (_a) {
|
|
120
|
-
switch (_a.label) {
|
|
121
|
-
case 0: return [4 /*yield*/, answer];
|
|
122
|
-
case 1:
|
|
123
|
-
prevAnswer = _a.sent();
|
|
124
|
-
return [4 /*yield*/, step.emit(prevAnswer)];
|
|
125
|
-
case 2:
|
|
126
|
-
answers = _a.sent();
|
|
127
|
-
return [2 /*return*/, __assign(__assign({}, prevAnswer), answers)];
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
}); }, Promise.resolve({}))];
|
|
131
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
132
|
-
case 2:
|
|
133
|
-
e_1 = _a.sent();
|
|
134
|
-
BottomBar_1.BottomBar.hide();
|
|
135
|
-
(0, Logging_1.nl)();
|
|
136
|
-
(0, Logging_1.red)('Sentry Wizard failed with:');
|
|
137
|
-
(0, Logging_1.red)(argv.debug ? e_1 : e_1.message);
|
|
138
|
-
(0, Logging_1.nl)();
|
|
139
|
-
(0, Logging_1.red)('Protip: Add --debug to see whats going on');
|
|
140
|
-
(0, Logging_1.red)('OR use --help to see your options');
|
|
141
|
-
process.exit(1);
|
|
142
|
-
return [3 /*break*/, 3];
|
|
143
|
-
case 3: return [2 /*return*/];
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
52
|
}
|
|
148
53
|
exports.startWizard = startWizard;
|
|
149
54
|
//# sourceMappingURL=Wizard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wizard.js","sourceRoot":"","sources":["../../../lib/Helper/Wizard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Wizard.js","sourceRoot":"","sources":["../../../lib/Helper/Wizard.ts"],"names":[],"mappings":";;;AAKA,2CAAwC;AACxC,uCAAgD;AAEhD,SAAS,uBAAuB,CAAC,IAAU;IACzC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAA,aAAG,EAAC,kCAAkC,CAAC,CAAC;KACzC;IACD,iDAAiD;IACjD,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;QACxB,iDAAiD;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,iDAAiD;QACjD,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;KAC7B;IACD,iDAAiD;IACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,OAAO,OAAO,CAAC,WAA8B,CAAC;AAChD,CAAC;AAFD,sDAEC;AAEM,KAAK,UAAU,WAAW,CAC/B,IAAU,EACV,GAAG,KAAsC;IAEzC,IAAI;QACF,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC;SACb;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAA,aAAG,EAAC,4CAA4C,CAAC,CAAC;SACnD;QACD,OAAO,MAAM,KAAK;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7B,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC7B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5C,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC;QACvC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3B;IAAC,OAAO,CAAC,EAAE;QACV,qBAAS,CAAC,IAAI,EAAE,CAAC;QACjB,IAAA,YAAE,GAAE,CAAC;QACL,IAAA,aAAG,EAAC,4BAA4B,CAAC,CAAC;QAClC,IAAA,aAAG,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAChC,IAAA,YAAE,GAAE,CAAC;QACL,IAAA,aAAG,EAAC,2CAA2C,CAAC,CAAC;QACjD,IAAA,aAAG,EAAC,mCAAmC,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC;AA7BD,kCA6BC","sourcesContent":["import type { Answers } from 'inquirer';\n\nimport type { Args } from '../Constants';\nimport type { IStep } from '../Steps/BaseStep';\nimport type { BaseIntegration } from '../Steps/Integrations/BaseIntegration';\nimport { BottomBar } from './BottomBar';\nimport { debug, dim, nl, red } from './Logging';\n\nfunction sanitizeAndValidateArgs(argv: Args): void {\n if (argv.quiet === undefined) {\n argv.quiet = true;\n dim('will activate quiet mode for you');\n }\n // @ts-ignore skip-connect does not exist on args\n if (argv['skip-connect']) {\n // @ts-ignore skip-connect does not exist on args\n argv.skipConnect = argv['skip-connect'];\n // @ts-ignore skip-connect does not exist on args\n delete argv['skip-connect'];\n }\n // @ts-ignore skip-connect does not exist on args\n argv.promoCode = argv['promo-code'];\n}\n\nexport function getCurrentIntegration(answers: Answers): BaseIntegration {\n return answers.integration as BaseIntegration;\n}\n\nexport async function startWizard<M extends IStep>(\n argv: Args,\n ...steps: Array<{ new (debug: Args): M }>\n): Promise<Answers> {\n try {\n sanitizeAndValidateArgs(argv);\n if (argv.debug) {\n debug(argv);\n }\n if (argv.quiet) {\n dim(\"Quiet mode On, DAMA, don't ask me anything\");\n }\n return await steps\n .map((step) => new step(argv))\n .reduce(async (answer, step) => {\n const prevAnswer = await answer;\n const answers = await step.emit(prevAnswer);\n return { ...prevAnswer, ...answers };\n }, Promise.resolve({}));\n } catch (e) {\n BottomBar.hide();\n nl();\n red('Sentry Wizard failed with:');\n red(argv.debug ? e : e.message);\n nl();\n red('Protip: Add --debug to see whats going on');\n red('OR use --help to see your options');\n process.exit(1);\n }\n}\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
/// <reference types="jest" />
|
|
4
|
-
|
|
5
|
-
describe('SentryCli',
|
|
6
|
-
test('exists',
|
|
4
|
+
const File_1 = require("../File");
|
|
5
|
+
describe('SentryCli', () => {
|
|
6
|
+
test('exists', () => {
|
|
7
7
|
expect((0, File_1.exists)('**/File.ts')).toBeTruthy();
|
|
8
8
|
expect((0, File_1.exists)('Filea.ts')).toBeFalsy();
|
|
9
9
|
});
|
|
10
|
-
test('matchesContent',
|
|
10
|
+
test('matchesContent', () => {
|
|
11
11
|
expect((0, File_1.matchesContent)('**/File.ts', /exists/g)).toBeTruthy();
|
|
12
12
|
expect((0, File_1.matchesContent)('**/File.ts', /blabla/g)).toBeFalsy();
|
|
13
13
|
expect((0, File_1.matchesContent)('Filea.ts', /exists/g)).toBeFalsy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../../../lib/Helper/__tests__/File.ts"],"names":[],"mappings":";;AAAA,8BAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"File.js","sourceRoot":"","sources":["../../../../lib/Helper/__tests__/File.ts"],"names":[],"mappings":";;AAAA,8BAA8B;AAC9B,kCAAiD;AAEjD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,IAAA,aAAM,EAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,IAAA,qBAAc,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAA,qBAAc,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAA,qBAAc,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/// <reference types=\"jest\" />\nimport { exists, matchesContent } from '../File';\n\ndescribe('SentryCli', () => {\n test('exists', () => {\n expect(exists('**/File.ts')).toBeTruthy();\n expect(exists('Filea.ts')).toBeFalsy();\n });\n\n test('matchesContent', () => {\n expect(matchesContent('**/File.ts', /exists/g)).toBeTruthy();\n expect(matchesContent('**/File.ts', /blabla/g)).toBeFalsy();\n expect(matchesContent('Filea.ts', /exists/g)).toBeFalsy();\n });\n});\n"]}
|
|
@@ -24,54 +24,54 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
/// <reference types="jest" />
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
const fs = __importStar(require("fs"));
|
|
28
|
+
const path = __importStar(require("path"));
|
|
29
|
+
const MergeConfig_1 = require("../MergeConfig");
|
|
30
|
+
const configPath = path.join(__dirname, '..', 'test-fixtures/next.config.js');
|
|
31
|
+
const templatePath = path.join(__dirname, '..', '..', '..', 'scripts/NextJs/configs/next.config.template.js');
|
|
32
32
|
function configFileNames(num) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return { sourcePath
|
|
33
|
+
const sourcePath = path.join(__dirname, '..', `test-fixtures/next.config.${num}.js`);
|
|
34
|
+
const mergedPath = path.join(__dirname, '..', `test-fixtures/next.config.${num}-merged.js`);
|
|
35
|
+
return { sourcePath, mergedPath };
|
|
36
36
|
}
|
|
37
|
-
describe('Merging next.config.js',
|
|
38
|
-
afterEach(
|
|
37
|
+
describe('Merging next.config.js', () => {
|
|
38
|
+
afterEach(() => {
|
|
39
39
|
fs.unlinkSync(configPath);
|
|
40
40
|
});
|
|
41
|
-
test('merge basic next.config.js return true',
|
|
42
|
-
|
|
41
|
+
test('merge basic next.config.js return true', () => {
|
|
42
|
+
const { sourcePath } = configFileNames(1);
|
|
43
43
|
fs.copyFileSync(sourcePath, configPath);
|
|
44
44
|
expect((0, MergeConfig_1.mergeConfigFile)(configPath, templatePath)).toBe(true);
|
|
45
45
|
});
|
|
46
|
-
test('merge basic next.config.js',
|
|
47
|
-
|
|
46
|
+
test('merge basic next.config.js', () => {
|
|
47
|
+
const { sourcePath, mergedPath } = configFileNames(1);
|
|
48
48
|
fs.copyFileSync(sourcePath, configPath);
|
|
49
49
|
(0, MergeConfig_1.mergeConfigFile)(configPath, templatePath);
|
|
50
50
|
expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));
|
|
51
51
|
});
|
|
52
|
-
test('merge invalid javascript config return false',
|
|
53
|
-
|
|
52
|
+
test('merge invalid javascript config return false', () => {
|
|
53
|
+
const { sourcePath } = configFileNames(2);
|
|
54
54
|
fs.copyFileSync(sourcePath, configPath);
|
|
55
55
|
expect((0, MergeConfig_1.mergeConfigFile)(configPath, templatePath)).toBe(false);
|
|
56
56
|
});
|
|
57
|
-
test('merge more complicated next.config.js return true',
|
|
58
|
-
|
|
57
|
+
test('merge more complicated next.config.js return true', () => {
|
|
58
|
+
const { sourcePath } = configFileNames(3);
|
|
59
59
|
fs.copyFileSync(sourcePath, configPath);
|
|
60
60
|
expect((0, MergeConfig_1.mergeConfigFile)(configPath, templatePath)).toBe(true);
|
|
61
61
|
});
|
|
62
|
-
test('merge more complicated next.config.js',
|
|
63
|
-
|
|
62
|
+
test('merge more complicated next.config.js', () => {
|
|
63
|
+
const { sourcePath, mergedPath } = configFileNames(3);
|
|
64
64
|
fs.copyFileSync(sourcePath, configPath);
|
|
65
65
|
(0, MergeConfig_1.mergeConfigFile)(configPath, templatePath);
|
|
66
66
|
expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));
|
|
67
67
|
});
|
|
68
|
-
test('merge next.config.js with function return true',
|
|
69
|
-
|
|
68
|
+
test('merge next.config.js with function return true', () => {
|
|
69
|
+
const { sourcePath } = configFileNames(4);
|
|
70
70
|
fs.copyFileSync(sourcePath, configPath);
|
|
71
71
|
expect((0, MergeConfig_1.mergeConfigFile)(configPath, templatePath)).toBe(true);
|
|
72
72
|
});
|
|
73
|
-
test('merge next.config.js with function',
|
|
74
|
-
|
|
73
|
+
test('merge next.config.js with function', () => {
|
|
74
|
+
const { sourcePath, mergedPath } = configFileNames(4);
|
|
75
75
|
fs.copyFileSync(sourcePath, configPath);
|
|
76
76
|
(0, MergeConfig_1.mergeConfigFile)(configPath, templatePath);
|
|
77
77
|
expect(fs.readFileSync(configPath, 'utf8')).toEqual(fs.readFileSync(mergedPath, 'utf8'));
|