1import{_ as oe}from"./BdNorZXP.js";import{_ as ne}from"./nrVF34xG.js";import{_ as ae}from"./Bf8FvaUU.js";import{_ as re}from"./B2SSNkg3.js";import{d as ie,ac as de,ad as le,A as ce,y as ue,i as _,b as h,w as me,Y as be,e as b,h as r,f as e,l as w,o as g,a as o,n as q,t as n,F as L,r as P,g as ge,m as y}from"./DjRoh7cm.js";import{u as pe}from"./gWhHtO43.js";import{u as fe}from"./DGVqpFzU.js";import"./BOD90fFw.js";import"./DZTJzZ12.js";import"./D4G_9L3Y.js";import"./DfXMk_Bc.js";import"./CQ8bV0yh.js";import"./CJduDl6F.js";import"./j-G2pMb4.js";import"./DfAamEz7.js";import"./BjRwfRbM.js";const ve={class:"container mx-auto px-4 pb-10 pt-6 md:px-6"},xe={class:"grid grid-cols-1 gap-4 xl:grid-cols-[1.05fr_0.95fr] xl:gap-6"},_e={class:"space-y-4"},he={class:"flex flex-wrap gap-2"},ke={class:"rounded-md border border-base-content/10 bg-base-300/40 p-4"},we={class:"flex flex-wrap gap-2"},ye={class:"rounded-md border border-base-content/10 bg-base-300/40 p-4"},Ce={class:"mb-3 flex items-center justify-between gap-4"},Re={class:"flex flex-wrap gap-2"},Se={class:"rounded-md border border-base-content/10 bg-base-200 px-3 py-2 font-mono text-xs"},Ne={class:"grid grid-cols-1 gap-3 sm:grid-cols-2"},Te={class:"text-xs uppercase tracking-[0.2em] opacity-75"},De={class:"mt-2 font-mono text-sm font-semibold"},qe={class:"mt-4 grid grid-cols-1 gap-3 md:grid-cols-2"},Ee={class:"rounded-md border border-base-content/10 bg-base-300/40 p-4"},Ae={class:"mt-2 font-mono text-sm"},Le={class:"rounded-md border border-base-content/10 bg-base-300/40 p-4"},Pe={class:"mt-2 font-mono text-sm"},$e={class:"mt-4 grid grid-cols-2 gap-3 md:grid-cols-4"},He={class:"rounded-md border border-base-content/10 bg-base-300/40 p-3"},Be={class:"mt-2 font-mono text-lg"},Oe={class:"rounded-md border border-base-content/10 bg-base-300/40 p-3"},Ue={class:"mt-2 font-mono text-lg"},Ie={class:"rounded-md border border-base-content/10 bg-base-300/40 p-3"},je={class:"mt-2 font-mono text-lg"},Fe={class:"rounded-md border border-base-content/10 bg-base-300/40 p-3"},Me={class:"mt-2 font-mono text-lg"},ze={class:"overflow-x-auto rounded-md bg-base-100 p-4 font-mono text-xs leading-6"},Qe={class:"mb-4 flex items-center justify-between gap-4"},Ge={class:"rounded-full border border-base-content/10 bg-base-300/40 px-3 py-1 font-mono text-xs"},Je={key:0,class:"space-y-3"},Ke={class:"flex flex-wrap items-center justify-between gap-3"},We={class:"flex items-center gap-2"},Xe={class:"rounded-full border border-base-content/10 bg-base-200 px-2 py-1 font-mono text-[11px] uppercase tracking-[0.2em]"},Ye={class:"font-semibold"},Ve={class:"font-mono text-xs text-base-content"},Ze={key:0,class:"mt-3 overflow-x-auto rounded-md bg-base-100/80 p-4 font-mono text-xs leading-6"},et={key:1,class:"rounded-md border border-dashed border-base-content/20 bg-base-300/30 px-4 py-10 text-center text-base-content"},$=120,xt=ie({__name:"realtime",setup(tt){const p=de(),{subscribe:H}=le(),{isRealTime:C,requiredAction:m,deactivateRealtime:B,resetRealtime:O,reactivateRealtime:U,toggleRealtime:I,isLoading:k}=pe();ce({title:"Realtime testing"}),fe().trackPageView("test");const d=ue(p.getStatus()),f=_([]),j=_(1),R=_(),v=_(!1),S=_();let x;const N=h(()=>m.value==="registration-required"||m.value==="activation-required"),F=h(()=>[{label:"Realtime",value:C.value?"On":"Off",class:C.value?"border-success/30 bg-success/15 text-success":"border-base-content/20 bg-base-300/70 text-base-content"},{label:"Action",value:m.value??"none",class:m.value?"border-warning/30 bg-warning/15 text-warning-content":"border-success/30 bg-success/15 text-success"},{label:"Loading",value:k.value?"busy":"idle",class:k.value?"border-info/30 bg-info/15 text-info":"border-base-content/20 bg-base-300/70 text-base-content"},{label:"Transport",value:d.value.isUsingHttp?"HTTP":"WebSocket",class:d.value.isUsingHttp?"border-warning/30 bg-warning/15 text-warning-content":"border-accent/30 bg-accent/10 text-accent"},{label:"Paused",value:d.value.isPaused?"yes":"no",class:d.value.isPaused?"border-error/30 bg-error/15 text-error":"border-base-content/20 bg-base-300/70 text-base-content"}]),M=h(()=>R.value?new Intl.DateTimeFormat("nb-NO",{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(R.value):"No stream events received yet"),z=h(()=>
1S.value===void 0?"No heartbeat yet":new Date(S.value*1e3).toLocaleTimeString("nb-NO")),Q=h(()=>E(d.value));function l(){d.value=p.getStatus()}function E(t){return JSON.stringify(t,(s,u)=>u instanceof Date?u.toISOString():u instanceof Error?{name:u.name,message:u.message,stack:u.stack}:u,2)}function G(t){switch(t._t){case"elevationChanged":return t.reason==="error"?"error":t.elevated?"success":t.reason==="forced"?"warning":"info";case"connected":case"sessionStarted":return"success";case"reset":return"warning";default:return"default"}}function J(t){switch(t._t){case"elevationChanged":return`elevationChanged: ${t.elevated?"elevated":"degraded"}${t.reason?` (${t.reason})`:""}`;case"requestCompleted":return`requestCompleted${t.firstRequest?" (first request)":""}`;case"sessionStarted":return`sessionStarted: ${t.sessionKey}`;default:return t._t}}function K(t){switch(t){case"success":return"border-success/30 bg-success/10";case"warning":return"border-warning/30 bg-warning/10";case"error":return"border-error/30 bg-error/10";case"info":return"border-info/30 bg-info/10";default:return"border-base-content/10 bg-base-300/40"}}function i(t){const s={id:j.value++,at:t.at??new Date,kind:t.kind,title:t.title,tone:t.tone,data:t.data};f.value=[s,...f.value].slice(0,$)}async function W(){i({kind:"action",title:"Manual `dr/dr` query",tone:"info"});try{const t=await p.queryPromise("dr","dr",void 0,{timeoutMs:5e3});i({kind:"note",title:"Realtime state probe completed",tone:"success",data:t})}catch(t){i({kind:"note",title:"Realtime state probe failed",tone:"error",data:t})}finally{l()}}function X(){i({kind:"action",title:"Called `streaming.elevate()`",tone:"info"}),p.elevate(),l()}function Y(){i({kind:"action",title:"Called `streaming.degrade()`",tone:"info"}),p.degrade(),l()}async function V(){i({kind:"action",title:"Called `toggleRealtime()`",tone:"info",data:{requiredAction:m.value??"none"}}),await I()&&i({kind:"note",title:"toggleRealtime returned a continuation that this testing page does not execute",tone:"warning",data:{reason:m.value??"unknown",note:"This bypass page intentionally avoids the iframe/modal activation flow."}}),l()}const Z={deactivateRealtime:B,resetRealtime:O,reactivateRealtime:U};async function T(t){i({kind:"action",title:`Called ${t}()`,tone:"info"});try{const s=await Z[t]();i({kind:"note",title:`${t}() completed`,tone:"success",data:s})}catch(s){i({kind:"note",title:`${t}() failed`,tone:"error",data:s})}finally{l()}}function ee(){x||(i({kind:"action",title:"Started `dr/dr` heartbeat subscription",tone:"info"}),x=p.subscribe("dr","dr",t=>{!t||typeof t.data!="number"||(S.value=t.data)}),v.value=!0,l())}function A(){x&&(x(),x=void 0,v.value=!1,i({kind:"action",title:"Stopped `dr/dr` heartbeat subscription",tone:"info"}),l())}function te(){f.value=[],i({kind:"note",title:"Event log cleared",tone:"default"})}return H("stream-event",t=>{R.value=t.createdAt,i({kind:"stream",title:J(t.data),tone:G(t.data),at:t.createdAt,data:t.data}),l()},{skipReplay:!0}),me([C,m,k],()=>{l()},{immediate:!0}),be(()=>{A()}),(t,s)=>{const u=oe,c=ne,D=ae,se=re;return g(),b("main",ve,[r(u,{text:"Realtime testing",subtitle:"Directly exercise streaming elevation locally without the DN realtime iframe flow."}),e("div",xe,[r(D,{title:"Controls"},{default:w(()=>[e("div",_e,[s[6]||(s[6]=e("div",{class:"rounded-md border border-accent/20 bg-[linear-gradient(135deg,rgba(159,124,67,0.18),rgba(24,24,28,0.02))] p-4"},[e("p",{class:"text-sm leading-6 text-base-content"}," This page bypasses the customer iframe path. Use the direct store buttons to verify that realtime elevation and degradation work locally, then inspect the stream events below. ")],-1)),e("div",he,[r(c,{text:"Elevate",accent:"",onClick:X}),r(c,{text:"Degrade",secondary:"",onClick:Y}),r(c,{text:"Probe dr/dr",small:"",onClick:W}),r(c,{text:o(v)?"Stop heartbeat":"Start heartbeat",small:"",success:o(v),onClick:s[0]||(s[0]=a=>o(v)?A():ee())},null,8,["text","success"]),r(c,{text:"Refresh status",small:"",onClick:l}),r(c,{text:"Clear log",small:"",error:"",onClick:te})]),e("div",ke,[s[4]||(s[4]=e("div",{class:"mb-3"},[e("p",{class:"font-semibold"}," Backend realtime actions "),e("p",{class:"text-sm text-base-content"}
1," These call the DN realtime endpoints and refresh user rights, but they do not automatically elevate or degrade the current stream session. ")],-1)),e("div",we,[r(c,{text:"Reactivate",small:"",success:"",onClick:s[1]||(s[1]=a=>T("reactivateRealtime"))}),r(c,{text:"Deactivate",small:"",secondary:"",onClick:s[2]||(s[2]=a=>T("deactivateRealtime"))}),r(c,{text:"Reset",small:"",error:"",onClick:s[3]||(s[3]=a=>T("resetRealtime"))})])]),e("div",ye,[e("div",Ce,[s[5]||(s[5]=e("div",null,[e("p",{class:"font-semibold"}," `useRealtime()` toggle "),e("p",{class:"text-sm text-base-content"}," Safe to use here only when no iframe-driven activation step is required. ")],-1)),e("div",{class:q(["rounded-full border px-3 py-1 text-xs uppercase tracking-[0.2em]",o(N)?"border-warning/30 bg-warning/10 text-warning-content":"border-success/30 bg-success/10 text-success"])},n(o(N)?"blocked by requiredAction":"ready"),3)]),e("div",Re,[r(c,{text:"Toggle via composable",primary:"",disabled:o(N)||o(k),onClick:V},null,8,["disabled"]),e("div",Se," requiredAction="+n(o(m)??"none"),1)])])])]),_:1}),r(D,{title:"Live state"},{default:w(()=>[e("div",Ne,[(g(!0),b(L,null,P(o(F),a=>(g(),b("div",{key:a.label,class:q(["rounded-md border px-4 py-3",a.class])},[e("div",Te,n(a.label),1),e("div",De,n(a.value),1)],2))),128))]),e("div",qe,[e("div",Ee,[s[7]||(s[7]=e("div",{class:"text-xs uppercase tracking-[0.2em] text-base-content"}," Latest stream event ",-1)),e("div",Ae,n(o(M)),1)]),e("div",Le,[s[8]||(s[8]=e("div",{class:"text-xs uppercase tracking-[0.2em] text-base-content"}," DR heartbeat ",-1)),e("div",Pe,n(o(z)),1)])]),e("div",$e,[e("div",He,[s[9]||(s[9]=e("div",{class:"text-xs uppercase tracking-[0.2em] text-base-content"}," Subs ",-1)),e("div",Be,n(o(d).subscriptionCount),1)]),e("div",Oe,[s[10]||(s[10]=e("div",{class:"text-xs uppercase tracking-[0.2em] text-base-content"}," Queries ",-1)),e("div",Ue,n(o(d).queryCount),1)]),e("div",Ie,[s[11]||(s[11]=e("div",{class:"text-xs uppercase tracking-[0.2em] text-base-content"}," Pending subs ",-1)),e("div",je,n(o(d).pendingSubscriptionsCount),1)]),e("div",Fe,[s[12]||(s[12]=e("div",{class:"text-xs uppercase tracking-[0.2em] text-base-content"}," Pending queries ",-1)),e("div",Me,n(o(d).pendingQueriesCount),1)])]),r(se,{title:"Raw store status",class:"mt-4"},{default:w(()=>[e("pre",ze,n(o(Q)),1)]),_:1})]),_:1})]),r(D,{title:"Stream event log",class:"mt-4 xl:mt-6"},{default:w(()=>[e("div",Qe,[s[13]||(s[13]=e("div",null,[e("p",{class:"text-sm text-base-content"}," Newest entries first. Stream events come from the shared DN event system. ")],-1)),e("div",Ge,n(o(f).length)+" / "+n($),1)]),o(f).length?(g(),b("div",Je,[(g(!0),b(L,null,P(o(f),a=>(g(),b("article",{key:a.id,class:q(["rounded-md border p-4",K(a.tone)])},[e("div",Ke,[e("div",We,[e("span",Xe,n(a.kind),1),e("strong",Ye,n(a.title),1)]),e("time",Ve,n(a.at.toLocaleTimeString("nb-NO")),1)]),a.data!==void 0?(g(),b("pre",Ze,n(E(a.data)),1)):ge("",!0)],2))),128))])):(g(),b("div",et,[...s[14]||(s[14]=[y(" No events logged yet. Try ",-1),e("span",{class:"font-mono"},"Probe dr/dr",-1),y(", ",-1),e("span",{class:"font-mono"},"Elevate",-1),y(", or ",-1),e("span",{class:"font-mono"},"Degrade",-1),y(". ",-1)])]))]),_:1})])}}});export{xt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.