@coralogix/browser 3.4.0 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 3.4.1 (2026-03-25)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - Improve MFE stacktrace metadata extraction stability
6
+ - Fix potential infinite loop in navigation tracking
7
+
1
8
  ## 3.4.0 (2026-02-26)
2
9
 
3
10
  ### 🚀 Features
package/index.esm2.js CHANGED
@@ -369,6 +369,12 @@ var CACHED_METADATA_KEY = '__cx_metadata__';
369
369
  var ERROR_INSTRUMENTATION_VERSION = '1';
370
370
  var STACK_LIMIT = 4096;
371
371
  var MESSAGE_LIMIT = 1024;
372
+ var MFE_PATH_PATTERN = /https?:\/\/.*\//;
373
+ function extractMfePath(fileName) {
374
+ var _a;
375
+ var _b = __read$1((_a = fileName.match(MFE_PATH_PATTERN)) !== null && _a !== void 0 ? _a : [], 1), mfePath = _b[0];
376
+ return mfePath;
377
+ }
372
378
  var ERROR_INSTRUMENTATION_NAME = 'errors';
373
379
  var ErrorAttributes = {
374
380
  TYPE: 'error_type',
@@ -455,32 +461,32 @@ function addLabelForMFE(span, lastFrame) {
455
461
  }
456
462
  function extractMetadataFromMfeStacktrace() {
457
463
  return __awaiter(this, arguments, void 0, function (fileName) {
458
- var metadata, cachedMetadata, MFE_METADATA_KEY, _a, mfePath, response, _b, e_1;
464
+ var metadata, cachedMetadata, MFE_METADATA_KEY, mfePath, response, _a, e_1;
459
465
  if (fileName === void 0) { fileName = ''; }
460
- return __generator(this, function (_c) {
461
- switch (_c.label) {
466
+ return __generator(this, function (_b) {
467
+ switch (_b.label) {
462
468
  case 0:
463
469
  cachedMetadata = CxGlobal[CACHED_METADATA_KEY];
464
470
  MFE_METADATA_KEY = 'cx-metadata.json';
465
- _a = __read$1(fileName.match(/https?:\/\/.*\//), 1), mfePath = _a[0];
471
+ mfePath = extractMfePath(fileName);
466
472
  if (!mfePath) return [3, 7];
467
473
  response = void 0;
468
474
  if (!!(cachedMetadata === null || cachedMetadata === void 0 ? void 0 : cachedMetadata.has(mfePath))) return [3, 6];
469
- _c.label = 1;
475
+ _b.label = 1;
470
476
  case 1:
471
- _c.trys.push([1, 4, , 5]);
477
+ _b.trys.push([1, 4, , 5]);
472
478
  return [4, fetch("".concat(mfePath).concat(MFE_METADATA_KEY), {
473
479
  cache: 'no-cache',
474
480
  })];
475
481
  case 2:
476
- response = _c.sent();
477
- _b = [{}];
482
+ response = _b.sent();
483
+ _a = [{}];
478
484
  return [4, response.json()];
479
485
  case 3:
480
- metadata = __assign.apply(void 0, [__assign.apply(void 0, _b.concat([(_c.sent())])), { mfePath: mfePath }]);
486
+ metadata = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_b.sent())])), { mfePath: mfePath }]);
481
487
  return [3, 5];
482
488
  case 4:
483
- e_1 = _c.sent();
489
+ e_1 = _b.sent();
484
490
  if (getSdkConfig().debug) {
485
491
  console.warn('Coralogix Browser SDK - Error fetching metadata', e_1);
486
492
  }
@@ -490,7 +496,7 @@ function extractMetadataFromMfeStacktrace() {
490
496
  return [3, 7];
491
497
  case 6:
492
498
  metadata = cachedMetadata === null || cachedMetadata === void 0 ? void 0 : cachedMetadata.get(mfePath);
493
- _c.label = 7;
499
+ _b.label = 7;
494
500
  case 7: return [2, metadata];
495
501
  }
496
502
  });
@@ -4148,7 +4154,7 @@ function resolveUrlBlueprinters(urlBlueprinters) {
4148
4154
  return resolvedUrlBlueprinters;
4149
4155
  }
4150
4156
 
4151
- var SDK_VERSION = '3.4.0';
4157
+ var SDK_VERSION = '3.4.1';
4152
4158
 
4153
4159
  function shouldDropEvent(cxRumEvent, options) {
4154
4160
  if (isDocumentErrorWithoutMessage(cxRumEvent)) {
@@ -4499,14 +4505,17 @@ var CoralogixSpanMapProcessor = (function () {
4499
4505
  return {};
4500
4506
  };
4501
4507
  CoralogixSpanMapProcessor.prototype.resolveLabels = function (cxRumEvent) {
4502
- var _a, _b;
4508
+ var _a, _b, _c;
4503
4509
  var allLabels = cxRumEvent.labels;
4504
4510
  var labelProviders = (_a = this.sdkConfig) === null || _a === void 0 ? void 0 : _a.labelProviders;
4505
4511
  if (labelProviders === null || labelProviders === void 0 ? void 0 : labelProviders.length) {
4506
4512
  var pageUrlLabelProviders = getInternalRumData(PAGE_URL_LABEL_PROVIDERS_KEY);
4507
4513
  var networkUrlLabelProviders = getInternalRumData(NETWORK_URL_LABEL_PROVIDERS_KEY);
4508
4514
  var networkRequestFragment = (_b = cxRumEvent.network_request_context) === null || _b === void 0 ? void 0 : _b.fragments;
4509
- var labelsFromProviders = __assign(__assign({}, this.getLabelsByLabelProviders(pageUrlLabelProviders, cxRumEvent, cxRumEvent.page_context.page_fragments)), (networkRequestFragment
4515
+ var pageFragment = (_c = cxRumEvent.page_context) === null || _c === void 0 ? void 0 : _c.page_fragments;
4516
+ var labelsFromProviders = __assign(__assign({}, (pageFragment
4517
+ ? this.getLabelsByLabelProviders(pageUrlLabelProviders, cxRumEvent, pageFragment)
4518
+ : {})), (networkRequestFragment
4510
4519
  ? this.getLabelsByLabelProviders(networkUrlLabelProviders, cxRumEvent, networkRequestFragment)
4511
4520
  : {}));
4512
4521
  allLabels = __assign(__assign({}, allLabels), labelsFromProviders);
@@ -4670,22 +4679,32 @@ var SnapshotManager = (function () {
4670
4679
 
4671
4680
  var CoralogixNavigationProcessor = (function () {
4672
4681
  function CoralogixNavigationProcessor() {
4682
+ this.isResolving = false;
4673
4683
  }
4674
4684
  CoralogixNavigationProcessor.prototype.forceFlush = function () {
4675
4685
  return Promise.resolve();
4676
4686
  };
4677
4687
  CoralogixNavigationProcessor.prototype.onEnd = function (span) { };
4678
4688
  CoralogixNavigationProcessor.prototype.onStart = function (span) {
4679
- var pageContext = resolvePageContext(location.href);
4680
- if (pageContext) {
4681
- span[CoralogixAttributes.PAGE_CONTEXT] = pageContext;
4682
- var currentPageFragment = getSessionManager().currentPageFragment;
4683
- var page_fragments = pageContext.page_fragments;
4684
- if (currentPageFragment !== page_fragments) {
4685
- getSessionManager().updateCurrentPage(page_fragments);
4686
- span[CoralogixAttributes.IS_NAVIGATION_EVENT] = true;
4689
+ if (this.isResolving) {
4690
+ return;
4691
+ }
4692
+ this.isResolving = true;
4693
+ try {
4694
+ var pageContext = resolvePageContext(location.href);
4695
+ if (pageContext) {
4696
+ span[CoralogixAttributes.PAGE_CONTEXT] = pageContext;
4697
+ var currentPageFragment = getSessionManager().currentPageFragment;
4698
+ var page_fragments = pageContext.page_fragments;
4699
+ if (currentPageFragment !== page_fragments) {
4700
+ getSessionManager().updateCurrentPage(page_fragments);
4701
+ span[CoralogixAttributes.IS_NAVIGATION_EVENT] = true;
4702
+ }
4687
4703
  }
4688
4704
  }
4705
+ finally {
4706
+ this.isResolving = false;
4707
+ }
4689
4708
  };
4690
4709
  CoralogixNavigationProcessor.prototype.shutdown = function () {
4691
4710
  return Promise.resolve();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coralogix/browser",
3
- "version": "3.4.0",
3
+ "version": "3.4.1",
4
4
  "description": "Official Coralogix SDK for browsers",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Coralogix",
@@ -1,5 +1,6 @@
1
1
  import { InstrumentationBase, InstrumentationConfig } from '@opentelemetry/instrumentation';
2
2
  import { CoralogixRumLabels } from '../types';
3
+ export declare function extractMfePath(fileName: string): string | undefined;
3
4
  export declare const ERROR_INSTRUMENTATION_NAME = "errors";
4
5
  export declare const ErrorAttributes: {
5
6
  TYPE: string;
@@ -1,5 +1,6 @@
1
1
  import { ReadableSpan, Span, SpanProcessor } from '@opentelemetry/sdk-trace-base';
2
2
  export declare class CoralogixNavigationProcessor implements SpanProcessor {
3
+ private isResolving;
3
4
  forceFlush(): Promise<void>;
4
5
  onEnd(span: ReadableSpan): void;
5
6
  onStart(span: Span): void;
package/src/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "3.4.0";
1
+ export declare const SDK_VERSION = "3.4.1";