o11y 240.7.0 → 240.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/dist/modules/o11y/client/client.js +63 -5
  2. package/dist/modules/o11y/client/client.js.map +1 -1
  3. package/dist/modules/o11y/client/interfaces/ActivityDetail.d.ts +2 -0
  4. package/dist/modules/o11y/client/interfaces/ActivityStopOptions.d.ts +4 -0
  5. package/dist/modules/o11y/client/interfaces/index.d.ts +1 -0
  6. package/dist/modules/o11y/client/library/ActivityImpl.d.ts +7 -4
  7. package/dist/modules/o11y/client/library/TimerOverride.d.ts +6 -0
  8. package/dist/modules/o11y/collectors/interfaces/ActivityDetail.d.ts +2 -0
  9. package/dist/modules/o11y/collectors/interfaces/ActivityStopOptions.d.ts +4 -0
  10. package/dist/modules/o11y/collectors/interfaces/index.d.ts +1 -0
  11. package/dist/modules/o11y/collectors/library/ActivityImpl.d.ts +7 -4
  12. package/dist/modules/o11y/collectors/library/TimerOverride.d.ts +6 -0
  13. package/dist/modules/o11y/shared/interfaces/ActivityDetail.d.ts +2 -0
  14. package/dist/modules/o11y/shared/interfaces/ActivityStopOptions.d.ts +4 -0
  15. package/dist/modules/o11y/shared/interfaces/index.d.ts +1 -0
  16. package/dist/modules/o11y/shared/library/ActivityImpl.d.ts +7 -4
  17. package/dist/modules/o11y/shared/library/TimerOverride.d.ts +6 -0
  18. package/dist/modules/o11y/web_vitals/interfaces/ActivityDetail.d.ts +2 -0
  19. package/dist/modules/o11y/web_vitals/interfaces/ActivityStopOptions.d.ts +4 -0
  20. package/dist/modules/o11y/web_vitals/interfaces/index.d.ts +1 -0
  21. package/dist/modules/o11y/web_vitals/library/ActivityImpl.d.ts +7 -4
  22. package/dist/modules/o11y/web_vitals/library/TimerOverride.d.ts +6 -0
  23. package/package.json +1 -1
@@ -220,6 +220,14 @@ class Tracing {
220
220
  Tracing._global = utility.getGlobal();
221
221
  Tracing._isNetworkInstrumentationEnabled = false;
222
222
 
223
+ var TimerOverride;
224
+ (function (TimerOverride) {
225
+ TimerOverride[TimerOverride["none"] = 0] = "none";
226
+ TimerOverride[TimerOverride["start"] = 1] = "start";
227
+ TimerOverride[TimerOverride["stop"] = 2] = "stop";
228
+ TimerOverride[TimerOverride["both"] = 3] = "both";
229
+ })(TimerOverride || (TimerOverride = {}));
230
+
223
231
  const timedout = 'timedout';
224
232
  const terminated = 'terminated';
225
233
  const discarded = 'discarded';
@@ -236,6 +244,7 @@ class ActivityImpl {
236
244
  this._onError = _onError;
237
245
  this._isSampled = _isSampled;
238
246
  this._errorCount = 0;
247
+ this._timerOverridden = TimerOverride.none;
239
248
  const { tsNow, perfNow } = utility.time();
240
249
  ActivityImpl._count += 1;
241
250
  this._id = id || utility.generateUniqueId();
@@ -284,10 +293,51 @@ class ActivityImpl {
284
293
  this._onError(error, this._getDetail(userSchemaOrText, userData));
285
294
  });
286
295
  }
287
- stop(userSchemaOrText, userData) {
288
- this._safety.tryCatch(() => this._stopInternal(userSchemaOrText, userData));
296
+ stop(userSchemaOrText, userData, options) {
297
+ this._safety.tryCatch(() => {
298
+ utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [
299
+ 'object',
300
+ 'string'
301
+ ]);
302
+ utility.requireArgumentIfDefined(userData, 'userData', 'object');
303
+ if (options) {
304
+ const perfStart = options.perfStartOverride;
305
+ const isStartTimeDefined = utility.requireArgumentIfDefined(perfStart, 'options.perfStartOverride', 'number');
306
+ const perfStop = options.perfStopOverride;
307
+ const isStopTimeDefined = utility.requireArgumentIfDefined(perfStop, 'options.perfStopOverride', 'number');
308
+ if (isStartTimeDefined && perfStart < 0) {
309
+ throw new Error('perfStartOverride, if defined, must be >= 0');
310
+ }
311
+ if (isStopTimeDefined &&
312
+ (perfStop < 0 ||
313
+ perfStop < (isStartTimeDefined ? perfStart : this._startPerfTime))) {
314
+ throw new Error('perfStopOverride, if defined, must be >= 0 and >= startTime');
315
+ }
316
+ }
317
+ this._stopInternal(userSchemaOrText, userData, options);
318
+ });
289
319
  }
290
- _stopInternal(userSchemaOrText, userData) {
320
+ _overrideTimer(perfStartTime, perfStopTime) {
321
+ if (perfStartTime !== undefined) {
322
+ this._startTimestamp = Math.round(this._startTimestamp - (this._startPerfTime - perfStartTime));
323
+ this._startPerfTime = perfStartTime;
324
+ this._setTimerOverride(TimerOverride.start);
325
+ }
326
+ if (perfStopTime !== undefined) {
327
+ this._stopPerfTime = perfStopTime;
328
+ this._setTimerOverride(TimerOverride.stop);
329
+ }
330
+ }
331
+ _setTimerOverride(value) {
332
+ if (this._timerOverridden === TimerOverride.both ||
333
+ this._timerOverridden === value ||
334
+ value === TimerOverride.none) {
335
+ return;
336
+ }
337
+ this._timerOverridden =
338
+ this._timerOverridden === TimerOverride.none ? value : TimerOverride.both;
339
+ }
340
+ _stopInternal(userSchemaOrText, userData, options) {
291
341
  const stopPerfTime = utility.perfNow();
292
342
  if (this._usePerf) {
293
343
  try {
@@ -306,7 +356,14 @@ class ActivityImpl {
306
356
  if (this.isStopped) {
307
357
  return;
308
358
  }
309
- this._stopPerfTime = stopPerfTime;
359
+ if (options) {
360
+ this._overrideTimer(options.perfStartOverride, options.perfStopOverride);
361
+ }
362
+ this._stopPerfTime =
363
+ this._timerOverridden === TimerOverride.none ||
364
+ this._timerOverridden === TimerOverride.start
365
+ ? stopPerfTime
366
+ : this._stopPerfTime;
310
367
  const activityDetail = this._getDetail(userSchemaOrText, userData);
311
368
  this._onStopped(activityDetail);
312
369
  }
@@ -340,7 +397,8 @@ class ActivityImpl {
340
397
  startPerfTime: this._startPerfTime,
341
398
  stopPerfTime: this._stopPerfTime,
342
399
  errorCount: this._errorCount,
343
- isSampled: this.getIsSampled()
400
+ isSampled: this.getIsSampled(),
401
+ timerOverridden: this._timerOverridden
344
402
  };
345
403
  }
346
404
  getTraceHeaders(options) {