This is an automated email from the ASF dual-hosted git repository.

jkevan pushed a commit to branch UNOMI-610-new-tracker
in repository https://gitbox.apache.org/repos/asf/unomi-tracker.git


The following commit(s) were added to refs/heads/UNOMI-610-new-tracker by this 
push:
     new 2a27e66  UNOMI-610: base tracker first draft
2a27e66 is described below

commit 2a27e66cd9e30394b90d719eabf84dd3baaedc08
Author: Kevan <[email protected]>
AuthorDate: Tue Sep 6 17:44:01 2022 +0200

    UNOMI-610: base tracker first draft
---
 dist/apache-unomi-tracker.cjs.js | 28 ++++++++++++++++++++++++++++
 dist/apache-unomi-tracker.esm.js | 28 ++++++++++++++++++++++++++++
 dist/apache-unomi-tracker.umd.js | 28 ++++++++++++++++++++++++++++
 src/tracker/tracker.js           | 31 +++++++++++++++++++++++++++++++
 4 files changed, 115 insertions(+)

diff --git a/dist/apache-unomi-tracker.cjs.js b/dist/apache-unomi-tracker.cjs.js
index 328326b..0833e8b 100644
--- a/dist/apache-unomi-tracker.cjs.js
+++ b/dist/apache-unomi-tracker.cjs.js
@@ -25,6 +25,7 @@ var newTracker = function newTracker() {
       wem.digitalData = digitalData;
       wem.trackerProfileIdCookieName = 
wem.digitalData.wemInitConfig.trackerProfileIdCookieName ? 
wem.digitalData.wemInitConfig.trackerProfileIdCookieName : "wem-profile-id";
       wem.trackerSessionIdCookieName = 
wem.digitalData.wemInitConfig.trackerSessionIdCookieName ? 
wem.digitalData.wemInitConfig.trackerSessionIdCookieName : "wem-session-id";
+      wem.browserGeneratedSessionSuffix = 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix ? 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix : "";
       wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
       var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
           contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
@@ -498,6 +499,20 @@ var newTracker = function newTracker() {
       });
     },
 
+    /**
+     * This function will invalidate the Apache Unomi session and profile,
+     * by removing the associated cookies, set the loaded context to undefined
+     * and set the session id cookie with a newly generated ID
+     */
+    invalidateSessionAndProfile: function invalidateSessionAndProfile() {
+
+      wem.sessionID = wem.generateGuid() + wem.browserGeneratedSessionSuffix;
+      wem.setCookie(wem.trackerSessionIdCookieName, wem.sessionID, 1);
+      wem.removeCookie(wem.contextServerCookieName);
+      wem.removeCookie(wem.trackerProfileIdCookieName);
+      wem.cxs = undefined;
+    },
+
     /**
      * This function return the basic structure for an event, it must be 
adapted to your need
      *
@@ -712,6 +727,19 @@ var newTracker = function newTracker() {
       }
     },
 
+    /**
+     * This is an utility function to generate a new UUID
+     *
+     * @returns {string}
+     */
+    generateGuid: function generateGuid() {
+      function s4() {
+        return Math.floor((1 + Math.random()) * 
0x10000).toString(16).substring(1);
+      }
+
+      return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + 
s4() + s4();
+    },
+
     /**
      * This is an utility function to check if the local storage is available 
or not
      * @param type
diff --git a/dist/apache-unomi-tracker.esm.js b/dist/apache-unomi-tracker.esm.js
index b5a5bff..887c8db 100644
--- a/dist/apache-unomi-tracker.esm.js
+++ b/dist/apache-unomi-tracker.esm.js
@@ -17,6 +17,7 @@ var newTracker = function newTracker() {
       wem.digitalData = digitalData;
       wem.trackerProfileIdCookieName = 
wem.digitalData.wemInitConfig.trackerProfileIdCookieName ? 
wem.digitalData.wemInitConfig.trackerProfileIdCookieName : "wem-profile-id";
       wem.trackerSessionIdCookieName = 
wem.digitalData.wemInitConfig.trackerSessionIdCookieName ? 
wem.digitalData.wemInitConfig.trackerSessionIdCookieName : "wem-session-id";
+      wem.browserGeneratedSessionSuffix = 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix ? 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix : "";
       wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
       var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
           contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
@@ -490,6 +491,20 @@ var newTracker = function newTracker() {
       });
     },
 
+    /**
+     * This function will invalidate the Apache Unomi session and profile,
+     * by removing the associated cookies, set the loaded context to undefined
+     * and set the session id cookie with a newly generated ID
+     */
+    invalidateSessionAndProfile: function invalidateSessionAndProfile() {
+
+      wem.sessionID = wem.generateGuid() + wem.browserGeneratedSessionSuffix;
+      wem.setCookie(wem.trackerSessionIdCookieName, wem.sessionID, 1);
+      wem.removeCookie(wem.contextServerCookieName);
+      wem.removeCookie(wem.trackerProfileIdCookieName);
+      wem.cxs = undefined;
+    },
+
     /**
      * This function return the basic structure for an event, it must be 
adapted to your need
      *
@@ -704,6 +719,19 @@ var newTracker = function newTracker() {
       }
     },
 
+    /**
+     * This is an utility function to generate a new UUID
+     *
+     * @returns {string}
+     */
+    generateGuid: function generateGuid() {
+      function s4() {
+        return Math.floor((1 + Math.random()) * 
0x10000).toString(16).substring(1);
+      }
+
+      return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + 
s4() + s4();
+    },
+
     /**
      * This is an utility function to check if the local storage is available 
or not
      * @param type
diff --git a/dist/apache-unomi-tracker.umd.js b/dist/apache-unomi-tracker.umd.js
index dd64f5b..4f2f9e2 100644
--- a/dist/apache-unomi-tracker.umd.js
+++ b/dist/apache-unomi-tracker.umd.js
@@ -1672,6 +1672,7 @@
         wem.digitalData = digitalData;
         wem.trackerProfileIdCookieName = 
wem.digitalData.wemInitConfig.trackerProfileIdCookieName ? 
wem.digitalData.wemInitConfig.trackerProfileIdCookieName : "wem-profile-id";
         wem.trackerSessionIdCookieName = 
wem.digitalData.wemInitConfig.trackerSessionIdCookieName ? 
wem.digitalData.wemInitConfig.trackerSessionIdCookieName : "wem-session-id";
+        wem.browserGeneratedSessionSuffix = 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix ? 
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix : "";
         wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
         var _wem$digitalData$wemI = wem.digitalData.wemInitConfig,
             contextServerUrl = _wem$digitalData$wemI.contextServerUrl,
@@ -2145,6 +2146,20 @@
         });
       },
 
+      /**
+       * This function will invalidate the Apache Unomi session and profile,
+       * by removing the associated cookies, set the loaded context to 
undefined
+       * and set the session id cookie with a newly generated ID
+       */
+      invalidateSessionAndProfile: function invalidateSessionAndProfile() {
+
+        wem.sessionID = wem.generateGuid() + wem.browserGeneratedSessionSuffix;
+        wem.setCookie(wem.trackerSessionIdCookieName, wem.sessionID, 1);
+        wem.removeCookie(wem.contextServerCookieName);
+        wem.removeCookie(wem.trackerProfileIdCookieName);
+        wem.cxs = undefined;
+      },
+
       /**
        * This function return the basic structure for an event, it must be 
adapted to your need
        *
@@ -2359,6 +2374,19 @@
         }
       },
 
+      /**
+       * This is an utility function to generate a new UUID
+       *
+       * @returns {string}
+       */
+      generateGuid: function generateGuid() {
+        function s4() {
+          return Math.floor((1 + Math.random()) * 
0x10000).toString(16).substring(1);
+        }
+
+        return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() 
+ s4() + s4();
+      },
+
       /**
        * This is an utility function to check if the local storage is 
available or not
        * @param type
diff --git a/src/tracker/tracker.js b/src/tracker/tracker.js
index edb44cb..239388a 100644
--- a/src/tracker/tracker.js
+++ b/src/tracker/tracker.js
@@ -11,6 +11,7 @@ export const newTracker = () => {
             wem.digitalData = digitalData;
             wem.trackerProfileIdCookieName =  
wem.digitalData.wemInitConfig.trackerProfileIdCookieName ?  
wem.digitalData.wemInitConfig.trackerProfileIdCookieName : "wem-profile-id";
             wem.trackerSessionIdCookieName =  
wem.digitalData.wemInitConfig.trackerSessionIdCookieName ?  
wem.digitalData.wemInitConfig.trackerSessionIdCookieName : "wem-session-id";
+            wem.browserGeneratedSessionSuffix =  
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix ?  
wem.digitalData.wemInitConfig.browserGeneratedSessionSuffix : "";
             wem.activateWem = wem.digitalData.wemInitConfig.activateWem;
 
             const { contextServerUrl, timeoutInMilliseconds, 
contextServerCookieName } = wem.digitalData.wemInitConfig;
@@ -457,6 +458,20 @@ export const newTracker = () => {
             });
         },
 
+        /**
+         * This function will invalidate the Apache Unomi session and profile,
+         * by removing the associated cookies, set the loaded context to 
undefined
+         * and set the session id cookie with a newly generated ID
+         */
+        invalidateSessionAndProfile: function () {
+            'use strict';
+            wem.sessionID = wem.generateGuid() + 
wem.browserGeneratedSessionSuffix;
+            wem.setCookie(wem.trackerSessionIdCookieName, wem.sessionID, 1);
+            wem.removeCookie(wem.contextServerCookieName);
+            wem.removeCookie(wem.trackerProfileIdCookieName);
+            wem.cxs = undefined;
+        },
+
         /**
          * This function return the basic structure for an event, it must be 
adapted to your need
          *
@@ -656,6 +671,22 @@ export const newTracker = () => {
             }
         },
 
+        /**
+         * This is an utility function to generate a new UUID
+         *
+         * @returns {string}
+         */
+        generateGuid: function () {
+            function s4() {
+                return Math.floor((1 + Math.random()) * 0x10000)
+                    .toString(16)
+                    .substring(1);
+            }
+
+            return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
+                s4() + '-' + s4() + s4() + s4();
+        },
+
         /**
          * This is an utility function to check if the local storage is 
available or not
          * @param type

Reply via email to