diff --git a/src/authsignal.ts b/src/authsignal.ts index 6433474..6abe227 100644 --- a/src/authsignal.ts +++ b/src/authsignal.ts @@ -10,15 +10,19 @@ import { TokenPayload, WindowLaunchOptions, } from "./types"; -import {PopupHandler, WindowHandler} from "./handlers"; import {Passkey} from "./passkey"; +import {PopupHandler, WindowHandler} from "./handlers"; const DEFAULT_COOKIE_NAME = "__as_aid"; +const DEFAULT_PROFILING_COOKIE_NAME = "__as_pid"; const DEFAULT_BASE_URL = "https://api.authsignal.com/v1"; +const TMX_ORG_ID = "4a08uqve"; + export class Authsignal { anonymousId = ""; + profilingId = ""; cookieDomain = ""; anonymousIdCookieName = ""; passkey: Passkey; @@ -72,6 +76,46 @@ export class Authsignal { } } + initAdvancedProfiling(baseUrl?: string): undefined { + const profilingId = uuidv4(); + this.profilingId = profilingId; + setCookie({ + name: DEFAULT_PROFILING_COOKIE_NAME, + value: profilingId, + expire: Infinity, + domain: this.cookieDomain, + secure: document.location.protocol !== "http:", + }); + + const tmxProfilingScruiptUrl = baseUrl + ? `${baseUrl}/fp/tags.js?org_id=${TMX_ORG_ID}&session_id=${profilingId}` + : `https://h.online-metrix.net/fp/tags.js?org_id=${TMX_ORG_ID}&session_id=${profilingId}`; + const script = document.createElement("script"); + script.src = tmxProfilingScruiptUrl; + script.async = false; + script.id = "as_adv_profile"; + document.head.appendChild(script); + + const pixelContainer = document.createElement("noscript"); + pixelContainer.setAttribute("id", "as_adv_profile_pixel"); + pixelContainer.setAttribute("aria-hidden", "true"); + + // Instantiate Pixel + const iframe = document.createElement("iframe"); + const profilingPixelUrl = baseUrl + ? `${baseUrl}/fp/tags?org_id=${TMX_ORG_ID}&session_id=${profilingId}` + : `https://h.online-metrix.net/fp/tags?org_id=${TMX_ORG_ID}&session_id=${profilingId}`; + + iframe.setAttribute("id", "as_adv_profile_pixel"); + iframe.setAttribute("src", profilingPixelUrl); + iframe.setAttribute("style", "width: 100px; height: 100px; border: 0; position: absolute; top: -5000px;"); + + if (pixelContainer) { + pixelContainer.appendChild(iframe); + document.body.prepend(pixelContainer); + } + } + private launchWithRedirect(url: string) { window.location.href = url; }