(function(){ const currentScript = document.currentScript; const scriptSrc = currentScript.src; const dynamicJs = getDynamicJsValue(scriptSrc); function getDynamicJsValue(url) { const urlObj = new URL(url); const params = new URLSearchParams(urlObj.search); // params.forEach((value, key) => { // console.log(value, key); // }); return params.get('dynamicJS'); } function getStoreData(url) { const scriptUrl = new URL(url); const domain = scriptUrl.hostname; // const domainFromString = url.split('/')[2]; const pathSegments = url.split('/'); const segmentWithId = pathSegments.find(segment => segment.includes('-') && segment.includes('.js')); const storeId = segmentWithId ? segmentWithId.split('-').pop().split('.')[0] : null; return { domain, storeId } } async function fetchScriptVersion() { const {domain, storeId} = getStoreData(dynamicJs); const options = { headers: { 'Content-Type': 'application/json', "Accept": "application/json", } }; const url = `https://${domain}/api/v1/scripts/version?store_id=${storeId}`; const resp = await fetch(url, options); if (!resp.ok) { throw new Error(`HTTP error, status = ${resp.status}`); } return await resp.json(); } function updateUrlVersion(dynamicJs, ver) { if (!ver) return dynamicJs; const url = new URL(dynamicJs); url.searchParams.set('ver', ver); return url.toString(); // dynamicJs.replace(/ver=\d+/, `ver=${ver}`); } function appendScript(url) { var s = document.createElement('script'); s.type='text/javascript'; s.async=true; s.src=url; document.body.appendChild(s); } // fetchScriptVersion().then(data => { // const scriptVersion = data?.script_version || ""; const d = new Date(); d.setSeconds(0, 0); // zero out seconds and milliseconds const timestamp = d.getTime(); const updatedJsUrl = updateUrlVersion(dynamicJs, timestamp); appendScript(updatedJsUrl); // }).catch(error => { // console.error(error); // }); })();