{ "version": 3, "sources": ["../../javascript/affiliates.js"], "sourcesContent": ["(function () {\n // Ensure the global config object exists and set default values\n window.SureCartAffiliatesConfig = window.SureCartAffiliatesConfig || {};\n window.SureCartAffiliatesConfig.baseURL = window.SureCartAffiliatesConfig.baseURL || \"https://api.surecart.com/v1\";\n window.SureCartAffiliatesConfig.publicToken = window.SureCartAffiliatesConfig.publicToken || null;\n\n // Helper function to get a URL parameter by its name\n function getURLParameter(name) {\n const regex = new RegExp(\"[?&]\" + name + \"=([^&#]*)\");\n const results = regex.exec(location.search);\n return results === null\n ? \"\"\n : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n }\n\n // Helper function to get a cookie by its name\n function getCookie(name) {\n const value = \"; \" + document.cookie;\n const parts = value.split(\"; \" + name + \"=\");\n if (parts.length === 2) return parts.pop().split(\";\").shift();\n return null;\n }\n\n // Helper function to set a cookie\n function setCookie(name, value, domain, expiryDate) {\n const expires = \"expires=\" + expiryDate.toUTCString();\n document.cookie = name + \"=\" + value + \";\" + expires + \";path=/;domain=\" + domain;\n }\n\n function logMessage(type, message) {\n return \"SureCart Affiliates: \" + type + (message === undefined ? \"\" : \" - \" + message);\n }\n\n // Check to make sure config values are set\n if (!window.SureCartAffiliatesConfig.baseURL) {\n console.error(logMessage(\"Configuration Error\", \"baseURL is not set\"));\n return;\n }\n if (!window.SureCartAffiliatesConfig.publicToken) {\n console.error(logMessage(\"Configuration Error\", \"publicToken is not set\"));\n return;\n }\n\n // Check for the ?aff query parameter\n const affiliationCode = getURLParameter(\"aff\");\n\n if (affiliationCode) {\n // Use the baseURL from the global config object\n const endpointURL = `${window.SureCartAffiliatesConfig.baseURL}/public/clicks`;\n\n // Sending a request to record a click\n fetch(endpointURL, {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${window.SureCartAffiliatesConfig.publicToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n click: {\n affiliation_code: affiliationCode,\n url: window.location.href,\n referrer: document.referrer,\n previous_click: getCookie(\"sc_click_id\")\n }\n })\n })\n .then((response) => {\n if (!response.ok) {\n // If response is not in the 200-299 range, we log it\n console.warn(logMessage(\"Tracking Failed\", response.statusText));\n }\n return response.json();\n })\n .then((data) => {\n // Set the cookie if the server responds with a click ID, domain and an expires_at value\n if (data.id && data.domain && data.expires_at) {\n const expiryDate = new Date(data.expires_at * 1000); // Convert UNIX epoch time to JavaScript Date\n setCookie(\"sc_click_id\", data.id, data.domain, expiryDate);\n console.log(logMessage(\"Tracking Succeeded\"));\n }\n })\n .catch((error) => {\n console.error(logMessage(\"Server Error\", error));\n });\n }\n})();\n"], "mappings": "OAAC,UAAY,CAEX,OAAO,yBAA2B,OAAO,0BAA4B,CAAC,EACtE,OAAO,yBAAyB,QAAU,OAAO,yBAAyB,SAAW,8BACrF,OAAO,yBAAyB,YAAc,OAAO,yBAAyB,aAAe,KAG7F,SAASA,EAAgBC,EAAM,CAE7B,IAAMC,EADQ,IAAI,OAAO,OAASD,EAAO,WAAW,EAC9B,KAAK,SAAS,MAAM,EAC1C,OAAOC,IAAY,KACf,GACA,mBAAmBA,EAAQ,GAAG,QAAQ,MAAO,GAAG,CAAC,CACvD,CAGA,SAASC,EAAUF,EAAM,CAEvB,IAAMG,GADQ,KAAO,SAAS,QACV,MAAM,KAAOH,EAAO,GAAG,EAC3C,OAAIG,EAAM,SAAW,EAAUA,EAAM,IAAI,EAAE,MAAM,GAAG,EAAE,MAAM,EACrD,IACT,CAGA,SAASC,EAAUJ,EAAMK,EAAOC,EAAQC,EAAY,CAClD,IAAMC,EAAU,WAAaD,EAAW,YAAY,EACpD,SAAS,OAASP,EAAO,IAAMK,EAAQ,IAAMG,EAAU,kBAAoBF,CAC7E,CAEA,SAASG,EAAWC,EAAMC,EAAS,CACjC,MAAO,wBAA0BD,GAAQC,IAAY,OAAY,GAAK,MAAQA,EAChF,CAGA,GAAI,CAAC,OAAO,yBAAyB,QAAS,CAC5C,QAAQ,MAAMF,EAAW,sBAAuB,oBAAoB,CAAC,EACrE,MACF,CACA,GAAI,CAAC,OAAO,yBAAyB,YAAa,CAChD,QAAQ,MAAMA,EAAW,sBAAuB,wBAAwB,CAAC,EACzE,MACF,CAGA,IAAMG,EAAkBb,EAAgB,KAAK,EAE7C,GAAIa,EAAiB,CAEnB,IAAMC,EAAc,GAAG,OAAO,yBAAyB,wBAGvD,MAAMA,EAAa,CACjB,OAAQ,OACR,QAAS,CACP,cAAiB,UAAU,OAAO,yBAAyB,cAC3D,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CACnB,MAAO,CACL,iBAAkBD,EAClB,IAAK,OAAO,SAAS,KACrB,SAAU,SAAS,SACnB,eAAgBV,EAAU,aAAa,CACzC,CACF,CAAC,CACH,CAAC,EACA,KAAMY,IACAA,EAAS,IAEZ,QAAQ,KAAKL,EAAW,kBAAmBK,EAAS,UAAU,CAAC,EAE1DA,EAAS,KAAK,EACtB,EACA,KAAMC,GAAS,CAEd,GAAIA,EAAK,IAAMA,EAAK,QAAUA,EAAK,WAAY,CAC7C,IAAMR,EAAa,IAAI,KAAKQ,EAAK,WAAa,GAAI,EAClDX,EAAU,cAAeW,EAAK,GAAIA,EAAK,OAAQR,CAAU,EACzD,QAAQ,IAAIE,EAAW,oBAAoB,CAAC,CAC9C,CACF,CAAC,EACA,MAAOO,GAAU,CAChB,QAAQ,MAAMP,EAAW,eAAgBO,CAAK,CAAC,CACjD,CAAC,CACH,CACF,GAAG", "names": ["getURLParameter", "name", "results", "getCookie", "parts", "setCookie", "value", "domain", "expiryDate", "expires", "logMessage", "type", "message", "affiliationCode", "endpointURL", "response", "data", "error"] }