@zaplier/sdk 1.6.5 → 1.6.7

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.cjs CHANGED
@@ -19784,7 +19784,7 @@ class VisitorIdentityManager {
19784
19784
  .map(b => b.toString(16).padStart(2, '0'))
19785
19785
  .join('') + "_" + Date.now().toString(36);
19786
19786
  }
19787
- createCamouflageData(visitorId, sessionId, stableCoreHash) {
19787
+ createCamouflageData(visitorId, sessionId, stableCoreHash, fromBackend = false) {
19788
19788
  return {
19789
19789
  theme: "auto",
19790
19790
  lang: (navigator.language || "en-US").substring(0, 2),
@@ -19794,13 +19794,16 @@ class VisitorIdentityManager {
19794
19794
  _v: visitorId, // Hidden visitor ID
19795
19795
  _s: sessionId, // Hidden session ID
19796
19796
  _sc: stableCoreHash, // Hidden stable core
19797
+ _vb: fromBackend ? true : undefined, // Flag: visitor ID from backend (v1.7.0+)
19797
19798
  ts: Date.now(),
19798
19799
  };
19799
19800
  }
19800
19801
  extractFromCamouflage(data) {
19801
19802
  try {
19802
19803
  const parsed = JSON.parse(data);
19803
- if (parsed._v && parsed._s && parsed._sc) {
19804
+ // CRITICAL: Only return visitor ID if it came from backend (v1.7.0+)
19805
+ // This invalidates visitor IDs generated by previous SDK versions
19806
+ if (parsed._v && parsed._s && parsed._sc && parsed._vb === true) {
19804
19807
  return {
19805
19808
  visitorId: parsed._v,
19806
19809
  sessionId: parsed._s,
@@ -19812,6 +19815,11 @@ class VisitorIdentityManager {
19812
19815
  reused: true,
19813
19816
  };
19814
19817
  }
19818
+ // If visitor ID exists but doesn't have backend flag, ignore it
19819
+ if (parsed._v && !parsed._vb) {
19820
+ console.log("[VisitorIdentityManager] Ignoring visitor ID from previous SDK version (no backend flag)");
19821
+ return null;
19822
+ }
19815
19823
  }
19816
19824
  catch (e) {
19817
19825
  // Invalid data
@@ -19864,7 +19872,8 @@ class VisitorIdentityManager {
19864
19872
  try {
19865
19873
  // Create or update camouflaged data with backend visitor ID
19866
19874
  const currentSessionId = sessionId || this.getCurrentSessionId() || this.generateSessionId();
19867
- const camouflageData = this.createCamouflageData(visitorId, currentSessionId, stableCoreHash);
19875
+ const camouflageData = this.createCamouflageData(visitorId, currentSessionId, stableCoreHash, true // Mark as coming from backend
19876
+ );
19868
19877
  const { success, method } = PersistenceManager.set(STORAGE_KEYS.prefs, JSON.stringify(camouflageData));
19869
19878
  if (success) {
19870
19879
  // Also update device fingerprint cache
@@ -19948,7 +19957,7 @@ const DEFAULT_CONFIG = {
19948
19957
  */
19949
19958
  class ZaplierSDK {
19950
19959
  constructor(userConfig) {
19951
- this.version = "1.7.0";
19960
+ this.version = "1.7.1";
19952
19961
  this.isInitialized = false;
19953
19962
  this.eventQueue = [];
19954
19963
  /**
@@ -20380,7 +20389,8 @@ class ZaplierSDK {
20380
20389
  const visitorIdentity = await this.visitorIdentityManager.getOrCreateVisitorIdentity({
20381
20390
  fingerprintHash: result.data.hash,
20382
20391
  stableCoreHash: result.data.stableCoreHash,
20383
- deviceFingerprint: result.data.hash,
20392
+ // CRITICAL: Use stableCoreHash as deviceFingerprint for consistency with backend
20393
+ deviceFingerprint: result.data.stableCoreHash || result.data.hash,
20384
20394
  sessionId: this.sessionId,
20385
20395
  userAgent: navigator.userAgent,
20386
20396
  ipAddress: undefined, // Will be determined server-side
@@ -20507,8 +20517,9 @@ class ZaplierSDK {
20507
20517
  try {
20508
20518
  const payload = {
20509
20519
  // workspaceId moved to query parameter
20510
- // CHANGED: Only send visitor ID if it came from backend (not locally generated)
20511
- visitorId: this.backendVisitorId || this.getVisitorId(),
20520
+ // CRITICAL: Only send visitor ID if it definitively came from backend
20521
+ // Never send locally generated visitor IDs from previous SDK versions
20522
+ visitorId: this.backendVisitorId || null,
20512
20523
  // Session ID (gerado por sessão)
20513
20524
  sessionId: this.sessionId,
20514
20525
  fingerprintHash: this.fingerprint?.hash,