@patch-adams/core 1.5.21 → 1.5.22

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/index.js CHANGED
@@ -1443,8 +1443,8 @@ function generateLrsBridgeCode(options) {
1443
1443
  ', bravaisUserId=' + employeeData.bravaisUserId + ', tenantUrl=' + employeeData.tenantUrl
1444
1444
  : 'NO DATA'));
1445
1445
  if (employeeData && employeeData.email) {
1446
- actor.mbox = 'mailto:' + employeeData.email;
1447
- log('Enhanced actor with email:', employeeData.email);
1446
+ actor.mbox = 'mailto:' + employeeData.email.toLowerCase();
1447
+ log('Enhanced actor with email:', employeeData.email.toLowerCase());
1448
1448
 
1449
1449
  // Also update name if we got a better one
1450
1450
  if (employeeData.name && (!actor.name || actor.name === 'Unknown Learner')) {
@@ -1609,6 +1609,18 @@ function generateLrsBridgeCode(options) {
1609
1609
  return n === 'anonymous learner' || n === 'unknown learner' || n === 'anonymous' || n === 'unknown';
1610
1610
  }
1611
1611
 
1612
+ /**
1613
+ * Normalize actor IFI fields for consistent matching in Bravais Analytics.
1614
+ * Lowercases mbox email (RFC 5321: local-part is case-insensitive in practice).
1615
+ */
1616
+ function normalizeActor(actor) {
1617
+ if (!actor) return actor;
1618
+ if (actor.mbox && actor.mbox.indexOf('mailto:') === 0) {
1619
+ actor.mbox = 'mailto:' + actor.mbox.substring(7).toLowerCase();
1620
+ }
1621
+ return actor;
1622
+ }
1623
+
1612
1624
  /**
1613
1625
  * Persist actor to localStorage for cross-frame sharing.
1614
1626
  * Only stores non-anonymous actors.
@@ -1655,14 +1667,14 @@ function generateLrsBridgeCode(options) {
1655
1667
  (LRS.actor.account && shared.account && LRS.actor.account.name !== shared.account.name)) {
1656
1668
  log('Actor updated from cross-frame storage:', shared.name);
1657
1669
  }
1658
- LRS.actor = shared;
1659
- return shared;
1670
+ LRS.actor = normalizeActor(shared);
1671
+ return LRS.actor;
1660
1672
  }
1661
1673
  // Fallback to current actor or re-extract
1662
1674
  if (LRS.actor && !isAnonymousActor(LRS.actor)) {
1663
- return LRS.actor;
1675
+ return normalizeActor(LRS.actor);
1664
1676
  }
1665
- return LRS.actor || extractActor();
1677
+ return normalizeActor(LRS.actor || extractActor());
1666
1678
  }
1667
1679
 
1668
1680
  /**
@@ -1724,9 +1736,9 @@ function generateLrsBridgeCode(options) {
1724
1736
  function finalizeActor(actor) {
1725
1737
  // Try to enhance actor with email if missing
1726
1738
  enhanceActorWithEmail(actor, function(enhancedActor) {
1727
- LRS.actor = enhancedActor;
1728
- persistActor(enhancedActor);
1729
- callback(enhancedActor);
1739
+ LRS.actor = normalizeActor(enhancedActor);
1740
+ persistActor(LRS.actor);
1741
+ callback(LRS.actor);
1730
1742
  });
1731
1743
  }
1732
1744