@sentry/bundler-plugin-core 2.0.0 → 2.1.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/dist/cjs/index.js +917 -1049
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.mjs +847 -980
- package/dist/esm/index.mjs.map +1 -1
- package/dist/types/{plugins/debug-id-upload.d.ts → debug-id-upload.d.ts} +3 -4
- package/dist/types/index.d.ts +10 -1
- package/dist/types/options-mapping.d.ts +3 -3
- package/dist/types/sentry/logger.d.ts +1 -1
- package/dist/types/types.d.ts +8 -6
- package/dist/types/utils.d.ts +2 -1
- package/package.json +3 -3
package/dist/cjs/index.js
CHANGED
|
@@ -4,15 +4,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var SentryCli = require('@sentry/cli');
|
|
6
6
|
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
7
8
|
var MagicString = require('magic-string');
|
|
8
9
|
var unplugin = require('unplugin');
|
|
9
|
-
var glob = require('glob');
|
|
10
|
-
var os = require('os');
|
|
11
|
-
var path = require('path');
|
|
12
|
-
var util = require('util');
|
|
13
10
|
var findUp = require('find-up');
|
|
11
|
+
var os = require('os');
|
|
14
12
|
var crypto = require('crypto');
|
|
15
13
|
var childProcess = require('child_process');
|
|
14
|
+
var glob = require('glob');
|
|
15
|
+
var util = require('util');
|
|
16
16
|
var node = require('@sentry/node');
|
|
17
17
|
|
|
18
18
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -37,27 +37,26 @@ function _interopNamespace(e) {
|
|
|
37
37
|
|
|
38
38
|
var SentryCli__default = /*#__PURE__*/_interopDefaultLegacy(SentryCli);
|
|
39
39
|
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
40
|
-
var
|
|
41
|
-
var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
|
|
40
|
+
var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
|
|
42
41
|
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
43
|
-
var
|
|
42
|
+
var path__namespace = /*#__PURE__*/_interopNamespace(path);
|
|
43
|
+
var MagicString__default = /*#__PURE__*/_interopDefaultLegacy(MagicString);
|
|
44
44
|
var findUp__default = /*#__PURE__*/_interopDefaultLegacy(findUp);
|
|
45
|
+
var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
|
|
45
46
|
var crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
|
|
46
47
|
var childProcess__default = /*#__PURE__*/_interopDefaultLegacy(childProcess);
|
|
48
|
+
var util__namespace = /*#__PURE__*/_interopNamespace(util);
|
|
47
49
|
|
|
48
50
|
function ownKeys(object, enumerableOnly) {
|
|
49
51
|
var keys = Object.keys(object);
|
|
50
|
-
|
|
51
52
|
if (Object.getOwnPropertySymbols) {
|
|
52
53
|
var symbols = Object.getOwnPropertySymbols(object);
|
|
53
54
|
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
54
55
|
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
55
56
|
})), keys.push.apply(keys, symbols);
|
|
56
57
|
}
|
|
57
|
-
|
|
58
58
|
return keys;
|
|
59
59
|
}
|
|
60
|
-
|
|
61
60
|
function _objectSpread2(target) {
|
|
62
61
|
for (var i = 1; i < arguments.length; i++) {
|
|
63
62
|
var source = null != arguments[i] ? arguments[i] : {};
|
|
@@ -67,25 +66,22 @@ function _objectSpread2(target) {
|
|
|
67
66
|
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
68
67
|
});
|
|
69
68
|
}
|
|
70
|
-
|
|
71
69
|
return target;
|
|
72
70
|
}
|
|
73
|
-
|
|
74
71
|
function _regeneratorRuntime() {
|
|
75
|
-
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
|
76
|
-
|
|
77
72
|
_regeneratorRuntime = function () {
|
|
78
73
|
return exports;
|
|
79
74
|
};
|
|
80
|
-
|
|
81
75
|
var exports = {},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
76
|
+
Op = Object.prototype,
|
|
77
|
+
hasOwn = Op.hasOwnProperty,
|
|
78
|
+
defineProperty = Object.defineProperty || function (obj, key, desc) {
|
|
79
|
+
obj[key] = desc.value;
|
|
80
|
+
},
|
|
81
|
+
$Symbol = "function" == typeof Symbol ? Symbol : {},
|
|
82
|
+
iteratorSymbol = $Symbol.iterator || "@@iterator",
|
|
83
|
+
asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
|
|
84
|
+
toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
|
|
89
85
|
function define(obj, key, value) {
|
|
90
86
|
return Object.defineProperty(obj, key, {
|
|
91
87
|
value: value,
|
|
@@ -94,7 +90,6 @@ function _regeneratorRuntime() {
|
|
|
94
90
|
writable: !0
|
|
95
91
|
}), obj[key];
|
|
96
92
|
}
|
|
97
|
-
|
|
98
93
|
try {
|
|
99
94
|
define({}, "");
|
|
100
95
|
} catch (err) {
|
|
@@ -102,54 +97,14 @@ function _regeneratorRuntime() {
|
|
|
102
97
|
return obj[key] = value;
|
|
103
98
|
};
|
|
104
99
|
}
|
|
105
|
-
|
|
106
100
|
function wrap(innerFn, outerFn, self, tryLocsList) {
|
|
107
101
|
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return generator
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
if ("executing" === state) throw new Error("Generator is already running");
|
|
114
|
-
|
|
115
|
-
if ("completed" === state) {
|
|
116
|
-
if ("throw" === method) throw arg;
|
|
117
|
-
return doneResult();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
for (context.method = method, context.arg = arg;;) {
|
|
121
|
-
var delegate = context.delegate;
|
|
122
|
-
|
|
123
|
-
if (delegate) {
|
|
124
|
-
var delegateResult = maybeInvokeDelegate(delegate, context);
|
|
125
|
-
|
|
126
|
-
if (delegateResult) {
|
|
127
|
-
if (delegateResult === ContinueSentinel) continue;
|
|
128
|
-
return delegateResult;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
|
|
133
|
-
if ("suspendedStart" === state) throw state = "completed", context.arg;
|
|
134
|
-
context.dispatchException(context.arg);
|
|
135
|
-
} else "return" === context.method && context.abrupt("return", context.arg);
|
|
136
|
-
state = "executing";
|
|
137
|
-
var record = tryCatch(innerFn, self, context);
|
|
138
|
-
|
|
139
|
-
if ("normal" === record.type) {
|
|
140
|
-
if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
|
|
141
|
-
return {
|
|
142
|
-
value: record.arg,
|
|
143
|
-
done: context.done
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
"throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
}(innerFn, self, context), generator;
|
|
102
|
+
generator = Object.create(protoGenerator.prototype),
|
|
103
|
+
context = new Context(tryLocsList || []);
|
|
104
|
+
return defineProperty(generator, "_invoke", {
|
|
105
|
+
value: makeInvokeMethod(innerFn, self, context)
|
|
106
|
+
}), generator;
|
|
151
107
|
}
|
|
152
|
-
|
|
153
108
|
function tryCatch(fn, obj, arg) {
|
|
154
109
|
try {
|
|
155
110
|
return {
|
|
@@ -163,25 +118,19 @@ function _regeneratorRuntime() {
|
|
|
163
118
|
};
|
|
164
119
|
}
|
|
165
120
|
}
|
|
166
|
-
|
|
167
121
|
exports.wrap = wrap;
|
|
168
122
|
var ContinueSentinel = {};
|
|
169
|
-
|
|
170
123
|
function Generator() {}
|
|
171
|
-
|
|
172
124
|
function GeneratorFunction() {}
|
|
173
|
-
|
|
174
125
|
function GeneratorFunctionPrototype() {}
|
|
175
|
-
|
|
176
126
|
var IteratorPrototype = {};
|
|
177
127
|
define(IteratorPrototype, iteratorSymbol, function () {
|
|
178
128
|
return this;
|
|
179
129
|
});
|
|
180
130
|
var getProto = Object.getPrototypeOf,
|
|
181
|
-
|
|
131
|
+
NativeIteratorPrototype = getProto && getProto(getProto(values([])));
|
|
182
132
|
NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
|
|
183
133
|
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
|
|
184
|
-
|
|
185
134
|
function defineIteratorMethods(prototype) {
|
|
186
135
|
["next", "throw", "return"].forEach(function (method) {
|
|
187
136
|
define(prototype, method, function (arg) {
|
|
@@ -189,14 +138,12 @@ function _regeneratorRuntime() {
|
|
|
189
138
|
});
|
|
190
139
|
});
|
|
191
140
|
}
|
|
192
|
-
|
|
193
141
|
function AsyncIterator(generator, PromiseImpl) {
|
|
194
142
|
function invoke(method, arg, resolve, reject) {
|
|
195
143
|
var record = tryCatch(generator[method], generator, arg);
|
|
196
|
-
|
|
197
144
|
if ("throw" !== record.type) {
|
|
198
145
|
var result = record.arg,
|
|
199
|
-
|
|
146
|
+
value = result.value;
|
|
200
147
|
return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
|
|
201
148
|
invoke("next", value, resolve, reject);
|
|
202
149
|
}, function (err) {
|
|
@@ -207,90 +154,109 @@ function _regeneratorRuntime() {
|
|
|
207
154
|
return invoke("throw", error, resolve, reject);
|
|
208
155
|
});
|
|
209
156
|
}
|
|
210
|
-
|
|
211
157
|
reject(record.arg);
|
|
212
158
|
}
|
|
213
|
-
|
|
214
159
|
var previousPromise;
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
160
|
+
defineProperty(this, "_invoke", {
|
|
161
|
+
value: function (method, arg) {
|
|
162
|
+
function callInvokeWithMethodAndArg() {
|
|
163
|
+
return new PromiseImpl(function (resolve, reject) {
|
|
164
|
+
invoke(method, arg, resolve, reject);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
function makeInvokeMethod(innerFn, self, context) {
|
|
172
|
+
var state = "suspendedStart";
|
|
173
|
+
return function (method, arg) {
|
|
174
|
+
if ("executing" === state) throw new Error("Generator is already running");
|
|
175
|
+
if ("completed" === state) {
|
|
176
|
+
if ("throw" === method) throw arg;
|
|
177
|
+
return doneResult();
|
|
178
|
+
}
|
|
179
|
+
for (context.method = method, context.arg = arg;;) {
|
|
180
|
+
var delegate = context.delegate;
|
|
181
|
+
if (delegate) {
|
|
182
|
+
var delegateResult = maybeInvokeDelegate(delegate, context);
|
|
183
|
+
if (delegateResult) {
|
|
184
|
+
if (delegateResult === ContinueSentinel) continue;
|
|
185
|
+
return delegateResult;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
|
|
189
|
+
if ("suspendedStart" === state) throw state = "completed", context.arg;
|
|
190
|
+
context.dispatchException(context.arg);
|
|
191
|
+
} else "return" === context.method && context.abrupt("return", context.arg);
|
|
192
|
+
state = "executing";
|
|
193
|
+
var record = tryCatch(innerFn, self, context);
|
|
194
|
+
if ("normal" === record.type) {
|
|
195
|
+
if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
|
|
196
|
+
return {
|
|
197
|
+
value: record.arg,
|
|
198
|
+
done: context.done
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
"throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
|
|
221
202
|
}
|
|
222
|
-
|
|
223
|
-
return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
|
|
224
203
|
};
|
|
225
204
|
}
|
|
226
|
-
|
|
227
205
|
function maybeInvokeDelegate(delegate, context) {
|
|
228
|
-
var
|
|
229
|
-
|
|
230
|
-
if (undefined === method)
|
|
231
|
-
if (context.delegate = null, "throw" === context.method) {
|
|
232
|
-
if (delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel;
|
|
233
|
-
context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method");
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
return ContinueSentinel;
|
|
237
|
-
}
|
|
238
|
-
|
|
206
|
+
var methodName = context.method,
|
|
207
|
+
method = delegate.iterator[methodName];
|
|
208
|
+
if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
|
|
239
209
|
var record = tryCatch(method, delegate.iterator, context.arg);
|
|
240
210
|
if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
|
|
241
211
|
var info = record.arg;
|
|
242
212
|
return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
|
|
243
213
|
}
|
|
244
|
-
|
|
245
214
|
function pushTryEntry(locs) {
|
|
246
215
|
var entry = {
|
|
247
216
|
tryLoc: locs[0]
|
|
248
217
|
};
|
|
249
218
|
1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
|
|
250
219
|
}
|
|
251
|
-
|
|
252
220
|
function resetTryEntry(entry) {
|
|
253
221
|
var record = entry.completion || {};
|
|
254
222
|
record.type = "normal", delete record.arg, entry.completion = record;
|
|
255
223
|
}
|
|
256
|
-
|
|
257
224
|
function Context(tryLocsList) {
|
|
258
225
|
this.tryEntries = [{
|
|
259
226
|
tryLoc: "root"
|
|
260
227
|
}], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
|
|
261
228
|
}
|
|
262
|
-
|
|
263
229
|
function values(iterable) {
|
|
264
230
|
if (iterable) {
|
|
265
231
|
var iteratorMethod = iterable[iteratorSymbol];
|
|
266
232
|
if (iteratorMethod) return iteratorMethod.call(iterable);
|
|
267
233
|
if ("function" == typeof iterable.next) return iterable;
|
|
268
|
-
|
|
269
234
|
if (!isNaN(iterable.length)) {
|
|
270
235
|
var i = -1,
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
};
|
|
276
|
-
|
|
236
|
+
next = function next() {
|
|
237
|
+
for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
|
|
238
|
+
return next.value = undefined, next.done = !0, next;
|
|
239
|
+
};
|
|
277
240
|
return next.next = next;
|
|
278
241
|
}
|
|
279
242
|
}
|
|
280
|
-
|
|
281
243
|
return {
|
|
282
244
|
next: doneResult
|
|
283
245
|
};
|
|
284
246
|
}
|
|
285
|
-
|
|
286
247
|
function doneResult() {
|
|
287
248
|
return {
|
|
288
249
|
value: undefined,
|
|
289
250
|
done: !0
|
|
290
251
|
};
|
|
291
252
|
}
|
|
292
|
-
|
|
293
|
-
|
|
253
|
+
return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
|
|
254
|
+
value: GeneratorFunctionPrototype,
|
|
255
|
+
configurable: !0
|
|
256
|
+
}), defineProperty(GeneratorFunctionPrototype, "constructor", {
|
|
257
|
+
value: GeneratorFunction,
|
|
258
|
+
configurable: !0
|
|
259
|
+
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
|
|
294
260
|
var ctor = "function" == typeof genFun && genFun.constructor;
|
|
295
261
|
return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
|
|
296
262
|
}, exports.mark = function (genFun) {
|
|
@@ -311,17 +277,15 @@ function _regeneratorRuntime() {
|
|
|
311
277
|
return this;
|
|
312
278
|
}), define(Gp, "toString", function () {
|
|
313
279
|
return "[object Generator]";
|
|
314
|
-
}), exports.keys = function (
|
|
315
|
-
var
|
|
316
|
-
|
|
280
|
+
}), exports.keys = function (val) {
|
|
281
|
+
var object = Object(val),
|
|
282
|
+
keys = [];
|
|
317
283
|
for (var key in object) keys.push(key);
|
|
318
|
-
|
|
319
284
|
return keys.reverse(), function next() {
|
|
320
285
|
for (; keys.length;) {
|
|
321
286
|
var key = keys.pop();
|
|
322
287
|
if (key in object) return next.value = key, next.done = !1, next;
|
|
323
288
|
}
|
|
324
|
-
|
|
325
289
|
return next.done = !0, next;
|
|
326
290
|
};
|
|
327
291
|
}, exports.values = values, Context.prototype = {
|
|
@@ -338,20 +302,16 @@ function _regeneratorRuntime() {
|
|
|
338
302
|
dispatchException: function (exception) {
|
|
339
303
|
if (this.done) throw exception;
|
|
340
304
|
var context = this;
|
|
341
|
-
|
|
342
305
|
function handle(loc, caught) {
|
|
343
306
|
return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
|
|
344
307
|
}
|
|
345
|
-
|
|
346
308
|
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
|
347
309
|
var entry = this.tryEntries[i],
|
|
348
|
-
|
|
310
|
+
record = entry.completion;
|
|
349
311
|
if ("root" === entry.tryLoc) return handle("end");
|
|
350
|
-
|
|
351
312
|
if (entry.tryLoc <= this.prev) {
|
|
352
313
|
var hasCatch = hasOwn.call(entry, "catchLoc"),
|
|
353
|
-
|
|
354
|
-
|
|
314
|
+
hasFinally = hasOwn.call(entry, "finallyLoc");
|
|
355
315
|
if (hasCatch && hasFinally) {
|
|
356
316
|
if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
|
|
357
317
|
if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
|
|
@@ -367,13 +327,11 @@ function _regeneratorRuntime() {
|
|
|
367
327
|
abrupt: function (type, arg) {
|
|
368
328
|
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
|
369
329
|
var entry = this.tryEntries[i];
|
|
370
|
-
|
|
371
330
|
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
|
|
372
331
|
var finallyEntry = entry;
|
|
373
332
|
break;
|
|
374
333
|
}
|
|
375
334
|
}
|
|
376
|
-
|
|
377
335
|
finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
|
|
378
336
|
var record = finallyEntry ? finallyEntry.completion : {};
|
|
379
337
|
return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
|
|
@@ -391,19 +349,15 @@ function _regeneratorRuntime() {
|
|
|
391
349
|
catch: function (tryLoc) {
|
|
392
350
|
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
|
393
351
|
var entry = this.tryEntries[i];
|
|
394
|
-
|
|
395
352
|
if (entry.tryLoc === tryLoc) {
|
|
396
353
|
var record = entry.completion;
|
|
397
|
-
|
|
398
354
|
if ("throw" === record.type) {
|
|
399
355
|
var thrown = record.arg;
|
|
400
356
|
resetTryEntry(entry);
|
|
401
357
|
}
|
|
402
|
-
|
|
403
358
|
return thrown;
|
|
404
359
|
}
|
|
405
360
|
}
|
|
406
|
-
|
|
407
361
|
throw new Error("illegal catch attempt");
|
|
408
362
|
},
|
|
409
363
|
delegateYield: function (iterable, resultName, nextLoc) {
|
|
@@ -415,7 +369,6 @@ function _regeneratorRuntime() {
|
|
|
415
369
|
}
|
|
416
370
|
}, exports;
|
|
417
371
|
}
|
|
418
|
-
|
|
419
372
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
420
373
|
try {
|
|
421
374
|
var info = gen[key](arg);
|
|
@@ -424,35 +377,30 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
|
424
377
|
reject(error);
|
|
425
378
|
return;
|
|
426
379
|
}
|
|
427
|
-
|
|
428
380
|
if (info.done) {
|
|
429
381
|
resolve(value);
|
|
430
382
|
} else {
|
|
431
383
|
Promise.resolve(value).then(_next, _throw);
|
|
432
384
|
}
|
|
433
385
|
}
|
|
434
|
-
|
|
435
386
|
function _asyncToGenerator(fn) {
|
|
436
387
|
return function () {
|
|
437
388
|
var self = this,
|
|
438
|
-
|
|
389
|
+
args = arguments;
|
|
439
390
|
return new Promise(function (resolve, reject) {
|
|
440
391
|
var gen = fn.apply(self, args);
|
|
441
|
-
|
|
442
392
|
function _next(value) {
|
|
443
393
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
444
394
|
}
|
|
445
|
-
|
|
446
395
|
function _throw(err) {
|
|
447
396
|
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
448
397
|
}
|
|
449
|
-
|
|
450
398
|
_next(undefined);
|
|
451
399
|
});
|
|
452
400
|
};
|
|
453
401
|
}
|
|
454
|
-
|
|
455
402
|
function _defineProperty(obj, key, value) {
|
|
403
|
+
key = _toPropertyKey(key);
|
|
456
404
|
if (key in obj) {
|
|
457
405
|
Object.defineProperty(obj, key, {
|
|
458
406
|
value: value,
|
|
@@ -463,787 +411,725 @@ function _defineProperty(obj, key, value) {
|
|
|
463
411
|
} else {
|
|
464
412
|
obj[key] = value;
|
|
465
413
|
}
|
|
466
|
-
|
|
467
414
|
return obj;
|
|
468
415
|
}
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
url: (_ref = (_userOptions$url = userOptions.url) !== null && _userOptions$url !== void 0 ? _userOptions$url : process.env["SENTRY_URL"]) !== null && _ref !== void 0 ? _ref : SENTRY_SAAS_URL,
|
|
479
|
-
headers: userOptions.headers,
|
|
480
|
-
debug: (_userOptions$debug = userOptions.debug) !== null && _userOptions$debug !== void 0 ? _userOptions$debug : false,
|
|
481
|
-
silent: (_userOptions$silent = userOptions.silent) !== null && _userOptions$silent !== void 0 ? _userOptions$silent : false,
|
|
482
|
-
errorHandler: userOptions.errorHandler,
|
|
483
|
-
telemetry: (_userOptions$telemetr = userOptions.telemetry) !== null && _userOptions$telemetr !== void 0 ? _userOptions$telemetr : true,
|
|
484
|
-
disable: (_userOptions$disable = userOptions.disable) !== null && _userOptions$disable !== void 0 ? _userOptions$disable : false,
|
|
485
|
-
sourcemaps: userOptions.sourcemaps,
|
|
486
|
-
release: _objectSpread2(_objectSpread2({}, userOptions.release), {}, {
|
|
487
|
-
inject: (_userOptions$release$ = (_userOptions$release = userOptions.release) === null || _userOptions$release === void 0 ? void 0 : _userOptions$release.inject) !== null && _userOptions$release$ !== void 0 ? _userOptions$release$ : true,
|
|
488
|
-
create: (_userOptions$release$2 = (_userOptions$release2 = userOptions.release) === null || _userOptions$release2 === void 0 ? void 0 : _userOptions$release2.create) !== null && _userOptions$release$2 !== void 0 ? _userOptions$release$2 : true,
|
|
489
|
-
finalize: (_userOptions$release$3 = (_userOptions$release3 = userOptions.release) === null || _userOptions$release3 === void 0 ? void 0 : _userOptions$release3.finalize) !== null && _userOptions$release$3 !== void 0 ? _userOptions$release$3 : true,
|
|
490
|
-
vcsRemote: (_ref2 = (_userOptions$release$4 = (_userOptions$release4 = userOptions.release) === null || _userOptions$release4 === void 0 ? void 0 : _userOptions$release4.vcsRemote) !== null && _userOptions$release$4 !== void 0 ? _userOptions$release$4 : process.env["SENTRY_VSC_REMOTE"]) !== null && _ref2 !== void 0 ? _ref2 : "origin",
|
|
491
|
-
cleanArtifacts: (_userOptions$release$5 = (_userOptions$release5 = userOptions.release) === null || _userOptions$release5 === void 0 ? void 0 : _userOptions$release5.cleanArtifacts) !== null && _userOptions$release$5 !== void 0 ? _userOptions$release$5 : false
|
|
492
|
-
}),
|
|
493
|
-
_experiments: (_userOptions$_experim = userOptions._experiments) !== null && _userOptions$_experim !== void 0 ? _userOptions$_experim : {}
|
|
494
|
-
};
|
|
495
|
-
return options;
|
|
416
|
+
function _toPrimitive(input, hint) {
|
|
417
|
+
if (typeof input !== "object" || input === null) return input;
|
|
418
|
+
var prim = input[Symbol.toPrimitive];
|
|
419
|
+
if (prim !== undefined) {
|
|
420
|
+
var res = prim.call(input, hint || "default");
|
|
421
|
+
if (typeof res !== "object") return res;
|
|
422
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
423
|
+
}
|
|
424
|
+
return (hint === "string" ? String : Number)(input);
|
|
496
425
|
}
|
|
426
|
+
function _toPropertyKey(arg) {
|
|
427
|
+
var key = _toPrimitive(arg, "string");
|
|
428
|
+
return typeof key === "symbol" ? key : String(key);
|
|
429
|
+
}
|
|
430
|
+
|
|
497
431
|
/**
|
|
498
|
-
*
|
|
499
|
-
*
|
|
500
|
-
* For all other options, we can rely on Sentry CLI to validate them. In fact,
|
|
501
|
-
* we can't validate them in the plugin because Sentry CLI might pick up options from
|
|
502
|
-
* its config file.
|
|
503
|
-
*
|
|
504
|
-
* @param options the internal options
|
|
505
|
-
* @param logger the logger
|
|
432
|
+
* Checks whether the given input is already an array, and if it isn't, wraps it in one.
|
|
506
433
|
*
|
|
507
|
-
* @
|
|
434
|
+
* @param maybeArray Input to turn into an array, if necessary
|
|
435
|
+
* @returns The input, if already an array, or an array with the input as the only element, if not
|
|
436
|
+
*/
|
|
437
|
+
function arrayify(maybeArray) {
|
|
438
|
+
return Array.isArray(maybeArray) ? maybeArray : [maybeArray];
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Get the closes package.json from a given starting point upwards.
|
|
442
|
+
* This handles a few edge cases:
|
|
443
|
+
* * Check if a given file package.json appears to be an actual NPM package.json file
|
|
444
|
+
* * Stop at the home dir, to avoid looking too deeply
|
|
508
445
|
*/
|
|
446
|
+
function getPackageJson() {
|
|
447
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
448
|
+
cwd = _ref.cwd,
|
|
449
|
+
stopAt = _ref.stopAt;
|
|
450
|
+
return lookupPackageJson(cwd !== null && cwd !== void 0 ? cwd : process.cwd(), path__default["default"].normalize(stopAt !== null && stopAt !== void 0 ? stopAt : os__default["default"].homedir()));
|
|
451
|
+
}
|
|
452
|
+
function parseMajorVersion(version) {
|
|
453
|
+
// if it has a `v` prefix, remove it
|
|
454
|
+
if (version.startsWith("v")) {
|
|
455
|
+
version = version.slice(1);
|
|
456
|
+
}
|
|
509
457
|
|
|
510
|
-
|
|
511
|
-
var
|
|
458
|
+
// First, try simple lookup of exact, ~ and ^ versions
|
|
459
|
+
var regex = /^[\^~]?(\d+)(\.\d+)?(\.\d+)?(-.+)?/;
|
|
460
|
+
var match = version.match(regex);
|
|
461
|
+
if (match) {
|
|
462
|
+
return parseInt(match[1], 10);
|
|
463
|
+
}
|
|
512
464
|
|
|
513
|
-
|
|
465
|
+
// Try to parse e.g. 1.x
|
|
466
|
+
var coerced = parseInt(version, 10);
|
|
467
|
+
if (!Number.isNaN(coerced)) {
|
|
468
|
+
return coerced;
|
|
469
|
+
}
|
|
514
470
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
471
|
+
// Match <= and >= ranges.
|
|
472
|
+
var gteLteRegex = /^[<>]=\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/;
|
|
473
|
+
var gteLteMatch = version.match(gteLteRegex);
|
|
474
|
+
if (gteLteMatch) {
|
|
475
|
+
return parseInt(gteLteMatch[1], 10);
|
|
476
|
+
}
|
|
520
477
|
|
|
521
|
-
|
|
522
|
-
|
|
478
|
+
// match < ranges
|
|
479
|
+
var ltRegex = /^<\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/;
|
|
480
|
+
var ltMatch = version.match(ltRegex);
|
|
481
|
+
if (ltMatch) {
|
|
482
|
+
// Two scenarios:
|
|
483
|
+
// a) < 2.0.0 --> return 1
|
|
484
|
+
// b) < 2.1.0 --> return 2
|
|
485
|
+
|
|
486
|
+
var major = parseInt(ltMatch[1], 10);
|
|
487
|
+
if (
|
|
488
|
+
// minor version > 0
|
|
489
|
+
typeof ltMatch[2] === "string" && parseInt(ltMatch[2].slice(1), 10) > 0 ||
|
|
490
|
+
// patch version > 0
|
|
491
|
+
typeof ltMatch[3] === "string" && parseInt(ltMatch[3].slice(1), 10) > 0) {
|
|
492
|
+
return major;
|
|
523
493
|
}
|
|
494
|
+
return major - 1;
|
|
524
495
|
}
|
|
525
496
|
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
497
|
+
// match > ranges
|
|
498
|
+
var gtRegex = /^>\s*(\d+)(\.\d+)?(\.\d+)?(-.+)?/;
|
|
499
|
+
var gtMatch = version.match(gtRegex);
|
|
500
|
+
if (gtMatch) {
|
|
501
|
+
// We always return the version here, even though it _may_ be incorrect
|
|
502
|
+
// E.g. if given > 2.0.0, it should be 2 if there exists any 2.x.x version, else 3
|
|
503
|
+
// Since there is no way for us to know this, we're going to assume any kind of patch/feature release probably exists
|
|
504
|
+
return parseInt(gtMatch[1], 10);
|
|
529
505
|
}
|
|
530
|
-
|
|
531
|
-
return true;
|
|
506
|
+
return undefined;
|
|
532
507
|
}
|
|
533
508
|
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
509
|
+
// This is an explicit list of packages where we want to include the (major) version number.
|
|
510
|
+
var PACKAGES_TO_INCLUDE_VERSION = ["react", "@angular/core", "vue", "ember-source", "svelte", "@sveltejs/kit", "webpack", "vite", "gatsby", "next", "remix", "rollup", "esbuild"];
|
|
511
|
+
function getDependencies(packageJson) {
|
|
512
|
+
var _packageJson$devDepen, _packageJson$dependen;
|
|
513
|
+
var dependencies = Object.assign({}, (_packageJson$devDepen = packageJson["devDependencies"]) !== null && _packageJson$devDepen !== void 0 ? _packageJson$devDepen : {}, (_packageJson$dependen = packageJson["dependencies"]) !== null && _packageJson$dependen !== void 0 ? _packageJson$dependen : {});
|
|
514
|
+
var deps = Object.keys(dependencies).sort();
|
|
515
|
+
var depsVersions = deps.reduce(function (depsVersions, depName) {
|
|
516
|
+
if (PACKAGES_TO_INCLUDE_VERSION.includes(depName)) {
|
|
517
|
+
var version = dependencies[depName];
|
|
518
|
+
var majorVersion = parseMajorVersion(version);
|
|
519
|
+
if (majorVersion) {
|
|
520
|
+
depsVersions[depName] = majorVersion;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
return depsVersions;
|
|
524
|
+
}, {});
|
|
546
525
|
return {
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
ignore: ignore
|
|
568
|
-
});
|
|
569
|
-
|
|
570
|
-
case 8:
|
|
571
|
-
debugIdChunkFilePaths = _context2.sent.filter(function (debugIdChunkFilePath) {
|
|
572
|
-
return debugIdChunkFilePath.endsWith(".js") || debugIdChunkFilePath.endsWith(".mjs") || debugIdChunkFilePath.endsWith(".cjs");
|
|
573
|
-
});
|
|
574
|
-
_context2.next = 11;
|
|
575
|
-
return Promise.all(debugIdChunkFilePaths.map( /*#__PURE__*/function () {
|
|
576
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(chunkFilePath, chunkIndex) {
|
|
577
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
578
|
-
while (1) {
|
|
579
|
-
switch (_context.prev = _context.next) {
|
|
580
|
-
case 0:
|
|
581
|
-
_context.next = 2;
|
|
582
|
-
return prepareBundleForDebugIdUpload(chunkFilePath, tmpUploadFolder, chunkIndex, logger, rewriteSourcesHook !== null && rewriteSourcesHook !== void 0 ? rewriteSourcesHook : defaultRewriteSourcesHook);
|
|
583
|
-
|
|
584
|
-
case 2:
|
|
585
|
-
case "end":
|
|
586
|
-
return _context.stop();
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
}, _callee);
|
|
590
|
-
}));
|
|
591
|
-
|
|
592
|
-
return function (_x, _x2) {
|
|
593
|
-
return _ref2.apply(this, arguments);
|
|
594
|
-
};
|
|
595
|
-
}()));
|
|
526
|
+
deps: deps,
|
|
527
|
+
depsVersions: depsVersions
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
function lookupPackageJson(cwd, stopAt) {
|
|
531
|
+
var jsonPath = findUp__default["default"].sync(function (dirName) {
|
|
532
|
+
// Stop if we reach this dir
|
|
533
|
+
if (path__default["default"].normalize(dirName) === stopAt) {
|
|
534
|
+
return findUp__default["default"].stop;
|
|
535
|
+
}
|
|
536
|
+
return findUp__default["default"].sync.exists(dirName + "/package.json") ? "package.json" : undefined;
|
|
537
|
+
}, {
|
|
538
|
+
cwd: cwd
|
|
539
|
+
});
|
|
540
|
+
if (!jsonPath) {
|
|
541
|
+
return undefined;
|
|
542
|
+
}
|
|
543
|
+
try {
|
|
544
|
+
var jsonStr = fs__default["default"].readFileSync(jsonPath, "utf8");
|
|
545
|
+
var json = JSON.parse(jsonStr);
|
|
596
546
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
}],
|
|
606
|
-
useArtifactBundle: true
|
|
607
|
-
});
|
|
547
|
+
// Ensure it is an actual package.json
|
|
548
|
+
// This is very much not bulletproof, but should be good enough
|
|
549
|
+
if ("name" in json || "private" in json) {
|
|
550
|
+
return json;
|
|
551
|
+
}
|
|
552
|
+
} catch (error) {
|
|
553
|
+
// Ignore and walk up
|
|
554
|
+
}
|
|
608
555
|
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
}
|
|
556
|
+
// Continue up the tree, if we find a fitting package.json
|
|
557
|
+
var newCwd = path__default["default"].dirname(path__default["default"].resolve(jsonPath + "/.."));
|
|
558
|
+
return lookupPackageJson(newCwd, stopAt);
|
|
559
|
+
}
|
|
614
560
|
|
|
615
|
-
_context2.next = 16;
|
|
616
|
-
return glob.glob(deleteFilesAfterUpload, {
|
|
617
|
-
absolute: true,
|
|
618
|
-
nodir: true
|
|
619
|
-
});
|
|
620
|
-
|
|
621
|
-
case 16:
|
|
622
|
-
filePathsToDelete = _context2.sent;
|
|
623
|
-
filePathsToDelete.forEach(function (filePathToDelete) {
|
|
624
|
-
logger.debug("Deleting asset after upload: ".concat(filePathToDelete));
|
|
625
|
-
});
|
|
626
|
-
_context2.next = 20;
|
|
627
|
-
return Promise.all(filePathsToDelete.map(function (filePathToDelete) {
|
|
628
|
-
return fs__default["default"].promises.rm(filePathToDelete, {
|
|
629
|
-
force: true
|
|
630
|
-
});
|
|
631
|
-
}));
|
|
632
|
-
|
|
633
|
-
case 20:
|
|
634
|
-
_context2.next = 28;
|
|
635
|
-
break;
|
|
636
|
-
|
|
637
|
-
case 22:
|
|
638
|
-
_context2.prev = 22;
|
|
639
|
-
_context2.t0 = _context2["catch"](1);
|
|
640
|
-
sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook');
|
|
641
|
-
_context2.next = 27;
|
|
642
|
-
return sentryClient.flush();
|
|
643
|
-
|
|
644
|
-
case 27:
|
|
645
|
-
handleRecoverableError(_context2.t0);
|
|
646
|
-
|
|
647
|
-
case 28:
|
|
648
|
-
_context2.prev = 28;
|
|
649
|
-
|
|
650
|
-
if (folderToCleanUp) {
|
|
651
|
-
void fs__default["default"].promises.rm(folderToCleanUp, {
|
|
652
|
-
recursive: true,
|
|
653
|
-
force: true
|
|
654
|
-
});
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
return _context2.finish(28);
|
|
658
|
-
|
|
659
|
-
case 31:
|
|
660
|
-
case "end":
|
|
661
|
-
return _context2.stop();
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
}, _callee2, null, [[1, 22, 28, 31]]);
|
|
665
|
-
}))();
|
|
666
|
-
}
|
|
667
|
-
};
|
|
668
|
-
}
|
|
669
|
-
function prepareBundleForDebugIdUpload(_x3, _x4, _x5, _x6, _x7) {
|
|
670
|
-
return _prepareBundleForDebugIdUpload.apply(this, arguments);
|
|
671
|
-
}
|
|
672
561
|
/**
|
|
673
|
-
*
|
|
674
|
-
* source and extracts the bundle's debug ID from it.
|
|
675
|
-
*
|
|
676
|
-
* The string pattern is injected via the debug ID injection snipped.
|
|
562
|
+
* Deterministically hashes a string and turns the hash into a uuid.
|
|
677
563
|
*/
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
while (1) {
|
|
684
|
-
switch (_context4.prev = _context4.next) {
|
|
685
|
-
case 0:
|
|
686
|
-
_context4.prev = 0;
|
|
687
|
-
_context4.next = 3;
|
|
688
|
-
return util.promisify(fs__default["default"].readFile)(bundleFilePath, "utf8");
|
|
689
|
-
|
|
690
|
-
case 3:
|
|
691
|
-
bundleContent = _context4.sent;
|
|
692
|
-
_context4.next = 10;
|
|
693
|
-
break;
|
|
694
|
-
|
|
695
|
-
case 6:
|
|
696
|
-
_context4.prev = 6;
|
|
697
|
-
_context4.t0 = _context4["catch"](0);
|
|
698
|
-
logger.error("Could not read bundle to determine debug ID and source map: ".concat(bundleFilePath), _context4.t0);
|
|
699
|
-
return _context4.abrupt("return");
|
|
700
|
-
|
|
701
|
-
case 10:
|
|
702
|
-
debugId = determineDebugIdFromBundleSource(bundleContent);
|
|
703
|
-
|
|
704
|
-
if (!(debugId === undefined)) {
|
|
705
|
-
_context4.next = 14;
|
|
706
|
-
break;
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
logger.debug("Could not determine debug ID from bundle. This can happen if you did not clean your output folder before installing the Sentry plugin. File will not be source mapped: ".concat(bundleFilePath));
|
|
710
|
-
return _context4.abrupt("return");
|
|
711
|
-
|
|
712
|
-
case 14:
|
|
713
|
-
uniqueUploadName = "".concat(debugId, "-").concat(chunkIndex);
|
|
714
|
-
bundleContent += "\n//# debugId=".concat(debugId);
|
|
715
|
-
writeSourceFilePromise = fs__default["default"].promises.writeFile(path__default["default"].join(uploadFolder, "".concat(uniqueUploadName, ".js")), bundleContent, "utf-8");
|
|
716
|
-
writeSourceMapFilePromise = determineSourceMapPathFromBundle(bundleFilePath, bundleContent, logger).then( /*#__PURE__*/function () {
|
|
717
|
-
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(sourceMapPath) {
|
|
718
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
719
|
-
while (1) {
|
|
720
|
-
switch (_context3.prev = _context3.next) {
|
|
721
|
-
case 0:
|
|
722
|
-
if (!sourceMapPath) {
|
|
723
|
-
_context3.next = 4;
|
|
724
|
-
break;
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
_context3.next = 3;
|
|
728
|
-
return prepareSourceMapForDebugIdUpload(sourceMapPath, path__default["default"].join(uploadFolder, "".concat(uniqueUploadName, ".js.map")), debugId, rewriteSourcesHook, logger);
|
|
729
|
-
|
|
730
|
-
case 3:
|
|
731
|
-
return _context3.abrupt("return", _context3.sent);
|
|
732
|
-
|
|
733
|
-
case 4:
|
|
734
|
-
case "end":
|
|
735
|
-
return _context3.stop();
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
}, _callee3);
|
|
739
|
-
}));
|
|
740
|
-
|
|
741
|
-
return function (_x16) {
|
|
742
|
-
return _ref3.apply(this, arguments);
|
|
743
|
-
};
|
|
744
|
-
}());
|
|
745
|
-
return _context4.abrupt("return", Promise.all([writeSourceFilePromise, writeSourceMapFilePromise]));
|
|
746
|
-
|
|
747
|
-
case 19:
|
|
748
|
-
case "end":
|
|
749
|
-
return _context4.stop();
|
|
750
|
-
}
|
|
751
|
-
}
|
|
752
|
-
}, _callee4, null, [[0, 6]]);
|
|
753
|
-
}));
|
|
754
|
-
return _prepareBundleForDebugIdUpload.apply(this, arguments);
|
|
564
|
+
function stringToUUID(str) {
|
|
565
|
+
var md5sum = crypto__default["default"].createHash("md5");
|
|
566
|
+
md5sum.update(str);
|
|
567
|
+
var md5Hash = md5sum.digest("hex");
|
|
568
|
+
return (md5Hash.substring(0, 8) + "-" + md5Hash.substring(8, 12) + "-4" + md5Hash.substring(13, 16) + "-" + md5Hash.substring(16, 20) + "-" + md5Hash.substring(20)).toLowerCase();
|
|
755
569
|
}
|
|
756
570
|
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
571
|
+
/**
|
|
572
|
+
* Tries to guess a release name based on environmental data.
|
|
573
|
+
*/
|
|
574
|
+
function determineReleaseName() {
|
|
575
|
+
var gitRevision;
|
|
576
|
+
try {
|
|
577
|
+
gitRevision = childProcess__default["default"].execSync("git rev-parse --short HEAD").toString().trim();
|
|
578
|
+
} catch (e) {
|
|
579
|
+
// noop
|
|
764
580
|
}
|
|
581
|
+
return (
|
|
582
|
+
// GitHub Actions - https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables
|
|
583
|
+
process.env["GITHUB_SHA"] ||
|
|
584
|
+
// Netlify - https://docs.netlify.com/configure-builds/environment-variables/#build-metadata
|
|
585
|
+
process.env["COMMIT_REF"] ||
|
|
586
|
+
// Cloudflare Pages - https://developers.cloudflare.com/pages/platform/build-configuration/#environment-variables
|
|
587
|
+
process.env["CF_PAGES_COMMIT_SHA"] ||
|
|
588
|
+
// AWS CodeBuild - https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
|
|
589
|
+
process.env["CODEBUILD_RESOLVED_SOURCE_VERSION"] ||
|
|
590
|
+
// CircleCI - https://circleci.com/docs/2.0/env-vars/
|
|
591
|
+
process.env["CIRCLE_SHA1"] ||
|
|
592
|
+
// Vercel - https://vercel.com/docs/v2/build-step#system-environment-variables
|
|
593
|
+
process.env["VERCEL_GIT_COMMIT_SHA"] || process.env["VERCEL_GITHUB_COMMIT_SHA"] || process.env["VERCEL_GITLAB_COMMIT_SHA"] || process.env["VERCEL_BITBUCKET_COMMIT_SHA"] ||
|
|
594
|
+
// Zeit (now known as Vercel)
|
|
595
|
+
process.env["ZEIT_GITHUB_COMMIT_SHA"] || process.env["ZEIT_GITLAB_COMMIT_SHA"] || process.env["ZEIT_BITBUCKET_COMMIT_SHA"] || gitRevision
|
|
596
|
+
);
|
|
765
597
|
}
|
|
598
|
+
|
|
766
599
|
/**
|
|
767
|
-
*
|
|
768
|
-
*
|
|
769
|
-
* @returns the path to the bundle's source map or `undefined` if none could be found.
|
|
600
|
+
* Generates code for the global injector which is responsible for setting the global
|
|
601
|
+
* `SENTRY_RELEASE` & `SENTRY_BUILD_INFO` variables.
|
|
770
602
|
*/
|
|
603
|
+
function generateGlobalInjectorCode(_ref2) {
|
|
604
|
+
var release = _ref2.release,
|
|
605
|
+
injectBuildInformation = _ref2.injectBuildInformation;
|
|
606
|
+
// The code below is mostly ternary operators because it saves bundle size.
|
|
607
|
+
// The checks are to support as many environments as possible. (Node.js, Browser, webworkers, etc.)
|
|
608
|
+
var code = "\n var _global =\n typeof window !== 'undefined' ?\n window :\n typeof global !== 'undefined' ?\n global :\n typeof self !== 'undefined' ?\n self :\n {};\n\n _global.SENTRY_RELEASE={id:\"".concat(release, "\"};");
|
|
609
|
+
if (injectBuildInformation) {
|
|
610
|
+
var buildInfo = getBuildInformation$1();
|
|
611
|
+
code += "\n _global.SENTRY_BUILD_INFO=".concat(JSON.stringify(buildInfo), ";");
|
|
612
|
+
}
|
|
613
|
+
return code;
|
|
614
|
+
}
|
|
615
|
+
function getBuildInformation$1() {
|
|
616
|
+
var packageJson = getPackageJson();
|
|
617
|
+
var _ref3 = packageJson ? getDependencies(packageJson) : {
|
|
618
|
+
deps: [],
|
|
619
|
+
depsVersions: {}
|
|
620
|
+
},
|
|
621
|
+
deps = _ref3.deps,
|
|
622
|
+
depsVersions = _ref3.depsVersions;
|
|
623
|
+
return {
|
|
624
|
+
deps: deps,
|
|
625
|
+
depsVersions: depsVersions,
|
|
626
|
+
nodeVersion: parseMajorVersion(process.version)
|
|
627
|
+
};
|
|
628
|
+
}
|
|
629
|
+
function stripQueryAndHashFromPath(path) {
|
|
630
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
631
|
+
return path.split("?")[0].split("#")[0];
|
|
632
|
+
}
|
|
771
633
|
|
|
772
|
-
|
|
773
|
-
function
|
|
774
|
-
|
|
634
|
+
var SENTRY_SAAS_URL = "https://sentry.io";
|
|
635
|
+
function normalizeUserOptions(userOptions) {
|
|
636
|
+
var _userOptions$org, _userOptions$project, _userOptions$authToke, _ref, _userOptions$url, _userOptions$debug, _userOptions$silent, _userOptions$telemetr, _userOptions$disable, _userOptions$release$, _userOptions$release, _userOptions$release$2, _userOptions$release2, _userOptions$release$3, _userOptions$release3, _userOptions$release$4, _userOptions$release4, _ref2, _userOptions$release$5, _userOptions$release5, _userOptions$release$6, _userOptions$release6, _userOptions$_experim;
|
|
637
|
+
var options = {
|
|
638
|
+
org: (_userOptions$org = userOptions.org) !== null && _userOptions$org !== void 0 ? _userOptions$org : process.env["SENTRY_ORG"],
|
|
639
|
+
project: (_userOptions$project = userOptions.project) !== null && _userOptions$project !== void 0 ? _userOptions$project : process.env["SENTRY_PROJECT"],
|
|
640
|
+
authToken: (_userOptions$authToke = userOptions.authToken) !== null && _userOptions$authToke !== void 0 ? _userOptions$authToke : process.env["SENTRY_AUTH_TOKEN"],
|
|
641
|
+
url: (_ref = (_userOptions$url = userOptions.url) !== null && _userOptions$url !== void 0 ? _userOptions$url : process.env["SENTRY_URL"]) !== null && _ref !== void 0 ? _ref : SENTRY_SAAS_URL,
|
|
642
|
+
headers: userOptions.headers,
|
|
643
|
+
debug: (_userOptions$debug = userOptions.debug) !== null && _userOptions$debug !== void 0 ? _userOptions$debug : false,
|
|
644
|
+
silent: (_userOptions$silent = userOptions.silent) !== null && _userOptions$silent !== void 0 ? _userOptions$silent : false,
|
|
645
|
+
errorHandler: userOptions.errorHandler,
|
|
646
|
+
telemetry: (_userOptions$telemetr = userOptions.telemetry) !== null && _userOptions$telemetr !== void 0 ? _userOptions$telemetr : true,
|
|
647
|
+
disable: (_userOptions$disable = userOptions.disable) !== null && _userOptions$disable !== void 0 ? _userOptions$disable : false,
|
|
648
|
+
sourcemaps: userOptions.sourcemaps,
|
|
649
|
+
release: _objectSpread2(_objectSpread2({}, userOptions.release), {}, {
|
|
650
|
+
name: (_userOptions$release$ = (_userOptions$release = userOptions.release) === null || _userOptions$release === void 0 ? void 0 : _userOptions$release.name) !== null && _userOptions$release$ !== void 0 ? _userOptions$release$ : determineReleaseName(),
|
|
651
|
+
inject: (_userOptions$release$2 = (_userOptions$release2 = userOptions.release) === null || _userOptions$release2 === void 0 ? void 0 : _userOptions$release2.inject) !== null && _userOptions$release$2 !== void 0 ? _userOptions$release$2 : true,
|
|
652
|
+
create: (_userOptions$release$3 = (_userOptions$release3 = userOptions.release) === null || _userOptions$release3 === void 0 ? void 0 : _userOptions$release3.create) !== null && _userOptions$release$3 !== void 0 ? _userOptions$release$3 : true,
|
|
653
|
+
finalize: (_userOptions$release$4 = (_userOptions$release4 = userOptions.release) === null || _userOptions$release4 === void 0 ? void 0 : _userOptions$release4.finalize) !== null && _userOptions$release$4 !== void 0 ? _userOptions$release$4 : true,
|
|
654
|
+
vcsRemote: (_ref2 = (_userOptions$release$5 = (_userOptions$release5 = userOptions.release) === null || _userOptions$release5 === void 0 ? void 0 : _userOptions$release5.vcsRemote) !== null && _userOptions$release$5 !== void 0 ? _userOptions$release$5 : process.env["SENTRY_VSC_REMOTE"]) !== null && _ref2 !== void 0 ? _ref2 : "origin",
|
|
655
|
+
cleanArtifacts: (_userOptions$release$6 = (_userOptions$release6 = userOptions.release) === null || _userOptions$release6 === void 0 ? void 0 : _userOptions$release6.cleanArtifacts) !== null && _userOptions$release$6 !== void 0 ? _userOptions$release$6 : false
|
|
656
|
+
}),
|
|
657
|
+
_experiments: (_userOptions$_experim = userOptions._experiments) !== null && _userOptions$_experim !== void 0 ? _userOptions$_experim : {}
|
|
658
|
+
};
|
|
659
|
+
return options;
|
|
775
660
|
}
|
|
661
|
+
|
|
776
662
|
/**
|
|
777
|
-
*
|
|
663
|
+
* Validates a few combinations of options that are not checked by Sentry CLI.
|
|
664
|
+
*
|
|
665
|
+
* For all other options, we can rely on Sentry CLI to validate them. In fact,
|
|
666
|
+
* we can't validate them in the plugin because Sentry CLI might pick up options from
|
|
667
|
+
* its config file.
|
|
668
|
+
*
|
|
669
|
+
* @param options the internal options
|
|
670
|
+
* @param logger the logger
|
|
671
|
+
*
|
|
672
|
+
* @returns `true` if the options are valid, `false` otherwise
|
|
778
673
|
*/
|
|
674
|
+
function validateOptions(options, logger) {
|
|
675
|
+
var _options$release, _options$release2, _options$release3;
|
|
676
|
+
var setCommits = (_options$release = options.release) === null || _options$release === void 0 ? void 0 : _options$release.setCommits;
|
|
677
|
+
if (setCommits) {
|
|
678
|
+
if (!setCommits.auto && !(setCommits.repo && setCommits.commit)) {
|
|
679
|
+
logger.error("The `setCommits` option was specified but is missing required properties.", "Please set either `auto` or both, `repo` and `commit`.");
|
|
680
|
+
return false;
|
|
681
|
+
}
|
|
682
|
+
if (setCommits.auto && setCommits.repo && setCommits) {
|
|
683
|
+
logger.warn("The `setCommits` options includes `auto` but also `repo` and `commit`.", "Ignoring `repo` and `commit`.", "Please only set either `auto` or both, `repo` and `commit`.");
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
if ((_options$release2 = options.release) !== null && _options$release2 !== void 0 && _options$release2.deploy && !((_options$release3 = options.release) !== null && _options$release3 !== void 0 && _options$release3.deploy.env)) {
|
|
687
|
+
logger.error("The `deploy` option was specified but is missing the required `env` property.", "Please set the `env` property.");
|
|
688
|
+
return false;
|
|
689
|
+
}
|
|
690
|
+
return true;
|
|
691
|
+
}
|
|
779
692
|
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
693
|
+
function createDebugIdUploadFunction(_ref) {
|
|
694
|
+
var assets = _ref.assets,
|
|
695
|
+
ignore = _ref.ignore,
|
|
696
|
+
logger = _ref.logger,
|
|
697
|
+
releaseName = _ref.releaseName,
|
|
698
|
+
dist = _ref.dist,
|
|
699
|
+
handleRecoverableError = _ref.handleRecoverableError,
|
|
700
|
+
sentryHub = _ref.sentryHub,
|
|
701
|
+
sentryClient = _ref.sentryClient,
|
|
702
|
+
sentryCliOptions = _ref.sentryCliOptions,
|
|
703
|
+
rewriteSourcesHook = _ref.rewriteSourcesHook,
|
|
704
|
+
deleteFilesAfterUpload = _ref.deleteFilesAfterUpload;
|
|
705
|
+
return /*#__PURE__*/function () {
|
|
706
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(buildArtifactPaths) {
|
|
707
|
+
var folderToCleanUp, cliInstance, tmpUploadFolder, globAssets, debugIdChunkFilePaths, filePathsToDelete;
|
|
708
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
709
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
787
710
|
case 0:
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
711
|
+
cliInstance = new SentryCli__default["default"](null, sentryCliOptions);
|
|
712
|
+
_context2.prev = 1;
|
|
713
|
+
_context2.next = 4;
|
|
714
|
+
return fs__default["default"].promises.mkdtemp(path__default["default"].join(os__default["default"].tmpdir(), "sentry-bundler-plugin-upload-"));
|
|
715
|
+
case 4:
|
|
716
|
+
tmpUploadFolder = _context2.sent;
|
|
717
|
+
folderToCleanUp = tmpUploadFolder;
|
|
718
|
+
if (assets) {
|
|
719
|
+
globAssets = assets;
|
|
720
|
+
} else {
|
|
721
|
+
logger.debug("No `sourcemaps.assets` option provided, falling back to uploading detected build artifacts.");
|
|
722
|
+
globAssets = buildArtifactPaths;
|
|
794
723
|
}
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
724
|
+
_context2.next = 9;
|
|
725
|
+
return glob.glob(globAssets, {
|
|
726
|
+
absolute: true,
|
|
727
|
+
nodir: true,
|
|
728
|
+
ignore: ignore
|
|
729
|
+
});
|
|
730
|
+
case 9:
|
|
731
|
+
debugIdChunkFilePaths = _context2.sent.filter(function (debugIdChunkFilePath) {
|
|
732
|
+
return debugIdChunkFilePath.endsWith(".js") || debugIdChunkFilePath.endsWith(".mjs") || debugIdChunkFilePath.endsWith(".cjs");
|
|
733
|
+
});
|
|
734
|
+
if (!(Array.isArray(assets) && assets.length === 0)) {
|
|
735
|
+
_context2.next = 14;
|
|
800
736
|
break;
|
|
801
737
|
}
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
case 7:
|
|
806
|
-
return _context5.abrupt("return", path__default["default"].join(path__default["default"].dirname(bundlePath), sourceMappingUrl));
|
|
807
|
-
|
|
808
|
-
case 8:
|
|
809
|
-
_context5.prev = 8;
|
|
810
|
-
adjacentSourceMapFilePath = bundlePath + ".map";
|
|
811
|
-
_context5.next = 12;
|
|
812
|
-
return util__namespace.promisify(fs__default["default"].access)(adjacentSourceMapFilePath);
|
|
813
|
-
|
|
814
|
-
case 12:
|
|
815
|
-
return _context5.abrupt("return", adjacentSourceMapFilePath);
|
|
816
|
-
|
|
817
|
-
case 15:
|
|
818
|
-
_context5.prev = 15;
|
|
819
|
-
_context5.t0 = _context5["catch"](8);
|
|
820
|
-
|
|
821
|
-
case 17:
|
|
822
|
-
// This is just a debug message because it can be quite spammy for some frameworks
|
|
823
|
-
logger.debug("Could not determine source map path for bundle: ".concat(bundlePath));
|
|
824
|
-
return _context5.abrupt("return", undefined);
|
|
825
|
-
|
|
826
|
-
case 19:
|
|
827
|
-
case "end":
|
|
828
|
-
return _context5.stop();
|
|
829
|
-
}
|
|
830
|
-
}
|
|
831
|
-
}, _callee5, null, [[8, 15]]);
|
|
832
|
-
}));
|
|
833
|
-
return _determineSourceMapPathFromBundle.apply(this, arguments);
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
function prepareSourceMapForDebugIdUpload(_x11, _x12, _x13, _x14, _x15) {
|
|
837
|
-
return _prepareSourceMapForDebugIdUpload.apply(this, arguments);
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
function _prepareSourceMapForDebugIdUpload() {
|
|
841
|
-
_prepareSourceMapForDebugIdUpload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(sourceMapPath, targetPath, debugId, rewriteSourcesHook, logger) {
|
|
842
|
-
var sourceMapFileContent, map;
|
|
843
|
-
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
844
|
-
while (1) {
|
|
845
|
-
switch (_context6.prev = _context6.next) {
|
|
846
|
-
case 0:
|
|
847
|
-
_context6.prev = 0;
|
|
848
|
-
_context6.next = 3;
|
|
849
|
-
return util__namespace.promisify(fs__default["default"].readFile)(sourceMapPath, {
|
|
850
|
-
encoding: "utf8"
|
|
851
|
-
});
|
|
852
|
-
|
|
853
|
-
case 3:
|
|
854
|
-
sourceMapFileContent = _context6.sent;
|
|
855
|
-
_context6.next = 10;
|
|
738
|
+
logger.debug("Empty `sourcemaps.assets` option provided. Will not upload sourcemaps with debug ID.");
|
|
739
|
+
_context2.next = 22;
|
|
856
740
|
break;
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
case 10:
|
|
865
|
-
_context6.prev = 10;
|
|
866
|
-
map = JSON.parse(sourceMapFileContent); // For now we write both fields until we know what will become the standard - if ever.
|
|
867
|
-
|
|
868
|
-
map["debug_id"] = debugId;
|
|
869
|
-
map["debugId"] = debugId;
|
|
870
|
-
_context6.next = 20;
|
|
741
|
+
case 14:
|
|
742
|
+
if (!(debugIdChunkFilePaths.length === 0)) {
|
|
743
|
+
_context2.next = 18;
|
|
744
|
+
break;
|
|
745
|
+
}
|
|
746
|
+
logger.warn("Didn't find any matching sources for debug ID upload. Please check the `sourcemaps.assets` option.");
|
|
747
|
+
_context2.next = 22;
|
|
871
748
|
break;
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
749
|
+
case 18:
|
|
750
|
+
_context2.next = 20;
|
|
751
|
+
return Promise.all(debugIdChunkFilePaths.map( /*#__PURE__*/function () {
|
|
752
|
+
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(chunkFilePath, chunkIndex) {
|
|
753
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
754
|
+
while (1) switch (_context.prev = _context.next) {
|
|
755
|
+
case 0:
|
|
756
|
+
_context.next = 2;
|
|
757
|
+
return prepareBundleForDebugIdUpload(chunkFilePath, tmpUploadFolder, chunkIndex, logger, rewriteSourcesHook !== null && rewriteSourcesHook !== void 0 ? rewriteSourcesHook : defaultRewriteSourcesHook);
|
|
758
|
+
case 2:
|
|
759
|
+
case "end":
|
|
760
|
+
return _context.stop();
|
|
761
|
+
}
|
|
762
|
+
}, _callee);
|
|
763
|
+
}));
|
|
764
|
+
return function (_x2, _x3) {
|
|
765
|
+
return _ref3.apply(this, arguments);
|
|
766
|
+
};
|
|
767
|
+
}()));
|
|
879
768
|
case 20:
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
769
|
+
_context2.next = 22;
|
|
770
|
+
return cliInstance.releases.uploadSourceMaps(releaseName !== null && releaseName !== void 0 ? releaseName : "undefined",
|
|
771
|
+
// unfortunetly this needs a value for now but it will not matter since debug IDs overpower releases anyhow
|
|
772
|
+
{
|
|
773
|
+
include: [{
|
|
774
|
+
paths: [tmpUploadFolder],
|
|
775
|
+
rewrite: false,
|
|
776
|
+
dist: dist
|
|
777
|
+
}],
|
|
778
|
+
useArtifactBundle: true
|
|
779
|
+
});
|
|
780
|
+
case 22:
|
|
781
|
+
if (!deleteFilesAfterUpload) {
|
|
782
|
+
_context2.next = 29;
|
|
783
|
+
break;
|
|
884
784
|
}
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
encoding: "utf8"
|
|
785
|
+
_context2.next = 25;
|
|
786
|
+
return glob.glob(deleteFilesAfterUpload, {
|
|
787
|
+
absolute: true,
|
|
788
|
+
nodir: true
|
|
890
789
|
});
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
790
|
+
case 25:
|
|
791
|
+
filePathsToDelete = _context2.sent;
|
|
792
|
+
filePathsToDelete.forEach(function (filePathToDelete) {
|
|
793
|
+
logger.debug("Deleting asset after upload: ".concat(filePathToDelete));
|
|
794
|
+
});
|
|
795
|
+
_context2.next = 29;
|
|
796
|
+
return Promise.all(filePathsToDelete.map(function (filePathToDelete) {
|
|
797
|
+
return fs__default["default"].promises.rm(filePathToDelete, {
|
|
798
|
+
force: true
|
|
799
|
+
});
|
|
800
|
+
}));
|
|
801
|
+
case 29:
|
|
802
|
+
_context2.next = 37;
|
|
894
803
|
break;
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
return
|
|
901
|
-
|
|
902
|
-
|
|
804
|
+
case 31:
|
|
805
|
+
_context2.prev = 31;
|
|
806
|
+
_context2.t0 = _context2["catch"](1);
|
|
807
|
+
sentryHub.captureException('Error in "debugIdUploadPlugin" writeBundle hook');
|
|
808
|
+
_context2.next = 36;
|
|
809
|
+
return sentryClient.flush();
|
|
810
|
+
case 36:
|
|
811
|
+
handleRecoverableError(_context2.t0);
|
|
812
|
+
case 37:
|
|
813
|
+
_context2.prev = 37;
|
|
814
|
+
if (folderToCleanUp) {
|
|
815
|
+
void fs__default["default"].promises.rm(folderToCleanUp, {
|
|
816
|
+
recursive: true,
|
|
817
|
+
force: true
|
|
818
|
+
});
|
|
819
|
+
}
|
|
820
|
+
return _context2.finish(37);
|
|
821
|
+
case 40:
|
|
903
822
|
case "end":
|
|
904
|
-
return
|
|
823
|
+
return _context2.stop();
|
|
905
824
|
}
|
|
906
|
-
}
|
|
907
|
-
}
|
|
908
|
-
|
|
909
|
-
|
|
825
|
+
}, _callee2, null, [[1, 31, 37, 40]]);
|
|
826
|
+
}));
|
|
827
|
+
return function (_x) {
|
|
828
|
+
return _ref2.apply(this, arguments);
|
|
829
|
+
};
|
|
830
|
+
}();
|
|
910
831
|
}
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
function defaultRewriteSourcesHook(source) {
|
|
915
|
-
if (source.match(PROTOCOL_REGEX)) {
|
|
916
|
-
return source.replace(PROTOCOL_REGEX, "");
|
|
917
|
-
} else {
|
|
918
|
-
return path__default["default"].relative(process.cwd(), path__default["default"].normalize(source));
|
|
919
|
-
}
|
|
832
|
+
function prepareBundleForDebugIdUpload(_x4, _x5, _x6, _x7, _x8) {
|
|
833
|
+
return _prepareBundleForDebugIdUpload.apply(this, arguments);
|
|
920
834
|
}
|
|
921
835
|
|
|
922
836
|
/**
|
|
923
|
-
*
|
|
837
|
+
* Looks for a particular string pattern (`sdbid-[debug ID]`) in the bundle
|
|
838
|
+
* source and extracts the bundle's debug ID from it.
|
|
924
839
|
*
|
|
925
|
-
*
|
|
926
|
-
* @returns The input, if already an array, or an array with the input as the only element, if not
|
|
927
|
-
*/
|
|
928
|
-
|
|
929
|
-
function arrayify(maybeArray) {
|
|
930
|
-
return Array.isArray(maybeArray) ? maybeArray : [maybeArray];
|
|
931
|
-
}
|
|
932
|
-
|
|
933
|
-
/**
|
|
934
|
-
* Get the closes package.json from a given starting point upwards.
|
|
935
|
-
* This handles a few edge cases:
|
|
936
|
-
* * Check if a given file package.json appears to be an actual NPM package.json file
|
|
937
|
-
* * Stop at the home dir, to avoid looking too deeply
|
|
840
|
+
* The string pattern is injected via the debug ID injection snipped.
|
|
938
841
|
*/
|
|
939
|
-
function
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
var gtMatch = version.match(gtRegex);
|
|
997
|
-
|
|
998
|
-
if (gtMatch) {
|
|
999
|
-
// We always return the version here, even though it _may_ be incorrect
|
|
1000
|
-
// E.g. if given > 2.0.0, it should be 2 if there exists any 2.x.x version, else 3
|
|
1001
|
-
// Since there is no way for us to know this, we're going to assume any kind of patch/feature release probably exists
|
|
1002
|
-
return parseInt(gtMatch[1], 10);
|
|
1003
|
-
}
|
|
1004
|
-
|
|
1005
|
-
return undefined;
|
|
1006
|
-
} // This is an explicit list of packages where we want to include the (major) version number.
|
|
1007
|
-
|
|
1008
|
-
var PACKAGES_TO_INCLUDE_VERSION = ["react", "@angular/core", "vue", "ember-source", "svelte", "@sveltejs/kit", "webpack", "vite", "gatsby", "next", "remix", "rollup", "esbuild"];
|
|
1009
|
-
function getDependencies(packageJson) {
|
|
1010
|
-
var _packageJson$devDepen, _packageJson$dependen;
|
|
1011
|
-
|
|
1012
|
-
var dependencies = Object.assign({}, (_packageJson$devDepen = packageJson["devDependencies"]) !== null && _packageJson$devDepen !== void 0 ? _packageJson$devDepen : {}, (_packageJson$dependen = packageJson["dependencies"]) !== null && _packageJson$dependen !== void 0 ? _packageJson$dependen : {});
|
|
1013
|
-
var deps = Object.keys(dependencies).sort();
|
|
1014
|
-
var depsVersions = deps.reduce(function (depsVersions, depName) {
|
|
1015
|
-
if (PACKAGES_TO_INCLUDE_VERSION.includes(depName)) {
|
|
1016
|
-
var version = dependencies[depName];
|
|
1017
|
-
var majorVersion = parseMajorVersion(version);
|
|
1018
|
-
|
|
1019
|
-
if (majorVersion) {
|
|
1020
|
-
depsVersions[depName] = majorVersion;
|
|
842
|
+
function _prepareBundleForDebugIdUpload() {
|
|
843
|
+
_prepareBundleForDebugIdUpload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(bundleFilePath, uploadFolder, chunkIndex, logger, rewriteSourcesHook) {
|
|
844
|
+
var bundleContent, debugId, uniqueUploadName, writeSourceFilePromise, writeSourceMapFilePromise;
|
|
845
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
846
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
847
|
+
case 0:
|
|
848
|
+
_context4.prev = 0;
|
|
849
|
+
_context4.next = 3;
|
|
850
|
+
return util.promisify(fs__default["default"].readFile)(bundleFilePath, "utf8");
|
|
851
|
+
case 3:
|
|
852
|
+
bundleContent = _context4.sent;
|
|
853
|
+
_context4.next = 10;
|
|
854
|
+
break;
|
|
855
|
+
case 6:
|
|
856
|
+
_context4.prev = 6;
|
|
857
|
+
_context4.t0 = _context4["catch"](0);
|
|
858
|
+
logger.error("Could not read bundle to determine debug ID and source map: ".concat(bundleFilePath), _context4.t0);
|
|
859
|
+
return _context4.abrupt("return");
|
|
860
|
+
case 10:
|
|
861
|
+
debugId = determineDebugIdFromBundleSource(bundleContent);
|
|
862
|
+
if (!(debugId === undefined)) {
|
|
863
|
+
_context4.next = 14;
|
|
864
|
+
break;
|
|
865
|
+
}
|
|
866
|
+
logger.debug("Could not determine debug ID from bundle. This can happen if you did not clean your output folder before installing the Sentry plugin. File will not be source mapped: ".concat(bundleFilePath));
|
|
867
|
+
return _context4.abrupt("return");
|
|
868
|
+
case 14:
|
|
869
|
+
uniqueUploadName = "".concat(debugId, "-").concat(chunkIndex);
|
|
870
|
+
bundleContent += "\n//# debugId=".concat(debugId);
|
|
871
|
+
writeSourceFilePromise = fs__default["default"].promises.writeFile(path__default["default"].join(uploadFolder, "".concat(uniqueUploadName, ".js")), bundleContent, "utf-8");
|
|
872
|
+
writeSourceMapFilePromise = determineSourceMapPathFromBundle(bundleFilePath, bundleContent, logger).then( /*#__PURE__*/function () {
|
|
873
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(sourceMapPath) {
|
|
874
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
875
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
876
|
+
case 0:
|
|
877
|
+
if (!sourceMapPath) {
|
|
878
|
+
_context3.next = 4;
|
|
879
|
+
break;
|
|
880
|
+
}
|
|
881
|
+
_context3.next = 3;
|
|
882
|
+
return prepareSourceMapForDebugIdUpload(sourceMapPath, path__default["default"].join(uploadFolder, "".concat(uniqueUploadName, ".js.map")), debugId, rewriteSourcesHook, logger);
|
|
883
|
+
case 3:
|
|
884
|
+
return _context3.abrupt("return", _context3.sent);
|
|
885
|
+
case 4:
|
|
886
|
+
case "end":
|
|
887
|
+
return _context3.stop();
|
|
888
|
+
}
|
|
889
|
+
}, _callee3);
|
|
890
|
+
}));
|
|
891
|
+
return function (_x17) {
|
|
892
|
+
return _ref4.apply(this, arguments);
|
|
893
|
+
};
|
|
894
|
+
}());
|
|
895
|
+
return _context4.abrupt("return", Promise.all([writeSourceFilePromise, writeSourceMapFilePromise]));
|
|
896
|
+
case 19:
|
|
897
|
+
case "end":
|
|
898
|
+
return _context4.stop();
|
|
1021
899
|
}
|
|
1022
|
-
}
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
}, {});
|
|
1026
|
-
return {
|
|
1027
|
-
deps: deps,
|
|
1028
|
-
depsVersions: depsVersions
|
|
1029
|
-
};
|
|
1030
|
-
}
|
|
1031
|
-
|
|
1032
|
-
function lookupPackageJson(cwd, stopAt) {
|
|
1033
|
-
var jsonPath = findUp__default["default"].sync(function (dirName) {
|
|
1034
|
-
// Stop if we reach this dir
|
|
1035
|
-
if (path__default["default"].normalize(dirName) === stopAt) {
|
|
1036
|
-
return findUp__default["default"].stop;
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
|
-
return findUp__default["default"].sync.exists(dirName + "/package.json") ? "package.json" : undefined;
|
|
1040
|
-
}, {
|
|
1041
|
-
cwd: cwd
|
|
1042
|
-
});
|
|
1043
|
-
|
|
1044
|
-
if (!jsonPath) {
|
|
1045
|
-
return undefined;
|
|
1046
|
-
}
|
|
1047
|
-
|
|
1048
|
-
try {
|
|
1049
|
-
var jsonStr = fs__default["default"].readFileSync(jsonPath, "utf8");
|
|
1050
|
-
var json = JSON.parse(jsonStr); // Ensure it is an actual package.json
|
|
1051
|
-
// This is very much not bulletproof, but should be good enough
|
|
1052
|
-
|
|
1053
|
-
if ("name" in json || "private" in json) {
|
|
1054
|
-
return json;
|
|
1055
|
-
}
|
|
1056
|
-
} catch (error) {// Ignore and walk up
|
|
1057
|
-
} // Continue up the tree, if we find a fitting package.json
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
var newCwd = path__default["default"].dirname(path__default["default"].resolve(jsonPath + "/.."));
|
|
1061
|
-
return lookupPackageJson(newCwd, stopAt);
|
|
1062
|
-
}
|
|
1063
|
-
/**
|
|
1064
|
-
* Deterministically hashes a string and turns the hash into a uuid.
|
|
1065
|
-
*/
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
function stringToUUID(str) {
|
|
1069
|
-
var md5sum = crypto__default["default"].createHash("md5");
|
|
1070
|
-
md5sum.update(str);
|
|
1071
|
-
var md5Hash = md5sum.digest("hex");
|
|
1072
|
-
return (md5Hash.substring(0, 8) + "-" + md5Hash.substring(8, 12) + "-4" + md5Hash.substring(13, 16) + "-" + md5Hash.substring(16, 20) + "-" + md5Hash.substring(20)).toLowerCase();
|
|
900
|
+
}, _callee4, null, [[0, 6]]);
|
|
901
|
+
}));
|
|
902
|
+
return _prepareBundleForDebugIdUpload.apply(this, arguments);
|
|
1073
903
|
}
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
try {
|
|
1082
|
-
gitRevision = childProcess__default["default"].execSync("git rev-parse --short HEAD").toString().trim();
|
|
1083
|
-
} catch (e) {// noop
|
|
904
|
+
function determineDebugIdFromBundleSource(code) {
|
|
905
|
+
var match = code.match(/sentry-dbid-([0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12})/);
|
|
906
|
+
if (match) {
|
|
907
|
+
return match[1];
|
|
908
|
+
} else {
|
|
909
|
+
return undefined;
|
|
1084
910
|
}
|
|
911
|
+
}
|
|
1085
912
|
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
process.env["ZEIT_GITHUB_COMMIT_SHA"] || process.env["ZEIT_GITLAB_COMMIT_SHA"] || process.env["ZEIT_BITBUCKET_COMMIT_SHA"] || gitRevision
|
|
1094
|
-
);
|
|
913
|
+
/**
|
|
914
|
+
* Applies a set of heuristics to find the source map for a particular bundle.
|
|
915
|
+
*
|
|
916
|
+
* @returns the path to the bundle's source map or `undefined` if none could be found.
|
|
917
|
+
*/
|
|
918
|
+
function determineSourceMapPathFromBundle(_x9, _x10, _x11) {
|
|
919
|
+
return _determineSourceMapPathFromBundle.apply(this, arguments);
|
|
1095
920
|
}
|
|
1096
921
|
/**
|
|
1097
|
-
*
|
|
1098
|
-
* `SENTRY_RELEASE` & `SENTRY_BUILD_INFO` variables.
|
|
922
|
+
* Reads a source map, injects debug ID fields, and writes the source map to the target path.
|
|
1099
923
|
*/
|
|
1100
|
-
|
|
1101
|
-
function
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
924
|
+
function _determineSourceMapPathFromBundle() {
|
|
925
|
+
_determineSourceMapPathFromBundle = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(bundlePath, bundleSource, logger) {
|
|
926
|
+
var sourceMappingUrlMatch, sourceMappingUrl, adjacentSourceMapFilePath;
|
|
927
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
928
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
929
|
+
case 0:
|
|
930
|
+
// 1. try to find source map at `sourceMappingURL` location
|
|
931
|
+
sourceMappingUrlMatch = bundleSource.match(/^\/\/# sourceMappingURL=(.*)$/);
|
|
932
|
+
if (!sourceMappingUrlMatch) {
|
|
933
|
+
_context5.next = 8;
|
|
934
|
+
break;
|
|
935
|
+
}
|
|
936
|
+
sourceMappingUrl = path__default["default"].normalize(sourceMappingUrlMatch[1]);
|
|
937
|
+
if (!path__default["default"].isAbsolute(sourceMappingUrl)) {
|
|
938
|
+
_context5.next = 7;
|
|
939
|
+
break;
|
|
940
|
+
}
|
|
941
|
+
return _context5.abrupt("return", sourceMappingUrl);
|
|
942
|
+
case 7:
|
|
943
|
+
return _context5.abrupt("return", path__default["default"].join(path__default["default"].dirname(bundlePath), sourceMappingUrl));
|
|
944
|
+
case 8:
|
|
945
|
+
_context5.prev = 8;
|
|
946
|
+
adjacentSourceMapFilePath = bundlePath + ".map";
|
|
947
|
+
_context5.next = 12;
|
|
948
|
+
return util__namespace.promisify(fs__default["default"].access)(adjacentSourceMapFilePath);
|
|
949
|
+
case 12:
|
|
950
|
+
return _context5.abrupt("return", adjacentSourceMapFilePath);
|
|
951
|
+
case 15:
|
|
952
|
+
_context5.prev = 15;
|
|
953
|
+
_context5.t0 = _context5["catch"](8);
|
|
954
|
+
case 17:
|
|
955
|
+
// This is just a debug message because it can be quite spammy for some frameworks
|
|
956
|
+
logger.debug("Could not determine source map path for bundle: ".concat(bundlePath));
|
|
957
|
+
return _context5.abrupt("return", undefined);
|
|
958
|
+
case 19:
|
|
959
|
+
case "end":
|
|
960
|
+
return _context5.stop();
|
|
961
|
+
}
|
|
962
|
+
}, _callee5, null, [[8, 15]]);
|
|
963
|
+
}));
|
|
964
|
+
return _determineSourceMapPathFromBundle.apply(this, arguments);
|
|
1114
965
|
}
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
966
|
+
function prepareSourceMapForDebugIdUpload(_x12, _x13, _x14, _x15, _x16) {
|
|
967
|
+
return _prepareSourceMapForDebugIdUpload.apply(this, arguments);
|
|
968
|
+
}
|
|
969
|
+
function _prepareSourceMapForDebugIdUpload() {
|
|
970
|
+
_prepareSourceMapForDebugIdUpload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(sourceMapPath, targetPath, debugId, rewriteSourcesHook, logger) {
|
|
971
|
+
var sourceMapFileContent, map;
|
|
972
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
973
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
974
|
+
case 0:
|
|
975
|
+
_context6.prev = 0;
|
|
976
|
+
_context6.next = 3;
|
|
977
|
+
return util__namespace.promisify(fs__default["default"].readFile)(sourceMapPath, {
|
|
978
|
+
encoding: "utf8"
|
|
979
|
+
});
|
|
980
|
+
case 3:
|
|
981
|
+
sourceMapFileContent = _context6.sent;
|
|
982
|
+
_context6.next = 10;
|
|
983
|
+
break;
|
|
984
|
+
case 6:
|
|
985
|
+
_context6.prev = 6;
|
|
986
|
+
_context6.t0 = _context6["catch"](0);
|
|
987
|
+
logger.error("Failed to read source map for debug ID upload: ".concat(sourceMapPath), _context6.t0);
|
|
988
|
+
return _context6.abrupt("return");
|
|
989
|
+
case 10:
|
|
990
|
+
_context6.prev = 10;
|
|
991
|
+
map = JSON.parse(sourceMapFileContent);
|
|
992
|
+
// For now we write both fields until we know what will become the standard - if ever.
|
|
993
|
+
map["debug_id"] = debugId;
|
|
994
|
+
map["debugId"] = debugId;
|
|
995
|
+
_context6.next = 20;
|
|
996
|
+
break;
|
|
997
|
+
case 16:
|
|
998
|
+
_context6.prev = 16;
|
|
999
|
+
_context6.t1 = _context6["catch"](10);
|
|
1000
|
+
logger.error("Failed to parse source map for debug ID upload: ".concat(sourceMapPath));
|
|
1001
|
+
return _context6.abrupt("return");
|
|
1002
|
+
case 20:
|
|
1003
|
+
if (map["sources"] && Array.isArray(map["sources"])) {
|
|
1004
|
+
map["sources"].map(function (source) {
|
|
1005
|
+
return rewriteSourcesHook(source, map);
|
|
1006
|
+
});
|
|
1007
|
+
}
|
|
1008
|
+
_context6.prev = 21;
|
|
1009
|
+
_context6.next = 24;
|
|
1010
|
+
return util__namespace.promisify(fs__default["default"].writeFile)(targetPath, JSON.stringify(map), {
|
|
1011
|
+
encoding: "utf8"
|
|
1012
|
+
});
|
|
1013
|
+
case 24:
|
|
1014
|
+
_context6.next = 30;
|
|
1015
|
+
break;
|
|
1016
|
+
case 26:
|
|
1017
|
+
_context6.prev = 26;
|
|
1018
|
+
_context6.t2 = _context6["catch"](21);
|
|
1019
|
+
logger.error("Failed to prepare source map for debug ID upload: ".concat(sourceMapPath), _context6.t2);
|
|
1020
|
+
return _context6.abrupt("return");
|
|
1021
|
+
case 30:
|
|
1022
|
+
case "end":
|
|
1023
|
+
return _context6.stop();
|
|
1024
|
+
}
|
|
1025
|
+
}, _callee6, null, [[0, 6], [10, 16], [21, 26]]);
|
|
1026
|
+
}));
|
|
1027
|
+
return _prepareSourceMapForDebugIdUpload.apply(this, arguments);
|
|
1028
|
+
}
|
|
1029
|
+
var PROTOCOL_REGEX = /^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\//;
|
|
1030
|
+
function defaultRewriteSourcesHook(source) {
|
|
1031
|
+
if (source.match(PROTOCOL_REGEX)) {
|
|
1032
|
+
return source.replace(PROTOCOL_REGEX, "");
|
|
1033
|
+
} else {
|
|
1034
|
+
return path__default["default"].relative(process.cwd(), path__default["default"].normalize(source));
|
|
1035
|
+
}
|
|
1131
1036
|
}
|
|
1132
1037
|
|
|
1133
1038
|
function releaseManagementPlugin(_ref) {
|
|
1134
1039
|
var releaseName = _ref.releaseName,
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1040
|
+
include = _ref.include,
|
|
1041
|
+
dist = _ref.dist,
|
|
1042
|
+
setCommitsOption = _ref.setCommitsOption,
|
|
1043
|
+
shouldCreateRelease = _ref.shouldCreateRelease,
|
|
1044
|
+
shouldCleanArtifacts = _ref.shouldCleanArtifacts,
|
|
1045
|
+
shouldFinalizeRelease = _ref.shouldFinalizeRelease,
|
|
1046
|
+
deployOptions = _ref.deployOptions,
|
|
1047
|
+
handleRecoverableError = _ref.handleRecoverableError,
|
|
1048
|
+
sentryHub = _ref.sentryHub,
|
|
1049
|
+
sentryClient = _ref.sentryClient,
|
|
1050
|
+
sentryCliOptions = _ref.sentryCliOptions;
|
|
1146
1051
|
return {
|
|
1147
1052
|
name: "sentry-debug-id-upload-plugin",
|
|
1148
1053
|
writeBundle: function writeBundle() {
|
|
1149
1054
|
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
1150
1055
|
var cliInstance, normalizedInclude;
|
|
1151
1056
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
1152
|
-
while (1) {
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
if (!shouldCreateRelease) {
|
|
1159
|
-
_context.next = 5;
|
|
1160
|
-
break;
|
|
1161
|
-
}
|
|
1162
|
-
|
|
1057
|
+
while (1) switch (_context.prev = _context.next) {
|
|
1058
|
+
case 0:
|
|
1059
|
+
_context.prev = 0;
|
|
1060
|
+
cliInstance = new SentryCli__default["default"](null, sentryCliOptions);
|
|
1061
|
+
if (!shouldCreateRelease) {
|
|
1163
1062
|
_context.next = 5;
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
}
|
|
1171
|
-
|
|
1063
|
+
break;
|
|
1064
|
+
}
|
|
1065
|
+
_context.next = 5;
|
|
1066
|
+
return cliInstance.releases["new"](releaseName);
|
|
1067
|
+
case 5:
|
|
1068
|
+
if (!shouldCleanArtifacts) {
|
|
1172
1069
|
_context.next = 8;
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
}
|
|
1180
|
-
|
|
1181
|
-
normalizedInclude = arrayify(include).map(function (includeItem) {
|
|
1182
|
-
return typeof includeItem === "string" ? {
|
|
1183
|
-
paths: [includeItem]
|
|
1184
|
-
} : includeItem;
|
|
1185
|
-
}).map(function (includeEntry) {
|
|
1186
|
-
var _includeEntry$validat;
|
|
1187
|
-
|
|
1188
|
-
return _objectSpread2(_objectSpread2({}, includeEntry), {}, {
|
|
1189
|
-
validate: (_includeEntry$validat = includeEntry.validate) !== null && _includeEntry$validat !== void 0 ? _includeEntry$validat : false,
|
|
1190
|
-
ext: includeEntry.ext ? includeEntry.ext.map(function (extension) {
|
|
1191
|
-
return ".".concat(extension.replace(/^\./, ""));
|
|
1192
|
-
}) : [".js", ".map", ".jsbundle", ".bundle"],
|
|
1193
|
-
ignore: includeEntry.ignore ? arrayify(includeEntry.ignore) : undefined
|
|
1194
|
-
});
|
|
1195
|
-
});
|
|
1070
|
+
break;
|
|
1071
|
+
}
|
|
1072
|
+
_context.next = 8;
|
|
1073
|
+
return cliInstance.releases.execute(["releases", "files", releaseName, "delete", "--all"], true);
|
|
1074
|
+
case 8:
|
|
1075
|
+
if (!include) {
|
|
1196
1076
|
_context.next = 12;
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1077
|
+
break;
|
|
1078
|
+
}
|
|
1079
|
+
normalizedInclude = arrayify(include).map(function (includeItem) {
|
|
1080
|
+
return typeof includeItem === "string" ? {
|
|
1081
|
+
paths: [includeItem]
|
|
1082
|
+
} : includeItem;
|
|
1083
|
+
}).map(function (includeEntry) {
|
|
1084
|
+
var _includeEntry$validat;
|
|
1085
|
+
return _objectSpread2(_objectSpread2({}, includeEntry), {}, {
|
|
1086
|
+
validate: (_includeEntry$validat = includeEntry.validate) !== null && _includeEntry$validat !== void 0 ? _includeEntry$validat : false,
|
|
1087
|
+
ext: includeEntry.ext ? includeEntry.ext.map(function (extension) {
|
|
1088
|
+
return ".".concat(extension.replace(/^\./, ""));
|
|
1089
|
+
}) : [".js", ".map", ".jsbundle", ".bundle"],
|
|
1090
|
+
ignore: includeEntry.ignore ? arrayify(includeEntry.ignore) : undefined
|
|
1200
1091
|
});
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1092
|
+
});
|
|
1093
|
+
_context.next = 12;
|
|
1094
|
+
return cliInstance.releases.uploadSourceMaps(releaseName, {
|
|
1095
|
+
include: normalizedInclude,
|
|
1096
|
+
dist: dist
|
|
1097
|
+
});
|
|
1098
|
+
case 12:
|
|
1099
|
+
if (!setCommitsOption) {
|
|
1208
1100
|
_context.next = 15;
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
}
|
|
1216
|
-
|
|
1101
|
+
break;
|
|
1102
|
+
}
|
|
1103
|
+
_context.next = 15;
|
|
1104
|
+
return cliInstance.releases.setCommits(releaseName, setCommitsOption);
|
|
1105
|
+
case 15:
|
|
1106
|
+
if (!shouldFinalizeRelease) {
|
|
1217
1107
|
_context.next = 18;
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
}
|
|
1225
|
-
|
|
1108
|
+
break;
|
|
1109
|
+
}
|
|
1110
|
+
_context.next = 18;
|
|
1111
|
+
return cliInstance.releases.finalize(releaseName);
|
|
1112
|
+
case 18:
|
|
1113
|
+
if (!deployOptions) {
|
|
1226
1114
|
_context.next = 21;
|
|
1227
|
-
return cliInstance.releases.newDeploy(releaseName, deployOptions);
|
|
1228
|
-
|
|
1229
|
-
case 21:
|
|
1230
|
-
_context.next = 29;
|
|
1231
1115
|
break;
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1116
|
+
}
|
|
1117
|
+
_context.next = 21;
|
|
1118
|
+
return cliInstance.releases.newDeploy(releaseName, deployOptions);
|
|
1119
|
+
case 21:
|
|
1120
|
+
_context.next = 29;
|
|
1121
|
+
break;
|
|
1122
|
+
case 23:
|
|
1123
|
+
_context.prev = 23;
|
|
1124
|
+
_context.t0 = _context["catch"](0);
|
|
1125
|
+
sentryHub.captureException('Error in "releaseManagementPlugin" writeBundle hook');
|
|
1126
|
+
_context.next = 28;
|
|
1127
|
+
return sentryClient.flush();
|
|
1128
|
+
case 28:
|
|
1129
|
+
handleRecoverableError(_context.t0);
|
|
1130
|
+
case 29:
|
|
1131
|
+
case "end":
|
|
1132
|
+
return _context.stop();
|
|
1247
1133
|
}
|
|
1248
1134
|
}, _callee, null, [[0, 23]]);
|
|
1249
1135
|
}))();
|
|
@@ -1253,31 +1139,30 @@ function releaseManagementPlugin(_ref) {
|
|
|
1253
1139
|
|
|
1254
1140
|
function telemetryPlugin(_ref) {
|
|
1255
1141
|
var sentryClient = _ref.sentryClient,
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1142
|
+
pluginExecutionTransaction = _ref.pluginExecutionTransaction,
|
|
1143
|
+
shouldSendTelemetry = _ref.shouldSendTelemetry,
|
|
1144
|
+
logger = _ref.logger;
|
|
1259
1145
|
return {
|
|
1260
1146
|
name: "sentry-telemetry-plugin",
|
|
1261
1147
|
buildStart: function buildStart() {
|
|
1262
|
-
void shouldSendTelemetry.then(function () {
|
|
1263
|
-
|
|
1148
|
+
void shouldSendTelemetry.then(function (willSendTelemetry) {
|
|
1149
|
+
if (willSendTelemetry) {
|
|
1150
|
+
logger.info("Sending error and performance telemetry data to Sentry. To disable telemetry, set `options.telemetry` to `false`.");
|
|
1151
|
+
}
|
|
1264
1152
|
});
|
|
1265
1153
|
pluginExecutionTransaction.startTimestamp = Date.now() / 1000;
|
|
1266
1154
|
},
|
|
1267
1155
|
writeBundle: function writeBundle() {
|
|
1268
1156
|
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
1269
1157
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
1270
|
-
while (1) {
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
case "end":
|
|
1279
|
-
return _context.stop();
|
|
1280
|
-
}
|
|
1158
|
+
while (1) switch (_context.prev = _context.next) {
|
|
1159
|
+
case 0:
|
|
1160
|
+
pluginExecutionTransaction.finish();
|
|
1161
|
+
_context.next = 3;
|
|
1162
|
+
return sentryClient.flush();
|
|
1163
|
+
case 3:
|
|
1164
|
+
case "end":
|
|
1165
|
+
return _context.stop();
|
|
1281
1166
|
}
|
|
1282
1167
|
}, _callee);
|
|
1283
1168
|
}))();
|
|
@@ -1290,11 +1175,9 @@ function createLogger(options) {
|
|
|
1290
1175
|
info: function info(message) {
|
|
1291
1176
|
if (!options.silent) {
|
|
1292
1177
|
var _console;
|
|
1293
|
-
|
|
1294
1178
|
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
1295
1179
|
params[_key - 1] = arguments[_key];
|
|
1296
1180
|
}
|
|
1297
|
-
|
|
1298
1181
|
// eslint-disable-next-line no-console
|
|
1299
1182
|
(_console = console).log.apply(_console, ["".concat(options.prefix, " Info: ").concat(message)].concat(params));
|
|
1300
1183
|
}
|
|
@@ -1302,11 +1185,9 @@ function createLogger(options) {
|
|
|
1302
1185
|
warn: function warn(message) {
|
|
1303
1186
|
if (!options.silent) {
|
|
1304
1187
|
var _console2;
|
|
1305
|
-
|
|
1306
1188
|
for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
1307
1189
|
params[_key2 - 1] = arguments[_key2];
|
|
1308
1190
|
}
|
|
1309
|
-
|
|
1310
1191
|
// eslint-disable-next-line no-console
|
|
1311
1192
|
(_console2 = console).log.apply(_console2, ["".concat(options.prefix, " Warning: ").concat(message)].concat(params));
|
|
1312
1193
|
}
|
|
@@ -1314,11 +1195,9 @@ function createLogger(options) {
|
|
|
1314
1195
|
error: function error(message) {
|
|
1315
1196
|
if (!options.silent) {
|
|
1316
1197
|
var _console3;
|
|
1317
|
-
|
|
1318
1198
|
for (var _len3 = arguments.length, params = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
1319
1199
|
params[_key3 - 1] = arguments[_key3];
|
|
1320
1200
|
}
|
|
1321
|
-
|
|
1322
1201
|
// eslint-disable-next-line no-console
|
|
1323
1202
|
(_console3 = console).log.apply(_console3, ["".concat(options.prefix, " Error: ").concat(message)].concat(params));
|
|
1324
1203
|
}
|
|
@@ -1326,11 +1205,9 @@ function createLogger(options) {
|
|
|
1326
1205
|
debug: function debug(message) {
|
|
1327
1206
|
if (!options.silent && options.debug) {
|
|
1328
1207
|
var _console4;
|
|
1329
|
-
|
|
1330
1208
|
for (var _len4 = arguments.length, params = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
|
|
1331
1209
|
params[_key4 - 1] = arguments[_key4];
|
|
1332
1210
|
}
|
|
1333
|
-
|
|
1334
1211
|
// eslint-disable-next-line no-console
|
|
1335
1212
|
(_console4 = console).log.apply(_console4, ["".concat(options.prefix, " Debug: ").concat(message)].concat(params));
|
|
1336
1213
|
}
|
|
@@ -1344,23 +1221,20 @@ function createSentryInstance(options, shouldSendTelemetry, bundler) {
|
|
|
1344
1221
|
dsn: "https://4c2bae7d9fbc413e8f7385f55c515d51@o1.ingest.sentry.io/6690737",
|
|
1345
1222
|
tracesSampleRate: 1,
|
|
1346
1223
|
sampleRate: 1,
|
|
1347
|
-
release: "2.
|
|
1224
|
+
release: "2.1.0",
|
|
1348
1225
|
integrations: [],
|
|
1349
1226
|
tracePropagationTargets: ["sentry.io/api"],
|
|
1350
1227
|
stackParser: node.defaultStackParser,
|
|
1351
1228
|
beforeSend: function beforeSend(event) {
|
|
1352
1229
|
var _event$exception, _event$exception$valu;
|
|
1353
|
-
|
|
1354
1230
|
(_event$exception = event.exception) === null || _event$exception === void 0 ? void 0 : (_event$exception$valu = _event$exception.values) === null || _event$exception$valu === void 0 ? void 0 : _event$exception$valu.forEach(function (exception) {
|
|
1355
1231
|
delete exception.stacktrace;
|
|
1356
1232
|
});
|
|
1357
1233
|
delete event.server_name; // Server name might contain PII
|
|
1358
|
-
|
|
1359
1234
|
return event;
|
|
1360
1235
|
},
|
|
1361
1236
|
beforeSendTransaction: function beforeSendTransaction(event) {
|
|
1362
1237
|
delete event.server_name; // Server name might contain PII
|
|
1363
|
-
|
|
1364
1238
|
return event;
|
|
1365
1239
|
},
|
|
1366
1240
|
// We create a transport that stalls sending events until we know that we're allowed to (i.e. when Sentry CLI told
|
|
@@ -1374,35 +1248,27 @@ function createSentryInstance(options, shouldSendTelemetry, bundler) {
|
|
|
1374
1248
|
send: function () {
|
|
1375
1249
|
var _send = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(request) {
|
|
1376
1250
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
1377
|
-
while (1) {
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
return _context.abrupt("return", undefined);
|
|
1393
|
-
|
|
1394
|
-
case 7:
|
|
1395
|
-
case "end":
|
|
1396
|
-
return _context.stop();
|
|
1397
|
-
}
|
|
1251
|
+
while (1) switch (_context.prev = _context.next) {
|
|
1252
|
+
case 0:
|
|
1253
|
+
_context.next = 2;
|
|
1254
|
+
return shouldSendTelemetry;
|
|
1255
|
+
case 2:
|
|
1256
|
+
if (!_context.sent) {
|
|
1257
|
+
_context.next = 6;
|
|
1258
|
+
break;
|
|
1259
|
+
}
|
|
1260
|
+
return _context.abrupt("return", nodeTransport.send(request));
|
|
1261
|
+
case 6:
|
|
1262
|
+
return _context.abrupt("return", undefined);
|
|
1263
|
+
case 7:
|
|
1264
|
+
case "end":
|
|
1265
|
+
return _context.stop();
|
|
1398
1266
|
}
|
|
1399
1267
|
}, _callee);
|
|
1400
1268
|
}));
|
|
1401
|
-
|
|
1402
1269
|
function send(_x) {
|
|
1403
1270
|
return _send.apply(this, arguments);
|
|
1404
1271
|
}
|
|
1405
|
-
|
|
1406
1272
|
return send;
|
|
1407
1273
|
}()
|
|
1408
1274
|
};
|
|
@@ -1417,45 +1283,38 @@ function createSentryInstance(options, shouldSendTelemetry, bundler) {
|
|
|
1417
1283
|
}
|
|
1418
1284
|
function setTelemetryDataOnHub(options, hub, bundler) {
|
|
1419
1285
|
var org = options.org,
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1286
|
+
project = options.project,
|
|
1287
|
+
release = options.release,
|
|
1288
|
+
errorHandler = options.errorHandler,
|
|
1289
|
+
sourcemaps = options.sourcemaps;
|
|
1425
1290
|
if (release.uploadLegacySourcemaps) {
|
|
1426
1291
|
hub.setTag("uploadLegacySourcemapsEntries", Array.isArray(release.uploadLegacySourcemaps) ? release.uploadLegacySourcemaps.length : 1);
|
|
1427
|
-
}
|
|
1428
|
-
|
|
1292
|
+
}
|
|
1429
1293
|
|
|
1294
|
+
// Optional release pipeline steps
|
|
1430
1295
|
if (release.cleanArtifacts) {
|
|
1431
1296
|
hub.setTag("clean-artifacts", true);
|
|
1432
1297
|
}
|
|
1433
|
-
|
|
1434
1298
|
if (release.setCommits) {
|
|
1435
1299
|
hub.setTag("set-commits", release.setCommits.auto === true ? "auto" : "manual");
|
|
1436
1300
|
}
|
|
1437
|
-
|
|
1438
1301
|
if (release.finalize) {
|
|
1439
1302
|
hub.setTag("finalize-release", true);
|
|
1440
1303
|
}
|
|
1441
|
-
|
|
1442
1304
|
if (release.deploy) {
|
|
1443
1305
|
hub.setTag("add-deploy", true);
|
|
1444
|
-
}
|
|
1445
|
-
|
|
1306
|
+
}
|
|
1446
1307
|
|
|
1308
|
+
// Miscelaneous options
|
|
1447
1309
|
if (errorHandler) {
|
|
1448
1310
|
hub.setTag("error-handler", "custom");
|
|
1449
1311
|
}
|
|
1450
|
-
|
|
1451
1312
|
if (sourcemaps !== null && sourcemaps !== void 0 && sourcemaps.assets) {
|
|
1452
1313
|
hub.setTag("debug-id-upload", true);
|
|
1453
1314
|
}
|
|
1454
|
-
|
|
1455
1315
|
if (sourcemaps !== null && sourcemaps !== void 0 && sourcemaps.deleteFilesAfterUpload) {
|
|
1456
1316
|
hub.setTag("delete-after-upload", true);
|
|
1457
1317
|
}
|
|
1458
|
-
|
|
1459
1318
|
hub.setTag("node", process.version);
|
|
1460
1319
|
hub.setTags({
|
|
1461
1320
|
organization: org,
|
|
@@ -1469,74 +1328,58 @@ function setTelemetryDataOnHub(options, hub, bundler) {
|
|
|
1469
1328
|
function allowedToSendTelemetry(_x2) {
|
|
1470
1329
|
return _allowedToSendTelemetry.apply(this, arguments);
|
|
1471
1330
|
}
|
|
1472
|
-
|
|
1473
1331
|
function _allowedToSendTelemetry() {
|
|
1474
1332
|
_allowedToSendTelemetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(options) {
|
|
1475
1333
|
var _cliInfo$split$, _cliInfo$split$$repla;
|
|
1476
|
-
|
|
1477
1334
|
var silent, org, project, authToken, url, headers, telemetry, release, cli, cliInfo, cliInfoUrl;
|
|
1478
1335
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
1479
|
-
while (1) {
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
if (!(telemetry === false)) {
|
|
1485
|
-
_context2.next = 3;
|
|
1486
|
-
break;
|
|
1487
|
-
}
|
|
1488
|
-
|
|
1489
|
-
return _context2.abrupt("return", false);
|
|
1490
|
-
|
|
1491
|
-
case 3:
|
|
1492
|
-
if (!(url === SENTRY_SAAS_URL)) {
|
|
1493
|
-
_context2.next = 5;
|
|
1494
|
-
break;
|
|
1495
|
-
}
|
|
1496
|
-
|
|
1497
|
-
return _context2.abrupt("return", true);
|
|
1498
|
-
|
|
1499
|
-
case 5:
|
|
1500
|
-
cli = new SentryCli__default["default"](null, {
|
|
1501
|
-
url: url,
|
|
1502
|
-
authToken: authToken,
|
|
1503
|
-
org: org,
|
|
1504
|
-
project: project,
|
|
1505
|
-
vcsRemote: release.vcsRemote,
|
|
1506
|
-
silent: silent,
|
|
1507
|
-
headers: headers
|
|
1508
|
-
});
|
|
1509
|
-
_context2.prev = 6;
|
|
1510
|
-
_context2.next = 9;
|
|
1511
|
-
return cli.execute(["info"], false);
|
|
1512
|
-
|
|
1513
|
-
case 9:
|
|
1514
|
-
cliInfo = _context2.sent;
|
|
1515
|
-
_context2.next = 15;
|
|
1336
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
1337
|
+
case 0:
|
|
1338
|
+
silent = options.silent, org = options.org, project = options.project, authToken = options.authToken, url = options.url, headers = options.headers, telemetry = options.telemetry, release = options.release; // `options.telemetry` defaults to true
|
|
1339
|
+
if (!(telemetry === false)) {
|
|
1340
|
+
_context2.next = 3;
|
|
1516
1341
|
break;
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1342
|
+
}
|
|
1343
|
+
return _context2.abrupt("return", false);
|
|
1344
|
+
case 3:
|
|
1345
|
+
if (!(url === SENTRY_SAAS_URL)) {
|
|
1346
|
+
_context2.next = 5;
|
|
1347
|
+
break;
|
|
1348
|
+
}
|
|
1349
|
+
return _context2.abrupt("return", true);
|
|
1350
|
+
case 5:
|
|
1351
|
+
cli = new SentryCli__default["default"](null, {
|
|
1352
|
+
url: url,
|
|
1353
|
+
authToken: authToken,
|
|
1354
|
+
org: org,
|
|
1355
|
+
project: project,
|
|
1356
|
+
vcsRemote: release.vcsRemote,
|
|
1357
|
+
silent: silent,
|
|
1358
|
+
headers: headers
|
|
1359
|
+
});
|
|
1360
|
+
_context2.prev = 6;
|
|
1361
|
+
_context2.next = 9;
|
|
1362
|
+
return cli.execute(["info"], false);
|
|
1363
|
+
case 9:
|
|
1364
|
+
cliInfo = _context2.sent;
|
|
1365
|
+
_context2.next = 15;
|
|
1366
|
+
break;
|
|
1367
|
+
case 12:
|
|
1368
|
+
_context2.prev = 12;
|
|
1369
|
+
_context2.t0 = _context2["catch"](6);
|
|
1370
|
+
return _context2.abrupt("return", false);
|
|
1371
|
+
case 15:
|
|
1372
|
+
cliInfoUrl = (_cliInfo$split$ = cliInfo.split(/(\r\n|\n|\r)/)[0]) === null || _cliInfo$split$ === void 0 ? void 0 : (_cliInfo$split$$repla = _cliInfo$split$.replace(/^Sentry Server: /, "")) === null || _cliInfo$split$$repla === void 0 ? void 0 : _cliInfo$split$$repla.trim();
|
|
1373
|
+
if (!(cliInfoUrl === undefined)) {
|
|
1374
|
+
_context2.next = 18;
|
|
1375
|
+
break;
|
|
1376
|
+
}
|
|
1377
|
+
return _context2.abrupt("return", false);
|
|
1378
|
+
case 18:
|
|
1379
|
+
return _context2.abrupt("return", new URL(cliInfoUrl).hostname === SENTRY_SAAS_HOSTNAME);
|
|
1380
|
+
case 19:
|
|
1381
|
+
case "end":
|
|
1382
|
+
return _context2.stop();
|
|
1540
1383
|
}
|
|
1541
1384
|
}, _callee2, null, [[6, 12]]);
|
|
1542
1385
|
}));
|
|
@@ -1572,24 +1415,19 @@ function _allowedToSendTelemetry() {
|
|
|
1572
1415
|
*/
|
|
1573
1416
|
function sentryUnpluginFactory(_ref) {
|
|
1574
1417
|
var releaseInjectionPlugin = _ref.releaseInjectionPlugin,
|
|
1575
|
-
|
|
1418
|
+
debugIdInjectionPlugin = _ref.debugIdInjectionPlugin,
|
|
1419
|
+
debugIdUploadPlugin = _ref.debugIdUploadPlugin;
|
|
1576
1420
|
return unplugin.createUnplugin(function (userOptions, unpluginMetaContext) {
|
|
1577
|
-
var _options$release$name;
|
|
1578
|
-
|
|
1579
1421
|
var options = normalizeUserOptions(userOptions);
|
|
1580
|
-
|
|
1581
1422
|
if (unpluginMetaContext.watchMode || options.disable) {
|
|
1582
1423
|
return [{
|
|
1583
1424
|
name: "sentry-noop-plugin"
|
|
1584
1425
|
}];
|
|
1585
1426
|
}
|
|
1586
|
-
|
|
1587
1427
|
var shouldSendTelemetry = allowedToSendTelemetry(options);
|
|
1588
|
-
|
|
1589
1428
|
var _createSentryInstance = createSentryInstance(options, shouldSendTelemetry, unpluginMetaContext.framework),
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1429
|
+
sentryHub = _createSentryInstance.sentryHub,
|
|
1430
|
+
sentryClient = _createSentryInstance.sentryClient;
|
|
1593
1431
|
var pluginExecutionTransaction = sentryHub.startTransaction({
|
|
1594
1432
|
name: "Sentry Bundler Plugin execution"
|
|
1595
1433
|
});
|
|
@@ -1599,10 +1437,8 @@ function sentryUnpluginFactory(_ref) {
|
|
|
1599
1437
|
silent: options.silent,
|
|
1600
1438
|
debug: options.debug
|
|
1601
1439
|
});
|
|
1602
|
-
|
|
1603
1440
|
function handleRecoverableError(unknownError) {
|
|
1604
1441
|
pluginExecutionTransaction.setStatus("internal_error");
|
|
1605
|
-
|
|
1606
1442
|
if (options.errorHandler) {
|
|
1607
1443
|
if (unknownError instanceof Error) {
|
|
1608
1444
|
options.errorHandler(unknownError);
|
|
@@ -1613,15 +1449,12 @@ function sentryUnpluginFactory(_ref) {
|
|
|
1613
1449
|
throw unknownError;
|
|
1614
1450
|
}
|
|
1615
1451
|
}
|
|
1616
|
-
|
|
1617
1452
|
if (!validateOptions(options, logger)) {
|
|
1618
1453
|
handleRecoverableError(new Error("Options were not set correctly. See output above for more details."));
|
|
1619
1454
|
}
|
|
1620
|
-
|
|
1621
1455
|
if (process.cwd().match(/\\node_modules\\|\/node_modules\//)) {
|
|
1622
1456
|
logger.warn("Running Sentry plugin from within a `node_modules` folder. Some features may not work.");
|
|
1623
1457
|
}
|
|
1624
|
-
|
|
1625
1458
|
var plugins = [];
|
|
1626
1459
|
plugins.push(telemetryPlugin({
|
|
1627
1460
|
pluginExecutionTransaction: pluginExecutionTransaction,
|
|
@@ -1629,7 +1462,6 @@ function sentryUnpluginFactory(_ref) {
|
|
|
1629
1462
|
shouldSendTelemetry: shouldSendTelemetry,
|
|
1630
1463
|
sentryClient: sentryClient
|
|
1631
1464
|
}));
|
|
1632
|
-
|
|
1633
1465
|
if (!options.release.inject) {
|
|
1634
1466
|
logger.debug("Release injection disabled via `release.inject` option. Will not inject release.");
|
|
1635
1467
|
} else if (!options.release.name) {
|
|
@@ -1639,13 +1471,9 @@ function sentryUnpluginFactory(_ref) {
|
|
|
1639
1471
|
release: options.release.name,
|
|
1640
1472
|
injectBuildInformation: options._experiments.injectBuildInformation || false
|
|
1641
1473
|
});
|
|
1642
|
-
|
|
1643
1474
|
plugins.push(releaseInjectionPlugin(_injectionCode));
|
|
1644
1475
|
}
|
|
1645
|
-
|
|
1646
|
-
var releaseManagementPluginReleaseName = (_options$release$name = options.release.name) !== null && _options$release$name !== void 0 ? _options$release$name : determineReleaseName();
|
|
1647
|
-
|
|
1648
|
-
if (!releaseManagementPluginReleaseName) {
|
|
1476
|
+
if (!options.release.name) {
|
|
1649
1477
|
logger.warn("No release name provided. Will not create release. Please set the `release.name` option to identifiy your release.");
|
|
1650
1478
|
} else if (!options.authToken) {
|
|
1651
1479
|
logger.warn("No auth token provided. Will not create release. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/");
|
|
@@ -1656,7 +1484,7 @@ function sentryUnpluginFactory(_ref) {
|
|
|
1656
1484
|
} else {
|
|
1657
1485
|
plugins.push(releaseManagementPlugin({
|
|
1658
1486
|
logger: logger,
|
|
1659
|
-
releaseName:
|
|
1487
|
+
releaseName: options.release.name,
|
|
1660
1488
|
shouldCreateRelease: options.release.create,
|
|
1661
1489
|
shouldCleanArtifacts: options.release.cleanArtifacts,
|
|
1662
1490
|
shouldFinalizeRelease: options.release.finalize,
|
|
@@ -1678,69 +1506,62 @@ function sentryUnpluginFactory(_ref) {
|
|
|
1678
1506
|
}
|
|
1679
1507
|
}));
|
|
1680
1508
|
}
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
headers: options.headers
|
|
1712
|
-
}
|
|
1713
|
-
}));
|
|
1714
|
-
}
|
|
1509
|
+
if (!options.authToken) {
|
|
1510
|
+
logger.warn("No auth token provided. Will not upload source maps. Please set the `authToken` option. You can find information on how to generate a Sentry auth token here: https://docs.sentry.io/api/auth/");
|
|
1511
|
+
} else if (!options.org) {
|
|
1512
|
+
logger.warn("No org provided. Will not upload source maps. Please set the `org` option to your Sentry organization slug.");
|
|
1513
|
+
} else if (!options.project) {
|
|
1514
|
+
logger.warn("No project provided. Will not upload source maps. Please set the `project` option to your Sentry project slug.");
|
|
1515
|
+
} else {
|
|
1516
|
+
var _options$sourcemaps, _options$sourcemaps2, _options$sourcemaps3, _options$sourcemaps4;
|
|
1517
|
+
plugins.push(debugIdInjectionPlugin());
|
|
1518
|
+
plugins.push(debugIdUploadPlugin(createDebugIdUploadFunction({
|
|
1519
|
+
assets: (_options$sourcemaps = options.sourcemaps) === null || _options$sourcemaps === void 0 ? void 0 : _options$sourcemaps.assets,
|
|
1520
|
+
ignore: (_options$sourcemaps2 = options.sourcemaps) === null || _options$sourcemaps2 === void 0 ? void 0 : _options$sourcemaps2.ignore,
|
|
1521
|
+
deleteFilesAfterUpload: (_options$sourcemaps3 = options.sourcemaps) === null || _options$sourcemaps3 === void 0 ? void 0 : _options$sourcemaps3.deleteFilesAfterUpload,
|
|
1522
|
+
dist: options.release.dist,
|
|
1523
|
+
releaseName: options.release.name,
|
|
1524
|
+
logger: logger,
|
|
1525
|
+
handleRecoverableError: handleRecoverableError,
|
|
1526
|
+
rewriteSourcesHook: (_options$sourcemaps4 = options.sourcemaps) === null || _options$sourcemaps4 === void 0 ? void 0 : _options$sourcemaps4.rewriteSources,
|
|
1527
|
+
sentryHub: sentryHub,
|
|
1528
|
+
sentryClient: sentryClient,
|
|
1529
|
+
sentryCliOptions: {
|
|
1530
|
+
authToken: options.authToken,
|
|
1531
|
+
org: options.org,
|
|
1532
|
+
project: options.project,
|
|
1533
|
+
silent: options.silent,
|
|
1534
|
+
url: options.url,
|
|
1535
|
+
vcsRemote: options.release.vcsRemote,
|
|
1536
|
+
headers: options.headers
|
|
1537
|
+
}
|
|
1538
|
+
})));
|
|
1715
1539
|
}
|
|
1716
|
-
|
|
1717
1540
|
return plugins;
|
|
1718
1541
|
});
|
|
1719
1542
|
}
|
|
1720
1543
|
function getBuildInformation() {
|
|
1721
1544
|
var packageJson = getPackageJson();
|
|
1722
|
-
|
|
1723
1545
|
var _ref2 = packageJson ? getDependencies(packageJson) : {
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1546
|
+
deps: [],
|
|
1547
|
+
depsVersions: {}
|
|
1548
|
+
},
|
|
1549
|
+
deps = _ref2.deps,
|
|
1550
|
+
depsVersions = _ref2.depsVersions;
|
|
1730
1551
|
return {
|
|
1731
1552
|
deps: deps,
|
|
1732
1553
|
depsVersions: depsVersions,
|
|
1733
1554
|
nodeVersion: parseMajorVersion(process.version)
|
|
1734
1555
|
};
|
|
1735
1556
|
}
|
|
1557
|
+
|
|
1736
1558
|
/**
|
|
1737
1559
|
* Determines whether the Sentry CLI binary is in its expected location.
|
|
1738
1560
|
* This function is useful since `@sentry/cli` installs the binary via a post-install
|
|
1739
1561
|
* script and post-install scripts may not always run. E.g. with `npm i --ignore-scripts`.
|
|
1740
1562
|
*/
|
|
1741
|
-
|
|
1742
1563
|
function sentryCliBinaryExists() {
|
|
1743
|
-
return
|
|
1564
|
+
return fs__namespace.existsSync(SentryCli__default["default"].getPath());
|
|
1744
1565
|
}
|
|
1745
1566
|
function createRollupReleaseInjectionHooks(injectionCode) {
|
|
1746
1567
|
var virtualReleaseInjectionFileId = "\0sentry-release-injection-file";
|
|
@@ -1768,19 +1589,20 @@ function createRollupReleaseInjectionHooks(injectionCode) {
|
|
|
1768
1589
|
return null;
|
|
1769
1590
|
}
|
|
1770
1591
|
|
|
1771
|
-
|
|
1592
|
+
// id may contain query and hash which will trip up our file extension logic below
|
|
1593
|
+
var idWithoutQueryAndHash = stripQueryAndHashFromPath(id);
|
|
1594
|
+
if (idWithoutQueryAndHash.match(/\\node_modules\\|\/node_modules\//)) {
|
|
1772
1595
|
return null;
|
|
1773
1596
|
}
|
|
1774
|
-
|
|
1775
1597
|
if (![".js", ".ts", ".jsx", ".tsx", ".mjs"].some(function (ending) {
|
|
1776
|
-
return
|
|
1598
|
+
return idWithoutQueryAndHash.endsWith(ending);
|
|
1777
1599
|
})) {
|
|
1778
1600
|
return null;
|
|
1779
1601
|
}
|
|
1602
|
+
var ms = new MagicString__default["default"](code);
|
|
1780
1603
|
|
|
1781
|
-
|
|
1604
|
+
// Appending instead of prepending has less probability of mucking with user's source maps.
|
|
1782
1605
|
// Luckily import statements get hoisted to the top anyways.
|
|
1783
|
-
|
|
1784
1606
|
ms.append("\n\n;import \"".concat(virtualReleaseInjectionFileId, "\";"));
|
|
1785
1607
|
return {
|
|
1786
1608
|
code: ms.toString(),
|
|
@@ -1797,18 +1619,17 @@ function createRollupDebugIdInjectionHooks() {
|
|
|
1797
1619
|
}) // chunks could be any file (html, md, ...)
|
|
1798
1620
|
) {
|
|
1799
1621
|
var _code$match;
|
|
1800
|
-
|
|
1801
1622
|
var debugId = stringToUUID(code); // generate a deterministic debug ID
|
|
1802
|
-
|
|
1803
1623
|
var codeToInject = getDebugIdSnippet(debugId);
|
|
1804
1624
|
var ms = new MagicString__default["default"](code, {
|
|
1805
1625
|
filename: chunk.fileName
|
|
1806
|
-
});
|
|
1807
|
-
// As an additional complication `"use strict";`s may come after any number of comments.
|
|
1626
|
+
});
|
|
1808
1627
|
|
|
1809
|
-
|
|
1628
|
+
// We need to be careful not to inject the snippet before any `"use strict";`s.
|
|
1629
|
+
// As an additional complication `"use strict";`s may come after any number of comments.
|
|
1630
|
+
var commentUseStrictRegex =
|
|
1631
|
+
// Note: CodeQL complains that this regex potentially has n^2 runtime. This likely won't affect realistic files.
|
|
1810
1632
|
/^(?:\s*|\/\*(?:.|\r|\n)*\*\/|\/\/.*[\n\r])*(?:"[^"]*";|'[^']*';)?/;
|
|
1811
|
-
|
|
1812
1633
|
if ((_code$match = code.match(commentUseStrictRegex)) !== null && _code$match !== void 0 && _code$match[0]) {
|
|
1813
1634
|
// Add injected code after any comments or "use strict" at the beginning of the bundle.
|
|
1814
1635
|
ms.replace(commentUseStrictRegex, function (match) {
|
|
@@ -1820,7 +1641,6 @@ function createRollupDebugIdInjectionHooks() {
|
|
|
1820
1641
|
// need this special case here.
|
|
1821
1642
|
ms.prepend(codeToInject);
|
|
1822
1643
|
}
|
|
1823
|
-
|
|
1824
1644
|
return {
|
|
1825
1645
|
code: ms.toString(),
|
|
1826
1646
|
map: ms.generateMap({
|
|
@@ -1833,11 +1653,59 @@ function createRollupDebugIdInjectionHooks() {
|
|
|
1833
1653
|
}
|
|
1834
1654
|
};
|
|
1835
1655
|
}
|
|
1656
|
+
|
|
1657
|
+
function createRollupDebugIdUploadHooks(upload) {
|
|
1658
|
+
return {
|
|
1659
|
+
writeBundle: function writeBundle(outputOptions, bundle) {
|
|
1660
|
+
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
1661
|
+
var outputDir, _buildArtifacts, _buildArtifacts2;
|
|
1662
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
1663
|
+
while (1) switch (_context.prev = _context.next) {
|
|
1664
|
+
case 0:
|
|
1665
|
+
if (!outputOptions.dir) {
|
|
1666
|
+
_context.next = 7;
|
|
1667
|
+
break;
|
|
1668
|
+
}
|
|
1669
|
+
outputDir = outputOptions.dir;
|
|
1670
|
+
_buildArtifacts = Object.keys(bundle).map(function (asset) {
|
|
1671
|
+
return path__namespace.join(outputDir, asset);
|
|
1672
|
+
});
|
|
1673
|
+
_context.next = 5;
|
|
1674
|
+
return upload(_buildArtifacts);
|
|
1675
|
+
case 5:
|
|
1676
|
+
_context.next = 15;
|
|
1677
|
+
break;
|
|
1678
|
+
case 7:
|
|
1679
|
+
if (!outputOptions.file) {
|
|
1680
|
+
_context.next = 12;
|
|
1681
|
+
break;
|
|
1682
|
+
}
|
|
1683
|
+
_context.next = 10;
|
|
1684
|
+
return upload([outputOptions.file]);
|
|
1685
|
+
case 10:
|
|
1686
|
+
_context.next = 15;
|
|
1687
|
+
break;
|
|
1688
|
+
case 12:
|
|
1689
|
+
_buildArtifacts2 = Object.keys(bundle).map(function (asset) {
|
|
1690
|
+
return path__namespace.join(path__namespace.resolve(), asset);
|
|
1691
|
+
});
|
|
1692
|
+
_context.next = 15;
|
|
1693
|
+
return upload(_buildArtifacts2);
|
|
1694
|
+
case 15:
|
|
1695
|
+
case "end":
|
|
1696
|
+
return _context.stop();
|
|
1697
|
+
}
|
|
1698
|
+
}, _callee);
|
|
1699
|
+
}))();
|
|
1700
|
+
}
|
|
1701
|
+
};
|
|
1702
|
+
}
|
|
1836
1703
|
function getDebugIdSnippet(debugId) {
|
|
1837
1704
|
return ";!function(){try{var e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\"".concat(debugId, "\",e._sentryDebugIdIdentifier=\"sentry-dbid-").concat(debugId, "\")}catch(e){}}();");
|
|
1838
1705
|
}
|
|
1839
1706
|
|
|
1840
1707
|
exports.createRollupDebugIdInjectionHooks = createRollupDebugIdInjectionHooks;
|
|
1708
|
+
exports.createRollupDebugIdUploadHooks = createRollupDebugIdUploadHooks;
|
|
1841
1709
|
exports.createRollupReleaseInjectionHooks = createRollupReleaseInjectionHooks;
|
|
1842
1710
|
exports.getBuildInformation = getBuildInformation;
|
|
1843
1711
|
exports.getDebugIdSnippet = getDebugIdSnippet;
|