@sentry/wizard 3.4.0 → 3.5.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/CHANGELOG.md +12 -0
- package/bin.ts +29 -19
- package/dist/bin.js +23 -18
- package/dist/bin.js.map +1 -1
- package/dist/lib/Helper/Wizard.js +0 -9
- package/dist/lib/Helper/Wizard.js.map +1 -1
- package/dist/lib/Setup.js.map +1 -1
- package/dist/lib/Steps/ChooseIntegration.js +26 -10
- package/dist/lib/Steps/ChooseIntegration.js.map +1 -1
- package/dist/lib/Steps/Integrations/{NextJs.d.ts → NextJsShim.d.ts} +1 -1
- package/dist/lib/Steps/Integrations/{NextJs.js → NextJsShim.js} +13 -10
- package/dist/lib/Steps/Integrations/NextJsShim.js.map +1 -0
- package/dist/lib/Steps/Integrations/SourceMapsShim.js +4 -1
- package/dist/lib/Steps/Integrations/SourceMapsShim.js.map +1 -1
- package/dist/lib/Steps/Integrations/{SvelteKit.d.ts → SvelteKitShim.d.ts} +1 -1
- package/dist/lib/Steps/Integrations/{SvelteKit.js → SvelteKitShim.js} +13 -10
- package/dist/lib/Steps/Integrations/SvelteKitShim.js.map +1 -0
- package/dist/package.json +3 -3
- package/dist/src/nextjs/nextjs-wizard.d.ts +2 -5
- package/dist/src/nextjs/nextjs-wizard.js +1 -1
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.d.ts +2 -5
- package/dist/src/sourcemaps/sourcemaps-wizard.js +34 -19
- package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
- package/dist/src/sourcemaps/tools/create-react-app.d.ts +1 -0
- package/dist/src/sourcemaps/tools/create-react-app.js +69 -0
- package/dist/src/sourcemaps/tools/create-react-app.js.map +1 -0
- package/dist/src/sourcemaps/tools/sentry-cli.js +5 -0
- package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
- package/dist/src/sourcemaps/utils/sdk-version.d.ts +14 -0
- package/dist/src/sourcemaps/utils/sdk-version.js +275 -0
- package/dist/src/sourcemaps/utils/sdk-version.js.map +1 -0
- package/dist/src/sveltekit/sveltekit-wizard.d.ts +2 -5
- package/dist/src/sveltekit/sveltekit-wizard.js +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/utils/clack-utils.d.ts +13 -2
- package/dist/src/utils/clack-utils.js +76 -43
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/types.d.ts +12 -0
- package/dist/src/utils/types.js +3 -0
- package/dist/src/utils/types.js.map +1 -0
- package/lib/Helper/Wizard.ts +0 -9
- package/lib/Setup.ts +1 -0
- package/lib/Steps/ChooseIntegration.ts +35 -11
- package/lib/Steps/Integrations/{NextJs.ts → NextJsShim.ts} +5 -2
- package/lib/Steps/Integrations/SourceMapsShim.ts +4 -1
- package/lib/Steps/Integrations/{SvelteKit.ts → SvelteKitShim.ts} +5 -2
- package/package.json +3 -3
- package/src/nextjs/nextjs-wizard.ts +3 -8
- package/src/sourcemaps/sourcemaps-wizard.ts +21 -11
- package/src/sourcemaps/tools/create-react-app.ts +19 -0
- package/src/sourcemaps/tools/sentry-cli.ts +5 -0
- package/src/sourcemaps/utils/sdk-version.ts +264 -0
- package/src/sveltekit/sveltekit-wizard.ts +3 -6
- package/src/utils/clack-utils.ts +69 -27
- package/src/utils/types.ts +13 -0
- package/dist/lib/Steps/Integrations/NextJs.js.map +0 -1
- package/dist/lib/Steps/Integrations/SvelteKit.js.map +0 -1
|
@@ -0,0 +1,275 @@
|
|
|
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
|
+
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
62
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
|
+
};
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
exports.ensureMinimumSdkVersionIsInstalled = void 0;
|
|
66
|
+
// @ts-ignore - clack is ESM and TS complains about that. It works though
|
|
67
|
+
var prompts_1 = __importDefault(require("@clack/prompts"));
|
|
68
|
+
var chalk_1 = __importDefault(require("chalk"));
|
|
69
|
+
var semver_1 = require("semver");
|
|
70
|
+
var clack_utils_1 = require("../../utils/clack-utils");
|
|
71
|
+
var Sentry = __importStar(require("@sentry/node"));
|
|
72
|
+
var MINIMUM_DEBUG_ID_SDK_VERSION = '7.47.0';
|
|
73
|
+
// This array is orderd by the SDKs we want to check for first.
|
|
74
|
+
// The reason is that some SDKs depend on others and some users might
|
|
75
|
+
// have added the dependencies to their package.json. We want to make sure
|
|
76
|
+
// that we actually detect the "top-level" SDK first.
|
|
77
|
+
var SENTRY_SDK_PACKAGE_NAMES = [
|
|
78
|
+
// SDKs using other framework SDKs need to be checked first
|
|
79
|
+
'@sentry/gatsby',
|
|
80
|
+
'@sentry/nextjs',
|
|
81
|
+
'@sentry/remix',
|
|
82
|
+
'@sentry/sveltekit',
|
|
83
|
+
// Framework SDKs
|
|
84
|
+
'@sentry/angular',
|
|
85
|
+
'@sentry/angular-ivy',
|
|
86
|
+
'@sentry/ember',
|
|
87
|
+
'@sentry/react',
|
|
88
|
+
'@sentry/svelte',
|
|
89
|
+
'@sentry/vue',
|
|
90
|
+
'@sentry/serverless',
|
|
91
|
+
// Base SDKs
|
|
92
|
+
'@sentry/browser',
|
|
93
|
+
'@sentry/node',
|
|
94
|
+
];
|
|
95
|
+
/**
|
|
96
|
+
* Check for a minimum SDK version and prompt the user to upgrade if necessary.
|
|
97
|
+
* We distinguish between 4 cases here:
|
|
98
|
+
*
|
|
99
|
+
* 1. Users didn't install any SDK yet
|
|
100
|
+
* -> We tell them to install an SDK and then continue with the wizard
|
|
101
|
+
* 2. Users installed an SDK in the range >=7.47.0
|
|
102
|
+
* -> All good, no need to do anything!
|
|
103
|
+
* 3. Users installed an SDK in the range >=7.0.0 <= 7.46.0
|
|
104
|
+
* -> We ask if they want to auto-update to the latest version
|
|
105
|
+
* 4. Users installed an SDK in the range <7.x
|
|
106
|
+
* -> We tell users to manually upgrade (migrate between majors)
|
|
107
|
+
*/
|
|
108
|
+
function ensureMinimumSdkVersionIsInstalled() {
|
|
109
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
110
|
+
var packageJson, installedSdkPackages, installedSdkPackage, installedSdkName, installedSdkVersionOrRange, minInstalledVersion, hasDebugIdCompatibleSdkVersion, hasV7SdkVersion;
|
|
111
|
+
return __generator(this, function (_a) {
|
|
112
|
+
switch (_a.label) {
|
|
113
|
+
case 0: return [4 /*yield*/, (0, clack_utils_1.getPackageDotJson)()];
|
|
114
|
+
case 1:
|
|
115
|
+
packageJson = _a.sent();
|
|
116
|
+
installedSdkPackages = SENTRY_SDK_PACKAGE_NAMES.map(function (packageName) { return ({
|
|
117
|
+
name: packageName,
|
|
118
|
+
version: (0, clack_utils_1.getPackageVersion)(packageName, packageJson),
|
|
119
|
+
}); }).filter(function (sdkPackage) { return !!sdkPackage.version; });
|
|
120
|
+
installedSdkPackage = installedSdkPackages.length > 0 && installedSdkPackages[0];
|
|
121
|
+
if (!!installedSdkPackage) return [3 /*break*/, 3];
|
|
122
|
+
return [4 /*yield*/, handleNoSdkInstalled()];
|
|
123
|
+
case 2: return [2 /*return*/, _a.sent()];
|
|
124
|
+
case 3:
|
|
125
|
+
installedSdkName = installedSdkPackage.name, installedSdkVersionOrRange = installedSdkPackage.version;
|
|
126
|
+
minInstalledVersion = getMinInstalledVersion(installedSdkVersionOrRange, installedSdkName);
|
|
127
|
+
if (!minInstalledVersion) {
|
|
128
|
+
// This is handled in the getMinInstalledVersion function
|
|
129
|
+
return [2 /*return*/];
|
|
130
|
+
}
|
|
131
|
+
hasDebugIdCompatibleSdkVersion = (0, semver_1.satisfies)(minInstalledVersion, ">=".concat(MINIMUM_DEBUG_ID_SDK_VERSION));
|
|
132
|
+
// Case 2:
|
|
133
|
+
if (hasDebugIdCompatibleSdkVersion) {
|
|
134
|
+
Sentry.setTag('initial-sdk-version', '>=7.47.0');
|
|
135
|
+
return [2 /*return*/];
|
|
136
|
+
}
|
|
137
|
+
hasV7SdkVersion = (0, semver_1.satisfies)(minInstalledVersion, '>=7.0.0');
|
|
138
|
+
prompts_1.default.log.warn("".concat(chalk_1.default.yellowBright("It seems like you're using an outdated version (".concat(installedSdkVersionOrRange, ") of the ").concat(chalk_1.default.bold(installedSdkName), " SDK.")), "\nUploading source maps is easiest with an SDK from version ").concat(chalk_1.default.bold(MINIMUM_DEBUG_ID_SDK_VERSION), " or newer. \n"));
|
|
139
|
+
if (!hasV7SdkVersion) return [3 /*break*/, 5];
|
|
140
|
+
return [4 /*yield*/, handleAutoUpdateSdk(installedSdkName)];
|
|
141
|
+
case 4:
|
|
142
|
+
_a.sent();
|
|
143
|
+
return [2 /*return*/];
|
|
144
|
+
case 5:
|
|
145
|
+
// Case 4:
|
|
146
|
+
return [4 /*yield*/, handleManuallyUpdateSdk(minInstalledVersion)];
|
|
147
|
+
case 6:
|
|
148
|
+
// Case 4:
|
|
149
|
+
_a.sent();
|
|
150
|
+
return [2 /*return*/];
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
exports.ensureMinimumSdkVersionIsInstalled = ensureMinimumSdkVersionIsInstalled;
|
|
156
|
+
function handleManuallyUpdateSdk(minInstalledVersion) {
|
|
157
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
158
|
+
var didUpdate;
|
|
159
|
+
return __generator(this, function (_a) {
|
|
160
|
+
switch (_a.label) {
|
|
161
|
+
case 0:
|
|
162
|
+
Sentry.setTag('initial-sdk-version', "".concat((0, semver_1.satisfies)(minInstalledVersion, '>=6.0.0') ? '6.x' : '<6.0.0'));
|
|
163
|
+
prompts_1.default.log
|
|
164
|
+
.info("When upgrading from a version older than 7.0.0, make sure to follow the migration guide:\nhttps://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#upgrading-from-6x-to-7x\n");
|
|
165
|
+
return [4 /*yield*/, (0, clack_utils_1.abortIfCancelled)(prompts_1.default.select({
|
|
166
|
+
message: 'Did you update your SDK to the latest version?',
|
|
167
|
+
options: [
|
|
168
|
+
{
|
|
169
|
+
label: 'Yes!',
|
|
170
|
+
value: true,
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
label: "No, I'll do it later...",
|
|
174
|
+
value: false,
|
|
175
|
+
hint: chalk_1.default.yellow("Remember to update your SDK to at least ".concat(MINIMUM_DEBUG_ID_SDK_VERSION, ".")),
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
initialValue: true,
|
|
179
|
+
}))];
|
|
180
|
+
case 1:
|
|
181
|
+
didUpdate = _a.sent();
|
|
182
|
+
Sentry.setTag('resolved-sdk-status', didUpdate ? 'updated-manually' : 'update-later');
|
|
183
|
+
return [2 /*return*/];
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
function handleAutoUpdateSdk(packageName) {
|
|
189
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
190
|
+
var shouldUpdate;
|
|
191
|
+
return __generator(this, function (_a) {
|
|
192
|
+
switch (_a.label) {
|
|
193
|
+
case 0:
|
|
194
|
+
Sentry.setTag('initial-sdk-version', '>=7.0.0 <7.47.0');
|
|
195
|
+
return [4 /*yield*/, (0, clack_utils_1.abortIfCancelled)(prompts_1.default.select({
|
|
196
|
+
message: 'Do you want to automatically update your SDK to the latest version?',
|
|
197
|
+
options: [
|
|
198
|
+
{
|
|
199
|
+
label: 'Yes!',
|
|
200
|
+
value: true,
|
|
201
|
+
hint: chalk_1.default.green('Recommended'),
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
label: "No, I'll do it later...",
|
|
205
|
+
value: false,
|
|
206
|
+
hint: chalk_1.default.yellow("Remember to update your SDK to at least ".concat(MINIMUM_DEBUG_ID_SDK_VERSION, ".")),
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
initialValue: true,
|
|
210
|
+
}))];
|
|
211
|
+
case 1:
|
|
212
|
+
shouldUpdate = _a.sent();
|
|
213
|
+
if (!shouldUpdate) return [3 /*break*/, 3];
|
|
214
|
+
return [4 /*yield*/, (0, clack_utils_1.installPackage)({
|
|
215
|
+
packageName: packageName,
|
|
216
|
+
alreadyInstalled: true,
|
|
217
|
+
askBeforeUpdating: false, // we already did this above
|
|
218
|
+
})];
|
|
219
|
+
case 2:
|
|
220
|
+
_a.sent();
|
|
221
|
+
_a.label = 3;
|
|
222
|
+
case 3:
|
|
223
|
+
Sentry.setTag('resolved-sdk-status', shouldUpdate ? 'updated-automatically' : 'update-later');
|
|
224
|
+
return [2 /*return*/];
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
function handleNoSdkInstalled() {
|
|
230
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
231
|
+
var installedSDK;
|
|
232
|
+
return __generator(this, function (_a) {
|
|
233
|
+
switch (_a.label) {
|
|
234
|
+
case 0:
|
|
235
|
+
Sentry.setTag('initial-sdk-version', 'none');
|
|
236
|
+
prompts_1.default.log.warn("".concat(chalk_1.default.yellowBright("It seems like you didn't yet install a Sentry SDK in your project."), "\nWe recommend setting up the SDK before continuing with the source maps wizard.\n\n").concat(chalk_1.default.dim("Take a look at our docs to get started:\nhttps://docs.sentry.io/")));
|
|
237
|
+
return [4 /*yield*/, (0, clack_utils_1.abortIfCancelled)(prompts_1.default.select({
|
|
238
|
+
message: 'Did you set up your Sentry SDK?',
|
|
239
|
+
options: [
|
|
240
|
+
{ label: 'Yes, continue!', value: true },
|
|
241
|
+
{
|
|
242
|
+
label: "I'll do it later...",
|
|
243
|
+
value: false,
|
|
244
|
+
hint: chalk_1.default.yellow('You need to set up an SDK before you can use Sentry'),
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
initialValue: true,
|
|
248
|
+
}))];
|
|
249
|
+
case 1:
|
|
250
|
+
installedSDK = _a.sent();
|
|
251
|
+
Sentry.setTag('resolved-sdk-status', installedSDK ? 'installed-manually' : 'install-later');
|
|
252
|
+
return [2 /*return*/];
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
function getMinInstalledVersion(installedSdkVersionOrRange, installedSdkName) {
|
|
258
|
+
var _a;
|
|
259
|
+
try {
|
|
260
|
+
// If `minVersion` is unable to parse the version it will throw an error
|
|
261
|
+
// However, it will also return `null` if the parameter is undefined, which
|
|
262
|
+
// we explicitly checked before but the typing doesn't know that.
|
|
263
|
+
var minInstalledVersion = (_a = (0, semver_1.minVersion)(installedSdkVersionOrRange)) === null || _a === void 0 ? void 0 : _a.version;
|
|
264
|
+
if (minInstalledVersion) {
|
|
265
|
+
return minInstalledVersion;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch (_b) {
|
|
269
|
+
// handling this, along with the `null` case below
|
|
270
|
+
}
|
|
271
|
+
Sentry.setTag('initial-sdk-version', 'unknown');
|
|
272
|
+
prompts_1.default.log.warn("".concat(chalk_1.default.yellow("Could not parse the version of your installed SDK (\"".concat(installedSdkName, "\": \"").concat(installedSdkVersionOrRange, "\")")), "\n\nPlease make sure that your Sentry SDK is updated to version ").concat(chalk_1.default.bold(MINIMUM_DEBUG_ID_SDK_VERSION), " or newer.\n "));
|
|
273
|
+
return undefined;
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=sdk-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-version.js","sourceRoot":"","sources":["../../../../src/sourcemaps/utils/sdk-version.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack from '@clack/prompts';\nimport chalk from 'chalk';\nimport { minVersion, satisfies } from 'semver';\nimport {\n abortIfCancelled,\n getPackageDotJson,\n getPackageVersion,\n installPackage,\n} from '../../utils/clack-utils';\n\nimport * as Sentry from '@sentry/node';\n\nconst MINIMUM_DEBUG_ID_SDK_VERSION = '7.47.0';\n\n// This array is orderd by the SDKs we want to check for first.\n// The reason is that some SDKs depend on others and some users might\n// have added the dependencies to their package.json. We want to make sure\n// that we actually detect the \"top-level\" SDK first.\nconst SENTRY_SDK_PACKAGE_NAMES = [\n // SDKs using other framework SDKs need to be checked first\n '@sentry/gatsby',\n '@sentry/nextjs',\n '@sentry/remix',\n '@sentry/sveltekit',\n\n // Framework SDKs\n '@sentry/angular',\n '@sentry/angular-ivy',\n '@sentry/ember',\n '@sentry/react',\n '@sentry/svelte',\n '@sentry/vue',\n '@sentry/serverless',\n\n // Base SDKs\n '@sentry/browser',\n '@sentry/node',\n] as const;\n\ntype SdkPackage = {\n name: (typeof SENTRY_SDK_PACKAGE_NAMES)[number];\n version: string;\n};\n\n/**\n * Check for a minimum SDK version and prompt the user to upgrade if necessary.\n * We distinguish between 4 cases here:\n *\n * 1. Users didn't install any SDK yet\n * -> We tell them to install an SDK and then continue with the wizard\n * 2. Users installed an SDK in the range >=7.47.0\n * -> All good, no need to do anything!\n * 3. Users installed an SDK in the range >=7.0.0 <= 7.46.0\n * -> We ask if they want to auto-update to the latest version\n * 4. Users installed an SDK in the range <7.x\n * -> We tell users to manually upgrade (migrate between majors)\n */\nexport async function ensureMinimumSdkVersionIsInstalled(): Promise<void> {\n const packageJson = await getPackageDotJson();\n\n const installedSdkPackages = SENTRY_SDK_PACKAGE_NAMES.map((packageName) => ({\n name: packageName,\n version: getPackageVersion(packageName, packageJson),\n })).filter((sdkPackage): sdkPackage is SdkPackage => !!sdkPackage.version);\n\n const installedSdkPackage =\n installedSdkPackages.length > 0 && installedSdkPackages[0];\n\n // Case 1:\n if (!installedSdkPackage) {\n return await handleNoSdkInstalled();\n }\n\n const { name: installedSdkName, version: installedSdkVersionOrRange } =\n installedSdkPackage;\n\n const minInstalledVersion = getMinInstalledVersion(\n installedSdkVersionOrRange,\n installedSdkName,\n );\n\n if (!minInstalledVersion) {\n // This is handled in the getMinInstalledVersion function\n return;\n }\n\n const hasDebugIdCompatibleSdkVersion = satisfies(\n minInstalledVersion,\n `>=${MINIMUM_DEBUG_ID_SDK_VERSION}`,\n );\n\n // Case 2:\n if (hasDebugIdCompatibleSdkVersion) {\n Sentry.setTag('initial-sdk-version', '>=7.47.0');\n return;\n }\n\n const hasV7SdkVersion = satisfies(minInstalledVersion, '>=7.0.0');\n\n clack.log.warn(\n `${chalk.yellowBright(\n `It seems like you're using an outdated version (${installedSdkVersionOrRange}) of the ${chalk.bold(\n installedSdkName,\n )} SDK.`,\n )}\nUploading source maps is easiest with an SDK from version ${chalk.bold(\n MINIMUM_DEBUG_ID_SDK_VERSION,\n )} or newer. \n`,\n );\n\n // Case 3:\n if (hasV7SdkVersion) {\n await handleAutoUpdateSdk(installedSdkName);\n return;\n }\n\n // Case 4:\n await handleManuallyUpdateSdk(minInstalledVersion);\n}\n\nasync function handleManuallyUpdateSdk(minInstalledVersion: string) {\n Sentry.setTag(\n 'initial-sdk-version',\n `${satisfies(minInstalledVersion, '>=6.0.0') ? '6.x' : '<6.0.0'}`,\n );\n\n clack.log\n .info(`When upgrading from a version older than 7.0.0, make sure to follow the migration guide:\nhttps://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#upgrading-from-6x-to-7x\n`);\n\n const didUpdate = await abortIfCancelled(\n clack.select({\n message: 'Did you update your SDK to the latest version?',\n options: [\n {\n label: 'Yes!',\n value: true,\n },\n {\n label: \"No, I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n `Remember to update your SDK to at least ${MINIMUM_DEBUG_ID_SDK_VERSION}.`,\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag(\n 'resolved-sdk-status',\n didUpdate ? 'updated-manually' : 'update-later',\n );\n}\n\nasync function handleAutoUpdateSdk(packageName: string) {\n Sentry.setTag('initial-sdk-version', '>=7.0.0 <7.47.0');\n\n const shouldUpdate = await abortIfCancelled(\n clack.select({\n message:\n 'Do you want to automatically update your SDK to the latest version?',\n options: [\n {\n label: 'Yes!',\n value: true,\n hint: chalk.green('Recommended'),\n },\n {\n label: \"No, I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n `Remember to update your SDK to at least ${MINIMUM_DEBUG_ID_SDK_VERSION}.`,\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n if (shouldUpdate) {\n await installPackage({\n packageName,\n alreadyInstalled: true,\n askBeforeUpdating: false, // we already did this above\n });\n }\n\n Sentry.setTag(\n 'resolved-sdk-status',\n shouldUpdate ? 'updated-automatically' : 'update-later',\n );\n}\n\nasync function handleNoSdkInstalled(): Promise<void> {\n Sentry.setTag('initial-sdk-version', 'none');\n\n clack.log.warn(\n `${chalk.yellowBright(\n `It seems like you didn't yet install a Sentry SDK in your project.`,\n )}\nWe recommend setting up the SDK before continuing with the source maps wizard.\n\n${chalk.dim(`Take a look at our docs to get started:\nhttps://docs.sentry.io/`)}`,\n );\n\n const installedSDK = await abortIfCancelled(\n clack.select({\n message: 'Did you set up your Sentry SDK?',\n options: [\n { label: 'Yes, continue!', value: true },\n {\n label: \"I'll do it later...\",\n value: false,\n hint: chalk.yellow(\n 'You need to set up an SDK before you can use Sentry',\n ),\n },\n ],\n initialValue: true,\n }),\n );\n\n Sentry.setTag(\n 'resolved-sdk-status',\n installedSDK ? 'installed-manually' : 'install-later',\n );\n}\n\nfunction getMinInstalledVersion(\n installedSdkVersionOrRange: string,\n installedSdkName: string,\n): string | undefined {\n try {\n // If `minVersion` is unable to parse the version it will throw an error\n // However, it will also return `null` if the parameter is undefined, which\n // we explicitly checked before but the typing doesn't know that.\n const minInstalledVersion = minVersion(installedSdkVersionOrRange)?.version;\n if (minInstalledVersion) {\n return minInstalledVersion;\n }\n } catch {\n // handling this, along with the `null` case below\n }\n\n Sentry.setTag('initial-sdk-version', 'unknown');\n clack.log.warn(\n `${chalk.yellow(\n `Could not parse the version of your installed SDK (\"${installedSdkName}\": \"${installedSdkVersionOrRange}\")`,\n )}\n\nPlease make sure that your Sentry SDK is updated to version ${chalk.bold(\n MINIMUM_DEBUG_ID_SDK_VERSION,\n )} or newer.\n `,\n );\n\n return undefined;\n}\n"]}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
export declare function runSvelteKitWizard(options: SvelteKitWizardOptions): Promise<void>;
|
|
5
|
-
export {};
|
|
1
|
+
import { WizardOptions } from '../utils/types';
|
|
2
|
+
export declare function runSvelteKitWizard(options: WizardOptions): Promise<void>;
|
|
@@ -66,7 +66,7 @@ function runSvelteKitWizard(options) {
|
|
|
66
66
|
return [4 /*yield*/, (0, clack_utils_1.ensurePackageIsInstalled)(packageJson, '@sveltejs/kit', 'Sveltekit')];
|
|
67
67
|
case 3:
|
|
68
68
|
_c.sent();
|
|
69
|
-
return [4 /*yield*/, (0, clack_utils_1.askForSelfHosted)()];
|
|
69
|
+
return [4 /*yield*/, (0, clack_utils_1.askForSelfHosted)(options.url)];
|
|
70
70
|
case 4:
|
|
71
71
|
_a = _c.sent(), sentryUrl = _a.url, selfHosted = _a.selfHosted;
|
|
72
72
|
return [4 /*yield*/, (0, clack_utils_1.askForWizardLogin)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sveltekit-wizard.js","sourceRoot":"","sources":["../../../src/sveltekit/sveltekit-wizard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAAyE;AACzE,2DAAmC;AACnC,gDAA0B;AAE1B,oDAU8B;
|
|
1
|
+
{"version":3,"file":"sveltekit-wizard.js","sourceRoot":"","sources":["../../../src/sveltekit/sveltekit-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-ignore - clack is ESM and TS complains about that. It works though\nimport clack from '@clack/prompts';\nimport chalk from 'chalk';\n\nimport {\n askForProjectSelection,\n askForSelfHosted,\n askForWizardLogin,\n confirmContinueEvenThoughNoGitRepo,\n ensurePackageIsInstalled,\n getPackageDotJson,\n hasPackageInstalled,\n installPackage,\n printWelcome,\n} from '../utils/clack-utils';\nimport { WizardOptions } from '../utils/types';\nimport { createExamplePage } from './sdk-example';\nimport { createOrMergeSvelteKitFiles, loadSvelteConfig } from './sdk-setup';\n\nimport { setupCLIConfig } from './sentry-cli-setup';\n\nexport async function runSvelteKitWizard(\n options: WizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'Sentry SvelteKit Wizard',\n promoCode: options.promoCode,\n });\n\n await confirmContinueEvenThoughNoGitRepo();\n\n const packageJson = await getPackageDotJson();\n await ensurePackageIsInstalled(packageJson, '@sveltejs/kit', 'Sveltekit');\n\n const { url: sentryUrl, selfHosted } = await askForSelfHosted(options.url);\n\n const { projects, apiKeys } = await askForWizardLogin({\n promoCode: options.promoCode,\n url: sentryUrl,\n platform: 'javascript-sveltekit',\n });\n\n const selectedProject = await askForProjectSelection(projects);\n\n await installPackage({\n packageName: '@sentry/sveltekit',\n alreadyInstalled: hasPackageInstalled('@sentry/sveltekit', packageJson),\n });\n\n await setupCLIConfig(apiKeys.token, selectedProject, sentryUrl);\n\n const dsn = selectedProject.keys[0].dsn.public;\n\n const svelteConfig = await loadSvelteConfig();\n\n try {\n await createOrMergeSvelteKitFiles(dsn, svelteConfig);\n } catch (e: unknown) {\n clack.log.error('Error while setting up the SvelteKit SDK:');\n clack.log.info(\n chalk.dim(\n typeof e === 'object' && e != null && 'toString' in e\n ? e.toString()\n : typeof e === 'string'\n ? e\n : 'Unknown error',\n ),\n );\n return;\n }\n\n try {\n await createExamplePage(svelteConfig, {\n selfHosted,\n url: sentryUrl,\n orgSlug: selectedProject.organization.slug,\n projectId: selectedProject.id,\n });\n } catch (e: unknown) {\n clack.log.error('Error while creating an example page to test Sentry:');\n clack.log.info(\n chalk.dim(\n typeof e === 'object' && e != null && 'toString' in e\n ? e.toString()\n : typeof e === 'string'\n ? e\n : 'Unknown error',\n ),\n );\n return;\n }\n\n clack.outro(`\n${chalk.green('Successfully installed the Sentry SvelteKit SDK!')}\n\n${chalk.cyan(\n 'You can validate your setup by starting your dev environment (`npm run dev`) and visiting \"/sentry-example\".',\n)}\n\nCheck out the SDK documentation for further configuration:\nhttps://docs.sentry.io/platforms/javascript/guides/sveltekit/\n `);\n}\n"]}
|
|
@@ -36,11 +36,21 @@ export declare function askForWizardLogin(options: {
|
|
|
36
36
|
platform?: 'javascript-nextjs' | 'javascript-sveltekit';
|
|
37
37
|
}): Promise<WizardProjectData>;
|
|
38
38
|
export declare function askForProjectSelection(projects: SentryProjectData[]): Promise<SentryProjectData>;
|
|
39
|
-
export declare function installPackage({ packageName, alreadyInstalled, }: {
|
|
39
|
+
export declare function installPackage({ packageName, alreadyInstalled, askBeforeUpdating, }: {
|
|
40
40
|
packageName: string;
|
|
41
41
|
alreadyInstalled: boolean;
|
|
42
|
+
askBeforeUpdating?: boolean;
|
|
42
43
|
}): Promise<void>;
|
|
43
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Asks users if they are using SaaS or self-hosted Sentry and returns the validated URL.
|
|
46
|
+
*
|
|
47
|
+
* If users started the wizard with a --url arg, that URL is used as the default and we skip
|
|
48
|
+
* the self-hosted question. However, the passed url is still validated and in case it's
|
|
49
|
+
* invalid, users are asked to enter a new one until it is valid.
|
|
50
|
+
*
|
|
51
|
+
* @param urlFromArgs the url passed via the --url arg
|
|
52
|
+
*/
|
|
53
|
+
export declare function askForSelfHosted(urlFromArgs?: string): Promise<{
|
|
44
54
|
url: string;
|
|
45
55
|
selfHosted: boolean;
|
|
46
56
|
}>;
|
|
@@ -49,4 +59,5 @@ export declare function addDotEnvSentryBuildPluginFile(authToken: string): Promi
|
|
|
49
59
|
export declare function ensurePackageIsInstalled(packageJson: PackageDotJson, packageId: string, packageName: string): Promise<void>;
|
|
50
60
|
export declare function getPackageDotJson(): Promise<PackageDotJson>;
|
|
51
61
|
export declare function hasPackageInstalled(packageName: string, packageJson: PackageDotJson): boolean;
|
|
62
|
+
export declare function getPackageVersion(packageName: string, packageJson: PackageDotJson): string | undefined;
|
|
52
63
|
export {};
|
|
@@ -62,7 +62,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
62
62
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
63
63
|
};
|
|
64
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
-
exports.hasPackageInstalled = exports.getPackageDotJson = exports.ensurePackageIsInstalled = exports.addDotEnvSentryBuildPluginFile = exports.addSentryCliRc = exports.askForSelfHosted = exports.installPackage = exports.askForProjectSelection = exports.askForWizardLogin = exports.confirmContinueEvenThoughNoGitRepo = exports.printWelcome = exports.abortIfCancelled = exports.abort = void 0;
|
|
65
|
+
exports.getPackageVersion = exports.hasPackageInstalled = exports.getPackageDotJson = exports.ensurePackageIsInstalled = exports.addDotEnvSentryBuildPluginFile = exports.addSentryCliRc = exports.askForSelfHosted = exports.installPackage = exports.askForProjectSelection = exports.askForWizardLogin = exports.confirmContinueEvenThoughNoGitRepo = exports.printWelcome = exports.abortIfCancelled = exports.abort = void 0;
|
|
66
66
|
// @ts-ignore - clack is ESM and TS complains about that. It works though
|
|
67
67
|
var clack = __importStar(require("@clack/prompts"));
|
|
68
68
|
var axios_1 = __importDefault(require("axios"));
|
|
@@ -75,6 +75,7 @@ var url_1 = require("url");
|
|
|
75
75
|
var util_1 = require("util");
|
|
76
76
|
var Sentry = __importStar(require("@sentry/node"));
|
|
77
77
|
var clack_custom_select_1 = require("./vendor/clack-custom-select");
|
|
78
|
+
var opn = require('opn');
|
|
78
79
|
var SAAS_URL = 'https://sentry.io/';
|
|
79
80
|
function abort(message, status) {
|
|
80
81
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -185,7 +186,7 @@ function confirmContinueEvenThoughNoGitRepo() {
|
|
|
185
186
|
exports.confirmContinueEvenThoughNoGitRepo = confirmContinueEvenThoughNoGitRepo;
|
|
186
187
|
function askForWizardLogin(options) {
|
|
187
188
|
return __awaiter(this, void 0, void 0, function () {
|
|
188
|
-
var hasSentryAccount, wizardHash, _a, loginUrl, loginSpinner, data;
|
|
189
|
+
var hasSentryAccount, wizardHash, _a, loginUrl, urlToOpen, loginSpinner, data;
|
|
189
190
|
return __generator(this, function (_b) {
|
|
190
191
|
switch (_b.label) {
|
|
191
192
|
case 0:
|
|
@@ -232,7 +233,11 @@ function askForWizardLogin(options) {
|
|
|
232
233
|
if (options.promoCode) {
|
|
233
234
|
loginUrl.searchParams.set('code', options.promoCode);
|
|
234
235
|
}
|
|
235
|
-
|
|
236
|
+
urlToOpen = loginUrl.toString();
|
|
237
|
+
clack.log.info("".concat(chalk_1.default.bold("If the browser window didn't open automatically, please open the following link to ".concat(hasSentryAccount ? 'log' : 'sign', " into Sentry:")), "\n\n").concat(chalk_1.default.cyan(urlToOpen)));
|
|
238
|
+
opn(urlToOpen).catch(function () {
|
|
239
|
+
// opn throws in environments that don't have a browser (e.g. remote shells) so we just noop here
|
|
240
|
+
});
|
|
236
241
|
loginSpinner = clack.spinner();
|
|
237
242
|
loginSpinner.start("Waiting for you to log in using the link above. Once you're logged in, return to this wizard.");
|
|
238
243
|
return [4 /*yield*/, new Promise(function (resolve) {
|
|
@@ -292,56 +297,56 @@ function askForProjectSelection(projects) {
|
|
|
292
297
|
}
|
|
293
298
|
exports.askForProjectSelection = askForProjectSelection;
|
|
294
299
|
function installPackage(_a) {
|
|
295
|
-
var packageName = _a.packageName, alreadyInstalled = _a.alreadyInstalled;
|
|
300
|
+
var packageName = _a.packageName, alreadyInstalled = _a.alreadyInstalled, _b = _a.askBeforeUpdating, askBeforeUpdating = _b === void 0 ? true : _b;
|
|
296
301
|
return __awaiter(this, void 0, void 0, function () {
|
|
297
302
|
var shouldUpdatePackage, sdkInstallSpinner, packageManager, e_1;
|
|
298
|
-
return __generator(this, function (
|
|
299
|
-
switch (
|
|
303
|
+
return __generator(this, function (_c) {
|
|
304
|
+
switch (_c.label) {
|
|
300
305
|
case 0:
|
|
301
|
-
if (!alreadyInstalled) return [3 /*break*/, 2];
|
|
306
|
+
if (!(alreadyInstalled && askBeforeUpdating)) return [3 /*break*/, 2];
|
|
302
307
|
return [4 /*yield*/, abortIfCancelled(clack.confirm({
|
|
303
308
|
message: "The ".concat(chalk_1.default.bold.cyan(packageName), " package is already installed. Do you want to update it to the latest version?"),
|
|
304
309
|
}))];
|
|
305
310
|
case 1:
|
|
306
|
-
shouldUpdatePackage =
|
|
311
|
+
shouldUpdatePackage = _c.sent();
|
|
307
312
|
if (!shouldUpdatePackage) {
|
|
308
313
|
return [2 /*return*/];
|
|
309
314
|
}
|
|
310
|
-
|
|
315
|
+
_c.label = 2;
|
|
311
316
|
case 2:
|
|
312
317
|
sdkInstallSpinner = clack.spinner();
|
|
313
318
|
return [4 /*yield*/, getPackageManager()];
|
|
314
319
|
case 3:
|
|
315
|
-
packageManager =
|
|
320
|
+
packageManager = _c.sent();
|
|
316
321
|
sdkInstallSpinner.start("".concat(alreadyInstalled ? 'Updating' : 'Installing', " ").concat(chalk_1.default.bold.cyan(packageName), " with ").concat(chalk_1.default.bold(packageManager), "."));
|
|
317
|
-
|
|
322
|
+
_c.label = 4;
|
|
318
323
|
case 4:
|
|
319
|
-
|
|
324
|
+
_c.trys.push([4, 11, , 13]);
|
|
320
325
|
if (!(packageManager === 'yarn')) return [3 /*break*/, 6];
|
|
321
326
|
return [4 /*yield*/, (0, util_1.promisify)(childProcess.exec)("yarn add ".concat(packageName, "@latest"))];
|
|
322
327
|
case 5:
|
|
323
|
-
|
|
328
|
+
_c.sent();
|
|
324
329
|
return [3 /*break*/, 10];
|
|
325
330
|
case 6:
|
|
326
331
|
if (!(packageManager === 'pnpm')) return [3 /*break*/, 8];
|
|
327
332
|
return [4 /*yield*/, (0, util_1.promisify)(childProcess.exec)("pnpm add ".concat(packageName, "@latest"))];
|
|
328
333
|
case 7:
|
|
329
|
-
|
|
334
|
+
_c.sent();
|
|
330
335
|
return [3 /*break*/, 10];
|
|
331
336
|
case 8:
|
|
332
337
|
if (!(packageManager === 'npm')) return [3 /*break*/, 10];
|
|
333
338
|
return [4 /*yield*/, (0, util_1.promisify)(childProcess.exec)("npm install ".concat(packageName, "@latest"))];
|
|
334
339
|
case 9:
|
|
335
|
-
|
|
336
|
-
|
|
340
|
+
_c.sent();
|
|
341
|
+
_c.label = 10;
|
|
337
342
|
case 10: return [3 /*break*/, 13];
|
|
338
343
|
case 11:
|
|
339
|
-
e_1 =
|
|
344
|
+
e_1 = _c.sent();
|
|
340
345
|
sdkInstallSpinner.stop('Installation failed.');
|
|
341
346
|
clack.log.error("".concat(chalk_1.default.red('Encountered the following error during installation:'), "\n\n").concat(e_1, "\n\n").concat(chalk_1.default.dim('If you think this issue is caused by the Sentry wizard, let us know here:\nhttps://github.com/getsentry/sentry-wizard/issues')));
|
|
342
347
|
return [4 /*yield*/, abort()];
|
|
343
348
|
case 12:
|
|
344
|
-
|
|
349
|
+
_c.sent();
|
|
345
350
|
return [3 /*break*/, 13];
|
|
346
351
|
case 13:
|
|
347
352
|
sdkInstallSpinner.stop("".concat(alreadyInstalled ? 'Updated' : 'Installed', " ").concat(chalk_1.default.bold.cyan(packageName), " with ").concat(chalk_1.default.bold(packageManager), "."));
|
|
@@ -351,34 +356,57 @@ function installPackage(_a) {
|
|
|
351
356
|
});
|
|
352
357
|
}
|
|
353
358
|
exports.installPackage = installPackage;
|
|
354
|
-
|
|
359
|
+
/**
|
|
360
|
+
* Asks users if they are using SaaS or self-hosted Sentry and returns the validated URL.
|
|
361
|
+
*
|
|
362
|
+
* If users started the wizard with a --url arg, that URL is used as the default and we skip
|
|
363
|
+
* the self-hosted question. However, the passed url is still validated and in case it's
|
|
364
|
+
* invalid, users are asked to enter a new one until it is valid.
|
|
365
|
+
*
|
|
366
|
+
* @param urlFromArgs the url passed via the --url arg
|
|
367
|
+
*/
|
|
368
|
+
function askForSelfHosted(urlFromArgs) {
|
|
355
369
|
return __awaiter(this, void 0, void 0, function () {
|
|
356
|
-
var choice, validUrl, url;
|
|
357
|
-
return __generator(this, function (
|
|
358
|
-
switch (
|
|
359
|
-
case 0:
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
370
|
+
var choice, validUrl, tmpUrlFromArgs, url, _a, isSelfHostedUrl;
|
|
371
|
+
return __generator(this, function (_b) {
|
|
372
|
+
switch (_b.label) {
|
|
373
|
+
case 0:
|
|
374
|
+
if (!!urlFromArgs) return [3 /*break*/, 2];
|
|
375
|
+
return [4 /*yield*/, abortIfCancelled(clack.select({
|
|
376
|
+
message: 'Are you using Sentry SaaS or self-hosted Sentry?',
|
|
377
|
+
options: [
|
|
378
|
+
{ value: 'saas', label: 'Sentry SaaS (sentry.io)' },
|
|
379
|
+
{
|
|
380
|
+
value: 'self-hosted',
|
|
381
|
+
label: 'Self-hosted/on-premise/single-tenant',
|
|
382
|
+
},
|
|
383
|
+
],
|
|
384
|
+
}))];
|
|
366
385
|
case 1:
|
|
367
|
-
choice =
|
|
386
|
+
choice = _b.sent();
|
|
368
387
|
if (choice === 'saas') {
|
|
369
388
|
Sentry.setTag('url', SAAS_URL);
|
|
370
389
|
Sentry.setTag('self-hosted', false);
|
|
371
390
|
return [2 /*return*/, { url: SAAS_URL, selfHosted: false }];
|
|
372
391
|
}
|
|
373
|
-
|
|
392
|
+
_b.label = 2;
|
|
374
393
|
case 2:
|
|
375
|
-
|
|
394
|
+
tmpUrlFromArgs = urlFromArgs;
|
|
395
|
+
_b.label = 3;
|
|
396
|
+
case 3:
|
|
397
|
+
if (!(validUrl === undefined)) return [3 /*break*/, 6];
|
|
398
|
+
_a = tmpUrlFromArgs;
|
|
399
|
+
if (_a) return [3 /*break*/, 5];
|
|
376
400
|
return [4 /*yield*/, abortIfCancelled(clack.text({
|
|
377
|
-
message:
|
|
401
|
+
message: "Please enter the URL of your ".concat(urlFromArgs ? '' : 'self-hosted ', "Sentry instance."),
|
|
378
402
|
placeholder: 'https://sentry.io/',
|
|
379
403
|
}))];
|
|
380
|
-
case
|
|
381
|
-
|
|
404
|
+
case 4:
|
|
405
|
+
_a = (_b.sent());
|
|
406
|
+
_b.label = 5;
|
|
407
|
+
case 5:
|
|
408
|
+
url = _a;
|
|
409
|
+
tmpUrlFromArgs = undefined;
|
|
382
410
|
try {
|
|
383
411
|
validUrl = new url_1.URL(url).toString();
|
|
384
412
|
// We assume everywhere else that the URL ends in a slash
|
|
@@ -386,13 +414,14 @@ function askForSelfHosted() {
|
|
|
386
414
|
validUrl += '/';
|
|
387
415
|
}
|
|
388
416
|
}
|
|
389
|
-
catch (
|
|
390
|
-
clack.log.error('Please enter a valid URL. (It should look something like "
|
|
417
|
+
catch (_c) {
|
|
418
|
+
clack.log.error('Please enter a valid URL. (It should look something like "https://sentry.mydomain.com/")');
|
|
391
419
|
}
|
|
392
|
-
return [3 /*break*/,
|
|
393
|
-
case
|
|
420
|
+
return [3 /*break*/, 3];
|
|
421
|
+
case 6:
|
|
422
|
+
isSelfHostedUrl = new url_1.URL(validUrl).host !== new url_1.URL(SAAS_URL).host;
|
|
394
423
|
Sentry.setTag('url', validUrl);
|
|
395
|
-
Sentry.setTag('self-hosted',
|
|
424
|
+
Sentry.setTag('self-hosted', isSelfHostedUrl);
|
|
396
425
|
return [2 /*return*/, { url: validUrl, selfHosted: true }];
|
|
397
426
|
}
|
|
398
427
|
});
|
|
@@ -577,11 +606,15 @@ function getPackageDotJson() {
|
|
|
577
606
|
}
|
|
578
607
|
exports.getPackageDotJson = getPackageDotJson;
|
|
579
608
|
function hasPackageInstalled(packageName, packageJson) {
|
|
580
|
-
|
|
581
|
-
return (!!((_a = packageJson === null || packageJson === void 0 ? void 0 : packageJson.dependencies) === null || _a === void 0 ? void 0 : _a[packageName]) ||
|
|
582
|
-
!!((_b = packageJson === null || packageJson === void 0 ? void 0 : packageJson.devDependencies) === null || _b === void 0 ? void 0 : _b[packageName]));
|
|
609
|
+
return getPackageVersion(packageName, packageJson) !== undefined;
|
|
583
610
|
}
|
|
584
611
|
exports.hasPackageInstalled = hasPackageInstalled;
|
|
612
|
+
function getPackageVersion(packageName, packageJson) {
|
|
613
|
+
var _a, _b;
|
|
614
|
+
return (((_a = packageJson === null || packageJson === void 0 ? void 0 : packageJson.dependencies) === null || _a === void 0 ? void 0 : _a[packageName]) ||
|
|
615
|
+
((_b = packageJson === null || packageJson === void 0 ? void 0 : packageJson.devDependencies) === null || _b === void 0 ? void 0 : _b[packageName]));
|
|
616
|
+
}
|
|
617
|
+
exports.getPackageVersion = getPackageVersion;
|
|
585
618
|
function getPackageManager() {
|
|
586
619
|
return __awaiter(this, void 0, void 0, function () {
|
|
587
620
|
var detectedPackageManager, selectedPackageManager;
|