1import{dq as A,Q as d,dr as C,ds as O,dt as P}from"./index-B7Ng5BsD.js";import{i as B}from"./use-automations-CO2P4MII.js";function L(e){let o;return()=>o||(o=(async()=>{const r=e.activeJobs();let n=0,s=!1;const y=async()=>{for(;n<r.length;){const l=r[n++];await e.poll(l)&&(s=!0)}};await Promise.all(Array.from({length:Math.min(Math.max(1,e.concurrency),r.length)},y)),e.complete(s)})().finally(()=>{o=void 0}),o)}const q=2500,D=8;let a=0,f;const v=new Set;let u,J=!1;function g(){const e=C();B(e),e.invalidateQueries({queryKey:["transcriptions"]}),e.invalidateQueries({queryKey:["documents"]})}const I="jobs";function T(e){if(typeof BroadcastChannel>"u")return;const o=new BroadcastChannel(I);o.postMessage({type:"track",jobId:e}),o.close()}function V(){if(typeof BroadcastChannel>"u")return()=>{};const e=new BroadcastChannel(I);return e.addEventListener("message",o=>{const t=o.data;t&&t.type==="track"&&typeof t.jobId=="string"&&c.getState().trackJob(t.jobId)}),()=>e.close()}function i(e){return e.status==="queued"||e.status==="active"}function M(){J||(J=!0,P(e=>{if(!e){j();return}c.getState().hydrate(!0),c.getState().jobs.some(i)&&(w(),k())}))}function w(){M(),!(u||!O())&&(u=setInterval(()=>{k()},q),typeof u.unref=="function"&&u.unref())}function j(){u&&(clearInterval(u),u=void 0)}function b(){c.getState().jobs.every(e=>!i(e))&&j()}function E(e){c.setState(o=>{const t=o.jobs.filter(r=>r.id!==e.id);return{jobs:[e,...t],drawerOpen:!0}}),i(e)?w():b()}async function N(e){if(!c.getState().jobs.some(t=>t.id===e.id&&t.workspaceId===e.workspaceId))return!1;const o=a;try{const{job:t}=await(e.workspaceId?d.getJob(e.id,e.workspaceId):d.getAccountJob(e.id));return o!==a?!1:(c.setState(r=>({jobs:r.jobs.map(n=>n.id===e.id?t:n)})),!i(t))}catch(t){if(o!==a)return!1;const r=t.status;
1return(r===403||r===404)&&c.setState(n=>({jobs:n.jobs.filter(s=>s.id!==e.id)})),!1}}const k=L({activeJobs:()=>c.getState().jobs.filter(i),concurrency:D,poll:N,complete:e=>{e&&g(),b()}}),c=A()((e,o)=>({jobs:[],accountId:null,drawerOpen:!1,hydrated:!1,setAccount:t=>{o().accountId!==t&&(a++,j(),f=void 0,v.clear(),e({accountId:t,jobs:[],hydrated:!1,drawerOpen:!1}))},hydrate:async(t=!1)=>{if(!o().accountId||o().hydrated&&!t)return;if(f)return f;const r=a,s=(async()=>{try{const[{jobs:y},{jobs:l}]=await Promise.all([d.listAccountJobs("active",500),d.listAccountJobs("terminal",100)]);if(r!==a)return;const p=new Map;for(const h of[...y,...l])v.has(h.id)||p.set(h.id,h);const m=[...p.values()].toSorted((h,S)=>+new Date(S.createdAt)-+new Date(h.createdAt));e({jobs:m,hydrated:!0}),m.some(i)?w():b()}catch{}})().finally(()=>{f===s&&(f=void 0)});return f=s,s},trackJob:async t=>{const r=a;try{const{job:n}=await d.getAccountJob(t);if(r!==a)return;v.delete(n.id),E(n)}catch{}},cancelJob:async t=>{const r=a;let n=o().jobs.find(l=>l.id===t);if(!n||(n.workspaceId||(n=(await d.getAccountJob(t)).job),r!==a))return;if(!n.workspaceId)throw new Error("The job workspace is unavailable. Refresh and try again.");const s=await d.cancelJob(t,n.workspaceId);if(r!==a)return;const y=s.job??(await d.getJob(t,n.workspaceId)).job;r===a&&(e(l=>({jobs:l.jobs.map(p=>p.id===t?y:p)})),b(),g())},removeJob:t=>{const r=o().jobs.find(n=>n.id===t);!r||i(r)||(v.add(t),e(n=>({jobs:n.jobs.filter(s=>s.id!==t)})),b())},clearCompleted:()=>{for(const t of o().jobs)i(t)||v.add(t.id);e(t=>({jobs:t.jobs.filter(i)})),b()},setDrawerOpen:t=>{e({drawerOpen:t}),t&&o().hydrate(!0)},activeCount:()=>o().jobs.filter(i).length}));export{T as a,V as s,c as u};
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.