@cloudcare/cocos-sdk 0.1.1-alpha.3 → 0.1.1-alpha.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"auto-tracking.d.ts","sourceRoot":"","sources":["../../../../../src/core/auto-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,IAAI,CAAC;IACvF,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACnF;AAED,UAAU,iBAAkB,SAAQ,gBAAgB;IAClD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,UAAU,CAAC,gBAAgB,CAAC;IACtD,mBAAmB,CAAC,EAAE,OAAO,UAAU,CAAC,mBAAmB,CAAC;CAC7D;AAED,qBAAa,qBAAsB,YAAW,wBAAwB;IAOlE,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAG/B,GAAG,EAAE,KAAK,EACV,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,qBAAqB,EAC5B,MAAM,GAAE,iBAA8B;IAKzD,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,mBAA2B,GAAG,IAAI;IAoBhG,IAAI,CAAC,KAAK,GAAE,mBAA2B,GAAG,IAAI;IAiB9C,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,sBAAsB;IAiD9B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,kBAAkB;CAkE3B"}
1
+ {"version":3,"file":"auto-tracking.d.ts","sourceRoot":"","sources":["../../../../../src/core/auto-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,IAAI,CAAC;IACvF,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACnF;AAED,UAAU,iBAAkB,SAAQ,gBAAgB;IAClD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,UAAU,CAAC,gBAAgB,CAAC;IACtD,mBAAmB,CAAC,EAAE,OAAO,UAAU,CAAC,mBAAmB,CAAC;CAC7D;AAED,qBAAa,qBAAsB,YAAW,wBAAwB;IAOlE,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAG/B,GAAG,EAAE,KAAK,EACV,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,qBAAqB,EAC5B,MAAM,GAAE,iBAA8B;IAKzD,KAAK,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,mBAA2B,GAAG,IAAI;IAoBhG,IAAI,CAAC,KAAK,GAAE,mBAA2B,GAAG,IAAI;IAiB9C,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,sBAAsB;IAiD9B,OAAO,CAAC,oBAAoB;IAgF5B,OAAO,CAAC,kBAAkB;CAiH3B"}
@@ -1,60 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
50
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
51
- if (ar || !(i in from)) {
52
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
53
- ar[i] = from[i];
54
- }
55
- }
56
- return to.concat(ar || Array.prototype.slice.call(from));
57
- };
58
2
  Object.defineProperty(exports, "__esModule", { value: true });
59
3
  exports.FTDefaultAutoTracking = void 0;
60
4
  var observation_js_1 = require("./observation.js");
@@ -250,46 +194,93 @@ var FTDefaultAutoTracking = /** @class */ (function () {
250
194
  var original = this.target.fetch;
251
195
  if (!original)
252
196
  return;
253
- var tracked = (function (input, init) { return __awaiter(_this, void 0, void 0, function () {
254
- var inputObject, url, method, key, headers, start, response, end, error_1;
255
- return __generator(this, function (_a) {
256
- switch (_a.label) {
257
- case 0:
258
- inputObject = typeof input === 'object' ? input : undefined;
259
- url = typeof input === 'string' ? input : (inputObject === null || inputObject === void 0 ? void 0 : inputObject.url) || String(input);
260
- method = (init === null || init === void 0 ? void 0 : init.method) || (inputObject === null || inputObject === void 0 ? void 0 : inputObject.method) || 'GET';
261
- key = resourceKey();
262
- headers = createHeaders((init === null || init === void 0 ? void 0 : init.headers) || (inputObject === null || inputObject === void 0 ? void 0 : inputObject.headers));
263
- forEachOwn(this.trace.getHeaders(url, key), function (name, value) { return setHeader(headers, name, value); });
264
- this.rum.startResource(key);
265
- start = nowNs();
266
- _a.label = 1;
267
- case 1:
268
- _a.trys.push([1, 3, , 4]);
269
- return [4 /*yield*/, original(input, __assign(__assign({}, init), { headers: headers }))];
270
- case 2:
271
- response = _a.sent();
272
- end = nowNs();
273
- this.rum.stopResource(key);
274
- this.rum.addResource(key, {
275
- url: url,
276
- httpMethod: method,
277
- requestHeaders: headersToObject(headers),
278
- responseHeaders: headersToObject(response.headers),
279
- statusCode: response.status,
280
- }, { fetchStartTime: start, responseStartTime: end, responseEndTime: end });
281
- return [2 /*return*/, response];
282
- case 3:
283
- error_1 = _a.sent();
284
- this.rum.stopResource(key);
285
- this.rum.addError(String(error_1), error_1 instanceof Error ? error_1.stack || '' : '', 'network_error');
286
- throw error_1;
287
- case 4: return [2 /*return*/];
197
+ var rum = this.rum;
198
+ var trace = this.trace;
199
+ var active = true;
200
+ var tracked = function () {
201
+ var args = [];
202
+ for (var _i = 0; _i < arguments.length; _i++) {
203
+ args[_i] = arguments[_i];
204
+ }
205
+ if (!active)
206
+ return original.apply(this, args);
207
+ var outgoing = args;
208
+ var data;
209
+ observeNetwork(function () {
210
+ var input = args[0], init = args[1];
211
+ var inputObject = networkInput(input);
212
+ if (!inputObject)
213
+ return;
214
+ var url = inputObject.url;
215
+ var method = networkOption(init, 'method');
216
+ var sourceHeaders = networkOption(init, 'headers');
217
+ var record = { key: resourceKey(), url: url, method: method || inputObject.method || 'GET',
218
+ start: nowNs(), headers: undefined };
219
+ data = record;
220
+ try {
221
+ var headers_1 = createHeaders(sourceHeaders === undefined ? inputObject.headers : sourceHeaders);
222
+ var appended_1 = false;
223
+ forEachOwn(trace.getHeaders(url, record.key), function (name, value) {
224
+ if (!hasHeader(headers_1, name)) {
225
+ appendHeader(headers_1, name, value);
226
+ appended_1 = true;
227
+ }
228
+ });
229
+ if (appended_1) {
230
+ outgoing = args.slice();
231
+ outgoing[1] = withRequestHeaders(init, headers_1);
232
+ }
233
+ record.headers = headers_1;
288
234
  }
235
+ catch ( /* Failed instrumentation leaves the original fetch arguments intact. */_a) { /* Failed instrumentation leaves the original fetch arguments intact. */ }
236
+ observeNetwork(function () { return rum.startResource(record.key); });
289
237
  });
290
- }); });
238
+ var reportFailure = function (error) {
239
+ if (!data)
240
+ return;
241
+ var key = data.key;
242
+ observeNetwork(function () { return rum.stopResource(key); });
243
+ observeNetwork(function () { return rum.addError(String(error), error instanceof Error ? error.stack || '' : '', 'network_error'); });
244
+ };
245
+ var result;
246
+ // Invoke the application request once. Observation failures must never retry it.
247
+ try {
248
+ result = original.apply(this, outgoing);
249
+ }
250
+ catch (error) {
251
+ reportFailure(error);
252
+ throw error;
253
+ }
254
+ if (!data)
255
+ return result;
256
+ var record = data;
257
+ try {
258
+ return result.then(function (response) {
259
+ observeNetwork(function () { return rum.stopResource(record.key); });
260
+ observeNetwork(function () {
261
+ var end = nowNs();
262
+ rum.addResource(record.key, {
263
+ url: record.url,
264
+ httpMethod: record.method,
265
+ requestHeaders: record.headers && headersToObject(record.headers),
266
+ responseHeaders: headersToObject(response.headers),
267
+ statusCode: response.status,
268
+ }, { fetchStartTime: record.start, responseStartTime: end, responseEndTime: end });
269
+ });
270
+ return response;
271
+ }, function (error) {
272
+ reportFailure(error);
273
+ throw error;
274
+ });
275
+ }
276
+ catch (_a) {
277
+ return result;
278
+ }
279
+ };
291
280
  this.networkStops.push(function () {
292
- _this.target.fetch = original;
281
+ active = false;
282
+ if (_this.target.fetch === tracked)
283
+ _this.target.fetch = original;
293
284
  });
294
285
  this.target.fetch = tracked;
295
286
  };
@@ -303,71 +294,155 @@ var FTDefaultAutoTracking = /** @class */ (function () {
303
294
  var metadata = new WeakMap();
304
295
  var rum = this.rum;
305
296
  var trace = this.trace;
306
- // Register each restore before assignment so partial installation can roll back.
307
- this.networkStops.push(function () { Xhr.prototype.open = open; });
308
- Xhr.prototype.open = function trackedOpen(method, url) {
309
- var _a;
310
- var rest = [];
311
- for (var _i = 2; _i < arguments.length; _i++) {
312
- rest[_i - 2] = arguments[_i];
297
+ var active = true;
298
+ var trackedOpen = function () {
299
+ var _this = this;
300
+ var args = [];
301
+ for (var _i = 0; _i < arguments.length; _i++) {
302
+ args[_i] = arguments[_i];
303
+ }
304
+ if (!active)
305
+ return open.apply(this, args);
306
+ var previous = metadata.get(this);
307
+ observeNetwork(function () {
308
+ metadata.delete(_this);
309
+ if (typeof args[0] !== 'string' || typeof args[1] !== 'string')
310
+ return;
311
+ metadata.set(_this, { key: resourceKey(), method: args[0], url: String(args[1]),
312
+ headers: Object.create(null), headersKnown: true });
313
+ });
314
+ try {
315
+ return open.apply(this, args);
316
+ }
317
+ catch (error) {
318
+ observeNetwork(function () { if (previous)
319
+ metadata.set(_this, previous);
320
+ else
321
+ metadata.delete(_this); });
322
+ throw error;
313
323
  }
314
- metadata.set(this, { key: resourceKey(), method: method, url: String(url), headers: {} });
315
- (_a = open).call.apply(_a, __spreadArray([this, method, url], rest, false));
316
324
  };
317
- this.networkStops.push(function () { Xhr.prototype.setRequestHeader = setRequestHeader; });
318
- Xhr.prototype.setRequestHeader = function trackedHeader(name, value) {
319
- var data = metadata.get(this);
320
- if (data)
321
- data.headers[name] = value;
322
- setRequestHeader.call(this, name, value);
325
+ // Register each restore before assignment so partial installation can roll back.
326
+ this.networkStops.push(function () { active = false; if (Xhr.prototype.open === trackedOpen)
327
+ Xhr.prototype.open = open; });
328
+ Xhr.prototype.open = trackedOpen;
329
+ var trackedHeader = function () {
330
+ var _this = this;
331
+ var args = [];
332
+ for (var _i = 0; _i < arguments.length; _i++) {
333
+ args[_i] = arguments[_i];
334
+ }
335
+ var result = setRequestHeader.apply(this, args);
336
+ observeNetwork(function () {
337
+ var data = active && metadata.get(_this);
338
+ if (!data)
339
+ return;
340
+ var name = args[0], value = args[1];
341
+ if (typeof name !== 'string' || typeof value !== 'string') {
342
+ data.headersKnown = false;
343
+ return;
344
+ }
345
+ var key = name.toLowerCase();
346
+ data.headers[key] = key in data.headers ? "".concat(data.headers[key], ", ").concat(value) : value;
347
+ });
348
+ return result;
323
349
  };
324
- this.networkStops.push(function () { Xhr.prototype.send = send; });
325
- Xhr.prototype.send = function trackedSend(body) {
350
+ this.networkStops.push(function () {
351
+ active = false;
352
+ if (Xhr.prototype.setRequestHeader === trackedHeader)
353
+ Xhr.prototype.setRequestHeader = setRequestHeader;
354
+ });
355
+ Xhr.prototype.setRequestHeader = trackedHeader;
356
+ var trackedSend = function () {
326
357
  var _this = this;
327
- var data = metadata.get(this);
358
+ var args = [];
359
+ for (var _i = 0; _i < arguments.length; _i++) {
360
+ args[_i] = arguments[_i];
361
+ }
362
+ var data = active && metadata.get(this);
328
363
  if (!data)
329
- return send.call(this, body);
330
- forEachOwn(trace.getHeaders(data.url, data.key), function (name, value) {
331
- data.headers[name] = value;
332
- setRequestHeader.call(_this, name, value);
364
+ return send.apply(this, args);
365
+ observeNetwork(function () {
366
+ if (!data.headersKnown)
367
+ return;
368
+ forEachOwn(trace.getHeaders(data.url, data.key), function (name, value) {
369
+ if (!validTraceHeader(name, value))
370
+ return;
371
+ var key = name.toLowerCase();
372
+ if (key in data.headers)
373
+ return;
374
+ setRequestHeader.call(_this, name, value);
375
+ data.headers[key] = value;
376
+ });
333
377
  });
334
- var started = nowNs();
335
- rum.startResource(data.key);
378
+ var started = 0;
379
+ observeNetwork(function () { started = nowNs(); rum.startResource(data.key); });
336
380
  var completed = false;
381
+ var cleanup;
337
382
  var report = function () {
338
383
  if (completed)
339
384
  return;
340
385
  completed = true;
341
- var ended = nowNs();
342
- rum.stopResource(data.key);
343
- rum.addResource(data.key, {
344
- url: data.url,
345
- httpMethod: data.method,
346
- requestHeaders: data.headers,
347
- responseHeaders: parseXhrHeaders(_this.getAllResponseHeaders()),
348
- statusCode: _this.status,
349
- }, { fetchStartTime: started, responseStartTime: ended, responseEndTime: ended });
386
+ observeNetwork(function () { return cleanup === null || cleanup === void 0 ? void 0 : cleanup(); });
387
+ observeNetwork(function () { return rum.stopResource(data.key); });
388
+ observeNetwork(function () {
389
+ var ended = nowNs();
390
+ rum.addResource(data.key, {
391
+ url: data.url,
392
+ httpMethod: data.method,
393
+ requestHeaders: data.headers,
394
+ responseHeaders: parseXhrHeaders(_this.getAllResponseHeaders()),
395
+ statusCode: _this.status,
396
+ }, { fetchStartTime: started, responseStartTime: ended, responseEndTime: ended });
397
+ });
350
398
  };
351
- var originalLoadEnd = this.onloadend;
352
- this.addEventListener('loadend', report, { once: true });
353
- // Creator 2 JSB implements addEventListener by assigning the on* property.
354
- // Preserve the business handler there; DOM runtimes already keep both listeners.
355
- if (this.onloadend === report) {
356
- var xhr_1 = this;
357
- var handler_1 = function (event) {
358
- if (xhr_1.onloadend === handler_1)
359
- xhr_1.onloadend = originalLoadEnd;
360
- try {
361
- originalLoadEnd === null || originalLoadEnd === void 0 ? void 0 : originalLoadEnd.call(xhr_1, event);
399
+ observeNetwork(function () {
400
+ var originalLoadEnd = _this.onloadend;
401
+ try {
402
+ _this.addEventListener('loadend', report, { once: true });
403
+ // Creator 2 JSB assigns the on* property instead of keeping a listener list.
404
+ if (_this.onloadend === report) {
405
+ var xhr_1 = _this;
406
+ var handler_1 = function () {
407
+ var events = [];
408
+ for (var _i = 0; _i < arguments.length; _i++) {
409
+ events[_i] = arguments[_i];
410
+ }
411
+ observeNetwork(function () { return cleanup === null || cleanup === void 0 ? void 0 : cleanup(); });
412
+ try {
413
+ return originalLoadEnd === null || originalLoadEnd === void 0 ? void 0 : originalLoadEnd.apply(this, events);
414
+ }
415
+ finally {
416
+ report();
417
+ }
418
+ };
419
+ cleanup = function () { if (xhr_1.onloadend === handler_1)
420
+ xhr_1.onloadend = originalLoadEnd; };
421
+ _this.onloadend = handler_1;
362
422
  }
363
- finally {
364
- report();
423
+ else {
424
+ cleanup = function () { return _this.removeEventListener('loadend', report); };
365
425
  }
366
- };
367
- this.onloadend = handler_1;
426
+ }
427
+ catch (_a) {
428
+ observeNetwork(function () { return cleanup === null || cleanup === void 0 ? void 0 : cleanup(); });
429
+ observeNetwork(function () { if (_this.onloadend === report)
430
+ _this.onloadend = originalLoadEnd; });
431
+ }
432
+ });
433
+ try {
434
+ return send.apply(this, args);
435
+ }
436
+ catch (error) {
437
+ completed = true;
438
+ observeNetwork(function () { return cleanup === null || cleanup === void 0 ? void 0 : cleanup(); });
439
+ observeNetwork(function () { return rum.stopResource(data.key); });
440
+ throw error;
368
441
  }
369
- send.call(this, body);
370
442
  };
443
+ this.networkStops.push(function () { active = false; if (Xhr.prototype.send === trackedSend)
444
+ Xhr.prototype.send = send; });
445
+ Xhr.prototype.send = trackedSend;
371
446
  };
372
447
  return FTDefaultAutoTracking;
373
448
  }());
@@ -380,39 +455,107 @@ function resourceKey() {
380
455
  resourceSequence = (resourceSequence + 1) % Number.MAX_SAFE_INTEGER;
381
456
  return "cocos-".concat(Date.now().toString(36), "-").concat(resourceSequence.toString(36));
382
457
  }
458
+ function observeNetwork(observe) {
459
+ try {
460
+ observe();
461
+ }
462
+ catch ( /* Monitoring cannot change the application's network result. */_a) { /* Monitoring cannot change the application's network result. */ }
463
+ }
464
+ function networkOption(init, name) {
465
+ for (var source = init; source; source = Object.getPrototypeOf(source)) {
466
+ var descriptor = Object.getOwnPropertyDescriptor(source, name);
467
+ if (!descriptor)
468
+ continue;
469
+ // Accessors may refresh tokens or mutate options. Leave them to the original fetch.
470
+ if (descriptor.get || descriptor.set)
471
+ throw new TypeError('Network option requires its original receiver');
472
+ return descriptor.value;
473
+ }
474
+ return undefined;
475
+ }
476
+ function networkInput(input) {
477
+ if (typeof input === 'string')
478
+ return { url: input };
479
+ if (typeof Request === 'function' && input instanceof Request) {
480
+ var read = function (name) {
481
+ var descriptor = Object.getOwnPropertyDescriptor(Request.prototype, name);
482
+ return (descriptor === null || descriptor === void 0 ? void 0 : descriptor.get) ? descriptor.get.call(input) : networkOption(input, name);
483
+ };
484
+ return { url: read('url'), method: read('method'), headers: read('headers') };
485
+ }
486
+ if (typeof URL === 'function' && input instanceof URL)
487
+ return { url: URL.prototype.toString.call(input) };
488
+ // Custom string conversion belongs to the application request and must only run there.
489
+ return undefined;
490
+ }
491
+ function withRequestHeaders(init, headers) {
492
+ var result = Object.create(init || null);
493
+ var _loop_1 = function (source) {
494
+ Object.getOwnPropertyNames(source).forEach(function (name) {
495
+ if (name === 'headers' || Object.prototype.hasOwnProperty.call(result, name))
496
+ return;
497
+ var descriptor = Object.getOwnPropertyDescriptor(source, name);
498
+ Object.defineProperty(result, name, { enumerable: descriptor === null || descriptor === void 0 ? void 0 : descriptor.enumerable, configurable: true,
499
+ get: function () { return init[name]; } });
500
+ });
501
+ };
502
+ // Forward getters to their original receiver, including inherited/non-enumerable options.
503
+ for (var source = init; source && source !== Object.prototype; source = Object.getPrototypeOf(source)) {
504
+ _loop_1(source);
505
+ }
506
+ Object.defineProperty(result, 'headers', { value: headers, enumerable: true, configurable: true, writable: true });
507
+ return result;
508
+ }
383
509
  function createHeaders(source) {
384
510
  var HeadersConstructor = globalThis.Headers;
385
511
  if (HeadersConstructor)
386
512
  return new HeadersConstructor(source);
387
- var result = {};
513
+ var result = [];
388
514
  if (Array.isArray(source)) {
389
515
  source.forEach(function (_a) {
390
516
  var name = _a[0], value = _a[1];
391
- result[name] = String(value);
517
+ result.push([String(name), String(value)]);
392
518
  });
393
519
  }
394
520
  else if (source && typeof source.forEach === 'function') {
395
- source.forEach(function (value, name) { result[name] = value; });
521
+ source.forEach(function (value, name) { result.push([name, value]); });
396
522
  }
397
523
  else if (source) {
398
- forEachOwn(source, function (name, value) { result[name] = String(value); });
524
+ forEachOwn(source, function (name, value) { result.push([name, String(value)]); });
399
525
  }
400
526
  return result;
401
527
  }
402
- function setHeader(headers, name, value) {
403
- if (typeof headers.set === 'function')
404
- headers.set(name, value);
528
+ function hasHeader(headers, name) {
529
+ return Array.isArray(headers) ? headers.some(function (_a) {
530
+ var key = _a[0];
531
+ return key.toLowerCase() === name.toLowerCase();
532
+ }) : headers.has(name);
533
+ }
534
+ function appendHeader(headers, name, value) {
535
+ if (!validTraceHeader(name, value))
536
+ throw new TypeError('Invalid trace header');
537
+ if (Array.isArray(headers))
538
+ headers.push([name, value]);
405
539
  else
406
- headers[name] = value;
540
+ headers.append(name, value);
541
+ }
542
+ function validTraceHeader(name, value) {
543
+ return /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/.test(name) && typeof value === 'string'
544
+ && !/[\x00-\x08\x0a-\x1f\x7f\u0100-\uffff]/.test(value);
407
545
  }
408
546
  function headersToObject(headers) {
409
- var result = {};
410
- if (typeof headers.forEach === 'function') {
411
- headers.forEach(function (value, key) { result[key] = value; });
412
- }
413
- else {
414
- forEachOwn(headers, function (key, value) { result[key] = value; });
415
- }
547
+ var result = Object.create(null);
548
+ var append = function (value, name) {
549
+ var key = name.toLowerCase();
550
+ result[key] = key in result ? "".concat(result[key], ", ").concat(value) : value;
551
+ };
552
+ if (Array.isArray(headers))
553
+ headers.forEach(function (_a) {
554
+ var name = _a[0], value = _a[1];
555
+ return append(value, name);
556
+ });
557
+ else
558
+ headers.forEach(append);
416
559
  return result;
417
560
  }
418
561
  function forEachOwn(value, callback) {