@xenon-device-management/xenon 2.5.0 → 2.6.1
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/lib/package.json +1 -1
- package/lib/public/assets/{AnnotationOverlay-BeypNvFL.js → AnnotationOverlay-BR2MSqZq.js} +1 -1
- package/lib/public/assets/{ApiKeyGate-CQg51mzi.js → ApiKeyGate-B-kYDgwU.js} +1 -1
- package/lib/public/assets/BugReportButton-B5AX_Hq6.js +15 -0
- package/lib/public/assets/{DeviceMosaicView-BnEKlOi9.js → DeviceMosaicView-wL6hPElQ.js} +1 -1
- package/lib/public/assets/{EmptyState-CVk_39sG.js → EmptyState-DMkfqTdS.js} +1 -1
- package/lib/public/assets/{FieldGroup-DC4jWFOr.js → FieldGroup-C48fEQ2R.js} +1 -1
- package/lib/public/assets/{FilterMenu-Df4ApWT_.js → FilterMenu-BEQWiqgS.js} +1 -1
- package/lib/public/assets/{Menu-BZcyp6Df.js → Menu-ChzfRWa3.js} +1 -1
- package/lib/public/assets/{Modal-D27eM9ja.js → Modal-D4LAJuLk.js} +1 -1
- package/lib/public/assets/{RecordingPage-ScK_NxUR.js → RecordingPage-CErhVVhI.js} +1 -1
- package/lib/public/assets/{RecordingsPage-DO6KsDwr.js → RecordingsPage-CiwOgvEu.js} +1 -1
- package/lib/public/assets/{SegmentedControl-P0_wzUSa.js → SegmentedControl-CEGbL4Og.js} +1 -1
- package/lib/public/assets/{SettingCard-CnbZajUY.js → SettingCard-Ixm55gZS.js} +1 -1
- package/lib/public/assets/{Table-DCLEpILV.js → Table-C7osPLTJ.js} +1 -1
- package/lib/public/assets/{activity-c-lgQI29.js → activity-B6i2UUaG.js} +1 -1
- package/lib/public/assets/{ai-settings-S4Qb0zMX.js → ai-settings-D7gK7P2L.js} +1 -1
- package/lib/public/assets/{api-keys-B8OZRdWq.js → api-keys-DrBdSosA.js} +1 -1
- package/lib/public/assets/{apps-BUdm1f-6.js → apps-BWEUuoIK.js} +1 -1
- package/lib/public/assets/{arrow-left-DuWnjija.js → arrow-left-DcJsqErm.js} +1 -1
- package/lib/public/assets/{arrow-right-9qDEU3uD.js → arrow-right-_g7OIFHi.js} +1 -1
- package/lib/public/assets/{arrow-up-right-b6Of0lQ3.js → arrow-up-right-Bn6qC1nH.js} +1 -1
- package/lib/public/assets/{auth-shell-DM7UlvlL.js → auth-shell-DslyrtGF.js} +2 -2
- package/lib/public/assets/builds-page-CEZ9IZ9S.js +11 -0
- package/lib/public/assets/{button-D2poE4AT.js → button-C8WXV74W.js} +1 -1
- package/lib/public/assets/{calendar-BwZZxp7_.js → calendar-D6zwX5yt.js} +1 -1
- package/lib/public/assets/{check-bpRVp-8m.js → check-DHCAmQzm.js} +1 -1
- package/lib/public/assets/{chevron-left-o5fCPIVE.js → chevron-left-DAjBpmZL.js} +1 -1
- package/lib/public/assets/{chevron-right-Bp0cGaHf.js → chevron-right-CXeI6N1r.js} +1 -1
- package/lib/public/assets/{circle-check-C7h_YWkh.js → circle-check-CXNkbyeD.js} +1 -1
- package/lib/public/assets/{circle-x-BevILQ_g.js → circle-x-5wGBLvP4.js} +1 -1
- package/lib/public/assets/{clock-BEKymxJ4.js → clock-B6D_VfTn.js} +1 -1
- package/lib/public/assets/{copy-R5Kb2Sya.js → copy-B01YbVjr.js} +1 -1
- package/lib/public/assets/{device-explorer-DuD_PXL0.js → device-explorer-BJYJi3-I.js} +54 -59
- package/lib/public/assets/{download-CUlaFpHe.js → download-CYOnymUH.js} +1 -1
- package/lib/public/assets/{forgot-password-CHO8yPDz.js → forgot-password-ChGJEfSH.js} +1 -1
- package/lib/public/assets/{funnel-uB2CBRiY.js → funnel-Bsf-_RST.js} +1 -1
- package/lib/public/assets/{index-DSFSk-0t.css → index-C8pvxG1f.css} +1 -1
- package/lib/public/assets/{index-KgmoUqNo.js → index-DC1NFStQ.js} +1 -1
- package/lib/public/assets/{index-yibbsLFD.js → index-rullcuA-.js} +2 -2
- package/lib/public/assets/{input-BR-cDtqC.js → input-DAFtgyoC.js} +1 -1
- package/lib/public/assets/{keycodes-dLBaFcVi.js → keycodes-0UtDeccx.js} +1 -1
- package/lib/public/assets/{layers-BESinxSO.js → layers-C9QEszDA.js} +1 -1
- package/lib/public/assets/{list-checks-DpKchgZl.js → list-checks-BDs_WJqC.js} +1 -1
- package/lib/public/assets/{lock--sC5e3s6.js → lock-Wfb-mfRt.js} +1 -1
- package/lib/public/assets/{login-Cc-IivWH.js → login-7ukAAXMQ.js} +1 -1
- package/lib/public/assets/{maintenance-settings-CO1mxmXj.js → maintenance-settings-HJVTzD1e.js} +1 -1
- package/lib/public/assets/{monitor-Cf5xQDkm.js → monitor-CdNmIwjG.js} +1 -1
- package/lib/public/assets/{mouse-pointer-2-D0FTHFsu.js → mouse-pointer-2-qVSJPuaG.js} +1 -1
- package/lib/public/assets/{network-BDR_XEsw.js → network-BdrZxJP7.js} +1 -1
- package/lib/public/assets/{overview-Bgr23HrL.js → overview-C0JVQ10q.js} +1 -1
- package/lib/public/assets/{page-header-mkEQJJPW.js → page-header-BNgF7qLO.js} +1 -1
- package/lib/public/assets/{plus-BGTOA7GD.js → plus-bjDKJLSM.js} +1 -1
- package/lib/public/assets/{profile-page-hogPzCrJ.js → profile-page-Dgqh9iFO.js} +1 -1
- package/lib/public/assets/{reset-password-BobaiMBQ.js → reset-password-BKkG0r19.js} +1 -1
- package/lib/public/assets/{runbook-page-qw6u9fmW.js → runbook-page-CMhZZJVm.js} +1 -1
- package/lib/public/assets/{select-skq1Kjsx.js → select-C563Otbb.js} +1 -1
- package/lib/public/assets/{selector-detail-page-BJl3YxfV.js → selector-detail-page-DhnD3eaZ.js} +1 -1
- package/lib/public/assets/{selector-health-CMmIKYip.js → selector-health-B7Oe-x9R.js} +1 -1
- package/lib/public/assets/{selector-health-page-DR8zYoS9.js → selector-health-page-BzP4CuGG.js} +1 -1
- package/lib/public/assets/session-detail-page-DYccmo6I.js +4 -0
- package/lib/public/assets/{settings-rZ0cTErR.js → settings-BtiYwsCN.js} +1 -1
- package/lib/public/assets/stat-tile-BlmNnQFY.js +6 -0
- package/lib/public/assets/{tablet-C08V4-n2.js → tablet-Dt9_zCsE.js} +1 -1
- package/lib/public/assets/{teams-9lNK5Hv4.js → teams-C-TH1VHJ.js} +1 -1
- package/lib/public/assets/{trash-2-Uko_-EoJ.js → trash-2-Cy3hmCGn.js} +1 -1
- package/lib/public/assets/{upload-CyTBX5YJ.js → upload-BzeSfIf5.js} +1 -1
- package/lib/public/assets/{use-password-reset-mode-BQkqB45G.js → use-password-reset-mode-CFPUu_Pu.js} +1 -1
- package/lib/public/assets/{users-CQKCMBqe.js → users-ByGYDd3w.js} +1 -1
- package/lib/public/assets/{users-D7RusV-M.js → users-CZwclIT8.js} +1 -1
- package/lib/public/assets/{video-off-CWBbZnqz.js → video-off-soegR0jK.js} +1 -1
- package/lib/public/assets/{webhook-settings-Q3AJC_pt.js → webhook-settings-DHkmj77L.js} +1 -1
- package/lib/public/assets/{zap-CN2fMC_t.js → zap-4ACghMsl.js} +1 -1
- package/lib/public/index.html +2 -2
- package/lib/src/app/routers/dashboard.js +3 -1
- package/lib/src/services/recording/RecordingOrchestrator.js +35 -50
- package/lib/test/integration/cross-workflow.spec.js +30 -6
- package/lib/test/unit/recording-orchestrator.spec.js +71 -9
- package/lib/test/unit/recording-source-ended.spec.js +17 -4
- package/lib/test/unit/session-list-insights.spec.js +25 -0
- package/package.json +1 -1
- package/lib/public/assets/BugReportButton-JVduDicX.js +0 -10
- package/lib/public/assets/builds-page-AOQqU3g3.js +0 -16
- package/lib/public/assets/session-detail-page-Cpbl4HPh.js +0 -3
- package/lib/public/assets/use-builds-data-TVBd_s-l.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as i,p as A,X as S}from"./index-yibbsLFD.js";import{f as F}from"./time-B8FIgwPE.js";function $(e){switch(e){case"success":case"passed":case"ended":return"passed";case"failed":case"error":case"timeout":return"failed";case"running":return"running";default:return"other"}}function H(e){const t={all:e.length,passed:0,failed:0,running:0};for(const n of e){const r=$(n.status);r!=="other"&&(t[r]+=1)}return t}function I(e,t){return t==="all"?!0:$(e.status)===t}function J(e,t,n){const r=n.trim().toLowerCase();return e.filter(s=>{var o,d;return!(!I(s,t)||r&&![s.id,B(s).text,s.name,s.failure_reason,s.device_name,s.device_platform,s.device_version,s.node_id,s.ranOn,(o=s.owner)==null?void 0:o.name,(d=s.owner)==null?void 0:d.email].filter(Boolean).join(" ").toLowerCase().includes(r))})}function j(e){var n;const t=(n=e.device_name)==null?void 0:n.trim();return t&&t.length>0?t:"Unknown Device"}function U(e){const t=e.device_platform??"";if(!t)return"—";const n=t.toLowerCase();return n==="ios"?"iOS":n==="tvos"?"tvOS":n.charAt(0).toUpperCase()+n.slice(1)}function Y(e){return e.device_version?`v${e.device_version}`:""}function q(e){return F(e)}function V(e){if(!e.startTime)return null;const t=Date.parse(e.startTime);if(!Number.isFinite(t))return null;const n=e.endTime?Date.parse(e.endTime):Date.now();return Number.isFinite(n)?Math.max(0,n-t):null}function X(e){if(e==null||!Number.isFinite(e)||e<0)return"—";const t=e/1e3,n=Math.floor(t/3600),r=Math.floor(t%3600/60),o=(t-n*3600-r*60).toFixed(1);return n>0?`${n}h ${r}m ${o}s`:r>0?`${r}m ${o}s`:`${o}s`}const y=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],h=e=>String(e).padStart(2,"0");function p(e,t){const n=e[`appium:${t}`]??e[t];return typeof n=="string"&&n.trim()?n.trim():null}function E(e){if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}if(!t||typeof t!="object")return null;let n=t;if(n.capabilities&&typeof n.capabilities=="object"&&(n=n.capabilities),n.alwaysMatch||n.firstMatch){const r=Array.isArray(n.firstMatch)?n.firstMatch[0]:void 0;return{...n.alwaysMatch||{},...r||{}}}return n}function D(e){const t=E(e);if(!t)return null;const n=p(t,"appPackage")??p(t,"bundleId");if(n)return n;const r=p(t,"app");if(r){const s=r.split(/[?#]/)[0].split(/[\\/]/).pop()??"";if(s&&s!=="download")return s}return p(t,"browserName")}function B(e){var r;const t=(r=e.name)==null?void 0:r.trim();if(t)return{text:t,source:"name"};const n=D(e.session_capabilities)??D(e.desired_capabilities);return n?{text:n,source:"app"}:{text:`Session ${e.id.slice(0,8)}`,source:"id"}}function g(e){return`${y[e.getMonth()]} ${e.getDate()}, ${h(e.getHours())}:${h(e.getMinutes())}`}function z(e){const t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?g(t):"—"}function O(e){var n;const t=(n=e.name)==null?void 0:n.trim();return!t||t==="Default Build"}function G(e){if(!O(e))return e.name.trim();const t=new Date(e.createdAt);return Number.isNaN(t.getTime())?"Build":`Build · ${g(t)}`}const K={all:"All time","24h":"Last 24 hours","7d":"Last 7 days","30d":"Last 30 days"},C={"24h":864e5,"7d":7*864e5,"30d":30*864e5};function k(e,t){return e==="all"?null:new Date(t-C[e]).toISOString()}function Q(e){if(e==null||!Number.isFinite(e)||e<0)return"—";if(e<1e3)return"<1s";const t=Math.floor(e/1e3),n=Math.floor(t/3600),r=Math.floor(t%3600/60),s=t%60;return n>0?`${n}h ${r}m`:r>0?`${r}m ${s}s`:`${s}s`}function W(e,t=new Date){if(!e)return"—";const n=new Date(e);if(Number.isNaN(n.getTime()))return"—";const r=`${h(n.getHours())}:${h(n.getMinutes())}`;return n.getFullYear()!==t.getFullYear()?`${y[n.getMonth()]} ${n.getDate()}, ${n.getFullYear()} ${r}`:n.getMonth()===t.getMonth()&&n.getDate()===t.getDate()?r:g(n)}function M(e){const t=e.passed+e.failed;return t>0?e.passed/t*100:null}function Z(e,t){const n=M(e),r=t?M(t):null;return n===null||r===null?null:n-r}function ee(e){return e?e==="here"?"This server":e:null}const x=3e3,te=500;function ne(e={}){const{withSessions:t=!1,timeFilter:n="all"}=e,[r,s]=i.useState([]),[o,d]=i.useState([]),[c,N]=i.useState(null),[_,w]=i.useState(!0),[T,b]=i.useState(null),l=i.useRef(!0),{on:f}=A(),v=i.useCallback(()=>{if(!t)return Promise.resolve([]);if(c)return S.getSessions({buildId:c});const a=k(n,Date.now())??void 0;return S.getSessions({since:a})},[t,c,n]),u=i.useCallback(async()=>{try{const[a,m]=await Promise.all([S.getBuilds(),v()]);if(!l.current)return;s(Array.isArray(a)?a:[]),d(Array.isArray(m)?m:[]),b(null)}catch(a){if(!l.current)return;b(a instanceof Error?a.message:String(a))}finally{l.current&&w(!1)}},[v]);return i.useEffect(()=>{l.current=!0,u();const a=setInterval(u,x);return()=>{l.current=!1,clearInterval(a)}},[u]),i.useEffect(()=>{const a=()=>u(),m=[f("session_started",a),f("session_stopped",a),f("device_added",a),f("device_removed",a)];return()=>{for(const L of m)L()}},[f,u]),{builds:r,selectedBuildId:c,sessions:o,loading:_,error:T,selectBuild:N,refresh:u}}export{C as P,te as S,K as T,H as a,G as b,$ as c,B as d,j as e,z as f,W as g,q as h,O as i,Q as j,V as k,J as l,M as m,Z as n,X as o,U as p,Y as q,ee as r,k as s,ne as u};
|