@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/cli.cjs CHANGED
@@ -1784,8 +1784,8 @@ function generateLrsBridgeCode(options) {
1784
1784
  ', bravaisUserId=' + employeeData.bravaisUserId + ', tenantUrl=' + employeeData.tenantUrl
1785
1785
  : 'NO DATA'));
1786
1786
  if (employeeData && employeeData.email) {
1787
- actor.mbox = 'mailto:' + employeeData.email;
1788
- log('Enhanced actor with email:', employeeData.email);
1787
+ actor.mbox = 'mailto:' + employeeData.email.toLowerCase();
1788
+ log('Enhanced actor with email:', employeeData.email.toLowerCase());
1789
1789
 
1790
1790
  // Also update name if we got a better one
1791
1791
  if (employeeData.name && (!actor.name || actor.name === 'Unknown Learner')) {
@@ -1950,6 +1950,18 @@ function generateLrsBridgeCode(options) {
1950
1950
  return n === 'anonymous learner' || n === 'unknown learner' || n === 'anonymous' || n === 'unknown';
1951
1951
  }
1952
1952
 
1953
+ /**
1954
+ * Normalize actor IFI fields for consistent matching in Bravais Analytics.
1955
+ * Lowercases mbox email (RFC 5321: local-part is case-insensitive in practice).
1956
+ */
1957
+ function normalizeActor(actor) {
1958
+ if (!actor) return actor;
1959
+ if (actor.mbox && actor.mbox.indexOf('mailto:') === 0) {
1960
+ actor.mbox = 'mailto:' + actor.mbox.substring(7).toLowerCase();
1961
+ }
1962
+ return actor;
1963
+ }
1964
+
1953
1965
  /**
1954
1966
  * Persist actor to localStorage for cross-frame sharing.
1955
1967
  * Only stores non-anonymous actors.
@@ -1996,14 +2008,14 @@ function generateLrsBridgeCode(options) {
1996
2008
  (LRS.actor.account && shared.account && LRS.actor.account.name !== shared.account.name)) {
1997
2009
  log('Actor updated from cross-frame storage:', shared.name);
1998
2010
  }
1999
- LRS.actor = shared;
2000
- return shared;
2011
+ LRS.actor = normalizeActor(shared);
2012
+ return LRS.actor;
2001
2013
  }
2002
2014
  // Fallback to current actor or re-extract
2003
2015
  if (LRS.actor && !isAnonymousActor(LRS.actor)) {
2004
- return LRS.actor;
2016
+ return normalizeActor(LRS.actor);
2005
2017
  }
2006
- return LRS.actor || extractActor();
2018
+ return normalizeActor(LRS.actor || extractActor());
2007
2019
  }
2008
2020
 
2009
2021
  /**
@@ -2065,9 +2077,9 @@ function generateLrsBridgeCode(options) {
2065
2077
  function finalizeActor(actor) {
2066
2078
  // Try to enhance actor with email if missing
2067
2079
  enhanceActorWithEmail(actor, function(enhancedActor) {
2068
- LRS.actor = enhancedActor;
2069
- persistActor(enhancedActor);
2070
- callback(enhancedActor);
2080
+ LRS.actor = normalizeActor(enhancedActor);
2081
+ persistActor(LRS.actor);
2082
+ callback(LRS.actor);
2071
2083
  });
2072
2084
  }
2073
2085