@elliemae/pui-logrocket 1.1.35-beta.1 → 1.2.0

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.
Files changed (36) hide show
  1. package/build/docs/404.html +2 -2
  2. package/build/docs/api/functions/buildLogRocketQueryParams/index.html +5 -2
  3. package/build/docs/api/functions/hasUserConsentedToSessionRecording/index.html +2 -2
  4. package/build/docs/api/functions/initLogRocket/index.html +2 -2
  5. package/build/docs/api/index.html +2 -2
  6. package/build/docs/api/type-aliases/LROptions/index.html +2 -2
  7. package/build/docs/assets/js/04ee7372.167b6465.js +1 -0
  8. package/build/docs/assets/js/51c4ceb1.6fc4ec7b.js +1 -0
  9. package/build/docs/assets/js/{e376fc56.046f28f3.js → e376fc56.b55759b6.js} +1 -1
  10. package/build/docs/assets/js/main.d473335e.js +2 -0
  11. package/build/docs/assets/js/{runtime~main.48776a7a.js → runtime~main.f563dceb.js} +1 -1
  12. package/build/docs/compliance/index.html +2 -2
  13. package/build/docs/index.html +2 -2
  14. package/build/docs/usage-guide/index.html +14 -5
  15. package/dist/cjs/logrocket.js +64 -13
  16. package/dist/esm/logrocket.js +63 -13
  17. package/dist/public/index.html +1 -1
  18. package/dist/public/js/emuiLogrocket.a94d5254f9e9cd719b0a.js +45 -0
  19. package/dist/public/js/emuiLogrocket.a94d5254f9e9cd719b0a.js.br +0 -0
  20. package/dist/public/js/emuiLogrocket.a94d5254f9e9cd719b0a.js.gz +0 -0
  21. package/dist/public/js/emuiLogrocket.a94d5254f9e9cd719b0a.js.map +1 -0
  22. package/dist/types/lib/logrocket.d.ts +3 -0
  23. package/dist/types/tsconfig.tsbuildinfo +1 -1
  24. package/dist/umd/index.js +16 -16
  25. package/dist/umd/index.js.br +0 -0
  26. package/dist/umd/index.js.gz +0 -0
  27. package/dist/umd/index.js.map +1 -1
  28. package/package.json +1 -1
  29. package/build/docs/assets/js/04ee7372.9b7b3438.js +0 -1
  30. package/build/docs/assets/js/51c4ceb1.093ba7f1.js +0 -1
  31. package/build/docs/assets/js/main.82478de3.js +0 -2
  32. package/dist/public/js/emuiLogrocket.aa8c514c26abd452b96f.js +0 -45
  33. package/dist/public/js/emuiLogrocket.aa8c514c26abd452b96f.js.br +0 -0
  34. package/dist/public/js/emuiLogrocket.aa8c514c26abd452b96f.js.gz +0 -0
  35. package/dist/public/js/emuiLogrocket.aa8c514c26abd452b96f.js.map +0 -1
  36. /package/build/docs/assets/js/{main.82478de3.js.LICENSE.txt → main.d473335e.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- (()=>{"use strict";var e,a,r,t,o,c={},f={};function n(e){var a=f[e];if(void 0!==a)return a.exports;var r=f[e]={id:e,loaded:!1,exports:{}};return c[e].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}n.m=c,n.c=f,e=[],n.O=(a,r,t,o)=>{if(!r){var c=1/0;for(b=0;b<e.length;b++){for(var[r,t,o]=e[b],f=!0,d=0;d<r.length;d++)(!1&o||c>=o)&&Object.keys(n.O).every(e=>n.O[e](r[d]))?r.splice(d--,1):(f=!1,o<c&&(c=o));if(f){e.splice(b--,1);var i=t();void 0!==i&&(a=i)}}return a}o=o||0;for(var b=e.length;b>0&&e[b-1][2]>o;b--)e[b]=e[b-1];e[b]=[r,t,o]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a:a}),a},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var o=Object.create(null);n.r(o);var c={};a=a||[null,r({}),r([]),r(r)];for(var f=2&t&&e;("object"==typeof f||"function"==typeof f)&&!~a.indexOf(f);f=r(f))Object.getOwnPropertyNames(f).forEach(a=>c[a]=()=>e[a]);return c.default=()=>e,n.d(o,c),o},n.d=(e,a)=>{for(var r in a)n.o(a,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((a,r)=>(n.f[r](e,a),a),[])),n.u=e=>"assets/js/"+({295:"51c4ceb1",594:"5e8c322a",2076:"common",3361:"c377a04b",3480:"e376fc56",4319:"211c08f1",4804:"7fcbe1af",5742:"aba21aa0",5754:"acaa8c75",5760:"552a934f",5908:"04ee7372",7098:"a7bd4aaa",8401:"17896441",9048:"a94703ab",9647:"5e95c892"}[e]||e)+"."+{200:"0310889b",295:"093ba7f1",483:"18c7d7f8",594:"503d46ea",638:"a021b03c",654:"0e97a121",764:"32783b8e",967:"d428fcf6",1138:"aa8c4e98",1370:"c8be4ee0",2076:"6c804366",2180:"31d6ce39",2327:"251d6533",2706:"74774645",3308:"78e397d4",3361:"2361a76f",3480:"046f28f3",3725:"36fa16ca",3767:"2998632d",3899:"94243d47",4167:"eb3f034b",4319:"f5d0523b",4359:"6536c7a0",4390:"744aab40",4413:"e614d609",4453:"ef8b090c",4632:"aa312ff7",4804:"5999b9e8",4860:"cfa79720",5168:"97fb36dd",5179:"ccfc9ebc",5182:"30f41439",5275:"4ed9ae52",5742:"a5d4e000",5754:"70525e75",5760:"b125f196",5820:"2cd5bf53",5908:"9b7b3438",6143:"8bf840e9",6340:"eaf6d37a",6376:"13262bdb",6603:"cbc20a0f",6761:"0b26728e",6873:"83ee6c7c",7039:"3ca79f91",7098:"ad524078",7204:"1ce9a9b1",7616:"6501b368",7666:"99e92eb2",7876:"3ac89535",8071:"6922ccd8",8401:"dfa22f5b",8907:"4424af8f",9048:"5c63b074",9647:"2d99be36",9748:"cc3f89d3",9845:"d704e0f2"}[e]+".js",n.miniCssF=e=>{},n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},o="@elliemae/pui-logrocket:",n.l=(e,a,r,c)=>{if(t[e])t[e].push(a);else{var f,d;if(void 0!==r)for(var i=document.getElementsByTagName("script"),b=0;b<i.length;b++){var l=i[b];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){f=l;break}}f||(d=!0,(f=document.createElement("script")).charset="utf-8",n.nc&&f.setAttribute("nonce",n.nc),f.setAttribute("data-webpack",o+r),f.src=e),t[e]=[a];var u=(a,r)=>{f.onerror=f.onload=null,clearTimeout(s);var o=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),o&&o.forEach(e=>e(r)),a)return a(r)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=u.bind(null,f.onerror),f.onload=u.bind(null,f.onload),d&&document.head.appendChild(f)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/logrocket/",n.gca=function(e){return e={17896441:"8401","51c4ceb1":"295","5e8c322a":"594",common:"2076",c377a04b:"3361",e376fc56:"3480","211c08f1":"4319","7fcbe1af":"4804",aba21aa0:"5742",acaa8c75:"5754","552a934f":"5760","04ee7372":"5908",a7bd4aaa:"7098",a94703ab:"9048","5e95c892":"9647"}[e]||e,n.p+n.u(e)},(()=>{var e={5354:0,1869:0};n.f.j=(a,r)=>{var t=n.o(e,a)?e[a]:void 0;if(0!==t)if(t)r.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var o=new Promise((r,o)=>t=e[a]=[r,o]);r.push(t[2]=o);var c=n.p+n.u(a),f=new Error;n.l(c,r=>{if(n.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var o=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;f.message="Loading chunk "+a+" failed.\n("+o+": "+c+")",f.name="ChunkLoadError",f.type=o,f.request=c,t[1](f)}},"chunk-"+a,a)}},n.O.j=a=>0===e[a];var a=(a,r)=>{var t,o,[c,f,d]=r,i=0;if(c.some(a=>0!==e[a])){for(t in f)n.o(f,t)&&(n.m[t]=f[t]);if(d)var b=d(n)}for(a&&a(r);i<c.length;i++)o=c[i],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return n.O(b)},r=globalThis.webpackChunk_elliemae_pui_logrocket=globalThis.webpackChunk_elliemae_pui_logrocket||[];r.forEach(a.bind(null,0)),r.push=a.bind(null,r.push.bind(r))})()})();
1
+ (()=>{"use strict";var e,a,r,t,o,c={},f={};function n(e){var a=f[e];if(void 0!==a)return a.exports;var r=f[e]={id:e,loaded:!1,exports:{}};return c[e].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}n.m=c,n.c=f,e=[],n.O=(a,r,t,o)=>{if(!r){var c=1/0;for(i=0;i<e.length;i++){for(var[r,t,o]=e[i],f=!0,d=0;d<r.length;d++)(!1&o||c>=o)&&Object.keys(n.O).every(e=>n.O[e](r[d]))?r.splice(d--,1):(f=!1,o<c&&(c=o));if(f){e.splice(i--,1);var b=t();void 0!==b&&(a=b)}}return a}o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,t,o]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a:a}),a},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if("object"==typeof e&&e){if(4&t&&e.__esModule)return e;if(16&t&&"function"==typeof e.then)return e}var o=Object.create(null);n.r(o);var c={};a=a||[null,r({}),r([]),r(r)];for(var f=2&t&&e;("object"==typeof f||"function"==typeof f)&&!~a.indexOf(f);f=r(f))Object.getOwnPropertyNames(f).forEach(a=>c[a]=()=>e[a]);return c.default=()=>e,n.d(o,c),o},n.d=(e,a)=>{for(var r in a)n.o(a,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:a[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((a,r)=>(n.f[r](e,a),a),[])),n.u=e=>"assets/js/"+({295:"51c4ceb1",594:"5e8c322a",2076:"common",3361:"c377a04b",3480:"e376fc56",4319:"211c08f1",4804:"7fcbe1af",5742:"aba21aa0",5754:"acaa8c75",5760:"552a934f",5908:"04ee7372",7098:"a7bd4aaa",8401:"17896441",9048:"a94703ab",9647:"5e95c892"}[e]||e)+"."+{200:"0310889b",295:"6fc4ec7b",483:"18c7d7f8",594:"503d46ea",638:"a021b03c",654:"0e97a121",764:"32783b8e",967:"d428fcf6",1138:"aa8c4e98",1370:"c8be4ee0",2076:"6c804366",2180:"31d6ce39",2327:"251d6533",2706:"74774645",3308:"78e397d4",3361:"2361a76f",3480:"b55759b6",3725:"36fa16ca",3767:"2998632d",3899:"94243d47",4167:"eb3f034b",4319:"f5d0523b",4359:"6536c7a0",4390:"744aab40",4413:"e614d609",4453:"ef8b090c",4632:"aa312ff7",4804:"5999b9e8",4860:"cfa79720",5168:"97fb36dd",5179:"ccfc9ebc",5182:"30f41439",5275:"4ed9ae52",5742:"a5d4e000",5754:"70525e75",5760:"b125f196",5820:"2cd5bf53",5908:"167b6465",6143:"8bf840e9",6340:"eaf6d37a",6376:"13262bdb",6603:"cbc20a0f",6761:"0b26728e",6873:"83ee6c7c",7039:"3ca79f91",7098:"ad524078",7204:"1ce9a9b1",7616:"6501b368",7666:"99e92eb2",7876:"3ac89535",8071:"6922ccd8",8401:"dfa22f5b",8907:"4424af8f",9048:"5c63b074",9647:"2d99be36",9748:"cc3f89d3",9845:"d704e0f2"}[e]+".js",n.miniCssF=e=>{},n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),t={},o="@elliemae/pui-logrocket:",n.l=(e,a,r,c)=>{if(t[e])t[e].push(a);else{var f,d;if(void 0!==r)for(var b=document.getElementsByTagName("script"),i=0;i<b.length;i++){var l=b[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+r){f=l;break}}f||(d=!0,(f=document.createElement("script")).charset="utf-8",n.nc&&f.setAttribute("nonce",n.nc),f.setAttribute("data-webpack",o+r),f.src=e),t[e]=[a];var u=(a,r)=>{f.onerror=f.onload=null,clearTimeout(s);var o=t[e];if(delete t[e],f.parentNode&&f.parentNode.removeChild(f),o&&o.forEach(e=>e(r)),a)return a(r)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=u.bind(null,f.onerror),f.onload=u.bind(null,f.onload),d&&document.head.appendChild(f)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/logrocket/",n.gca=function(e){return e={17896441:"8401","51c4ceb1":"295","5e8c322a":"594",common:"2076",c377a04b:"3361",e376fc56:"3480","211c08f1":"4319","7fcbe1af":"4804",aba21aa0:"5742",acaa8c75:"5754","552a934f":"5760","04ee7372":"5908",a7bd4aaa:"7098",a94703ab:"9048","5e95c892":"9647"}[e]||e,n.p+n.u(e)},(()=>{var e={5354:0,1869:0};n.f.j=(a,r)=>{var t=n.o(e,a)?e[a]:void 0;if(0!==t)if(t)r.push(t[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var o=new Promise((r,o)=>t=e[a]=[r,o]);r.push(t[2]=o);var c=n.p+n.u(a),f=new Error;n.l(c,r=>{if(n.o(e,a)&&(0!==(t=e[a])&&(e[a]=void 0),t)){var o=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;f.message="Loading chunk "+a+" failed.\n("+o+": "+c+")",f.name="ChunkLoadError",f.type=o,f.request=c,t[1](f)}},"chunk-"+a,a)}},n.O.j=a=>0===e[a];var a=(a,r)=>{var t,o,[c,f,d]=r,b=0;if(c.some(a=>0!==e[a])){for(t in f)n.o(f,t)&&(n.m[t]=f[t]);if(d)var i=d(n)}for(a&&a(r);b<c.length;b++)o=c[b],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return n.O(i)},r=globalThis.webpackChunk_elliemae_pui_logrocket=globalThis.webpackChunk_elliemae_pui_logrocket||[];r.forEach(a.bind(null,0)),r.push=a.bind(null,r.push.bind(r))})()})();
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Compliance Requirements | LogRocket</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pui.ice.com/logrocket/compliance"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Compliance Requirements | LogRocket"><meta data-rh="true" name="description" content="Due to wiretapping &amp; privacy laws in certain jurisdictions, it is essential to ensure that our session recording practices comply with local regulations. Below are the key compliance requirements we need to adhere to when using LogRocket for recording user sessions and activities,"><meta data-rh="true" property="og:description" content="Due to wiretapping &amp; privacy laws in certain jurisdictions, it is essential to ensure that our session recording practices comply with local regulations. Below are the key compliance requirements we need to adhere to when using LogRocket for recording user sessions and activities,"><link data-rh="true" rel="icon" href="/logrocket/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pui.ice.com/logrocket/compliance"><link data-rh="true" rel="alternate" href="https://pui.ice.com/logrocket/compliance" hreflang="en"><link data-rh="true" rel="alternate" href="https://pui.ice.com/logrocket/compliance" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Compliance Requirements","item":"https://pui.ice.com/logrocket/compliance"}]}</script><link rel="stylesheet" href="/logrocket/assets/css/styles.48d5ef50.css">
7
- <script src="/logrocket/assets/js/runtime~main.48776a7a.js" defer="defer"></script>
8
- <script src="/logrocket/assets/js/main.82478de3.js" defer="defer"></script>
7
+ <script src="/logrocket/assets/js/runtime~main.f563dceb.js" defer="defer"></script>
8
+ <script src="/logrocket/assets/js/main.d473335e.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Getting Started | LogRocket</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pui.ice.com/logrocket/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Getting Started | LogRocket"><meta data-rh="true" name="description" content="UI Platform LogRocket library standardizes the way we integrate LogRocket into our applications."><meta data-rh="true" property="og:description" content="UI Platform LogRocket library standardizes the way we integrate LogRocket into our applications."><link data-rh="true" rel="icon" href="/logrocket/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pui.ice.com/logrocket/"><link data-rh="true" rel="alternate" href="https://pui.ice.com/logrocket/" hreflang="en"><link data-rh="true" rel="alternate" href="https://pui.ice.com/logrocket/" hreflang="x-default"><script data-rh="true">function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container";n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/logrocket/</span> </p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),o=window.location.pathname,s="/"===o.substr(-1)?o:o+"/";e.innerHTML=s}document.addEventListener("DOMContentLoaded",function(){void 0===window.docusaurus&&insertBanner()})</script><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Getting Started","item":"https://pui.ice.com/logrocket/"}]}</script><link rel="stylesheet" href="/logrocket/assets/css/styles.48d5ef50.css">
7
- <script src="/logrocket/assets/js/runtime~main.48776a7a.js" defer="defer"></script>
8
- <script src="/logrocket/assets/js/main.82478de3.js" defer="defer"></script>
7
+ <script src="/logrocket/assets/js/runtime~main.f563dceb.js" defer="defer"></script>
8
+ <script src="/logrocket/assets/js/main.d473335e.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="generator" content="Docusaurus v3.9.2">
6
6
  <title data-rh="true">Usage Guide | LogRocket</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pui.ice.com/logrocket/usage-guide"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Usage Guide | LogRocket"><meta data-rh="true" name="description" content="UI Platform LogRocket library standardizes the way we integrate LogRocket into our applications."><meta data-rh="true" property="og:description" content="UI Platform LogRocket library standardizes the way we integrate LogRocket into our applications."><link data-rh="true" rel="icon" href="/logrocket/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pui.ice.com/logrocket/usage-guide"><link data-rh="true" rel="alternate" href="https://pui.ice.com/logrocket/usage-guide" hreflang="en"><link data-rh="true" rel="alternate" href="https://pui.ice.com/logrocket/usage-guide" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Usage Guide","item":"https://pui.ice.com/logrocket/usage-guide"}]}</script><link rel="stylesheet" href="/logrocket/assets/css/styles.48d5ef50.css">
7
- <script src="/logrocket/assets/js/runtime~main.48776a7a.js" defer="defer"></script>
8
- <script src="/logrocket/assets/js/main.82478de3.js" defer="defer"></script>
7
+ <script src="/logrocket/assets/js/runtime~main.f563dceb.js" defer="defer"></script>
8
+ <script src="/logrocket/assets/js/main.d473335e.js" defer="defer"></script>
9
9
  </head>
10
10
  <body class="navigation-with-keyboard">
11
11
  <svg style="display: none;"><defs>
@@ -32,7 +32,7 @@
32
32
  <li class=""><code>appId</code> (string): LogRocket application ID allocated to the product.</li>
33
33
  <li class=""><code>enable</code> (boolean): Flag to enable or disable LogRocket in the microapp. Defaults to <code>true</code>. If set to <code>false</code>, LogRocket will not be initialized even if <code>initLogRocket</code> is called. This can be useful for disabling LogRocket in certain environments (e.g., development or staging).</li>
34
34
  <li class=""><code>localhostEnable</code> (boolean): Flag to enable LogRocket when running on localhost. Defaults to <code>false</code>. When set to <code>true</code>, LogRocket will be enabled on localhost even if the <code>LOGROCKET_ENABLE_ON_LOCALHOST</code> environment variable is not set. This is useful for local development and testing.</li>
35
- <li class=""><code>childDomains</code> (array of strings): List of domains of child micro applications (e.g., iframes). Only include domains for cross-origin child microapps.</li>
35
+ <li class=""><code>childDomains</code> (array of strings): List of cross-origin child micro application origins (e.g., iframes) the parent should link sessions with. <strong>Each entry must be a full origin including protocol</strong> (e.g. <code>https://child.example.com</code>) — bare hostnames like <code>child.example.com</code> are rejected with a console warning because LogRocket matches each candidate frame&#x27;s <code>window.location.origin</code> against this list. When this option is non-empty the LogRocket SDK enters &quot;cross-origin mode&quot; and only stitches frames whose origin appears in the list, including the parent&#x27;s own origin if it has same-origin children. The library automatically appends the current window&#x27;s <code>origin</code> to the list (deduplicated) so same-origin children continue to link alongside cross-origin ones; you only need to supply the cross-origin entries.</li>
36
36
  <li class=""><code>parentDomain</code> (string): Parent domain of the hosting application. library automatically detects parent domain for cross-origin iframes.</li>
37
37
  <li class=""><code>rootHostname</code> (string): Cookie scope for stitching sessions across subdomains of the <strong>same site</strong> (see <a href="https://docs.logrocket.com/reference/roothostname" target="_blank" rel="noopener noreferrer" class="">LogRocket docs</a>). Auto-detected from the current window&#x27;s hostname (last two segments, e.g. <code>beta.encompass.elliemae.io</code> → <code>.elliemae.io</code>), so same-site iframes converge on the same value automatically. Set this option to override — accepted only when it ends with the auto-detected value (e.g. narrow <code>.elliemae.io</code> to <code>.shared.elliemae.io</code>, or work around multi-segment public suffixes like <code>.co.uk</code> by passing <code>.example.co.uk</code>). Cross-<strong>site</strong> frame linking uses <code>parentDomain</code>/<code>childDomains</code>, not this option.</li>
38
38
  </ul>
@@ -147,9 +147,18 @@
147
147
  <li class=""><strong><code>analyticsConsent</code></strong>: Set to <code>&#x27;true&#x27;</code> if user has consented to functional cookies, <code>&#x27;false&#x27;</code> otherwise</li>
148
148
  <li class=""><strong><code>lrEnabled</code></strong>: Set to <code>&#x27;true&#x27;</code> if LogRocket is enabled in the app, <code>&#x27;false&#x27;</code> otherwise</li>
149
149
  <li class=""><strong><code>lrAppId</code></strong>: The LogRocket application ID being used in the app</li>
150
+ <li class=""><strong><code>lrParentOrigin</code></strong>: The parent window&#x27;s <code>origin</code> (e.g. <code>https://parent-app.example.com</code>). The child reads this to populate LogRocket&#x27;s <code>parentDomain</code> option, which is required for <code>postMessage</code>-based session linking between cross-origin frames. This avoids relying on <code>window.parent.location.origin</code> (blocked cross-origin) or <code>document.referrer</code> (often stripped by <code>Referrer-Policy</code>). Only consumed when the value is a valid origin; tampered values are ignored.</li>
150
151
  </ul>
151
152
  <p><strong>Important</strong>: After <code>initLogRocket</code> completes, <code>buildLogRocketQueryParams</code> returns the consent and enabled state captured at initialization time (stored in <code>window.emui.lrSessionRecordingConsent</code> and <code>window.emui.lrEnabled</code>). This ensures child iframes always reflect the parent app&#x27;s actual initialization state, even if the user changes consent preferences after initialization. If called before <code>initLogRocket</code>, it evaluates the current live state as a fallback.</p>
152
- <div class="language-javascript codeBlockContainer_hfT5 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_7tLg"><pre tabindex="0" class="prism-code language-javascript codeBlock_jGqy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_reRH"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// parent microapplication</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> buildLogRocketQueryParams </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;@elliemae/pui-logrocket&#x27;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> urlParams </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">buildLogRocketQueryParams</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// urlParams: &quot;analyticsConsent=true&amp;lrEnabled=true&amp;lrAppId=your-app-id&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> childUrl </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">https://child-app.example.com?</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">urlParams</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// launch guest application with childUrl using SSF V2 / App SDK GuestMicroapp</span><br></span></code></pre></div></div>
153
+ <div class="language-javascript codeBlockContainer_hfT5 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_7tLg"><pre tabindex="0" class="prism-code language-javascript codeBlock_jGqy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_reRH"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// parent microapplication</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> buildLogRocketQueryParams </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;@elliemae/pui-logrocket&#x27;</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> urlParams </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">buildLogRocketQueryParams</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// urlParams: &quot;analyticsConsent=true&amp;lrEnabled=true&amp;lrAppId=your-app-id&amp;lrParentOrigin=https%3A%2F%2Fparent-app.example.com&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> childUrl </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">https://child-app.example.com?</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">urlParams</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// launch guest application with childUrl using SSF V2 / App SDK GuestMicroapp</span><br></span></code></pre></div></div>
154
+ <h3 class="anchor anchorTargetStickyNavbar_UXZL" id="parent-domain-resolution-in-the-child">Parent Domain Resolution in the Child<a href="#parent-domain-resolution-in-the-child" class="hash-link" aria-label="Direct link to Parent Domain Resolution in the Child" title="Direct link to Parent Domain Resolution in the Child" translate="no">​</a></h3>
155
+ <p>The child uses the following precedence to resolve LogRocket&#x27;s <code>parentDomain</code> option (used for cross-origin postMessage session linking):</p>
156
+ <ol>
157
+ <li class=""><strong><code>lrParentOrigin</code></strong> query parameter on the child&#x27;s URL (or on <code>window.frameElement.src</code>) — set by the parent via <code>buildLogRocketQueryParams</code>. This is the only source that works reliably cross-origin and should be the primary mechanism.</li>
158
+ <li class=""><strong><code>window.parent.location.origin</code></strong> — works only when the parent is same-origin.</li>
159
+ <li class=""><strong><code>document.referrer</code></strong> — best-effort fallback; may be stripped by <code>Referrer-Policy</code> to an opaque value or empty string.</li>
160
+ </ol>
161
+ <p>If none of the above produce a valid origin (or all match the child&#x27;s own origin), <code>parentDomain</code> is left unset and LogRocket treats the page as top-level.</p>
153
162
  <h3 class="anchor anchorTargetStickyNavbar_UXZL" id="support-for-legacy-angularjs-microapps-in-iframes">Support for Legacy AngularJS Microapps in Iframes<a href="#support-for-legacy-angularjs-microapps-in-iframes" class="hash-link" aria-label="Direct link to Support for Legacy AngularJS Microapps in Iframes" title="Direct link to Support for Legacy AngularJS Microapps in Iframes" translate="no">​</a></h3>
154
163
  <p>For older AngularJS-based microapplications running inside iframes, the library automatically reads the <code>analyticsConsent</code> parameter from the iframe&#x27;s <code>src</code> URL. This provides backward compatibility for legacy microapps that cannot directly access parent window variables or URL parameters.</p>
155
164
  <p><strong>Consent Check Priority</strong> (from highest to lowest):</p>
@@ -161,6 +170,6 @@
161
170
  </ol>
162
171
  <p>This means if a microapp is running in an iframe and OneTrust is not available, it will check its own URL first, then fall back to checking the iframe element&#x27;s src attribute for the <code>analyticsConsent</code> parameter.</p>
163
172
  <p><strong>Example for legacy iframe-based microapps:</strong></p>
164
- <div class="language-javascript codeBlockContainer_hfT5 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_7tLg"><pre tabindex="0" class="prism-code language-javascript codeBlock_jGqy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_reRH"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// The iframe&#x27;s src URL will be checked automatically</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// No additional code needed in the child microapp</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">iframe src</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">&quot;https://legacy-app.com/app?analyticsConsent=true&amp;lrAppId=my-app&quot;</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">iframe</span><span class="token operator" style="color:#393A34">&gt;</span><br></span></code></pre></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_x8Bu"><a href="https://git.elliemae.io/platform-ui/pui-logrocket.git/docs/usage-guide.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_xpf_" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_QUoF"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/logrocket/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Getting Started</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/logrocket/compliance"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Compliance Requirements</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_YLGy thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#initialization" class="table-of-contents__link toc-highlight">Initialization</a><ul><li><a href="#preventing-duplicate-initialization" class="table-of-contents__link toc-highlight">Preventing Duplicate Initialization</a></li><li><a href="#window-variables" class="table-of-contents__link toc-highlight">Window Variables</a></li></ul></li><li><a href="#proxying-logrocket-calls-through-cdn-domain" class="table-of-contents__link toc-highlight">Proxying LogRocket Calls Through CDN Domain</a><ul><li><a href="#how-it-works" class="table-of-contents__link toc-highlight">How It Works</a></li><li><a href="#cdn-domain-detection" class="table-of-contents__link toc-highlight">CDN Domain Detection</a></li><li><a href="#setting-cdn-domain-for-bundled-npm-usage" class="table-of-contents__link toc-highlight">Setting CDN Domain for Bundled (npm) Usage</a></li><li><a href="#verifying-proxying-in-browser-devtools" class="table-of-contents__link toc-highlight">Verifying Proxying in Browser DevTools</a></li></ul></li><li><a href="#testing-logrocket-integration-from-localhost" class="table-of-contents__link toc-highlight">Testing LogRocket Integration from Localhost</a><ul><li><a href="#option-1-environment-variable" class="table-of-contents__link toc-highlight">Option 1: Environment Variable</a></li><li><a href="#option-2-configuration-flag" class="table-of-contents__link toc-highlight">Option 2: Configuration Flag</a></li></ul></li><li><a href="#controlling-session-recording-based-on-user-consent" class="table-of-contents__link toc-highlight">Controlling Session Recording Based on User Consent</a><ul><li><a href="#two-level-consent-control" class="table-of-contents__link toc-highlight">Two-Level Consent Control</a></li><li><a href="#onetrust-event-based-integration" class="table-of-contents__link toc-highlight">OneTrust Event-Based Integration</a></li><li><a href="#overriding-session-recording-consent-check" class="table-of-contents__link toc-highlight">Overriding Session Recording Consent Check</a></li></ul></li><li><a href="#sharing-information-with-child-micro-applications" class="table-of-contents__link toc-highlight">Sharing information with child micro applications</a><ul><li><a href="#support-for-legacy-angularjs-microapps-in-iframes" class="table-of-contents__link toc-highlight">Support for Legacy AngularJS Microapps in Iframes</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/logrocket/">Getting Started</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://icemortgagetechnology.slack.com/archives/C01M49EGP6Z" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_kEbG"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://git.elliemae.io/platform-ui/pui-logrocket.git" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_kEbG"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2026 ICE.</div></div></div></footer></div>
173
+ <div class="language-javascript codeBlockContainer_hfT5 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_7tLg"><pre tabindex="0" class="prism-code language-javascript codeBlock_jGqy thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_reRH"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// The iframe&#x27;s src URL will be checked automatically</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// No additional code needed in the child microapp</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">iframe src</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">&quot;https://legacy-app.com/app?analyticsConsent=true&amp;lrAppId=my-app&quot;</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">iframe</span><span class="token operator" style="color:#393A34">&gt;</span><br></span></code></pre></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_x8Bu"><a href="https://git.elliemae.io/platform-ui/pui-logrocket.git/docs/usage-guide.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_xpf_" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_QUoF"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/logrocket/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Getting Started</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/logrocket/compliance"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Compliance Requirements</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_YLGy thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#initialization" class="table-of-contents__link toc-highlight">Initialization</a><ul><li><a href="#preventing-duplicate-initialization" class="table-of-contents__link toc-highlight">Preventing Duplicate Initialization</a></li><li><a href="#window-variables" class="table-of-contents__link toc-highlight">Window Variables</a></li></ul></li><li><a href="#proxying-logrocket-calls-through-cdn-domain" class="table-of-contents__link toc-highlight">Proxying LogRocket Calls Through CDN Domain</a><ul><li><a href="#how-it-works" class="table-of-contents__link toc-highlight">How It Works</a></li><li><a href="#cdn-domain-detection" class="table-of-contents__link toc-highlight">CDN Domain Detection</a></li><li><a href="#setting-cdn-domain-for-bundled-npm-usage" class="table-of-contents__link toc-highlight">Setting CDN Domain for Bundled (npm) Usage</a></li><li><a href="#verifying-proxying-in-browser-devtools" class="table-of-contents__link toc-highlight">Verifying Proxying in Browser DevTools</a></li></ul></li><li><a href="#testing-logrocket-integration-from-localhost" class="table-of-contents__link toc-highlight">Testing LogRocket Integration from Localhost</a><ul><li><a href="#option-1-environment-variable" class="table-of-contents__link toc-highlight">Option 1: Environment Variable</a></li><li><a href="#option-2-configuration-flag" class="table-of-contents__link toc-highlight">Option 2: Configuration Flag</a></li></ul></li><li><a href="#controlling-session-recording-based-on-user-consent" class="table-of-contents__link toc-highlight">Controlling Session Recording Based on User Consent</a><ul><li><a href="#two-level-consent-control" class="table-of-contents__link toc-highlight">Two-Level Consent Control</a></li><li><a href="#onetrust-event-based-integration" class="table-of-contents__link toc-highlight">OneTrust Event-Based Integration</a></li><li><a href="#overriding-session-recording-consent-check" class="table-of-contents__link toc-highlight">Overriding Session Recording Consent Check</a></li></ul></li><li><a href="#sharing-information-with-child-micro-applications" class="table-of-contents__link toc-highlight">Sharing information with child micro applications</a><ul><li><a href="#parent-domain-resolution-in-the-child" class="table-of-contents__link toc-highlight">Parent Domain Resolution in the Child</a></li><li><a href="#support-for-legacy-angularjs-microapps-in-iframes" class="table-of-contents__link toc-highlight">Support for Legacy AngularJS Microapps in Iframes</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/logrocket/">Getting Started</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://icemortgagetechnology.slack.com/archives/C01M49EGP6Z" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_kEbG"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://git.elliemae.io/platform-ui/pui-logrocket.git" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_kEbG"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2026 ICE.</div></div></div></footer></div>
165
174
  </body>
166
175
  </html>
@@ -36,6 +36,7 @@ module.exports = __toCommonJS(logrocket_exports);
36
36
  var import_setup = __toESM(require("logrocket/setup"));
37
37
  var import_logrocket_react = __toESM(require("logrocket-react"));
38
38
  var import_utils = require("./utils.js");
39
+ const import_meta = {};
39
40
  const setupLogRocketReact = import_logrocket_react.default.default || import_logrocket_react.default;
40
41
  const setup = import_setup.default.default || import_setup.default;
41
42
  window.emui = window.emui || {};
@@ -49,6 +50,12 @@ let scriptSrc = null;
49
50
  if (typeof document !== "undefined" && document.currentScript) {
50
51
  scriptSrc = document.currentScript.src;
51
52
  }
53
+ if (!scriptSrc) {
54
+ try {
55
+ scriptSrc = typeof import_meta !== "undefined" ? import_meta.url : null;
56
+ } catch {
57
+ }
58
+ }
52
59
  if (scriptSrc && /(cdn\.mortgagetech\.(.*\.)?ice\.com|\/\/localhost[\d:/])/.test(scriptSrc)) {
53
60
  try {
54
61
  const url = new URL(scriptSrc);
@@ -66,15 +73,39 @@ const LogRocketLib = window.emui.logRocket || setup({
66
73
  });
67
74
  let lrAppId = null;
68
75
  const getLogger = () => window.emui?.logger ?? console;
69
- const getParentDomain = () => {
70
- let parentDomain = null;
76
+ const isValidOrigin = (value) => {
71
77
  try {
72
- parentDomain = window.parent.location.origin;
78
+ return new URL(value).origin === value;
73
79
  } catch {
80
+ return false;
81
+ }
82
+ };
83
+ const readValidParentOrigin = (search) => {
84
+ const value = new URLSearchParams(search).get("lrParentOrigin");
85
+ return value && isValidOrigin(value) ? value : null;
86
+ };
87
+ const getParentOriginFromQuery = () => {
88
+ const fromUrl = readValidParentOrigin(window.location.search);
89
+ if (fromUrl) return fromUrl;
90
+ if (window.frameElement) {
91
+ try {
92
+ const frameUrl = new URL(window.frameElement.src);
93
+ return readValidParentOrigin(frameUrl.search);
94
+ } catch {
95
+ }
96
+ }
97
+ return null;
98
+ };
99
+ const getParentDomain = () => {
100
+ let parentDomain = getParentOriginFromQuery();
101
+ if (!parentDomain) {
74
102
  try {
75
- const url = new URL(document.referrer);
76
- parentDomain = url.origin;
103
+ parentDomain = window.parent.location.origin;
77
104
  } catch {
105
+ try {
106
+ parentDomain = new URL(document.referrer).origin;
107
+ } catch {
108
+ }
78
109
  }
79
110
  }
80
111
  if (parentDomain === window.location.origin) {
@@ -82,12 +113,25 @@ const getParentDomain = () => {
82
113
  }
83
114
  return parentDomain;
84
115
  };
85
- const removeCurrentWindowDomain = (domains) => {
116
+ const ensureCurrentWindowDomainIncluded = (domains) => {
86
117
  if (!domains || domains.length === 0) return null;
87
- const filtered = domains.filter(
88
- (domain) => domain !== window.location.origin
118
+ const { valid, invalid } = domains.reduce(
119
+ (acc, entry) => {
120
+ (isValidOrigin(entry) ? acc.valid : acc.invalid).push(entry);
121
+ return acc;
122
+ },
123
+ { valid: [], invalid: [] }
89
124
  );
90
- return filtered.length > 0 ? filtered : null;
125
+ if (invalid.length > 0) {
126
+ const dropped = invalid.join(", ");
127
+ getLogger().warn(
128
+ `LogRocket childDomains entries dropped (must be full origins like "https://example.com"): ${dropped}`
129
+ );
130
+ }
131
+ if (valid.length === 0) return null;
132
+ const currentOrigin = window.location.origin;
133
+ if (valid.includes(currentOrigin)) return valid;
134
+ return [...valid, currentOrigin];
91
135
  };
92
136
  const ROOT_HOSTNAME_RE = /[^.]+\.[^.]+$/;
93
137
  const getRootHostname = () => {
@@ -106,7 +150,7 @@ const getRootHostname = () => {
106
150
  return auto;
107
151
  };
108
152
  const getDefaultOptions = () => {
109
- const filteredChildDomains = removeCurrentWindowDomain(
153
+ const filteredChildDomains = ensureCurrentWindowDomainIncluded(
110
154
  window.emui?.logRocketConfig?.childDomains
111
155
  );
112
156
  const parentDomain = window.emui?.logRocketConfig?.parentDomain ?? getParentDomain();
@@ -223,8 +267,17 @@ const buildLogRocketQueryParams = () => {
223
267
  urlParams.append("analyticsConsent", consent ? "true" : "false");
224
268
  urlParams.append("lrEnabled", enabled ? "true" : "false");
225
269
  urlParams.append("lrAppId", getLRAppId() ?? "");
270
+ urlParams.append("lrParentOrigin", window.location.origin);
226
271
  return urlParams.toString();
227
272
  };
273
+ const logInitOutcome = (sessionRecordingEnabled) => {
274
+ getLogger().info(
275
+ `LogRocket initialized ${sessionRecordingEnabled ? "with" : "without"} session recording`
276
+ );
277
+ LogRocketLib.getSessionURL((sessionURL) => {
278
+ getLogger().info(`LogRocket session URL: ${sessionURL}`);
279
+ });
280
+ };
228
281
  const init = (options) => {
229
282
  const { appId, isReact = true, ...rest } = options ?? {};
230
283
  lrAppId = getLRAppId(appId);
@@ -254,9 +307,7 @@ const init = (options) => {
254
307
  if (isReact) {
255
308
  setupLogRocketReact(LogRocketLib);
256
309
  }
257
- getLogger().info(
258
- `LogRocket initialized ${finalLogRocketOptions.dom?.isEnabled ? "with" : "without"} session recording`
259
- );
310
+ logInitOutcome(finalLogRocketOptions.dom?.isEnabled === true);
260
311
  };
261
312
  const hasSeenBanner = () => {
262
313
  const m = document.cookie.match(/(^|;\s*)OptanonAlertBoxClosed=([^;]+)/);
@@ -14,6 +14,12 @@ let scriptSrc = null;
14
14
  if (typeof document !== "undefined" && document.currentScript) {
15
15
  scriptSrc = document.currentScript.src;
16
16
  }
17
+ if (!scriptSrc) {
18
+ try {
19
+ scriptSrc = typeof import.meta !== "undefined" ? import.meta.url : null;
20
+ } catch {
21
+ }
22
+ }
17
23
  if (scriptSrc && /(cdn\.mortgagetech\.(.*\.)?ice\.com|\/\/localhost[\d:/])/.test(scriptSrc)) {
18
24
  try {
19
25
  const url = new URL(scriptSrc);
@@ -31,15 +37,39 @@ const LogRocketLib = window.emui.logRocket || setup({
31
37
  });
32
38
  let lrAppId = null;
33
39
  const getLogger = () => window.emui?.logger ?? console;
34
- const getParentDomain = () => {
35
- let parentDomain = null;
40
+ const isValidOrigin = (value) => {
36
41
  try {
37
- parentDomain = window.parent.location.origin;
42
+ return new URL(value).origin === value;
38
43
  } catch {
44
+ return false;
45
+ }
46
+ };
47
+ const readValidParentOrigin = (search) => {
48
+ const value = new URLSearchParams(search).get("lrParentOrigin");
49
+ return value && isValidOrigin(value) ? value : null;
50
+ };
51
+ const getParentOriginFromQuery = () => {
52
+ const fromUrl = readValidParentOrigin(window.location.search);
53
+ if (fromUrl) return fromUrl;
54
+ if (window.frameElement) {
55
+ try {
56
+ const frameUrl = new URL(window.frameElement.src);
57
+ return readValidParentOrigin(frameUrl.search);
58
+ } catch {
59
+ }
60
+ }
61
+ return null;
62
+ };
63
+ const getParentDomain = () => {
64
+ let parentDomain = getParentOriginFromQuery();
65
+ if (!parentDomain) {
39
66
  try {
40
- const url = new URL(document.referrer);
41
- parentDomain = url.origin;
67
+ parentDomain = window.parent.location.origin;
42
68
  } catch {
69
+ try {
70
+ parentDomain = new URL(document.referrer).origin;
71
+ } catch {
72
+ }
43
73
  }
44
74
  }
45
75
  if (parentDomain === window.location.origin) {
@@ -47,12 +77,25 @@ const getParentDomain = () => {
47
77
  }
48
78
  return parentDomain;
49
79
  };
50
- const removeCurrentWindowDomain = (domains) => {
80
+ const ensureCurrentWindowDomainIncluded = (domains) => {
51
81
  if (!domains || domains.length === 0) return null;
52
- const filtered = domains.filter(
53
- (domain) => domain !== window.location.origin
82
+ const { valid, invalid } = domains.reduce(
83
+ (acc, entry) => {
84
+ (isValidOrigin(entry) ? acc.valid : acc.invalid).push(entry);
85
+ return acc;
86
+ },
87
+ { valid: [], invalid: [] }
54
88
  );
55
- return filtered.length > 0 ? filtered : null;
89
+ if (invalid.length > 0) {
90
+ const dropped = invalid.join(", ");
91
+ getLogger().warn(
92
+ `LogRocket childDomains entries dropped (must be full origins like "https://example.com"): ${dropped}`
93
+ );
94
+ }
95
+ if (valid.length === 0) return null;
96
+ const currentOrigin = window.location.origin;
97
+ if (valid.includes(currentOrigin)) return valid;
98
+ return [...valid, currentOrigin];
56
99
  };
57
100
  const ROOT_HOSTNAME_RE = /[^.]+\.[^.]+$/;
58
101
  const getRootHostname = () => {
@@ -71,7 +114,7 @@ const getRootHostname = () => {
71
114
  return auto;
72
115
  };
73
116
  const getDefaultOptions = () => {
74
- const filteredChildDomains = removeCurrentWindowDomain(
117
+ const filteredChildDomains = ensureCurrentWindowDomainIncluded(
75
118
  window.emui?.logRocketConfig?.childDomains
76
119
  );
77
120
  const parentDomain = window.emui?.logRocketConfig?.parentDomain ?? getParentDomain();
@@ -188,8 +231,17 @@ const buildLogRocketQueryParams = () => {
188
231
  urlParams.append("analyticsConsent", consent ? "true" : "false");
189
232
  urlParams.append("lrEnabled", enabled ? "true" : "false");
190
233
  urlParams.append("lrAppId", getLRAppId() ?? "");
234
+ urlParams.append("lrParentOrigin", window.location.origin);
191
235
  return urlParams.toString();
192
236
  };
237
+ const logInitOutcome = (sessionRecordingEnabled) => {
238
+ getLogger().info(
239
+ `LogRocket initialized ${sessionRecordingEnabled ? "with" : "without"} session recording`
240
+ );
241
+ LogRocketLib.getSessionURL((sessionURL) => {
242
+ getLogger().info(`LogRocket session URL: ${sessionURL}`);
243
+ });
244
+ };
193
245
  const init = (options) => {
194
246
  const { appId, isReact = true, ...rest } = options ?? {};
195
247
  lrAppId = getLRAppId(appId);
@@ -219,9 +271,7 @@ const init = (options) => {
219
271
  if (isReact) {
220
272
  setupLogRocketReact(LogRocketLib);
221
273
  }
222
- getLogger().info(
223
- `LogRocket initialized ${finalLogRocketOptions.dom?.isEnabled ? "with" : "without"} session recording`
224
- );
274
+ logInitOutcome(finalLogRocketOptions.dom?.isEnabled === true);
225
275
  };
226
276
  const hasSeenBanner = () => {
227
277
  const m = document.cookie.match(/(^|;\s*)OptanonAlertBoxClosed=([^;]+)/);
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>LogRocket Test</title><script defer="defer" src="js/emuiLogrocket.aa8c514c26abd452b96f.js"></script></head><body><h1>LogRocket Test</h1><button id="testButton">Click me</button></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>LogRocket Test</title><script defer="defer" src="js/emuiLogrocket.a94d5254f9e9cd719b0a.js"></script></head><body><h1>LogRocket Test</h1><button id="testButton">Click me</button></body></html>