@manototh/do11y 0.1.2 → 0.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.
- package/dist/do11y.js +1020 -800
- package/dist/do11y.min.js +1 -1
- package/dist/instrumentation/index.js +1293 -0
- package/examples/do11y-config.example.js +1 -1
- package/package.json +29 -6
package/dist/do11y.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){let e=`browser.do11y.referrer_category`,t=`browser.do11y.ai_platform`,n=`browser.do11y.scroll.threshold`,r=`browser.do11y.scroll.percent`,i=`browser.do11y.section.heading`,a=`browser.do11y.section.heading_level`,o=`browser.do11y.section.visible_seconds`,s=`browser.do11y.expand.summary`,c=`browser.do11y.expand.action`,l=`browser.do11y.expand.section`,u=`browser.do11y.scroll_depth`,d=`browser.do11y.search_opened`,f=`browser.do11y.section_visible`,p=`browser.do11y.expand_collapse`,m=`0.1.2`,h=!!window.__do11yInitialized;window.__do11yInitialized=!0;let g=window.self!==window.top;g&&!h&&(window.__do11yInitialized=!1);let _={destination:`supabase`,supabaseUrl:``,supabaseKey:``,supabaseTable:`do11y_events`,endpoint:``,headers:{},bodyTransform:void 0,otelSdkEndpoint:``,otelSdkHeaders:{},otelSdkServiceName:`do11y`,otelSdkResourceAttributes:{},otelSdkCdnUrl:`https://esm.sh/`,debug:!1,flushInterval:5e3,maxBatchSize:10,trackOutboundLinks:!0,trackInternalLinks:!0,trackScrollDepth:!0,scrollThresholds:[25,50,75,90],allowedDomains:null,respectDNT:!0,maxRetries:2,retryDelay:1e3,rateLimitMs:100,framework:`mintlify`,trackSectionVisibility:!0,sectionVisibleThreshold:3,trackTabSwitches:!0,trackTocClicks:!0,trackExpandCollapse:!0,trackFeedback:!0,tabContainerSelector:null,tocSelector:null,feedbackSelector:null,searchSelector:null,copyButtonSelector:null,codeBlockSelector:null,navigationSelector:null,footerSelector:null,contentSelector:null,useOtelBrowserInstrumentations:!1,testRunId:void 0,testFramework:void 0},v={mintlify:{searchSelector:`#search-bar-entry, #search-bar-entry-mobile, [class*="search"]`,copyButtonSelector:`button[class*="copy"], button[aria-label*="copy" i]`,codeBlockSelector:`pre, [class*="code"]`,navigationSelector:`nav, [role="navigation"], #navbar, #sidebar, [class*="nav"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], [class*="footer"]`,contentSelector:`main, article, [role="main"], [class*="content"]`,tabContainerSelector:`tabs, [role="tablist"], [class*="tab"]`,tocSelector:`#table-of-contents, [data-testid="table-of-contents"], [class*="table-of-contents"], [class*="toc"]`,feedbackSelector:`feedback-toolbar, #feedback-thumbs-up, #feedback-thumbs-down, [class*="feedback"], [class*="helpful"]`},docusaurus:{searchSelector:`.DocSearch, .DocSearch-Button`,copyButtonSelector:`button.clean-btn[aria-label*="copy" i], button[class*="copyButton"]`,codeBlockSelector:`pre, [class*="code"]`,navigationSelector:`nav, [role="navigation"], .navbar, .sidebar, [class*="nav"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], [class*="footer"]`,contentSelector:`main, article, [role="main"], [class*="content"]`,tabContainerSelector:`.tabs[role="tablist"], [class*="tabs"]`,tocSelector:`.table-of-contents, [class*="toc"]`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},nextra:{searchSelector:`.nextra-search input, input[placeholder*="search" i], button[aria-label*="search" i]`,copyButtonSelector:`button[class*="copy"], button[aria-label*="copy" i], button[title*="copy" i]`,codeBlockSelector:`pre, [class*="code"]`,navigationSelector:`nav, [role="navigation"], [class*="nav"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], [class*="footer"]`,contentSelector:`main, article, [role="main"], [class*="content"]`,tabContainerSelector:`[role="tablist"], [class*="tab"]`,tocSelector:`.nextra-toc, [class*="toc"]`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},"mkdocs-material":{searchSelector:`.md-search__input`,copyButtonSelector:`.md-clipboard, .md-code__button[title="Copy to clipboard"]`,codeBlockSelector:`pre, code, [class*="code"]`,navigationSelector:`nav, [role="navigation"], .md-nav, .md-sidebar`,footerSelector:`footer, [role="contentinfo"], .md-footer`,contentSelector:`main, article, [role="main"], .md-content`,tabContainerSelector:`.tabbed-labels, .md-typeset .tabbed-set`,tocSelector:`.md-sidebar--secondary .md-nav, [class*="toc"]`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},vitepress:{searchSelector:`.VPNavBarSearch button, .VPNavBarSearchButton, #local-search`,copyButtonSelector:`button.copy, .vp-code-copy, button.copy[title*="Copy"]`,codeBlockSelector:`div[class*="language-"], pre, [class*="code"]`,navigationSelector:`nav, [role="navigation"], .VPNav, .VPSidebar, [class*="nav"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], .VPFooter, [class*="footer"]`,contentSelector:`main, article, [role="main"], .VPContent, [class*="content"]`,tabContainerSelector:`.vp-code-group .tabs, [role="tablist"]`,tocSelector:`.VPDocAsideOutline, .VPLocalNavOutlineDropdown, a.outline-link`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},starlight:{searchSelector:`site-search button[data-open-modal], sl-doc-search .DocSearch-Button, button[aria-label*="search" i]`,copyButtonSelector:`.expressive-code .copy button, .copy button[data-code]`,codeBlockSelector:`.expressive-code pre, pre`,navigationSelector:`nav, [role="navigation"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], [class*="footer"]`,contentSelector:`main, .sl-markdown-content, [role="main"]`,tabContainerSelector:`starlight-tabs [role="tablist"], [role="tablist"]`,tocSelector:`.right-sidebar-panel, starlight-toc, mobile-starlight-toc`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},docsy:{searchSelector:`.td-search input, .td-search__input, #docsearch-0, #docsearch-1`,copyButtonSelector:`button[aria-label*="copy" i], button[title*="copy" i], .td-click-to-copy`,codeBlockSelector:`.highlight, pre.chroma, pre`,navigationSelector:`nav, [role="navigation"], .td-sidebar, .td-navbar, [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], .td-footer, [class*="footer"]`,contentSelector:`main, article, [role="main"], .td-content, [class*="content"]`,tabContainerSelector:`.nav-tabs[role="tablist"], [role="tablist"], .tab-content`,tocSelector:`.td-toc, nav[id="TableOfContents"], [class*="toc"]`,feedbackSelector:`.feedback--answer, [class*="feedback"], [class*="helpful"]`}},y=[`searchSelector`,`copyButtonSelector`,`codeBlockSelector`,`navigationSelector`,`footerSelector`,`contentSelector`,`tabContainerSelector`,`tocSelector`,`feedbackSelector`];function ee(){let e=v[_.framework];e?y.forEach(t=>{_[t]||(_[t]=e[t])}):_.framework!==`custom`&&_.debug&&console.warn(`[Do11y] Unknown framework "${_.framework}". Falling back to generic selectors. Supported: `+Object.keys(v).join(`, `)+`, custom`);let t=v.mintlify;t&&y.forEach(e=>{_[e]||(_[e]=t[e])})}function te(){if(_.respectDNT&&(navigator.doNotTrack===`1`||navigator.doNotTrack===`yes`||window.doNotTrack===`1`))return _.debug&&console.log(`[Do11y] Disabled: Do Not Track is enabled`),!0;if(_.allowedDomains&&_.allowedDomains.length>0){let e=window.location.hostname;if(!_.allowedDomains.some(t=>e===t||e.endsWith(`.`+t)))return _.debug&&console.log(`[Do11y] Disabled: Domain not allowed:`,e),!0}return!1}function b(e){if(!e||typeof e!=`string`)return null;try{return document.querySelector(e),e}catch{return _.debug&&console.warn(`[Do11y] Invalid CSS selector rejected:`,e),null}}function x(e){if(typeof e.className==`string`)return e.className;let t=e.className;return t&&typeof t.baseVal==`string`?t.baseVal:``}function S(e){let t=e.match(/(?:^|\s)language-([\w-]+)(?:\s|$)/);return t?t[1]:null}function C(e){if(!e)return`unknown`;let t=e;for(let e=0;t&&e<12;e++,t=t.parentElement){for(let e of[`language`,`data-language`,`data-lang`,`data-code-lang`]){let n=t.getAttribute(e);if(n)return n}let e=S(x(t));if(e)return e;let n=t.querySelector(`:scope > span.lang`)?.textContent?.trim();if(n)return n;let r=t.querySelector(`[data-language], [data-lang], [data-code-lang], [class*="language-"], [language]`);if(r){let e=r.getAttribute(`language`)??r.getAttribute(`data-language`)??r.getAttribute(`data-lang`)??r.getAttribute(`data-code-lang`)??S(x(r));if(e)return e}}return`unknown`}function ne(e){if(e.startsWith(`#`))return e;let t=e.indexOf(`#`);if(t===-1)return null;let n=e.slice(0,t);return!n||n===window.location.pathname||n===`${window.location.pathname}${window.location.search}`?e.slice(t):null}function re(e){let t=b(_.tocSelector)??`.table-of-contents, .VPDocAsideOutline, .VPLocalNavOutlineDropdown, [class*="toc"], [class*="TableOfContents"], [class*="page-outline"], .right-sidebar-panel, starlight-toc`,n=e.closest(t);return n?((n===e||n.tagName===`A`)&&(n=e.closest(`.VPDocAsideOutline, .VPLocalNavOutlineDropdown, nav, aside, .right-sidebar-panel, starlight-toc`)??n.parentElement),n):null}function w(e,t){if(!e||typeof e!=`string`)return null;let n=t??100,r=e;return r=r.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,`[email]`),r=r.replace(/\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g,`[phone]`),r=r.replace(/\b\d{3}-\d{2}-\d{4}\b/g,`[redacted]`),r=r.replace(/\b(?:\d[ -]?){13,19}\b/g,`[card]`),r=r.replace(/eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,`[token]`),r=r.replace(/\bxa[a-z]{2}-[A-Za-z0-9_-]{20,}/g,`[token]`),r=r.replace(/\b[0-9a-fA-F]{32,}\b/g,`[redacted]`),r.trim().substring(0,n)}function ie(){if(window.crypto&&typeof window.crypto.randomUUID==`function`)return window.crypto.randomUUID();if(window.crypto&&typeof window.crypto.getRandomValues==`function`){let e=new Uint8Array(16);window.crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return t.slice(0,8)+`-`+t.slice(8,12)+`-`+t.slice(12,16)+`-`+t.slice(16,20)+`-`+t.slice(20)}return`no-crypto-00-0000-0000-000000000000`}function ae(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.startTime==`string`&&Array.isArray(t.pageSequence)&&typeof t.pageCount==`number`}function T(){let e=null;try{let t=sessionStorage.getItem(`do11y_session`);if(t){let n=JSON.parse(t);ae(n)&&(e=n)}}catch{}return e||(e={id:ie(),startTime:new Date().toISOString(),pageSequence:[],pageCount:0,referrerCategory:null,aiPlatform:null},E(e)),e}function E(e){try{sessionStorage.setItem(`do11y_session`,JSON.stringify(e))}catch{}}function oe(e){let t=T();return t.pageCount++,t.pageSequence.push({path:e,timestamp:new Date().toISOString(),index:t.pageCount}),t.pageSequence.length>50&&(t.pageSequence=t.pageSequence.slice(-50)),E(t),t}function se(){return{"browser.do11y.viewport_category":ce(),"browser.family":le(),"device.type":ue(),"browser.language":(navigator.language||``).split(`-`)[0]||`unknown`,"browser.do11y.timezone_offset":new Date().getTimezoneOffset()/60}}function ce(){let e=window.innerWidth;return e<640?`mobile`:e<1024?`tablet`:e<1440?`desktop`:`large-desktop`}function le(){let e=navigator.userAgent;return e.includes(`Firefox`)?`Firefox`:e.includes(`Edg`)?`Edge`:e.includes(`Chrome`)?`Chrome`:e.includes(`Safari`)?`Safari`:`Other`}function ue(){let e=navigator.userAgent;return/Mobile|Android|iPhone|iPad/.test(e)?/iPad|Tablet/.test(e)?`tablet`:`mobile`:`desktop`}let de=[{match:`chatgpt`,platform:`ChatGPT`},{match:`chat.com`,platform:`ChatGPT`},{match:`openai`,platform:`ChatGPT`},{match:`perplexity`,platform:`Perplexity`},{match:`claude.ai`,platform:`Claude`},{match:`anthropic`,platform:`Claude`},{match:`gemini`,platform:`Gemini`},{match:`copilot`,platform:`Copilot`},{match:`deepseek`,platform:`DeepSeek`},{match:`meta.ai`,platform:`Meta AI`},{match:`grok`,platform:`Grok`},{match:`x.ai`,platform:`Grok`},{match:`mistral`,platform:`Mistral`},{match:`you.com`,platform:`You.com`},{match:`phind`,platform:`Phind`}];function fe(e){if(!e||e===`direct`)return{referrerCategory:`direct`,aiPlatform:null};if(e===`internal`)return{referrerCategory:`internal`,aiPlatform:null};if(e===`unknown`)return{referrerCategory:`unknown`,aiPlatform:null};let t=e.toLowerCase();for(let e of de)if(t.indexOf(e.match)!==-1)return{referrerCategory:`ai`,aiPlatform:e.platform};return/google\.|bing\.|baidu\.|yandex\.|duckduckgo\.|yahoo\./.test(t)?{referrerCategory:`search-engine`,aiPlatform:null}:/github\.|gitlab\.|bitbucket\./.test(t)?{referrerCategory:`code-host`,aiPlatform:null}:/stackoverflow\.|stackexchange\.|reddit\.|news\.ycombinator\./.test(t)?{referrerCategory:`community`,aiPlatform:null}:/twitter\.|x\.com|linkedin\.|facebook\.|threads\.net/.test(t)?{referrerCategory:`social`,aiPlatform:null}:{referrerCategory:`other`,aiPlatform:null}}function pe(){try{if(!document.referrer)return`direct`;let e=new URL(document.referrer);return e.hostname===window.location.hostname?`internal`:e.hostname}catch{return`unknown`}}function me(){return{"url.path":window.location.pathname,"url.fragment":window.location.hash||null,"url.query":window.location.search?`has_params`:null,"browser.do11y.page_title":w(document.title,150)}}let D=[],O=null,k={},A=!1;function j(e,t){if(A)return;let n=Date.now();if(_.rateLimitMs>0&&k[e]&&n-k[e]<_.rateLimitMs){_.debug&&console.log(`[Do11y] Rate limited:`,e);return}k[e]=n;let r=T(),i={_time:new Date().toISOString(),eventName:e,"browser.do11y.version":m,"session.id":r.id,"browser.do11y.session_page_count":r.pageCount,...me(),...se(),...t};if(_.testRunId&&(i._testRunId=_.testRunId),_.testFramework&&(i._testFramework=_.testFramework),_.debug&&console.log(`[Do11y] Event queued:`,e,i),_.destination===`otlp`&&M){M.emit({eventName:e,severityNumber:9,attributes:i,body:``});return}D.push(i),D.length>100&&(D=D.slice(-100),_.debug&&console.warn(`[Do11y] Event queue capped at 100 events`)),D.length>=_.maxBatchSize?F():he()}function he(){O||=setTimeout(F,_.flushInterval)}let M=null;function ge(e){try{let t=new URL(e);return!(t.protocol!==`https:`||!t.hostname.endsWith(`.supabase.co`))}catch{return!1}}function _e(e){try{let t=new URL(e);if(t.protocol!==`https:`)return!1;let n=t.hostname;return!(n===`localhost`||n===`127.0.0.1`||n===`::1`||/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(n))}catch{return!1}}function N(){return _.destination===`supabase`?_.supabaseUrl?ge(_.supabaseUrl)?!_.supabaseKey||typeof _.supabaseKey!=`string`||_.supabaseKey.length<10?(_.debug&&console.warn(`[Do11y] Invalid or missing Supabase publishable key`),!1):/^[a-zA-Z0-9_-]+$/.test(_.supabaseTable)?!0:(_.debug&&console.warn(`[Do11y] Invalid table name`),!1):(_.debug&&console.warn(`[Do11y] Invalid Supabase URL. Must be https://<project>.supabase.co`),!1):(_.debug&&console.warn(`[Do11y] No Supabase URL configured`),!1):_.destination===`http`?_.endpoint?_e(_.endpoint)?!0:(_.debug&&console.warn(`[Do11y] Invalid HTTP endpoint. Must be HTTPS and not a private address.`),!1):(_.debug&&console.warn(`[Do11y] No HTTP endpoint configured`),!1):_.destination===`otlp`?_.otelSdkEndpoint?(ve().catch(e=>{_.debug&&console.warn(`[Do11y] OTel SDK initialization failed:`,e)}),!0):(_.debug&&console.warn(`[Do11y] No OTLP endpoint configured`),!1):(_.debug&&console.warn(`[Do11y] Unknown destination:`,_.destination),!1)}async function ve(){if(M)return;let e=_.otelSdkCdnUrl.replace(/\/+$/,``)+`/`,t=await import(`${e}@opentelemetry/api-logs`),n=await import(`${e}@opentelemetry/sdk-logs`),r=await import(`${e}@opentelemetry/exporter-logs-otlp-http`),i={"service.name":_.otelSdkServiceName||`do11y`,"service.version":m,"telemetry.sdk.name":`do11y`,"telemetry.sdk.language":`webjs`,"telemetry.sdk.version":m,..._.otelSdkResourceAttributes},a=new n.LoggerProvider({resource:{attributes:i},processors:[new n.BatchLogRecordProcessor({exporter:new r.OTLPLogExporter({url:_.otelSdkEndpoint.replace(/\/$/,``)+`/v1/logs`,headers:_.otelSdkHeaders})})]});t.logs.setGlobalLoggerProvider(a),M=a.getLogger(`do11y`),_.debug&&console.log(`[Do11y] OTel SDK initialized with endpoint:`,_.otelSdkEndpoint)}function P(e){if(_.destination===`supabase`){let t=_.supabaseUrl.replace(/\/$/,``)+`/rest/v1/`+_.supabaseTable,n=_.bodyTransform??(e=>e.map(e=>({payload:e})));return{url:t,headers:{apikey:_.supabaseKey,Authorization:`Bearer `+_.supabaseKey,"Content-Type":`application/json`,Prefer:`return=minimal`},body:JSON.stringify(n(e))}}let t=_.bodyTransform??(e=>e);return{url:_.endpoint,headers:{"Content-Type":`application/json`,..._.headers},body:JSON.stringify(t(e))}}function F(e){if(O&&=(clearTimeout(O),null),D.length===0||!N())return;let t=typeof e==`number`?e:_.maxRetries,n=D.slice();D=[],be(P(n),n,t)}function ye(e){try{return new URL(e).origin!==window.location.origin}catch{return!1}}function be(e,t,n){let r=ye(e.url);_.debug&&r&&console.log(`[Do11y] Cross-origin request to`,new URL(e.url).origin,`- requires CORS headers on the server`),fetch(e.url,{method:`POST`,headers:e.headers,body:e.body,keepalive:!0,mode:r?`cors`:`same-origin`}).then(e=>{if(e.ok){_.debug&&console.log(`[Do11y] Flushed`,t.length,`events`);return}if(n>0&&(e.status>=500||e.status===429)){_.debug&&console.log(`[Do11y] Retrying after error:`,e.status),D=t.concat(D),setTimeout(()=>{F(n-1)},_.retryDelay*(_.maxRetries-n+1));return}_.debug&&e.text().then(t=>{let n=`[Do11y] Ingest failed: ${e.status}`;e.status===0&&e.type===`opaque`?console.error(n,`- CORS error: server did not return Access-Control-Allow-Origin`):console.error(n,t)}).catch(()=>{})}).catch(e=>{if(n>0){if(_.debug){let t=r?` (this may be a CORS issue — try using an OTel Collector proxy)`:``;console.log(`[Do11y] Network error, retrying:`,e.message+t)}D=t.concat(D),setTimeout(()=>{F(n-1)},_.retryDelay*(_.maxRetries-n+1))}else _.debug&&console.error(`[Do11y] Failed to send events:`,e.message)})}function xe(){if(_.destination===`otlp`||D.length===0||!N())return;let e=D;D=[];let t=P(e);try{fetch(t.url,{method:`POST`,headers:t.headers,body:t.body,keepalive:!0})}catch{}_.debug&&console.log(`[Do11y] Sync flushed`,e.length,`events`)}function I(){G=!1;let n=oe(window.location.pathname),r=pe(),i=fe(r);n.pageCount===1&&(n.referrerCategory=i.referrerCategory,n.aiPlatform=i.aiPlatform,E(n)),j(`browser.do11y.page_view`,{"browser.do11y.referrer_domain":r,[e]:i.referrerCategory,[t]:i.aiPlatform,"browser.do11y.is_first_page":n.pageCount===1,"browser.do11y.previous_path":n.pageSequence.length>1?n.pageSequence[n.pageSequence.length-2].path:null})}function Se(){document.addEventListener(`click`,e=>{let t=e.target.closest(`a`);if(!t)return;let n=t.getAttribute(`href`);if(!n)return;let r=`other`,i=null;try{if(n.startsWith(`#`))r=`anchor`;else if(n.startsWith(`/`)||n.startsWith(`./`)||n.startsWith(`../`))r=`internal`;else if(n.startsWith(`http`)){let e=new URL(n);e.hostname===window.location.hostname?r=`internal`:(r=`external`,i=e.hostname)}else n.startsWith(`mailto:`)&&(r=`email`)}catch{}r===`internal`&&!_.trackInternalLinks||r===`external`&&!_.trackOutboundLinks||(j(`browser.do11y.link_click`,{"browser.do11y.link.type":r,"browser.do11y.link.target_url":n,"browser.do11y.link.target_domain":i,"browser.do11y.link.text":w(t.textContent,100),"browser.do11y.link.context":Ce(t),"browser.do11y.link.section":w(L(t),100),"browser.do11y.link.index":we(t,n)}),F())},!0)}function Ce(e){return e.closest(_.navigationSelector)?`navigation`:e.closest(_.footerSelector)?`footer`:e.closest(_.contentSelector)?`content`:`other`}function L(e){let t=e;for(;t&&t!==document.body;){let e=t.previousElementSibling;for(;e;){if(/^H[1-6]$/.test(e.tagName))return e.textContent?.trim().substring(0,100)??null;let t=e.querySelectorAll(`h1, h2, h3, h4, h5, h6`);if(t.length>0)return t[t.length-1].textContent?.trim().substring(0,100)??null;e=e.previousElementSibling}t=t.parentElement}return null}function we(e,t){if(typeof CSS>`u`||typeof CSS.escape!=`function`)return 1;try{let n=document.querySelectorAll(`a[href="`+CSS.escape(t)+`"]`);for(let t=0;t<n.length;t++)if(n[t]===e)return t+1}catch{}return 1}let R=new Set,z=null;function Te(e){let t=e;for(;t&&t!==document.body&&t!==document.documentElement;){let e=window.getComputedStyle(t).overflowY;if((e===`auto`||e===`scroll`)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return null}function Ee(){if(!_.trackScrollDepth)return;if(_.contentSelector){let e=document.querySelector(_.contentSelector);e&&(z=Te(e))}let e=!1;function t(){e||=(window.requestAnimationFrame(()=>{B(),e=!1}),!0)}if(window.addEventListener(`scroll`,t),z&&(z.addEventListener(`scroll`,t),_.debug)){let e=z;console.log(`[do11y] Using container-based scroll tracking:`,e.className||e.tagName)}B()}function B(){let e,t,i;z&&z.scrollHeight>z.clientHeight?(e=z.scrollTop,t=z.scrollHeight,i=z.clientHeight):(e=window.scrollY||document.documentElement.scrollTop,t=document.documentElement.scrollHeight,i=window.innerHeight);let a=t-i;if(a<=0){_.scrollThresholds.forEach(e=>{R.has(e)||(R.add(e),j(u,{[n]:e,[r]:100}))});return}let o=Math.round(e/a*100);_.scrollThresholds.forEach(e=>{o>=e&&!R.has(e)&&(R.add(e),j(u,{[n]:e,[r]:o}))})}let V=Date.now(),H=Date.now(),U=0,W=!0,G=!1;function K(){if(G)return;G=!0,W&&(U+=Date.now()-H);let n=Date.now()-V,r=n>0?U/n:0,i=0;R.forEach(e=>{e>i&&(i=e)}),X();let a=T();j(`browser.do11y.page_exit`,{"browser.do11y.page_exit.total_time_seconds":Math.round(n/1e3),"browser.do11y.page_exit.active_time_seconds":Math.round(U/1e3),"browser.do11y.page_exit.engagement_ratio":Math.round(r*100)/100,"browser.do11y.page_exit.max_scroll_depth":i,[e]:a.referrerCategory,[t]:a.aiPlatform}),F()}function De(){document.addEventListener(`visibilitychange`,()=>{document.hidden?W&&=(U+=Date.now()-H,!1):(H=Date.now(),W=!0)}),window.addEventListener(`beforeunload`,()=>{K(),Ie()})}function Oe(){document.addEventListener(`click`,e=>{e.target.closest(_.searchSelector)&&j(d,{})},!0),document.addEventListener(`keydown`,e=>{(e.metaKey||e.ctrlKey)&&e.key===`k`&&j(d,{"browser.do11y.search.trigger":`keyboard`})})}function ke(e){if(!e)return 1;try{let t=document.querySelectorAll(_.codeBlockSelector);for(let n=0;n<t.length;n++)if(t[n]===e)return n+1}catch{}return 1}function Ae(){document.addEventListener(`click`,e=>{let t=e.target.closest(_.copyButtonSelector);if(t){let e=t.closest(`[class*="language-"], [language]`)??t.closest(_.codeBlockSelector)??t.closest(`.expressive-code`)?.querySelector(`pre`)??t.closest(`div, section`)?.querySelector(`pre`)??t.parentElement?.querySelector(`pre`)??null,n=C((e?e.tagName===`PRE`?e.querySelector(`code`):e.querySelector(`code[class*="language-"], code[language]`)??e.querySelector(`code`):null)??e??t);j(`browser.do11y.code_copied`,{"browser.do11y.code.language":n,"browser.do11y.code.section":w(L(e??t),100),"browser.do11y.code.index":ke(e)})}},!0)}let q=null,J={};function je(){if(!_.trackSectionVisibility||typeof IntersectionObserver>`u`)return;let e=_.sectionVisibleThreshold*1e3;q=new IntersectionObserver(t=>{t.forEach(t=>{let n=t.target.getAttribute(`data-do11y-section-id`);if(n)if(t.isIntersecting){if(!J[n]){let r={start:Date.now(),reported:!1,timeoutId:null};r.timeoutId=setTimeout(()=>{if(J[n]&&!J[n].reported){let r=t.target.textContent?.trim()??``;j(f,{[i]:w(r,100),[a]:parseInt(t.target.tagName.charAt(1),10),[o]:Math.round(e/1e3)}),J[n].reported=!0}},e),J[n]=r}}else{if(J[n]&&(J[n].timeoutId&&clearTimeout(J[n].timeoutId),!J[n].reported)){let r=Date.now()-J[n].start;if(r>=e){let e=t.target.textContent?.trim()??``;j(f,{[i]:w(e,100),[a]:parseInt(t.target.tagName.charAt(1),10),[o]:Math.round(r/1e3)}),J[n].reported=!0}}delete J[n]}})},{threshold:.5}),Y()}function Y(){q&&document.querySelectorAll(`h2, h3`).forEach((e,t)=>{e.setAttribute(`data-do11y-section-id`,`section-`+t),q.observe(e)})}function X(){if(!q)return;let e=Date.now(),t=_.sectionVisibleThreshold*1e3;Object.keys(J).forEach(n=>{let r=J[n];if(r&&!r.reported){r.timeoutId&&clearTimeout(r.timeoutId);let s=e-r.start;if(s>=t){let e=typeof CSS<`u`&&typeof CSS.escape==`function`?CSS.escape(n):n.replace(/["\\]/g,`\\$&`),t=document.querySelector(`[data-do11y-section-id="`+e+`"]`);t&&j(f,{[i]:w(t.textContent?.trim()??``,100),[a]:parseInt(t.tagName.charAt(1),10),[o]:Math.round(s/1e3)})}}}),J={}}function Me(){_.trackTabSwitches&&document.addEventListener(`click`,e=>{let t=`[role="tab"], .tabs button, .tabs a, .tabbed-labels label`,n=b(_.tabContainerSelector);n&&(t+=`, `+n+` button, `+n+` a, `+n+` label`);let r=e.target.closest(t);if(!r||r.getAttribute(`aria-selected`)===`true`||r.classList.contains(`active`)||r.classList.contains(`is-active`))return;let i=w(r.textContent,50);if(!i)return;let a=w(L(r),100);j(`browser.do11y.tab_switch`,{"browser.do11y.tab.label":i,"browser.do11y.tab.group":a,"browser.do11y.tab.is_default":!1})})}function Ne(){_.trackTocClicks&&document.addEventListener(`click`,e=>{let t=e.target.closest(`a`);if(!t)return;let n=re(t);if(!n)return;let r=t.getAttribute(`href`),i=r?ne(r):null;if(!i)return;let a=w(t.textContent,100),o=null;try{let e=i.slice(1),t=document.getElementById(e);t&&/^H[1-6]$/.test(t.tagName)&&(o=parseInt(t.tagName.charAt(1),10))}catch{}let s=n.querySelectorAll(`a[href*="#"]`),c=1;for(let e=0;e<s.length;e++)if(s[e]===t){c=e+1;break}j(`browser.do11y.toc_click`,{"browser.do11y.toc.heading":a,"browser.do11y.toc.heading_level":o,"browser.do11y.toc.position":c})},!0)}function Pe(){_.trackFeedback&&document.addEventListener(`click`,e=>{let t=e.target.closest(`button, [role="button"], a`);if(!t||!t.closest(b(_.feedbackSelector)??`[class*="feedback"], [class*="helpful"], [class*="rating"], [class*="was-this"], [data-feedback]`))return;let n=(t.textContent??``).trim().toLowerCase(),r=(t.getAttribute(`aria-label`)??``).toLowerCase(),i=(t.getAttribute(`title`)??``).toLowerCase(),a=t.getAttribute(`data-value`)??t.getAttribute(`data-md-value`)??t.getAttribute(`data-feedback`),o=a&&/^[\w\s.,!?-]{1,50}$/.test(a)?a:null,s=null;o?s=o:/\byes\b|👍|thumbs.?up|helpful/i.test(n+` `+r+` `+i)?s=`yes`:/\bno\b|👎|thumbs.?down|not.?helpful/i.test(n+` `+r+` `+i)&&(s=`no`),s&&j(`browser.do11y.feedback`,{"browser.do11y.feedback.rating":s})})}function Fe(){_.trackExpandCollapse&&(document.addEventListener(`toggle`,e=>{let t=e.target;if(t.tagName!==`DETAILS`)return;let n=t.querySelector(`summary`),r=w(n?n.textContent:``,100);j(p,{[s]:r,[c]:t.open?`expand`:`collapse`,[l]:w(L(t),100)})},!0),document.addEventListener(`click`,e=>{let t=e.target.closest(`[aria-expanded], [class*="accordion"] button, [class*="collapsible"] button`);if(!t||t.closest(`details`)||t.closest(`nav, [role="navigation"], header`))return;let n=t.getAttribute(`aria-expanded`)===`true`;j(p,{[s]:w(t.textContent,100),[c]:n?`collapse`:`expand`,[l]:w(L(t),100)})}))}let Z=null,Q=null;function $(){if(window.Do11yConfig&&typeof window.Do11yConfig==`object`)for(let e in _)Object.prototype.hasOwnProperty.call(window.Do11yConfig,e)&&(_[e]=window.Do11yConfig[e]);let e=document.querySelector(`meta[name="do11y-destination"]`);if(e){let t=e.getAttribute(`content`);(t===`supabase`||t===`http`||t===`otlp`)&&(_.destination=t)}let t=document.querySelector(`meta[name="do11y-url"]`);t&&(_.supabaseUrl=t.getAttribute(`content`)??_.supabaseUrl);let n=document.querySelector(`meta[name="do11y-key"]`);n&&(_.supabaseKey=n.getAttribute(`content`)??_.supabaseKey);let r=document.querySelector(`meta[name="do11y-table"]`);r&&(_.supabaseTable=r.getAttribute(`content`)??_.supabaseTable);let i=document.querySelector(`meta[name="do11y-endpoint"]`);i&&(_.endpoint=i.getAttribute(`content`)??_.endpoint);let a=document.querySelector(`meta[name="do11y-otlp-endpoint"]`);a&&(_.otelSdkEndpoint=a.getAttribute(`content`)??_.otelSdkEndpoint);let o=document.querySelector(`meta[name="do11y-otlp-headers"]`);if(o)try{let e=JSON.parse(o.getAttribute(`content`)??`{}`);typeof e==`object`&&e&&(_.otelSdkHeaders=e)}catch{}let s=document.querySelector(`meta[name="do11y-debug"]`);s&&s.getAttribute(`content`)===`true`&&(_.debug=!0);let c=document.querySelector(`meta[name="do11y-domains"]`);if(c){let e=c.getAttribute(`content`);e&&(_.allowedDomains=e.split(`,`).map(e=>e.trim()))}let l=document.querySelector(`meta[name="do11y-framework"]`);l&&(_.framework=l.getAttribute(`content`)??_.framework);let u=document.querySelector(`meta[name="do11y-use-otel-instrumentations"]`);if(u&&u.getAttribute(`content`)===`true`&&(_.useOtelBrowserInstrumentations=!0),ee(),_.debug){let e=_.destination===`supabase`?!!_.supabaseKey:_.destination===`otlp`?!!_.otelSdkEndpoint:!!_.endpoint;console.log(`[Do11y] Initializing with config:`,{destination:_.destination,hasCredentials:e,framework:_.framework,allowedDomains:_.allowedDomains,respectDNT:_.respectDNT})}if(te()){A=!0,_.debug&&console.log(`[Do11y] Tracking disabled`);return}(_.destination===`supabase`?_.supabaseKey:_.destination===`otlp`?_.otelSdkEndpoint:_.endpoint)||_.debug&&(console.warn(`[Do11y] No destination configured. Events will not be sent.`),_.destination===`supabase`?console.warn(`[Do11y] Add <meta name="do11y-url"> and <meta name="do11y-key"> to enable.`):_.destination===`otlp`?console.warn(`[Do11y] Add <meta name="do11y-otlp-endpoint"> to enable.`):console.warn(`[Do11y] Add <meta name="do11y-endpoint"> to enable.`)),I(),Se(),Ee(),De(),Oe(),Ae(),je(),Me(),Ne(),Pe(),Fe();let d=window.location.pathname,f=()=>{window.location.pathname!==d&&(d=window.location.pathname,K(),R=new Set,V=Date.now(),H=Date.now(),U=0,W=!0,I(),Y(),B())};Z=new MutationObserver(f),Z.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener(`popstate`,f),Q=window.setInterval(f,200),Object.freeze(_),_.debug&&console.log(`[Do11y] Initialized successfully`)}function Ie(){Z&&=(Z.disconnect(),null),q&&=(X(),q.disconnect(),null),O&&=(clearTimeout(O),null),Q!==null&&(clearInterval(Q),Q=null),xe()}!h&&!g&&(document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,$):$()),window.Do11y=window.Do11y??{getConfig:()=>({destination:_.destination,hasCredentials:_.destination===`supabase`?!!_.supabaseKey:_.destination===`otlp`?!!_.otelSdkEndpoint:!!_.endpoint,isDisabled:A,allowedDomains:_.allowedDomains,respectDNT:_.respectDNT}),flush:F,isEnabled:()=>A?!1:_.destination===`supabase`?!!_.supabaseKey:_.destination===`otlp`?!!_.otelSdkEndpoint:!!_.endpoint,getQueueSize:()=>D.length,version:m}})();
|
|
1
|
+
var Do11yBundle=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let t=`0.2.0`,n=`browser.do11y.referrer_category`,r=`browser.do11y.ai_platform`,i=`browser.do11y.scroll.threshold`,a=`browser.do11y.scroll.percent`,o=`browser.do11y.expand.summary`,s=`browser.do11y.expand.action`,c=`browser.do11y.expand.section`,l=`browser.do11y.scroll_depth`,u=`browser.do11y.search_opened`,d=`browser.do11y.expand_collapse`,f=[`searchSelector`,`copyButtonSelector`,`codeBlockSelector`,`navigationSelector`,`footerSelector`,`contentSelector`,`tabContainerSelector`,`tocSelector`,`feedbackSelector`];function p(){let e={};return{allow(t,n,r,a){let o=Date.now(),s=n[`browser.do11y.scroll.threshold`]!==null&&n[`browser.do11y.scroll.threshold`]!==void 0?`${t}:${String(n[i])}`:t;return r>0&&e[s]&&o-e[s]<r?(a&&console.log(`[Do11y] Rate limited:`,t),!1):(e[s]=o,!0)},reset(){for(let t of Object.keys(e))delete e[t]}}}let m={mintlify:{searchSelector:`#search-bar-entry, #search-bar-entry-mobile, [class*="search"]`,copyButtonSelector:`button[class*="copy"], button[aria-label*="copy" i]`,codeBlockSelector:`pre, [class*="code"]`,navigationSelector:`nav, [role="navigation"], #navbar, #sidebar, [class*="nav"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], [class*="footer"]`,contentSelector:`main, article, [role="main"], [class*="content"]`,tabContainerSelector:`tabs, [role="tablist"], [class*="tab"]`,tocSelector:`#table-of-contents, [data-testid="table-of-contents"], [class*="table-of-contents"], [class*="toc"]`,feedbackSelector:`feedback-toolbar, #feedback-thumbs-up, #feedback-thumbs-down, [class*="feedback"], [class*="helpful"]`},docusaurus:{searchSelector:`.DocSearch, .DocSearch-Button`,copyButtonSelector:`button.clean-btn[aria-label*="copy" i], button[class*="copyButton"]`,codeBlockSelector:`pre, [class*="code"]`,navigationSelector:`nav, [role="navigation"], .navbar, .sidebar, [class*="nav"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], [class*="footer"]`,contentSelector:`main, article, [role="main"], [class*="content"]`,tabContainerSelector:`.tabs[role="tablist"], [class*="tabs"]`,tocSelector:`.table-of-contents, [class*="toc"]`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},nextra:{searchSelector:`.nextra-search input, input[placeholder*="search" i], button[aria-label*="search" i]`,copyButtonSelector:`button[class*="copy"], button[aria-label*="copy" i], button[title*="copy" i]`,codeBlockSelector:`pre, [class*="code"]`,navigationSelector:`nav, [role="navigation"], [class*="nav"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], [class*="footer"]`,contentSelector:`main, article, [role="main"], [class*="content"]`,tabContainerSelector:`[role="tablist"], [class*="tab"]`,tocSelector:`.nextra-toc, [class*="toc"]`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},"mkdocs-material":{searchSelector:`.md-search__input`,copyButtonSelector:`.md-clipboard, .md-code__button[title="Copy to clipboard"]`,codeBlockSelector:`pre, code, [class*="code"]`,navigationSelector:`nav, [role="navigation"], .md-nav, .md-sidebar`,footerSelector:`footer, [role="contentinfo"], .md-footer`,contentSelector:`main, article, [role="main"], .md-content`,tabContainerSelector:`.tabbed-labels, .md-typeset .tabbed-set`,tocSelector:`.md-sidebar--secondary .md-nav, [class*="toc"]`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},vitepress:{searchSelector:`.VPNavBarSearch button, .VPNavBarSearchButton, #local-search`,copyButtonSelector:`button.copy, .vp-code-copy, button.copy[title*="Copy"]`,codeBlockSelector:`div[class*="language-"], pre, [class*="code"]`,navigationSelector:`nav, [role="navigation"], .VPNav, .VPSidebar, [class*="nav"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], .VPFooter, [class*="footer"]`,contentSelector:`main, article, [role="main"], .VPContent, [class*="content"]`,tabContainerSelector:`.vp-code-group .tabs, [role="tablist"]`,tocSelector:`.VPDocAsideOutline, .VPLocalNavOutlineDropdown, a.outline-link`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},starlight:{searchSelector:`site-search button[data-open-modal], sl-doc-search .DocSearch-Button, button[aria-label*="search" i]`,copyButtonSelector:`.expressive-code .copy button, .copy button[data-code]`,codeBlockSelector:`.expressive-code pre, pre`,navigationSelector:`nav, [role="navigation"], [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], [class*="footer"]`,contentSelector:`main, .sl-markdown-content, [role="main"]`,tabContainerSelector:`starlight-tabs [role="tablist"], [role="tablist"]`,tocSelector:`.right-sidebar-panel, starlight-toc, mobile-starlight-toc`,feedbackSelector:`[class*="feedback"], [class*="helpful"]`},docsy:{searchSelector:`.td-search input, .td-search__input, #docsearch-0, #docsearch-1`,copyButtonSelector:`button[aria-label*="copy" i], button[title*="copy" i], .td-click-to-copy`,codeBlockSelector:`.highlight, pre.chroma, pre`,navigationSelector:`nav, [role="navigation"], .td-sidebar, .td-navbar, [class*="sidebar"]`,footerSelector:`footer, [role="contentinfo"], .td-footer, [class*="footer"]`,contentSelector:`main, article, [role="main"], .td-content, [class*="content"]`,tabContainerSelector:`.nav-tabs[role="tablist"], [role="tablist"], .tab-content`,tocSelector:`.td-toc, nav[id="TableOfContents"], [class*="toc"]`,feedbackSelector:`.feedback--answer, [class*="feedback"], [class*="helpful"]`}};function ee(e){let t=m[e.framework];t?f.forEach(n=>{e[n]||(e[n]=t[n])}):e.framework!==`custom`&&e.debug&&console.warn(`[Do11y] Unknown framework "${e.framework}". Falling back to generic selectors. Supported: `+Object.keys(m).join(`, `)+`, custom`);let n=m.mintlify;n&&f.forEach(t=>{e[t]||(e[t]=n[t])})}function h(e){if(!e||typeof e!=`string`)return null;try{return document.querySelector(e),e}catch{return null}}function te(e){if(e.respectDNT&&(navigator.doNotTrack===`1`||navigator.doNotTrack===`yes`||window.doNotTrack===`1`))return e.debug&&console.log(`[Do11y] Disabled: Do Not Track is enabled`),!0;if(e.allowedDomains&&e.allowedDomains.length>0){let t=window.location.hostname;if(!e.allowedDomains.some(e=>t===e||t.endsWith(`.`+e)))return e.debug&&console.log(`[Do11y] Disabled: Domain not allowed:`,t),!0}return!1}function g(e){if(typeof e.className==`string`)return e.className;let t=e.className;return t&&typeof t.baseVal==`string`?t.baseVal:``}function _(e){let t=e.match(/(?:^|\s)language-([\w-]+)(?:\s|$)/);return t?t[1]:null}function ne(e){if(!e)return`unknown`;let t=e;for(let e=0;t&&e<12;e++,t=t.parentElement){for(let e of[`language`,`data-language`,`data-lang`,`data-code-lang`]){let n=t.getAttribute(e);if(n)return n}let e=_(g(t));if(e)return e;let n=t.querySelector(`:scope > span.lang`)?.textContent?.trim();if(n)return n;let r=t.querySelector(`[data-language], [data-lang], [data-code-lang], [class*="language-"], [language]`);if(r){let e=r.getAttribute(`language`)??r.getAttribute(`data-language`)??r.getAttribute(`data-lang`)??r.getAttribute(`data-code-lang`)??_(g(r));if(e)return e}}return`unknown`}function re(e){if(e.startsWith(`#`))return e;let t=e.indexOf(`#`);if(t===-1)return null;let n=e.slice(0,t);return!n||n===window.location.pathname||n===`${window.location.pathname}${window.location.search}`?e.slice(t):null}function ie(e,t){let n=h(t.tocSelector);if(n){let t=e.closest(n);if(t&&t!==e&&t.tagName!==`A`)return t}for(let t of[`.VPDocAsideOutline`,`.VPLocalNavOutlineDropdown`,`.table-of-contents`,`.right-sidebar-panel`,`starlight-toc`,`[class*="TableOfContents"]`,`[class*="page-outline"]`,`[class*="toc"]`,`nav[id="TableOfContents"]`]){let n=e.closest(t);if(n&&n!==e&&n.tagName!==`A`)return n}return e.parentElement&&e.parentElement!==document.body?e.parentElement:null}function v(e){let t=e;for(;t&&t!==document.body;){let e=t.previousElementSibling;for(;e;){if(/^H[1-6]$/.test(e.tagName))return e.textContent?.trim().substring(0,100)??null;let t=e.querySelectorAll(`h1, h2, h3, h4, h5, h6`);if(t.length>0)return t[t.length-1].textContent?.trim().substring(0,100)??null;e=e.previousElementSibling}t=t.parentElement}return null}function y(e,t){if(!e||typeof e!=`string`)return null;let n=t??100,r=e;return r=r.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,`[email]`),r=r.replace(/\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g,`[phone]`),r=r.replace(/\b\d{3}-\d{2}-\d{4}\b/g,`[redacted]`),r=r.replace(/\b(?:\d[ -]?){13,19}\b/g,`[card]`),r=r.replace(/eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,`[token]`),r=r.replace(/\bxa[a-z]{2}-[A-Za-z0-9_-]{20,}/g,`[token]`),r=r.replace(/\b[0-9a-fA-F]{32,}\b/g,`[redacted]`),r.trim().substring(0,n)}function ae(){let e=window.innerWidth;return e<640?`mobile`:e<1024?`tablet`:e<1440?`desktop`:`large-desktop`}function oe(){let e=navigator.userAgent;return e.includes(`Firefox`)?`Firefox`:e.includes(`Edg`)?`Edge`:e.includes(`Chrome`)?`Chrome`:e.includes(`Safari`)?`Safari`:`Other`}function se(){let e=navigator.userAgent;return/Mobile|Android|iPhone|iPad/.test(e)?/iPad|Tablet/.test(e)?`tablet`:`mobile`:`desktop`}function ce(){return{"browser.do11y.viewport_category":ae(),"browser.family":oe(),"device.type":se(),"browser.language":(navigator.language||``).split(`-`)[0]||`unknown`,"browser.do11y.timezone_offset":new Date().getTimezoneOffset()/60}}let le=[{match:`chatgpt`,platform:`ChatGPT`},{match:`chat.com`,platform:`ChatGPT`},{match:`openai`,platform:`ChatGPT`},{match:`perplexity`,platform:`Perplexity`},{match:`claude.ai`,platform:`Claude`},{match:`anthropic`,platform:`Claude`},{match:`gemini`,platform:`Gemini`},{match:`copilot`,platform:`Copilot`},{match:`deepseek`,platform:`DeepSeek`},{match:`meta.ai`,platform:`Meta AI`},{match:`grok`,platform:`Grok`},{match:`x.ai`,platform:`Grok`},{match:`mistral`,platform:`Mistral`},{match:`you.com`,platform:`You.com`},{match:`phind`,platform:`Phind`}];function ue(e){if(!e||e===`direct`)return{referrerCategory:`direct`,aiPlatform:null};if(e===`internal`)return{referrerCategory:`internal`,aiPlatform:null};if(e===`unknown`)return{referrerCategory:`unknown`,aiPlatform:null};let t=e.toLowerCase();for(let e of le)if(t.indexOf(e.match)!==-1)return{referrerCategory:`ai`,aiPlatform:e.platform};return/google\.|bing\.|baidu\.|yandex\.|duckduckgo\.|yahoo\./.test(t)?{referrerCategory:`search-engine`,aiPlatform:null}:/github\.|gitlab\.|bitbucket\./.test(t)?{referrerCategory:`code-host`,aiPlatform:null}:/stackoverflow\.|stackexchange\.|reddit\.|news\.ycombinator\./.test(t)?{referrerCategory:`community`,aiPlatform:null}:/twitter\.|x\.com|linkedin\.|facebook\.|threads\.net/.test(t)?{referrerCategory:`social`,aiPlatform:null}:{referrerCategory:`other`,aiPlatform:null}}function de(){try{if(!document.referrer)return`direct`;let e=new URL(document.referrer);return e.hostname===window.location.hostname?`internal`:e.hostname}catch{return`unknown`}}function fe(){return{"url.path":window.location.pathname,"url.fragment":window.location.hash||null,"browser.do11y.url.has_params":window.location.search?`has_params`:null,"browser.do11y.page_title":y(document.title,150)}}function pe(){if(window.crypto&&typeof window.crypto.randomUUID==`function`)return window.crypto.randomUUID();if(window.crypto&&typeof window.crypto.getRandomValues==`function`){let e=new Uint8Array(16);window.crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return t.slice(0,8)+`-`+t.slice(8,12)+`-`+t.slice(12,16)+`-`+t.slice(16,20)+`-`+t.slice(20)}return`no-crypto-00-0000-0000-000000000000`}function me(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&t.id.length>0&&typeof t.startTime==`string`&&Array.isArray(t.pageSequence)&&typeof t.pageCount==`number`}function b(){let e=null;try{let t=sessionStorage.getItem(`do11y_session`);if(t){let n=JSON.parse(t);me(n)&&(e=n)}}catch{}return e||(e={id:pe(),startTime:new Date().toISOString(),pageSequence:[],pageCount:0,referrerCategory:null,aiPlatform:null},x(e)),e}function x(e){try{sessionStorage.setItem(`do11y_session`,JSON.stringify(e))}catch{}}function he(e){let t=b();return t.pageCount++,t.pageSequence.push({path:e,timestamp:new Date().toISOString(),index:t.pageCount}),t.pageSequence.length>50&&(t.pageSequence=t.pageSequence.slice(-50)),x(t),t}let S=new Set,C=null;function ge(e){let t=e;for(;t&&t!==document.body&&t!==document.documentElement;){let e=window.getComputedStyle(t).overflowY;if((e===`auto`||e===`scroll`)&&t.scrollHeight>t.clientHeight)return t;t=t.parentElement}return null}function w(e,t){let n,r,o;C&&C.scrollHeight>C.clientHeight?(n=C.scrollTop,r=C.scrollHeight,o=C.clientHeight):(n=window.scrollY||document.documentElement.scrollTop,r=document.documentElement.scrollHeight,o=window.innerHeight);let s=r-o;if(s<=0){e.scrollThresholds.forEach(e=>{S.has(e)||(S.add(e),t(l,{[i]:e,[a]:100}))});return}let c=Math.round(n/s*100);e.scrollThresholds.forEach(e=>{c>=e&&!S.has(e)&&(S.add(e),t(l,{[i]:e,[a]:c}))})}function _e(e,t){if(!e.trackScrollDepth)return;if(e.contentSelector){let t=document.querySelector(e.contentSelector);t&&(C=ge(t))}let n=!1;function r(){n||=(window.requestAnimationFrame(()=>{w(e,t),n=!1}),!0)}if(window.addEventListener(`scroll`,r),C&&(C.addEventListener(`scroll`,r),e.debug)){let e=C;console.log(`[do11y] Using container-based scroll tracking:`,e.className||e.tagName)}w(e,t)}function ve(){S=new Set}function ye(){return S}function T(e,t,n){e(`browser.do11y.section_visible`,{"browser.do11y.section.heading":y(t.textContent?.trim()??``,100),"browser.do11y.section.heading_level":parseInt(t.tagName.charAt(1),10),"browser.do11y.section.visible_seconds":Math.round(n/1e3)})}let E=null,D={};function be(e,t){if(!e.trackSectionVisibility||typeof IntersectionObserver>`u`)return;let n=e.sectionVisibleThreshold*1e3;E=new IntersectionObserver(e=>{e.forEach(e=>{let r=e.target.getAttribute(`data-do11y-section-id`);if(r)if(e.isIntersecting){if(!D[r]){let i={start:Date.now(),reported:!1,timeoutId:null};i.timeoutId=setTimeout(()=>{D[r]&&!D[r].reported&&(T(t,e.target,n),D[r].reported=!0)},n),D[r]=i}}else{if(D[r]&&(D[r].timeoutId&&clearTimeout(D[r].timeoutId),!D[r].reported)){let i=Date.now()-D[r].start;i>=n&&(T(t,e.target,i),D[r].reported=!0)}delete D[r]}})},{threshold:.5}),O()}function O(){E&&document.querySelectorAll(`h2, h3`).forEach((e,t)=>{e.setAttribute(`data-do11y-section-id`,`section-`+t),E.observe(e)})}function xe(e,t){if(!E)return;let n=Date.now(),r=e.sectionVisibleThreshold*1e3;Object.keys(D).forEach(e=>{let i=D[e];if(i&&!i.reported){i.timeoutId&&clearTimeout(i.timeoutId);let a=n-i.start;if(a>=r){let n=typeof CSS<`u`&&typeof CSS.escape==`function`?CSS.escape(e):e.replace(/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~ ]/g,`\\$&`),r=document.querySelector(`[data-do11y-section-id="`+n+`"]`);r&&T(t,r,a)}}}),D={}}function Se(){E&&=(D&&Object.keys(D).length>0&&(Object.keys(D).forEach(e=>{let t=D[e];t&&!t.reported&&t.timeoutId&&clearTimeout(t.timeoutId)}),D={}),E.disconnect(),null)}let k=Date.now(),A=Date.now(),j=0,M=!0,N=!1;function P(e,t,i){if(N)return;N=!0,M&&(j+=Date.now()-A);let a=Date.now()-k,o=a>0?j/a:0,s=0;ye().forEach(e=>{e>s&&(s=e)}),xe(e,t);let c=b();t(`browser.do11y.page_exit`,{"browser.do11y.page_exit.total_time_seconds":Math.round(a/1e3),"browser.do11y.page_exit.active_time_seconds":Math.round(j/1e3),"browser.do11y.page_exit.engagement_ratio":Math.round(o*100)/100,"browser.do11y.page_exit.max_scroll_depth":s,[n]:c.referrerCategory,[r]:c.aiPlatform}),i?.()}function Ce(e,t){document.addEventListener(`visibilitychange`,()=>{document.hidden?M&&=(j+=Date.now()-A,!1):(A=Date.now(),M=!0)}),window.addEventListener(`beforeunload`,()=>{P(e,t)})}function we(){k=Date.now(),A=Date.now(),j=0,M=!0,N=!1}function Te(){N=!1}function F(e,t){Te();let i=he(window.location.pathname),a=de(),o=ue(a);i.pageCount===1&&(i.referrerCategory=o.referrerCategory,i.aiPlatform=o.aiPlatform,x(i)),t(`browser.do11y.page_view`,{"browser.do11y.referrer_domain":a,[n]:o.referrerCategory,[r]:o.aiPlatform,"browser.do11y.is_first_page":i.pageCount===1,"browser.do11y.previous_path":i.pageSequence.length>1?i.pageSequence[i.pageSequence.length-2].path:null})}function Ee(e,t){return e.closest(t.navigationSelector)?`navigation`:e.closest(t.footerSelector)?`footer`:e.closest(t.contentSelector)?`content`:`other`}function De(){try{let e=new Map;document.querySelectorAll(`a[href]`).forEach(t=>{let n=t.getAttribute(`href`)??``,r=e.get(n)??[];r.push(t),e.set(n,r)}),e.forEach(e=>{e.forEach((e,t)=>{e.setAttribute(`data-do11y-link-idx`,String(t+1))})})}catch{}}function Oe(e,t){De(),document.addEventListener(`click`,n=>{let r=n.target.closest(`a`);if(!r)return;let i=r.getAttribute(`href`);if(!i)return;let a=`other`,o=null;try{if(i.startsWith(`#`))a=`anchor`;else if(i.startsWith(`/`)||i.startsWith(`./`)||i.startsWith(`../`))a=`internal`;else if(i.startsWith(`http`)){let e=new URL(i);e.hostname===window.location.hostname?a=`internal`:(a=`external`,o=e.hostname)}else i.startsWith(`mailto:`)&&(a=`email`)}catch{}if(a===`internal`&&!e.trackInternalLinks||a===`external`&&!e.trackOutboundLinks)return;let s=parseInt(r.getAttribute(`data-do11y-link-idx`)??`1`,10);t(`browser.do11y.link_click`,{"browser.do11y.link.type":a,"browser.do11y.link.target_url":i,"browser.do11y.link.target_domain":o,"browser.do11y.link.text":y(r.textContent,100),"browser.do11y.link.context":Ee(r,e),"browser.do11y.link.section":y(v(r),100),"browser.do11y.link.index":s})},!0)}function ke(e,t){e.trackSearch&&(document.addEventListener(`click`,n=>{n.target.closest(e.searchSelector)&&t(u,{})},!0),document.addEventListener(`keydown`,n=>{if((n.metaKey||n.ctrlKey)&&n.key===`k`){if(!document.querySelector(e.searchSelector))return;t(u,{"browser.do11y.search.trigger":`keyboard`})}}))}function Ae(e){try{document.querySelectorAll(e.codeBlockSelector).forEach((e,t)=>{e.setAttribute(`data-do11y-code-idx`,String(t+1))})}catch{}}function je(e,t){e.trackCopy&&(Ae(e),document.addEventListener(`click`,n=>{let r=n.target.closest(e.copyButtonSelector);if(r){let n=r.closest(`[class*="language-"], [language]`)??r.closest(e.codeBlockSelector)??r.closest(`.expressive-code`)?.querySelector(`pre`)??r.closest(`div, section`)?.querySelector(`pre`)??r.parentElement?.querySelector(`pre`)??null,i=ne((n?n.tagName===`PRE`?n.querySelector(`code`):n.querySelector(`code[class*="language-"], code[language]`)??n.querySelector(`code`):null)??n??r),a=parseInt(n?.getAttribute(`data-do11y-code-idx`)??`1`,10);t(`browser.do11y.code_copied`,{"browser.do11y.code.language":i,"browser.do11y.code.section":y(v(n??r),100),"browser.do11y.code.index":a})}},!0))}function Me(e,t){e.trackTabSwitches&&document.addEventListener(`click`,n=>{let r=`[role="tab"], .tabs button, .tabs a, .tabbed-labels label`,i=h(e.tabContainerSelector);i&&(r+=`, `+i+` button, `+i+` a, `+i+` label`);let a=n.target.closest(r);if(!a||a.getAttribute(`aria-selected`)===`true`||a.classList.contains(`active`)||a.classList.contains(`is-active`))return;let o=y(a.textContent,50);if(!o)return;let s=y(v(a),100);t(`browser.do11y.tab_switch`,{"browser.do11y.tab.label":o,"browser.do11y.tab.group":s,"browser.do11y.tab.is_default":!1})})}function Ne(e,t){e.trackTocClicks&&document.addEventListener(`click`,n=>{let r=n.target.closest(`a`);if(!r)return;let i=ie(r,e);if(!i)return;let a=r.getAttribute(`href`),o=a?re(a):null;if(!o)return;let s=y(r.textContent,100),c=null;try{let e=o.slice(1),t=document.getElementById(e);t&&/^H[1-6]$/.test(t.tagName)&&(c=parseInt(t.tagName.charAt(1),10))}catch{}let l=i.querySelectorAll(`a[href*="#"]`),u=1;for(let e=0;e<l.length;e++)if(l[e]===r){u=e+1;break}t(`browser.do11y.toc_click`,{"browser.do11y.toc.heading":s,"browser.do11y.toc.heading_level":c,"browser.do11y.toc.position":u})},!0)}function Pe(e,t){e.trackFeedback&&document.addEventListener(`click`,n=>{let r=n.target.closest(`button, [role="button"], a`);if(!r||!r.closest(h(e.feedbackSelector)??`[class*="feedback"], [class*="helpful"], [class*="rating"], [class*="was-this"], [data-feedback]`))return;let i=(r.textContent??``).trim().toLowerCase(),a=(r.getAttribute(`aria-label`)??``).toLowerCase(),o=(r.getAttribute(`title`)??``).toLowerCase(),s=r.getAttribute(`data-value`)??r.getAttribute(`data-md-value`)??r.getAttribute(`data-feedback`),c=s&&/^[\w\s.,!?-]{1,50}$/.test(s)?s:null,l=null;c?l=c:/\byes\b|👍|thumbs.?up|helpful/i.test(i+` `+a+` `+o)?l=`yes`:/\bno\b|👎|thumbs.?down|not.?helpful/i.test(i+` `+a+` `+o)&&(l=`no`),l&&t(`browser.do11y.feedback`,{"browser.do11y.feedback.rating":l})})}function Fe(e,t){e.trackExpandCollapse&&(document.addEventListener(`toggle`,e=>{let n=e.target;if(n.tagName!==`DETAILS`)return;let r=n.querySelector(`summary`),i=y(r?r.textContent:``,100);t(d,{[o]:i,[s]:n.open?`expand`:`collapse`,[c]:y(v(n),100)})},!0),document.addEventListener(`click`,e=>{let n=e.target.closest(`[aria-expanded], [class*="accordion"] button, [class*="collapsible"] button`);if(!n||n.closest(`details`)||n.closest(`nav, [role="navigation"], header`))return;let r=n.getAttribute(`aria-expanded`)===`true`;t(d,{[o]:y(n.textContent,100),[s]:r?`collapse`:`expand`,[c]:y(v(n),100)})}))}let I=[],L=null,Ie=p(),R=!1,z=null,B=[],V=null,H=!1;function U(e){R=e}function W(){return R}function Le(){return I.length}function Re(e,n,r){if(R||!Ie.allow(n,r,e.rateLimitMs,e.debug))return;let i=b(),a=new Date,o={_time:a.toISOString(),eventName:n,"browser.do11y.version":t,"session.id":i.id,"browser.do11y.session_page_count":i.pageCount,...fe(),...ce(),...r};if(e.debug&&console.log(`[Do11y] Event queued:`,n,o),e.destination===`otlp`){if(z){q(n,o,a);return}if(H){e.debug&&console.warn(`[Do11y] OTel SDK unavailable; dropping event:`,n);return}B.push(o),B.length>500&&(B=B.slice(-500),console.warn(`[Do11y] OTLP pending buffer capped at 500 events — oldest events dropped`)),Ue(e);return}I.push(o),I.length>500&&(I=I.slice(-500),console.warn(`[Do11y] Event queue capped at 500 events — oldest events dropped`)),I.length>=e.maxBatchSize?Y(e):ze(e)}function ze(e){L||=setTimeout(()=>Y(e),e.flushInterval)}function Be(e){try{let t=new URL(e);return!(t.protocol!==`https:`||!t.hostname.endsWith(`.supabase.co`))}catch{return!1}}function Ve(e,t=!1){try{let n=new URL(e),r=n.hostname,i=r===`localhost`||r===`127.0.0.1`||r===`::1`||/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(r);return t&&i&&n.protocol===`http:`?!0:!(n.protocol!==`https:`||i)}catch{return!1}}function G(e){return e.destination===`supabase`?e.supabaseUrl?Be(e.supabaseUrl)?!e.supabaseKey||typeof e.supabaseKey!=`string`||e.supabaseKey.length<10?(e.debug&&console.warn(`[Do11y] Invalid or missing Supabase publishable key`),!1):/^[a-zA-Z0-9_-]+$/.test(e.supabaseTable)?!0:(e.debug&&console.warn(`[Do11y] Invalid table name`),!1):(e.debug&&console.warn(`[Do11y] Invalid Supabase URL. Must be https://<project>.supabase.co`),!1):(e.debug&&console.warn(`[Do11y] No Supabase URL configured`),!1):e.destination===`http`?e.endpoint?Ve(e.endpoint,e.debug)?!0:(e.debug&&console.warn(`[Do11y] Invalid HTTP endpoint. Must be HTTPS and not a private address.`),!1):(e.debug&&console.warn(`[Do11y] No HTTP endpoint configured`),!1):e.destination===`otlp`?e.otelSdkEndpoint?!0:(e.debug&&console.warn(`[Do11y] No OTLP endpoint configured`),!1):(e.debug&&console.warn(`[Do11y] Unknown destination:`,e.destination),!1)}let K=`0.221.0`;function q(e,t,n){if(!z)return;let r={...t};delete r._time,delete r.eventName,z.emit({eventName:e,severityNumber:9,timestamp:n.getTime(),attributes:r,body:``})}function He(){if(!z||B.length===0)return;let e=B;B=[];for(let t of e)q(t.eventName,t,new Date(t._time))}function Ue(e){z||V||H||(V=We(e).catch(e=>{H=!0,B=[],console.warn(`[Do11y] OTel SDK initialization failed; buffered events dropped:`,e)}).finally(()=>{V=null}))}async function We(e){if(z)return;let n=`https://esm.sh/`,r=async e=>import(e),i=await r(`${n}@opentelemetry/api-logs@${K}`),a=await r(`${n}@opentelemetry/sdk-logs@${K}`),o=await r(`${n}@opentelemetry/exporter-logs-otlp-http@${K}`),s={"service.name":e.otelSdkServiceName||`do11y`,"service.version":t,"telemetry.sdk.name":`do11y`,"telemetry.sdk.language":`webjs`,"telemetry.sdk.version":t,...e.otelSdkResourceAttributes},c=new a.LoggerProvider({resource:{attributes:s},processors:[new a.BatchLogRecordProcessor({exporter:new o.OTLPLogExporter({url:e.otelSdkEndpoint.replace(/\/$/,``)+`/v1/logs`,headers:e.otelSdkHeaders})})]});i.logs.setGlobalLoggerProvider(c),z=c.getLogger(`do11y`),He(),e.debug&&console.log(`[Do11y] OTel SDK initialized with endpoint:`,e.otelSdkEndpoint)}function J(e,t){if(t.destination===`supabase`){let n=t.supabaseUrl.replace(/\/$/,``)+`/rest/v1/`+t.supabaseTable,r=t.bodyTransform??(e=>e.map(e=>({payload:e})));return{url:n,headers:{apikey:t.supabaseKey,Authorization:`Bearer `+t.supabaseKey,"Content-Type":`application/json`,Prefer:`return=minimal`},body:JSON.stringify(r(e))}}let n=t.bodyTransform??(e=>e);return{url:t.endpoint,headers:{"Content-Type":`application/json`,...t.headers},body:JSON.stringify(n(e))}}function Ge(e){try{return new URL(e).origin!==window.location.origin}catch{return!1}}function Ke(e,t,n,r){let i=Ge(e.url);r.debug&&i&&console.log(`[Do11y] Cross-origin request to`,new URL(e.url).origin,`- requires CORS headers on the server`),fetch(e.url,{method:`POST`,headers:e.headers,body:e.body,keepalive:!0,mode:i?`cors`:`same-origin`}).then(e=>{if(e.ok){r.debug&&console.log(`[Do11y] Flushed`,t.length,`events`);return}if(n>0&&(e.status>=500||e.status===429)){r.debug&&console.log(`[Do11y] Retrying after error:`,e.status),I=t.concat(I),setTimeout(()=>Y(r,n-1),r.retryDelay*(r.maxRetries-n+1));return}r.debug&&e.text().then(t=>{let n=`[Do11y] Ingest failed: ${e.status}`;e.status===0&&e.type===`opaque`?console.error(n,`- CORS error: server did not return Access-Control-Allow-Origin`):console.error(n,t)}).catch(()=>{})}).catch(e=>{if(n>0){if(r.debug){let t=i?` (this may be a CORS issue — try using an OTel Collector proxy)`:``;console.log(`[Do11y] Network error, retrying:`,e.message+t)}I=t.concat(I),setTimeout(()=>Y(r,n-1),r.retryDelay*(r.maxRetries-n+1))}else r.debug&&console.error(`[Do11y] Failed to send events:`,e.message)})}function Y(e,t){if(L&&=(clearTimeout(L),null),e.destination===`otlp`){I.length>0&&(e.debug&&console.warn(`[Do11y] Dropping `+I.length+` queued events (OTLP mode has no HTTP transport)`),I=[]);return}if(I.length===0||!G(e))return;let n=typeof t==`number`?t:e.maxRetries,r=I.slice();I=[],Ke(J(r,e),r,n,e)}function qe(e){if(e.destination===`otlp`||I.length===0||!G(e))return;let t=I;I=[];let n=J(t,e);try{fetch(n.url,{method:`POST`,headers:n.headers,body:n.body,keepalive:!0})}catch{}e.debug&&console.log(`[Do11y] Sync flushed`,t.length,`events`)}function Je(){L&&=(clearTimeout(L),null)}let X={destination:`supabase`,supabaseUrl:``,supabaseKey:``,supabaseTable:`do11y_events`,endpoint:``,headers:{},bodyTransform:void 0,otelSdkEndpoint:``,otelSdkHeaders:{},otelSdkServiceName:`do11y`,otelSdkResourceAttributes:{},debug:!1,flushInterval:5e3,maxBatchSize:10,trackOutboundLinks:!0,trackInternalLinks:!0,trackScrollDepth:!0,scrollThresholds:[25,50,75,90],allowedDomains:null,respectDNT:!0,maxRetries:2,retryDelay:1e3,rateLimitMs:100,framework:`mintlify`,trackSectionVisibility:!0,sectionVisibleThreshold:3,trackSearch:!0,trackCopy:!0,trackTabSwitches:!0,trackTocClicks:!0,trackExpandCollapse:!0,trackFeedback:!0,tabContainerSelector:null,tocSelector:null,feedbackSelector:null,searchSelector:null,copyButtonSelector:null,codeBlockSelector:null,navigationSelector:null,footerSelector:null,contentSelector:null,trackSpaPathChanges:!1,sessionAttributes:!0},Ye=!!window.__do11yInitialized;window.__do11yInitialized=!0;let Xe=window.self!==window.top;Xe&&!Ye&&(window.__do11yInitialized=!1);let Z=null,Q=null;function Ze(){let e=X,t=window.Do11yConfig;if(t&&typeof t==`object`){for(let n in X)if(Object.prototype.hasOwnProperty.call(t,n)){let r=t[n];r!==void 0&&(e[n]=r)}}let n=document.querySelector(`meta[name="do11y-destination"]`);if(n){let e=n.getAttribute(`content`);(e===`supabase`||e===`http`||e===`otlp`)&&(X.destination=e)}let r=document.querySelector(`meta[name="do11y-url"]`);r&&(X.supabaseUrl=r.getAttribute(`content`)??X.supabaseUrl);let i=document.querySelector(`meta[name="do11y-key"]`);i&&(X.supabaseKey=i.getAttribute(`content`)??X.supabaseKey);let a=document.querySelector(`meta[name="do11y-table"]`);a&&(X.supabaseTable=a.getAttribute(`content`)??X.supabaseTable);let o=document.querySelector(`meta[name="do11y-endpoint"]`);o&&(X.endpoint=o.getAttribute(`content`)??X.endpoint);let s=document.querySelector(`meta[name="do11y-otlp-endpoint"]`);s&&(X.otelSdkEndpoint=s.getAttribute(`content`)??X.otelSdkEndpoint);let c=document.querySelector(`meta[name="do11y-otlp-headers"]`);if(c)try{let e=JSON.parse(c.getAttribute(`content`)??`{}`);typeof e==`object`&&e&&(X.otelSdkHeaders=e)}catch{}let l=document.querySelector(`meta[name="do11y-debug"]`);l&&l.getAttribute(`content`)===`true`&&(X.debug=!0);let u=document.querySelector(`meta[name="do11y-domains"]`);if(u){let e=u.getAttribute(`content`);e&&(X.allowedDomains=e.split(`,`).map(e=>e.trim()))}let d=document.querySelector(`meta[name="do11y-framework"]`);if(d){let e=d.getAttribute(`content`);e&&[`mintlify`,`docusaurus`,`nextra`,`mkdocs-material`,`vitepress`,`starlight`,`docsy`,`custom`].includes(e)?X.framework=e:e&&X.debug&&console.warn(`[Do11y] Unknown framework in meta tag: "`+e+`". Using default: `+X.framework)}if(ee(X),X.debug&&console.log(`[Do11y] Initializing with config:`,{destination:X.destination,framework:X.framework,allowedDomains:X.allowedDomains,respectDNT:X.respectDNT}),te(X)){U(!0),X.debug&&console.log(`[Do11y] Tracking disabled`);return}(X.destination===`supabase`?X.supabaseKey:X.destination===`otlp`?X.otelSdkEndpoint:X.endpoint)||(console.warn(`[Do11y] No destination configured. Events will not be sent.`),X.destination===`supabase`?console.warn(`[Do11y] Add <meta name="do11y-url"> and <meta name="do11y-key"> to enable.`):X.destination===`otlp`?console.warn(`[Do11y] Add <meta name="do11y-otlp-endpoint"> to enable.`):console.warn(`[Do11y] Add <meta name="do11y-endpoint"> to enable.`));let f=(e,t)=>{Re(X,e,t)};F(X,f),Oe(X,f),_e(X,f),Ce(X,f),ke(X,f),je(X,f),be(X,f),Me(X,f),Ne(X,f),Pe(X,f),Fe(X,f);let p=window.location.pathname,m=()=>{window.location.pathname!==p&&(p=window.location.pathname,P(X,f,()=>Y(X)),ve(),we(),F(X,f),O(),w(X,f))};Z=new MutationObserver(m),Z.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener(`popstate`,m),Q=window.setInterval(m,200),Object.freeze(X),window.addEventListener(`beforeunload`,()=>{Q!==null&&(clearInterval(Q),Q=null),qe(X),Je()}),document.addEventListener(`visibilitychange`,()=>{document.hidden&&Q!==null?(clearInterval(Q),Q=null):!document.hidden&&Q===null&&X.trackSpaPathChanges&&(Q=window.setInterval(m,200))}),X.debug&&console.log(`[Do11y] Initialized successfully`)}function $(){Z&&=(Z.disconnect(),null),Q!==null&&(clearInterval(Q),Q=null),Se(),qe(X),Je(),U(!0),window.__do11yInitialized=!1}return!Ye&&!Xe&&(document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,Ze):Ze()),window.Do11y=window.Do11y??{getConfig:()=>({destination:X.destination,hasCredentials:X.destination===`supabase`?!!X.supabaseKey:X.destination===`otlp`?!!X.otelSdkEndpoint:!!X.endpoint,isDisabled:W(),allowedDomains:X.allowedDomains,respectDNT:X.respectDNT}),flush:()=>Y(X),isEnabled:()=>W()?!1:X.destination===`supabase`?!!X.supabaseKey:X.destination===`otlp`?!!X.otelSdkEndpoint:!!X.endpoint,getQueueSize:()=>Le(),version:`0.2.0`,destroy:()=>$()},e.destroy=$,e})({});
|