@tinkerlandai/indiana-sdk 0.8.4 → 0.8.5
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/CHANGELOG.md +9 -1
- package/README.md +32 -3
- package/README.zh-CN.md +32 -3
- package/dist/chunk-3KQHKRZJ.js +1 -0
- package/dist/chunk-6A5WWFNS.js +10 -0
- package/dist/{chunk-F2GOIBDQ.js → chunk-A3XRIG53.js} +1 -1
- package/dist/{chunk-663UOBHL.js → chunk-FGIGKO7A.js} +1 -1
- package/dist/chunk-HEBQUICQ.js +4 -0
- package/dist/{chunk-3F2NQOR2.js → chunk-SUXAWRR6.js} +1 -1
- package/dist/chunk-WWUUVURR.js +1 -0
- package/dist/{content-2FCUY6XX.js → content-DDMDNRCV.js} +1 -1
- package/dist/funnel-runtime-host-QK6WDRPS.js +1 -0
- package/dist/index.js +1 -1
- package/dist/native-shell.js +1 -1
- package/dist/openrouter.js +1 -1
- package/dist/page.js +1 -1
- package/dist/{paywall-734GWAS4.js → paywall-4QT3JYD4.js} +1 -1
- package/dist/react-native.js +1 -1
- package/dist/server.js +1 -1
- package/dist/{src-CLEFCTAU.js → src-EG7RWDDY.js} +1 -1
- package/dist/visual.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-EJTBSGLV.js +0 -10
- package/dist/chunk-EXCPE2XH.js +0 -1
- package/dist/chunk-RZBZ6LCT.js +0 -4
- package/dist/chunk-SSHUBTT3.js +0 -1
- package/dist/funnel-runtime-host-ENRTSXPJ.js +0 -1
package/dist/visual.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as me,b as he,c as ge,d as ye,e as ve,f as be,g as we,i as Ee}from"./chunk-RZBZ6LCT.js";import"./chunk-DSPLGTQI.js";import"./chunk-OBYJWIRB.js";import"./chunk-EXCPE2XH.js";import"./chunk-RRII2DMC.js";import{h as fe,k as pe,m as j}from"./chunk-KQCTDXVD.js";function H(e,t=()=>{}){let r=new WeakMap,n=0,i=l=>{let o=r.get(l);if(o!==void 0)return o;let s=[],a=l,u=!0;for(;a;){let m=r.get(a);if(m!==void 0){u=m;break}if(++n>8192||s.length>=256)throw Error("IAM render ancestry budget exceeded");if(s.push(a),t(),a.hasAttribute("hidden")||/(?:^|;)\s*display\s*:\s*none\s*(?:!\s*important\s*)?(?:;|$)/i.test(a.getAttribute("style")??"")){u=!1;break}a=a.parentElement}for(let m of s)r.set(m,u);return u};return l=>{let o=0,s=e.querySelectorAll(l);for(let a=0;a<s.length;a++){let u=s[a];if(!u)throw Error("IAM render selection changed");i(u)&&o++,t()}return o}}var Je=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function $(e){if(!Je(e)||Object.keys(e).some(l=>!["schemaVersion","renderKey","routeTemplate","selectors","present","absent"].includes(l))||e.schemaVersion!==1||typeof e.renderKey!="string"||!e.renderKey||e.renderKey.length>256||typeof e.routeTemplate!="string"||!e.routeTemplate.startsWith("/")||e.routeTemplate.length>2048||!Array.isArray(e.selectors)||e.selectors.length>512||e.selectors.some(l=>typeof l!="string"||l.length>512||!/^[a-z][a-z0-9-]*\[(?:id|data-testid|data-test|data-qa|data-indiana-id)="(?:[^"\\\x00-\x1f\x7f]|\\["\\])*"\]$/.test(l))||!Array.isArray(e.present)||!Array.isArray(e.absent))throw new Error("Invalid IAM render guard");if(e.present.length===0)throw Error("IAM render needs positive source evidence");let t=e.selectors,r=e.present,n=e.absent,i=[...r,...n];if(new Set(t).size!==t.length||i.length!==t.length||new Set(i).size!==i.length||i.some(l=>typeof l!="number"||!Number.isInteger(l)||l<0||l>=t.length))throw new Error("Invalid IAM render signature");return{schemaVersion:1,renderKey:e.renderKey,routeTemplate:e.routeTemplate,selectors:e.selectors,present:e.present,absent:e.absent}}function Ge(e,t){let r=e.split("/").filter(Boolean),n="";for(let i of r)/^\[\[\.\.\.[^\[\]]+\]\]$/.test(i)?n+="(?:/[^/]+)*":/^\[\.\.\.[^\[\]]+\]$/.test(i)?n+="(?:/[^/]+)+":/^\[[^\[\]]+\]$/.test(i)?n+="/[^/]+":n+="/"+i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp("^"+(n?n+"/?":"/")+"$").test(t)&&!/[\[\]]/.test(t)}function Me(e,t,r,n,i=H(t,n)){if(!Ge(e.routeTemplate,r))return!1;let l=new Set(e.present),o=!0;for(let s=0;s<e.selectors.length;s++){let a=i(e.selectors[s]);if(l.has(s)&&a>1)throw new Error("IAM render anchor is ambiguous");(l.has(s)?a!==1:a!==0)&&(o=!1),n()}return o}var ee=new WeakMap,te=new WeakSet;function re(e){te.add(e)}function ze(e){let t=new Set,r=new Set,n,i=0,l=!1,o=()=>{t.size||i||(n?.disconnect(),e.removeEventListener("visibilitychange",a),ee.delete(e))};function s(u){if(e.hidden)return;let m=performance.now(),c=new Map,f=new Map,M=()=>{if(performance.now()-m>8)throw Error("IAM page check exceeded its work budget")},x=d=>{M();let g=c.get(d);return g||(g=e.querySelectorAll(d),c.set(d,g)),M(),g},T=H({querySelectorAll:x},M),A={query:x,checkpoint:M,matches(d,g){let w=f.get(g);if(!w){try{w={match:Me(d,e,location.pathname,M,T)}}catch(B){w={error:B}}f.set(g,w)}if("error"in w)throw w.error;return w.match}},N=[],b=[],S=[];for(let d of u)if(t.has(d))try{N.push({job:d,commit:d.prepare(A)})}catch(g){b.push({job:d,error:g})}try{M()}catch(d){for(let g of[...t])g.fail(d);return}for(let{job:d,error:g}of b)t.has(d)&&d.fail(g);for(let{job:d,commit:g}of N)if(t.has(d))try{M(),g(w=>S.push(w))}catch(w){d.fail(w)}for(let d of S)d()}function a(){l||!t.size||e.hidden||(l=!0,queueMicrotask(()=>{l=!1,s([...t])}))}return{begin(){i++},end(){--i===0&&(r.clear(),s([...t])),o()},add(u){return n||(n=new MutationObserver(m=>{let c=f=>te.has(f)||!!(f.parentNode&&te.has(f.parentNode));m.some(f=>!c(f.target)&&!(f.type==="childList"&&[...f.addedNodes,...f.removedNodes].length>0&&[...f.addedNodes,...f.removedNodes].every(c)))&&a()}),n.observe(e.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","hidden","data-indiana-id","data-indiana-release","data-testid","id","name"]}),e.addEventListener("visibilitychange",a)),t.add(u),i?r.add(u):s([u]),()=>{t.delete(u),r.delete(u),o()}}}}function Ve(){let e=ee.get(document);return e||(e=ze(document),ee.set(document,e)),e}function Ae(e){return Ve().add(e)}function Se(e){let t=Ve();t.begin();try{e()}finally{t.end()}}async function Ue(e,t,r){let n=new URL(e,t.baseURI),i=t.defaultView?.location.origin,l=/^\/\.well-known\/indiana\/releases\/([a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12})\.json$/.exec(n.pathname)?.[1];if(!l||n.origin!==i||n.search||n.hash||n.username||n.password)throw Error("Invalid IAM release URL");let o=AbortSignal.any([r,AbortSignal.timeout(2e3)]),s=await fetch(n,{credentials:"omit",redirect:"error",cache:"force-cache",signal:o}),a=s.headers.get("content-length");if(!s.ok||!/^application\/json(?:;|$)/i.test(s.headers.get("content-type")??"")||a!==null&&(!/^\d+$/.test(a)||Number(a)>512))throw s.body?.cancel().catch(()=>{}),Error("IAM release is unavailable");let u=s.body?.getReader();if(!u)throw Error("IAM release is unavailable");let m=[],c=0,f=()=>{},M=new Promise((S,d)=>{f=()=>d(Error("IAM release timeout")),o.addEventListener("abort",f,{once:!0}),o.aborted&&f()}),x=!1;try{for(;;){let S=await Promise.race([u.read(),M]);if(S.done){x=!0;break}if(c+=S.value.length,c>512)throw Error("IAM release budget");m.push(S.value)}}finally{o.removeEventListener("abort",f),x||u.cancel().catch(()=>{}),u.releaseLock()}let T=new Uint8Array(c),A=0;for(let S of m)T.set(S,A),A+=S.length;let N=new TextDecoder("utf-8",{fatal:!0}).decode(T),b=JSON.parse(N);if(N.trim()!==JSON.stringify(b))throw Error("Noncanonical IAM release descriptor");if(!b||typeof b!="object"||Array.isArray(b)||Object.keys(b).sort().join(",")!=="format,manifestDigest,releaseId,schemaVersion"||Reflect.get(b,"format")!=="indiana-app-manifest-release"||Reflect.get(b,"schemaVersion")!==2||Reflect.get(b,"releaseId")!==l||!/^[a-f0-9]{64}$/.test(String(Reflect.get(b,"manifestDigest"))))throw Error("Invalid IAM release descriptor");return Reflect.get(b,"manifestDigest")}var ke=new WeakMap;function Ie(e,t=document){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid IAM manifest digest");let r=ke.get(t);r||(r=new Map,ke.set(t,r));let n="data-indiana-release",i=t.documentElement,l=()=>new Set((i.getAttribute(n)??"").split(/\s+/).filter(Boolean)),o=r.get(e);if(!o){let a=l();o={count:0,owned:!a.has(e)},r.set(e,o),a.add(e),i.setAttribute(n,[...a].join(" "))}o.count++;let s=!1;return{attributes:{indianaAppManifestRelease:e},destroy(){if(!s&&(s=!0,o.count--,!o.count&&(r.delete(e),o.owned))){let a=l();a.delete(e),a.size?i.setAttribute(n,[...a].join(" ")):i.removeAttribute(n)}}}}var He=/^[a-zA-Z:_][a-zA-Z0-9:_.-]*$/,oe={revert:function(){}},Y=new Map,se=new Set;function $e(e){return e==="html"?{childList:!0,subtree:!0,attributes:!0,characterData:!0}:{childList:!1,subtree:!1,attributes:!0,attributeFilter:[e]}}function Z(e){var t=Y.get(e);return t||(t={element:e,attributes:{}},Y.set(e,t)),t}function _(e,t,r,n,i){var l=r(e),o={isDirty:!1,originalValue:l,virtualValue:l,mutations:[],el:e,_positionTimeout:null,observer:new MutationObserver(function(){if(!dt&&!(t==="position"&&o._positionTimeout)){t==="position"&&(o._positionTimeout=setTimeout(function(){o._positionTimeout=null},1e3));var s=r(e);t==="position"&&s.parentNode===o.virtualValue.parentNode&&s.insertBeforeNode===o.virtualValue.insertBeforeNode||s!==o.virtualValue&&(o.originalValue=s,i(o))}}),mutationRunner:i,setValue:n,getCurrentValue:r};return t==="position"&&e.parentNode?o.observer.observe(e.parentNode,{childList:!0,subtree:!0,attributes:!1,characterData:!1}):o.observer.observe(e,$e(t)),o}function Q(e,t){var r=t.getCurrentValue(t.el);t.virtualValue=e,e&&typeof e!="string"?(!r||e.parentNode!==r.parentNode||e.insertBeforeNode!==r.insertBeforeNode)&&(t.isDirty=!0,Re()):e!==r&&(t.isDirty=!0,Re())}function We(e){var t=e.originalValue;e.mutations.forEach(function(r){return t=r.mutate(t)}),Q(st(t),e)}function Fe(e){var t=new Set(e.originalValue.split(/\s+/).filter(Boolean));e.mutations.forEach(function(r){return r.mutate(t)}),Q(Array.from(t).filter(Boolean).join(" "),e)}function Ke(e){var t=e.originalValue;e.mutations.forEach(function(r){return t=r.mutate(t)}),Q(t,e)}function Ye(e){var t=e.parentSelector,r=e.insertBeforeSelector,n=document.querySelector(t);if(!n)return null;var i=r?document.querySelector(r):null;return r&&!i?null:{parentNode:n,insertBeforeNode:i}}function Ze(e){var t=e.originalValue;e.mutations.forEach(function(r){var n=r.mutate(),i=Ye(n);t=i||t}),Q(t,e)}var _e=function(t){return t.innerHTML},Qe=function(t,r){return t.innerHTML=r};function Te(e){var t=Z(e);return t.html||(t.html=_(e,"html",_e,Qe,We)),t.html}var Xe=function(t){return{parentNode:t.parentElement,insertBeforeNode:t.nextElementSibling}},et=function(t,r){r.insertBeforeNode&&!r.parentNode.contains(r.insertBeforeNode)||r.parentNode.insertBefore(t,r.insertBeforeNode)};function Ne(e){var t=Z(e);return t.position||(t.position=_(e,"position",Xe,et,Ze)),t.position}var tt=function(t,r){return r?t.className=r:t.removeAttribute("class")},rt=function(t){return t.className};function Le(e){var t=Z(e);return t.classes||(t.classes=_(e,"class",rt,tt,Fe)),t.classes}var nt=function(t){return function(r){var n;return(n=r.getAttribute(t))!=null?n:null}},it=function(t){return function(r,n){return n!==null?r.setAttribute(t,n):r.removeAttribute(t)}};function Oe(e,t){var r=Z(e);return r.attributes[t]||(r.attributes[t]=_(e,t,nt(t),it(t),Ke)),r.attributes[t]}function ot(e,t){var r=Y.get(e);if(r)if(t==="html"){var n,i;(n=r.html)==null||(i=n.observer)==null||i.disconnect(),delete r.html}else if(t==="class"){var l,o;(l=r.classes)==null||(o=l.observer)==null||o.disconnect(),delete r.classes}else if(t==="position"){var s,a;(s=r.position)==null||(a=s.observer)==null||a.disconnect(),delete r.position}else{var u,m,c;(u=r.attributes)==null||(m=u[t])==null||(c=m.observer)==null||c.disconnect(),delete r.attributes[t]}}var W;function st(e){return W||(W=document.createElement("div")),W.innerHTML=e,W.innerHTML}function F(e,t,r){if(r.isDirty){r.isDirty=!1;var n=r.virtualValue;r.mutations.length||ot(e,t),r.setValue(e,n)}}function at(e,t){e.html&&F(t,"html",e.html),e.classes&&F(t,"class",e.classes),e.position&&F(t,"position",e.position),Object.keys(e.attributes).forEach(function(r){F(t,r,e.attributes[r])})}function Re(){Y.forEach(at)}function lt(e,t){var r=null;e.kind==="html"?r=Te(t):e.kind==="class"?r=Le(t):e.kind==="attribute"?r=Oe(t,e.attribute):e.kind==="position"&&(r=Ne(t)),r&&(r.mutations.push(e),r.mutationRunner(r))}function ut(e,t){var r=null;if(e.kind==="html"?r=Te(t):e.kind==="class"?r=Le(t):e.kind==="attribute"?r=Oe(t,e.attribute):e.kind==="position"&&(r=Ne(t)),!!r){var n=r.mutations.indexOf(e);n!==-1&&r.mutations.splice(n,1),r.mutationRunner(r)}}function De(e){if(!(e.kind==="position"&&e.elements.size===1)){var t=new Set(e.elements),r=document.querySelectorAll(e.selector);r.forEach(function(n){t.has(n)||(e.elements.add(n),lt(e,n))})}}function ct(e){e.elements.forEach(function(t){return ut(e,t)}),e.elements.clear(),se.delete(e)}function xe(){se.forEach(De)}var dt=!1;var ne;function ft(){typeof document>"u"||(ne||(ne=new MutationObserver(function(){xe()})),xe(),ne.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!1,characterData:!1}))}ft();function X(e){return typeof document>"u"?oe:(se.add(e),De(e),{revert:function(){ct(e)}})}function ie(e,t){return X({kind:"html",elements:new Set,mutate:t,selector:e})}function Be(e,t){return X({kind:"position",elements:new Set,mutate:t,selector:e})}function C(e,t){return X({kind:"class",elements:new Set,mutate:t,selector:e})}function K(e,t,r){return He.test(t)?t==="class"||t==="className"?C(e,function(n){var i=r(Array.from(n).join(" "));n.clear(),i&&i.split(/\s+/g).filter(Boolean).forEach(function(l){return n.add(l)})}):X({kind:"attribute",attribute:t,elements:new Set,mutate:r,selector:e}):oe}function pt(e){var t=e.selector,r=e.action,n=e.value,i=e.attribute,l=e.parentSelector,o=e.insertBeforeSelector;if(i==="html"){if(r==="append")return ie(t,function(s){return s+(n??"")});if(r==="set")return ie(t,function(){return n??""})}else if(i==="class"){if(r==="append")return C(t,function(s){n&&s.add(n)});if(r==="remove")return C(t,function(s){n&&s.delete(n)});if(r==="set")return C(t,function(s){s.clear(),n&&s.add(n)})}else if(i==="position"){if(r==="set"&&l)return Be(t,function(){return{insertBeforeSelector:o,parentSelector:l}})}else{if(r==="append")return K(t,i,function(s){return s!==null?s+(n??""):n??""});if(r==="set")return K(t,i,function(){return n??""});if(r==="remove")return K(t,i,function(){return null})}return oe}var mt={html:ie,classes:C,attribute:K,position:Be,declarative:pt},ae=mt;import ht from"dompurify";var le,qe;function gt(e){return(!le||qe!==window)&&(le=ht(window),qe=window),le.sanitize(e,{USE_PROFILES:{html:!0},FORBID_TAGS:["form","input","textarea","select","button","style"]})}function Pe(e){let t={...e};if(!["html","class","style","position","href","src","alt","title","id","role","hidden"].includes(t.attribute)&&!/^(aria|data)-[a-z0-9_-]+$/.test(t.attribute))throw new Error("Unsupported visual attribute");document.querySelector(t.selector);for(let r of document.querySelectorAll(t.selector))if(["SCRIPT","IFRAME","OBJECT","EMBED","HTML","HEAD"].includes(r.tagName)||r.tagName==="BODY"&&t.attribute==="html")throw new Error("Protected visual target");if(t.attribute==="html"&&(t.value=gt(t.value??"")),["href","src"].includes(t.attribute)&&t.action!=="remove"){let r=new URL(t.value??"",location.href);if(!["https:","http:","mailto:","tel:"].includes(r.protocol)||t.attribute==="src"&&!["https:","http:"].includes(r.protocol))throw new Error("Unsafe visual URL")}return t.parentSelector&&document.querySelector(t.parentSelector),t.insertBeforeSelector&&document.querySelector(t.insertBeforeSelector),t}function je(e,t={}){if(e.renderGuard&&!t.requireUniqueTargets)throw new Error("IAM render guard requires the source release fence");if(t.requireUniqueTargets)return yt(e,t);let r=e.domMutations.map(Pe),n=[],i=!1,l=!1,o,s=()=>{if(!i){i=!0,o?.disconnect();for(let u of n.reverse())u()}},a=()=>{i||l||(!r.length||e.css||t.allowJs&&e.js||r.some(u=>document.querySelector(u.selector)))&&(l=!0,t.onApplied?.())};try{if(e.css){let c=document.createElement("style");t.nonce&&(c.nonce=t.nonce),c.textContent=e.css,document.head.append(c),n.push(()=>c.remove())}for(let c of r){let f=ae.declarative(c);n.push(()=>f.revert())}if(t.allowJs&&e.js){let c=document.createElement("script");t.nonce&&(c.nonce=t.nonce),c.textContent=e.js,document.head.append(c),n.push(()=>c.remove())}let u=performance.now(),m=new WeakMap;o=new MutationObserver(c=>{if(!i){performance.now()-u>1e3&&(u=performance.now(),m=new WeakMap);for(let f of c){let M=(m.get(f.target)??0)+1;if(m.set(f.target,M),M>40){s(),t.onError?.(new Error("Visual changes conflict with repeated page rendering"));return}}a()}}),o.observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0,characterData:!0}),a()}catch(u){throw s(),u}return{revert:s,get applied(){return l}}}function yt(e,t){let r=t?.boundVariations??[e],n=new Set,i=new Set,l=[],o=new Map,s=r.flatMap(p=>p.renderGuard?[$(p.renderGuard)]:[]),a=s[0];if(s.some(p=>JSON.stringify(p)!==JSON.stringify(a)))throw new Error("IAM variations use different render states");if(e.js||r.some(p=>p.js))throw Error("IAM scripts cannot execute");if(r.length>20||r.reduce((p,V)=>p+V.css.length,0)>262144)throw Error("IAM target budget");let u=(p,V)=>{for(let h of p.domMutations){if(h.action!=="set"||h.attribute!=="html")throw Error("Unsupported IAM mutation");n.add(h.selector),i.add(h.selector)}if(!p.css)return;let y=document.createElement("style");re(y),y.media="not all",t?.nonce&&(y.nonce=t.nonce),y.textContent=p.css;try{if(document.head.append(y),!y.sheet)throw Error("IAM CSS is blocked");for(let h of y.sheet.cssRules){if(!("selectorText"in h)||typeof h.selectorText!="string")throw Error("Unsupported IAM style rule");n.add(h.selectorText),V&&l.push({selector:h.selectorText,css:h.cssText})}}finally{y.remove()}};for(let p of r)u(p,!1);if(u(e,!0),n.size>200)throw Error("IAM target budget");let m=e.domMutations.map(Pe),c=!1,f=!1,M=!1,x=!1,T="",A=0,N=(p,V)=>{let y=`${p}:${V}`;if(!(!t?.onTargetStatus||y===T||A>=32)){T=y,A++;try{t.onTargetStatus({status:p,total:n.size,matched:V})}catch{}}},b={},S=a?JSON.stringify(a):"",d,g="",w=()=>{if(!c){c=!0,b.unsubscribe?.();for(let p of o.values())p.revert();o.clear(),d?.remove(),d=void 0,f=!1}},B=()=>{for(let p of o.values())p.revert();o.clear(),d?.remove(),d=void 0,g="",f=!1};return b.unsubscribe=Ae({fail(p){w(),t?.onError?.(p)},prepare(p){if(a&&!p.matches(a,S))return y=>{c||(B(),x=!1,y(()=>{c||N("inactive",null)}))};let V=new Map;for(let y of n){let h=p.query(y);if(h.length>1)throw Error("IAM target is ambiguous in this rendered state");if(h.length){if(i.has(y)&&h[0].children.length)throw Error("IAM text target is no longer a leaf");V.set(y,h[0])}p.checkpoint()}return y=>{if(c)return;for(let[I,L]of o)V.get(I)!==L.element&&(L.revert(),o.delete(I));for(let I of new Set(m.map(L=>L.selector))){let L=V.get(I);if(!L||o.has(I))continue;let z=m.filter(v=>v.selector===I).map(v=>ae.declarative(v));o.set(I,{element:L,revert:()=>z.forEach(v=>v.revert())})}let h=l.filter(I=>V.has(I.selector)).map(I=>I.css).join(`
|
|
2
|
-
`);h!==
|
|
1
|
+
import{a as he,b as be,c as ve,d as ye,e as we,f as Ee,g as Me,i as Ae}from"./chunk-HEBQUICQ.js";import"./chunk-DSPLGTQI.js";import"./chunk-OBYJWIRB.js";import"./chunk-WWUUVURR.js";import"./chunk-RRII2DMC.js";import{h as me,k as ge,m as G}from"./chunk-KQCTDXVD.js";function H(e,t=()=>{}){let r=new WeakMap,n=0,i=l=>{let a=r.get(l);if(a!==void 0)return a;let o=[],u=l,c=!0;for(;u;){let m=r.get(u);if(m!==void 0){c=m;break}if(++n>8192||o.length>=256)throw Error("IAM render ancestry budget exceeded");if(o.push(u),t(),u.hasAttribute("hidden")||/(?:^|;)\s*display\s*:\s*none\s*(?:!\s*important\s*)?(?:;|$)/i.test(u.getAttribute("style")??"")){c=!1;break}u=u.parentElement}for(let m of o)r.set(m,c);return c};return l=>{let a=0,o=e.querySelectorAll(l);for(let u=0;u<o.length;u++){let c=o[u];if(!c)throw Error("IAM render selection changed");i(c)&&a++,t()}return a}}var Je=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function F(e){if(!Je(e)||Object.keys(e).some(l=>!["schemaVersion","renderKey","routeTemplate","selectors","present","absent"].includes(l))||e.schemaVersion!==1||typeof e.renderKey!="string"||!e.renderKey||e.renderKey.length>256||typeof e.routeTemplate!="string"||!e.routeTemplate.startsWith("/")||e.routeTemplate.length>2048||!Array.isArray(e.selectors)||e.selectors.length>512||e.selectors.some(l=>typeof l!="string"||l.length>512||!/^[a-z][a-z0-9-]*\[(?:id|data-testid|data-test|data-qa|data-indiana-id)="(?:[^"\\\x00-\x1f\x7f]|\\["\\])*"\]$/.test(l))||!Array.isArray(e.present)||!Array.isArray(e.absent))throw new Error("Invalid IAM render guard");if(e.present.length===0)throw Error("IAM render needs positive source evidence");let t=e.selectors,r=e.present,n=e.absent,i=[...r,...n];if(new Set(t).size!==t.length||i.length!==t.length||new Set(i).size!==i.length||i.some(l=>typeof l!="number"||!Number.isInteger(l)||l<0||l>=t.length))throw new Error("Invalid IAM render signature");return{schemaVersion:1,renderKey:e.renderKey,routeTemplate:e.routeTemplate,selectors:e.selectors,present:e.present,absent:e.absent}}function Ge(e,t){let r=e.split("/").filter(Boolean),n="";for(let i of r)/^\[\[\.\.\.[^\[\]]+\]\]$/.test(i)?n+="(?:/[^/]+)*":/^\[\.\.\.[^\[\]]+\]$/.test(i)?n+="(?:/[^/]+)+":/^\[[^\[\]]+\]$/.test(i)?n+="/[^/]+":n+="/"+i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp("^"+(n?n+"/?":"/")+"$").test(t)&&!/[\[\]]/.test(t)}function Ve(e,t,r,n,i=H(t,n)){if(!Ge(e.routeTemplate,r))return!1;let l=new Set(e.present),a=!0;for(let o=0;o<e.selectors.length;o++){let u=i(e.selectors[o]);if(l.has(o)&&u>1)throw new Error("IAM render anchor is ambiguous");(l.has(o)?u!==1:u!==0)&&(a=!1),n()}return a}var z=class extends Error{constructor(){super("IAM page check exceeded its work budget")}},te=new WeakMap,re=new WeakSet;function ne(e){re.add(e)}function Ue(e){let t=new Set,r=new Set,n,i=0,l=!1,a=0,o,u=()=>{t.size||i||(n?.disconnect(),o!==void 0&&cancelAnimationFrame(o),e.removeEventListener("visibilitychange",d),te.delete(e))};function c(g){if(e.hidden)return;let M=performance.now(),w=new Map,v=new Map,y=()=>{if(performance.now()-M>8)throw new z},L=s=>{y();let p=w.get(s);return p||(p=e.querySelectorAll(s),w.set(s,p)),y(),p},A=H({querySelectorAll:L},y),I=s=>{let p=s.filter(R=>!w.has(R));if(!p.length)return;let f=new Map;for(let R of p){let S=/^([a-z][a-z0-9-]*)\[(id|data-testid|data-test|data-qa|data-indiana-id)="((?:[^"\\\x00-\x1f\x7f]|\\["\\])*)"\]$/.exec(R);if(!S)throw Error("Invalid IAM render selector");let[,x,B,b]=S,k=b.replace(/\\(["\\])/g,"$1"),T=f.get(x);T||f.set(x,T=new Map);let j=T.get(B);j||T.set(B,j=new Map);let E=j.get(k);E||j.set(k,E=[]),w.set(R,E)}y();let h=e.querySelectorAll(p.join(","));if(y(),h.length>8192)throw Error("IAM render selection budget exceeded");for(let R of h){let S=f.get(R.localName.toLowerCase());if(S)for(let[x,B]of S){let b=R.getAttribute(x);b!==null&&B.get(b)?.push(R)}y()}},V={query:L,checkpoint:y,matches(s,p){let f=v.get(p);if(!f){try{let h=!1;f={match:Ve(s,e,location.pathname,y,R=>(h||(I(s.selectors),h=!0),A(R)))}}catch(h){f={error:h}}v.set(p,f)}if("error"in f)throw f.error;return f.match}},q=[],O=[],D=[];for(let s of g)if(t.has(s))try{q.push({job:s,commit:s.prepare(V)})}catch(p){if(p instanceof z)throw p;O.push({job:s,error:p})}y();for(let{job:s,error:p}of O)t.has(s)&&s.fail(p);for(let{job:s,commit:p}of q)if(t.has(s))try{y(),p(f=>D.push(f))}catch(f){if(f instanceof z)throw f;s.fail(f)}for(let s of D)s()}function m(g){if(!(o!==void 0||e.hidden))try{c(g),a=0}catch(M){if(!(M instanceof z))throw M;for(let w of[...t])w.suspend();if(a++>=2){for(let w of[...t])w.fail(M);return}o=requestAnimationFrame(()=>{o=void 0,m([...t])})}}function d(){l||!t.size||e.hidden||(l=!0,queueMicrotask(()=>{l=!1,m([...t])}))}return{begin(){i++},end(){--i===0&&(r.clear(),m([...t])),u()},add(g){return n||(n=new MutationObserver(M=>{let w=v=>re.has(v)||!!(v.parentNode&&re.has(v.parentNode));M.some(v=>!w(v.target)&&!(v.type==="childList"&&[...v.addedNodes,...v.removedNodes].length>0&&[...v.addedNodes,...v.removedNodes].every(w)))&&d()}),n.observe(e.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["style","hidden","data-indiana-id","data-indiana-release","data-testid","id","name"]}),e.addEventListener("visibilitychange",d)),t.add(g),i?r.add(g):m([g]),()=>{t.delete(g),r.delete(g),u()}}}}function Se(){let e=te.get(document);return e||(e=Ue(document),te.set(document,e)),e}function ke(e){return Se().add(e)}function Ie(e){let t=Se();t.begin();try{e()}finally{t.end()}}async function $e(e,t,r){let n=new URL(e,t.baseURI),i=t.defaultView?.location.origin,l=/^\/\.well-known\/indiana\/releases\/([a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12})\.json$/.exec(n.pathname)?.[1];if(!l||n.origin!==i||n.search||n.hash||n.username||n.password)throw Error("Invalid IAM release URL");let a=AbortSignal.any([r,AbortSignal.timeout(2e3)]),o=await fetch(n,{credentials:"omit",redirect:"error",cache:"force-cache",signal:a}),u=o.headers.get("content-length");if(!o.ok||!/^application\/json(?:;|$)/i.test(o.headers.get("content-type")??"")||u!==null&&(!/^\d+$/.test(u)||Number(u)>512))throw o.body?.cancel().catch(()=>{}),Error("IAM release is unavailable");let c=o.body?.getReader();if(!c)throw Error("IAM release is unavailable");let m=[],d=0,g=()=>{},M=new Promise((I,V)=>{g=()=>V(Error("IAM release timeout")),a.addEventListener("abort",g,{once:!0}),a.aborted&&g()}),w=!1;try{for(;;){let I=await Promise.race([c.read(),M]);if(I.done){w=!0;break}if(d+=I.value.length,d>512)throw Error("IAM release budget");m.push(I.value)}}finally{a.removeEventListener("abort",g),w||c.cancel().catch(()=>{}),c.releaseLock()}let v=new Uint8Array(d),y=0;for(let I of m)v.set(I,y),y+=I.length;let L=new TextDecoder("utf-8",{fatal:!0}).decode(v),A=JSON.parse(L);if(L.trim()!==JSON.stringify(A))throw Error("Noncanonical IAM release descriptor");if(!A||typeof A!="object"||Array.isArray(A)||Object.keys(A).sort().join(",")!=="format,manifestDigest,releaseId,schemaVersion"||Reflect.get(A,"format")!=="indiana-app-manifest-release"||Reflect.get(A,"schemaVersion")!==2||Reflect.get(A,"releaseId")!==l||!/^[a-f0-9]{64}$/.test(String(Reflect.get(A,"manifestDigest"))))throw Error("Invalid IAM release descriptor");return Reflect.get(A,"manifestDigest")}var ie=new WeakMap;function Re(e,t=document){if(!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid IAM manifest digest");let r="data-indiana-release",n=t.documentElement,i=()=>new Set((n.getAttribute(r)??"").split(/\s+/).filter(Boolean)),l=ie.get(t);if(!l){let m=new Map,d=new MutationObserver(()=>{let g=i(),M=!1;for(let[w,v]of m)v.count&&!g.has(w)&&(g.add(w),M=!0);M&&n.setAttribute(r,[...g].join(" "))});d.observe(n,{attributes:!0,attributeFilter:[r]}),l={releases:m,observer:d},ie.set(t,l)}let{releases:a,observer:o}=l,u=a.get(e);if(!u){let m=i();u={count:0,owned:!m.has(e)},a.set(e,u),m.add(e),n.setAttribute(r,[...m].join(" "))}u.count++;let c=!1;return{attributes:{indianaAppManifestRelease:e},destroy(){if(!c&&(c=!0,u.count--,!u.count&&(a.delete(e),a.size||(o.disconnect(),ie.delete(t)),u.owned))){let m=i();m.delete(e),m.size?n.setAttribute(r,[...m].join(" ")):n.removeAttribute(r)}}}}var He=/^[a-zA-Z:_][a-zA-Z0-9:_.-]*$/,ae={revert:function(){}},Z=new Map,le=new Set;function Fe(e){return e==="html"?{childList:!0,subtree:!0,attributes:!0,characterData:!0}:{childList:!1,subtree:!1,attributes:!0,attributeFilter:[e]}}function _(e){var t=Z.get(e);return t||(t={element:e,attributes:{}},Z.set(e,t)),t}function Q(e,t,r,n,i){var l=r(e),a={isDirty:!1,originalValue:l,virtualValue:l,mutations:[],el:e,_positionTimeout:null,observer:new MutationObserver(function(){if(!ft&&!(t==="position"&&a._positionTimeout)){t==="position"&&(a._positionTimeout=setTimeout(function(){a._positionTimeout=null},1e3));var o=r(e);t==="position"&&o.parentNode===a.virtualValue.parentNode&&o.insertBeforeNode===a.virtualValue.insertBeforeNode||o!==a.virtualValue&&(a.originalValue=o,i(a))}}),mutationRunner:i,setValue:n,getCurrentValue:r};return t==="position"&&e.parentNode?a.observer.observe(e.parentNode,{childList:!0,subtree:!0,attributes:!1,characterData:!1}):a.observer.observe(e,Fe(t)),a}function X(e,t){var r=t.getCurrentValue(t.el);t.virtualValue=e,e&&typeof e!="string"?(!r||e.parentNode!==r.parentNode||e.insertBeforeNode!==r.insertBeforeNode)&&(t.isDirty=!0,xe()):e!==r&&(t.isDirty=!0,xe())}function We(e){var t=e.originalValue;e.mutations.forEach(function(r){return t=r.mutate(t)}),X(at(t),e)}function Ke(e){var t=new Set(e.originalValue.split(/\s+/).filter(Boolean));e.mutations.forEach(function(r){return r.mutate(t)}),X(Array.from(t).filter(Boolean).join(" "),e)}function Ye(e){var t=e.originalValue;e.mutations.forEach(function(r){return t=r.mutate(t)}),X(t,e)}function Ze(e){var t=e.parentSelector,r=e.insertBeforeSelector,n=document.querySelector(t);if(!n)return null;var i=r?document.querySelector(r):null;return r&&!i?null:{parentNode:n,insertBeforeNode:i}}function _e(e){var t=e.originalValue;e.mutations.forEach(function(r){var n=r.mutate(),i=Ze(n);t=i||t}),X(t,e)}var Qe=function(t){return t.innerHTML},Xe=function(t,r){return t.innerHTML=r};function Ne(e){var t=_(e);return t.html||(t.html=Q(e,"html",Qe,Xe,We)),t.html}var et=function(t){return{parentNode:t.parentElement,insertBeforeNode:t.nextElementSibling}},tt=function(t,r){r.insertBeforeNode&&!r.parentNode.contains(r.insertBeforeNode)||r.parentNode.insertBefore(t,r.insertBeforeNode)};function Le(e){var t=_(e);return t.position||(t.position=Q(e,"position",et,tt,_e)),t.position}var rt=function(t,r){return r?t.className=r:t.removeAttribute("class")},nt=function(t){return t.className};function Oe(e){var t=_(e);return t.classes||(t.classes=Q(e,"class",nt,rt,Ke)),t.classes}var it=function(t){return function(r){var n;return(n=r.getAttribute(t))!=null?n:null}},ot=function(t){return function(r,n){return n!==null?r.setAttribute(t,n):r.removeAttribute(t)}};function De(e,t){var r=_(e);return r.attributes[t]||(r.attributes[t]=Q(e,t,it(t),ot(t),Ye)),r.attributes[t]}function st(e,t){var r=Z.get(e);if(r)if(t==="html"){var n,i;(n=r.html)==null||(i=n.observer)==null||i.disconnect(),delete r.html}else if(t==="class"){var l,a;(l=r.classes)==null||(a=l.observer)==null||a.disconnect(),delete r.classes}else if(t==="position"){var o,u;(o=r.position)==null||(u=o.observer)==null||u.disconnect(),delete r.position}else{var c,m,d;(c=r.attributes)==null||(m=c[t])==null||(d=m.observer)==null||d.disconnect(),delete r.attributes[t]}}var W;function at(e){return W||(W=document.createElement("div")),W.innerHTML=e,W.innerHTML}function K(e,t,r){if(r.isDirty){r.isDirty=!1;var n=r.virtualValue;r.mutations.length||st(e,t),r.setValue(e,n)}}function lt(e,t){e.html&&K(t,"html",e.html),e.classes&&K(t,"class",e.classes),e.position&&K(t,"position",e.position),Object.keys(e.attributes).forEach(function(r){K(t,r,e.attributes[r])})}function xe(){Z.forEach(lt)}function ut(e,t){var r=null;e.kind==="html"?r=Ne(t):e.kind==="class"?r=Oe(t):e.kind==="attribute"?r=De(t,e.attribute):e.kind==="position"&&(r=Le(t)),r&&(r.mutations.push(e),r.mutationRunner(r))}function ct(e,t){var r=null;if(e.kind==="html"?r=Ne(t):e.kind==="class"?r=Oe(t):e.kind==="attribute"?r=De(t,e.attribute):e.kind==="position"&&(r=Le(t)),!!r){var n=r.mutations.indexOf(e);n!==-1&&r.mutations.splice(n,1),r.mutationRunner(r)}}function qe(e){if(!(e.kind==="position"&&e.elements.size===1)){var t=new Set(e.elements),r=document.querySelectorAll(e.selector);r.forEach(function(n){t.has(n)||(e.elements.add(n),ut(e,n))})}}function dt(e){e.elements.forEach(function(t){return ct(e,t)}),e.elements.clear(),le.delete(e)}function Te(){le.forEach(qe)}var ft=!1;var oe;function pt(){typeof document>"u"||(oe||(oe=new MutationObserver(function(){Te()})),Te(),oe.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!1,characterData:!1}))}pt();function ee(e){return typeof document>"u"?ae:(le.add(e),qe(e),{revert:function(){dt(e)}})}function se(e,t){return ee({kind:"html",elements:new Set,mutate:t,selector:e})}function Be(e,t){return ee({kind:"position",elements:new Set,mutate:t,selector:e})}function U(e,t){return ee({kind:"class",elements:new Set,mutate:t,selector:e})}function Y(e,t,r){return He.test(t)?t==="class"||t==="className"?U(e,function(n){var i=r(Array.from(n).join(" "));n.clear(),i&&i.split(/\s+/g).filter(Boolean).forEach(function(l){return n.add(l)})}):ee({kind:"attribute",attribute:t,elements:new Set,mutate:r,selector:e}):ae}function mt(e){var t=e.selector,r=e.action,n=e.value,i=e.attribute,l=e.parentSelector,a=e.insertBeforeSelector;if(i==="html"){if(r==="append")return se(t,function(o){return o+(n??"")});if(r==="set")return se(t,function(){return n??""})}else if(i==="class"){if(r==="append")return U(t,function(o){n&&o.add(n)});if(r==="remove")return U(t,function(o){n&&o.delete(n)});if(r==="set")return U(t,function(o){o.clear(),n&&o.add(n)})}else if(i==="position"){if(r==="set"&&l)return Be(t,function(){return{insertBeforeSelector:a,parentSelector:l}})}else{if(r==="append")return Y(t,i,function(o){return o!==null?o+(n??""):n??""});if(r==="set")return Y(t,i,function(){return n??""});if(r==="remove")return Y(t,i,function(){return null})}return ae}var gt={html:se,classes:U,attribute:Y,position:Be,declarative:mt},ue=gt;import ht from"dompurify";var ce,je;function bt(e){return(!ce||je!==window)&&(ce=ht(window),je=window),ce.sanitize(e,{USE_PROFILES:{html:!0},FORBID_TAGS:["form","input","textarea","select","button","style"]})}function Pe(e){let t={...e};if(!["html","class","style","position","href","src","alt","title","id","role","hidden"].includes(t.attribute)&&!/^(aria|data)-[a-z0-9_-]+$/.test(t.attribute))throw new Error("Unsupported visual attribute");document.querySelector(t.selector);for(let r of document.querySelectorAll(t.selector))if(["SCRIPT","IFRAME","OBJECT","EMBED","HTML","HEAD"].includes(r.tagName)||r.tagName==="BODY"&&t.attribute==="html")throw new Error("Protected visual target");if(t.attribute==="html"&&(t.value=bt(t.value??"")),["href","src"].includes(t.attribute)&&t.action!=="remove"){let r=new URL(t.value??"",location.href);if(!["https:","http:","mailto:","tel:"].includes(r.protocol)||t.attribute==="src"&&!["https:","http:"].includes(r.protocol))throw new Error("Unsafe visual URL")}return t.parentSelector&&document.querySelector(t.parentSelector),t.insertBeforeSelector&&document.querySelector(t.insertBeforeSelector),t}function Ce(e,t={}){if(e.renderGuard&&!t.requireUniqueTargets)throw new Error("IAM render guard requires the source release fence");if(t.requireUniqueTargets)return vt(e,t);let r=e.domMutations.map(Pe),n=[],i=!1,l=!1,a,o=()=>{if(!i){i=!0,a?.disconnect();for(let c of n.reverse())c()}},u=()=>{i||l||(!r.length||e.css||t.allowJs&&e.js||r.some(c=>document.querySelector(c.selector)))&&(l=!0,t.onApplied?.())};try{if(e.css){let d=document.createElement("style");t.nonce&&(d.nonce=t.nonce),d.textContent=e.css,document.head.append(d),n.push(()=>d.remove())}for(let d of r){let g=ue.declarative(d);n.push(()=>g.revert())}if(t.allowJs&&e.js){let d=document.createElement("script");t.nonce&&(d.nonce=t.nonce),d.textContent=e.js,document.head.append(d),n.push(()=>d.remove())}let c=performance.now(),m=new WeakMap;a=new MutationObserver(d=>{if(!i){performance.now()-c>1e3&&(c=performance.now(),m=new WeakMap);for(let g of d){let M=(m.get(g.target)??0)+1;if(m.set(g.target,M),M>40){o(),t.onError?.(new Error("Visual changes conflict with repeated page rendering"));return}}u()}}),a.observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0,characterData:!0}),u()}catch(c){throw o(),c}return{revert:o,get applied(){return l}}}function vt(e,t){let r=t?.boundVariations??[e],n=new Set,i=new Set,l=[],a=new Map,o=r.flatMap(s=>s.renderGuard?[F(s.renderGuard)]:[]),u=o[0];if(o.some(s=>JSON.stringify(s)!==JSON.stringify(u)))throw new Error("IAM variations use different render states");if(e.js||r.some(s=>s.js))throw Error("IAM scripts cannot execute");if(r.length>20||r.reduce((s,p)=>s+p.css.length,0)>262144)throw Error("IAM target budget");let c=(s,p)=>{for(let h of s.domMutations){if(h.action!=="set"||h.attribute!=="html")throw Error("Unsupported IAM mutation");n.add(h.selector),i.add(h.selector)}if(!s.css)return;let f=document.createElement("style");ne(f),f.media="not all",t?.nonce&&(f.nonce=t.nonce),f.textContent=s.css;try{if(document.head.append(f),!f.sheet)throw Error("IAM CSS is blocked");for(let h of f.sheet.cssRules){if(!("selectorText"in h)||typeof h.selectorText!="string")throw Error("Unsupported IAM style rule");n.add(h.selectorText),p&&l.push({selector:h.selectorText,css:h.cssText})}}finally{f.remove()}};for(let s of r)c(s,!1);if(c(e,!0),n.size>200)throw Error("IAM target budget");let m=e.domMutations.map(Pe),d=!1,g=!1,M=!1,w=!1,v="",y=0,L=(s,p)=>{let f=`${s}:${p}`;if(!(!t?.onTargetStatus||f===v||y>=32)){v=f,y++;try{t.onTargetStatus({status:s,total:n.size,matched:p})}catch{}}},A={},I=u?JSON.stringify(u):"",V,q="",O=()=>{if(!d){d=!0,A.unsubscribe?.();for(let s of a.values())s.revert();a.clear(),V?.remove(),V=void 0,g=!1}},D=()=>{for(let s of a.values())s.revert();a.clear(),V?.remove(),V=void 0,q="",g=!1};return A.unsubscribe=ke({suspend:D,fail(s){O(),t?.onError?.(s)},prepare(s){if(u&&!s.matches(u,I))return f=>{d||(D(),w=!1,f(()=>{d||L("inactive",null)}))};let p=new Map;for(let f of n){let h=s.query(f);if(h.length>1)throw Error("IAM target is ambiguous in this rendered state");if(h.length){if(i.has(f)&&h[0].children.length)throw Error("IAM text target is no longer a leaf");p.set(f,h[0])}s.checkpoint()}return f=>{if(d)return;for(let[S,x]of a)p.get(S)!==x.element&&(x.revert(),a.delete(S));for(let S of new Set(m.map(x=>x.selector))){let x=p.get(S);if(!x||a.has(S))continue;let B=m.filter(b=>b.selector===S).map(b=>ue.declarative(b));a.set(S,{element:x,revert:()=>B.forEach(b=>b.revert())})}let h=l.filter(S=>p.has(S.selector)).map(S=>S.css).join(`
|
|
2
|
+
`);h!==q&&(q=h,h?(V||(V=document.createElement("style"),ne(V),t?.nonce&&(V.nonce=t.nonce),document.head.append(V)),V.textContent=h):(V?.remove(),V=void 0)),g=n.size===0||p.size>0;let R=p.size===n.size?"matched":p.size>0?"partial":w?"missing":"waiting";p.size&&(w=!0),f(()=>{d||L(R,p.size)}),g&&!M&&f(()=>{!d&&g&&!M&&(M=!0,t?.onApplied?.())})}}}),d&&A.unsubscribe(),{revert:O,get applied(){return g}}}var $=e=>!!e&&typeof e=="object"&&!Array.isArray(e),J=(e,t)=>typeof e=="string"&&e.length<=t,yt=e=>typeof e=="string"&&(["html","class","style","position","href","src","alt","title","id","role","hidden"].includes(e)||/^(aria|data)-[a-z0-9_-]+$/.test(e));function wt(e){if(!$(e)||!J(e.css??"",1e5)||!J(e.js??"",1e5)||!Array.isArray(e.domMutations??[])||Array.isArray(e.domMutations)&&e.domMutations.length>200)throw new Error("Invalid visual variation");let t=e.domMutations??[];for(let r of t)if(!$(r)||!J(r.selector,2048)||!r.selector||!yt(r.attribute)||!["set","append","remove"].includes(String(r.action))||r.value!==void 0&&!J(r.value,5e4)||r.parentSelector!==void 0&&!J(r.parentSelector,2048)||r.insertBeforeSelector!==void 0&&!J(r.insertBeforeSelector,2048))throw new Error("Invalid visual mutation");return{css:e.css??"",js:e.js??"",domMutations:t,...e.renderGuard===void 0?{}:{renderGuard:F(e.renderGuard)}}}function ze(e){if(!$(e)||typeof e.environmentId!="string"||typeof e.trackExposures!="boolean"||!/^[-a-f0-9]{36}$/i.test(e.environmentId)||typeof e.generation!="string"||!/^[a-f0-9]{64}$/.test(e.generation)||!Array.isArray(e.experiments)||e.experiments.length>100||!$(e.savedGroups))throw new Error("Invalid visual experiment payload");let t=e.experiments.map(r=>{if(!$(r)||!["key","changeId"].every(n=>typeof r[n]=="string"&&r[n])||!/^[a-f0-9]{64}$/.test(String(r.changeId))||["namespace","status","groups","url"].some(n=>Object.hasOwn(r,n))||r.hashVersion!==void 0&&r.hashVersion!==2||!Array.isArray(r.variations)||r.variations.length<2||r.variations.length>20||r.urlPatterns!==void 0&&!Array.isArray(r.urlPatterns))throw new Error("Invalid visual experiment");return{...r,variations:r.variations.map(wt)}});return{...e,experiments:t}}function Ht(e){let t=ve(e.baseUrl);if(e.appManifestRelease!==void 0&&!/^[a-f0-9]{64}$/.test(e.appManifestRelease))throw new Error("Invalid IAM manifest digest");if(!/^[0-9a-f-]{36}$/i.test(e.environmentId))throw new Error("Invalid App environment ID");let r=e.fetch??globalThis.fetch.bind(globalThis),n=Me(r),i=`${t}/api/v1/visual-experiments/${e.environmentId}`,l=e.appManifestRelease?`${i}?iam=${e.appManifestRelease}`:i,a=he(e.deviceIdCookie??"indiana_did"),o=be(),u=null,c=!1,m=!1,d="",g={...e.attributes??{}},M,w,v=0,y=new Map,L=new Map,A=new Set,I=[],V,q,O;function D(){clearTimeout(q),O?.remove(),O=void 0}function s(b=!1){clearTimeout(V),V=void 0;let k=I.splice(0,20);return k.length?Ee(r,`${i}/events`,JSON.stringify({events:k}),b).catch(T=>e.log?.("Visual exposure not sent",{error:T})):Promise.resolve()}function p(b,k){let T=G(b,k);A.has(T)||e.trackExposures===!1||u?.trackExposures===!1||c||(A.add(T),I.push({eventUuid:crypto.randomUUID(),timestamp:new Date().toISOString(),deviceId:a,...o?{sessionId:o}:{},url:location.href,pageTitle:document.title.slice(0,512),experimentKey:b.key,variationKey:k.key}),I.length>=20?s():V??=setTimeout(()=>{s()},1e3))}function f(b){if(!u||c)return;let k=new Set,T={onExperimentViewed:(E,P)=>{k.add(G(E,P))},url:location.href,attributes:{...Ae(a,location),...g,indianaAppManifestRelease:e.appManifestRelease??null},savedGroups:me(u.savedGroups),log:e.log},j=new Set;for(let E of u.experiments){let P=E;try{let N=ge(P,T);if(L.set(E.changeId,N),!N.inExperiment)continue;j.add(E.changeId);let de=JSON.stringify([N.key,N.value]),fe=y.get(E.changeId);if(fe?.signature===de){k.has(G(P,N))&&b.push(()=>{fe.applied()&&p(P,N)});continue}y.get(E.changeId)?.revert(),y.delete(E.changeId);let pe=Ce(N.value,{requireUniqueTargets:!!e.appManifestRelease&&Array.isArray(E.condition?.$and)&&E.condition.$and.some(C=>C!==null&&typeof C=="object"&&!Array.isArray(C)&&C.indianaAppManifestRelease===e.appManifestRelease),boundVariations:E.variations,allowJs:e.disableJsInjection===!1,nonce:e.nonce,onApplied:()=>{k.has(G(P,N))&&p(P,N)},onError:C=>e.log?.("Visual experiment stopped",{experiment:E.key,changeId:E.changeId,variation:N.key,error:String(C)}),onTargetStatus:e.log?C=>e.log?.("Visual target status changed",{experiment:E.key,changeId:E.changeId,variation:N.key,...C}):void 0});y.set(E.changeId,{signature:de,revert:pe.revert,applied:()=>pe.applied})}catch(N){e.log?.("Skipping visual experiment",{experiment:E.key,error:String(N)})}}for(let[E,P]of y)j.has(E)||(P.revert(),y.delete(E));D()}let h=()=>{let b=[];Ie(()=>f(b));for(let k of b)k()};async function R(){let b=++v,k;try{k=await n.read(l,we)}catch(j){if(c||b!==v)return!1;throw j}let T=ze(k);if(T.environmentId.toLowerCase()!==e.environmentId.toLowerCase())throw new Error("Visual payload scope changed");return c||b!==v?!1:(u=T,!0)}let S=()=>{d!==location.href&&(d=location.href,h())},x=()=>{s(!0)},B=()=>{M||c||(M=ye(S),addEventListener("pagehide",x),d=location.href)};return{async start(){if(!(m||c)){m=!0,e.appManifestRelease&&(w=Re(e.appManifestRelease)),e.antiFlicker&&(O=document.createElement("style"),e.nonce&&(O.nonce=e.nonce),O.textContent="body { visibility: hidden !important }",document.head.append(O),q=setTimeout(D,Math.min(3e3,Math.max(0,e.antiFlickerTimeout??1e3))));try{if(!await R()||c)return;B(),h()}finally{D()}}},async refresh(){c||await R()&&(m&&B(),h())},setAttributes(b){g={...b},h()},flush:()=>s(),getResults(){return new Map(L)},get generation(){return u?.generation??null},destroy(){c=!0,v++,n.destroy(),M?.(),w?.destroy(),removeEventListener("pagehide",x),D();for(let b of y.values())b.revert();y.clear(),s(!0),u=null,L.clear(),A.clear(),g={}}}}export{Ht as createVisualExperiments,$e as loadAppManifestRelease};
|
package/package.json
CHANGED