PageSourceSearch

https://scenesafe.vercel.app/assets/appOutbox-DRIEbhUw.js

js scenesafe.vercel.app collected 2026-10-03 07:40:21 UTC 6,165 bytes, 1 lines download raw bytes

1import{w as j,a2 as X,Q as z,C as U}from"./firebase-C_kwqSDf.js";import{f as J,d as M,a as W}from"./index-RDDra8gW.js";import{d as Z,ay as G}from"./App-C-UoXVoa.js";import{C as H}from"./nemsis-DbuN6ZBQ.js";import{f as Y}from"./index-IKaApRZE.js";import{c as C}from"./nemsisSubmission-CkTZE20p.js";import{a as tt,c as et,e as x,f as R,g as rt,n as B,h as nt,j as V,L as at,F as st}from"./outboxLogic-BnoNhxtH.js";import"./deepgram-BnSEPMF1.js";import"./react-vendor-CxxQRYkG.js";import"./icons-ALDxYxrn.js";import"./authCleanup-Bx9cpcQx.js";import"./scenesafe_logo_header-Bkp1gynr.js";import"./nightMode-Bb11R9r_.js";import"./dnd-ByY-uSMG.js";import"./vad-BpaRRKS5.js";const it=10*6e4;function ut({db:i,fs:t,loadChart:g,exportChartXml:l,submit:f,clientId:_,now:d=()=>new Date,isOnline:K=()=>!0}){const A=new Map,D=e=>t.collection(i,"companies",e,"state_outbox"),m=(e,n)=>t.doc(i,"companies",e,"state_outbox",n);async function k(e,{fresh:n=!1}={}){if(!e)return null;const a=A.get(e);if(!n&&a&&d().getTime()-a.at<it)return a.link;let r=null;try{const s=await t.getDoc(t.doc(i,"companies",e,"state_link","status"));r=s.exists()?s.data():null}catch{r=a?.link??null}return A.set(e,{at:d().getTime(),link:r}),r}async function S({companyCode:e,uid:n,reportData:a,hashedReportId:r}){const s=await k(e);if(!s?.eligible)return{skipped:"not_eligible"};const c=x(a),o=R(r,c),p=m(e,o),u=await t.runTransaction(i,async h=>(await h.get(p)).exists()?!1:(h.set(p,B({hashedReportId:r,chartVersion:c,uid:n,link:s,now:d()})),!0)),y=await t.getDocs(t.query(D(e),t.where("hashedReportId","==",r)));for(const h of y.docs){const w=h.data();w.chartVersion<c&&["pending","blocked"].includes(w.status)&&await t.updateDoc(h.ref,{status:"superseded",supersededBy:o})}return{entryId:o,created:u,chartVersion:c}}async function P(e,n){return t.runTransaction(i,async a=>{const r=m(e,n),s=await a.get(r),c=s.exists()?s.data():null,o=d();return V(c,o)?(a.update(r,{status:"sending",leaseOwner:_,leaseExpiresAt:new Date(o.getTime()+at).toISOString(),lastAttemptAt:o.toISOString()}),c):null})}async function I(e,n,a){await t.runTransaction(i,async r=>{const s=m(e,n),c=(await r.get(s)).data();!c||c.leaseOwner!==_||st.includes(c.status)||r.update(s,{leaseOwner:null,leaseExpiresAt:null,...a})})}async function O(e,n){const a=await P(e,n);if(!a)return{id:n,skipped:"leased_or_not_due"};try{const r=await g(e,a.hashedReportId);if(!r)throw new Error("Chart not readable on this device yet.");if(x(r)>a.chartVersion){const p=await S({companyCode:e,uid:a.createdByUid,reportData:r,hashedReportId:a.hashedReportId});return await I(e,n,{status:"superseded",supersededBy:p.entryId||null}),{id:n,superseded:!0}}const c=await l(r,e),o=await f({entryId:n,hashedReportId:a.hashedReportId,chartVersion:a.chartVersion,xml:c});return await I(e,n,o.status==="rejected"?{status:"rejected",submissionId:o.submissionId,errors:o.errors||[]}:{status:"sent",submissionId:o.submissionId,sentAt:d().toISOString(),lastError:null}),{id:n,sent:!0,submissionId:o.submissionId}}catch(r){const s=String(r?.message||r);return/not_eligible/.test(s)?(A.delete(e),await I(e,n,{status:"blocked",lastError:s.slice(0,300)}),{id:n,blocked:!0}):(await I(e,n,nt(a,r,d())),{id:n,error:s})}}async function T({companyCode:e,max:n=10}={}){if(!K())return{skipped:"offline"};if(!(await k(e))?.eligible)return{skipped:"not_eligible"};const r=d(),[s,c]=await Promise.all([t.getDocs(t.query(D(e),t.where("status","==","pending"),t.orderBy("nextAttemptAt"),t.limit(n))),t.getDocs(t.query(D(e),t.where("status","==","sending"),t.limit(n)))]),o=[...s.docs,...c.docs].filter(u=>V(u.data(),r)).map(u=>u.id),p=[];for(const u of o)p.push(await O(e,u));return{results:p}}async function Q(e,n){return await t.runTransaction(i,async a=>{const r=m(e,n),s=(await a.get(r)).data();!s||!["pending","blocked","sending"].includes(s.status)||s.status==="sending"&&Date.parse(s.leaseExpiresAt||0)>d().getTime()||a.update(r,{status:"pending",nextAttemptAt:d().toISOString(),leaseOwner:null,leaseExpiresAt:null})}),A.delete(e),T({companyCode:e})}async function $({companyCode:e,uid:n,from:a,to:r,max:s=et}){const c=await k(e,{fresh:!0});if(!c?.eligible)return{skipped:"not_eligible"};const o=t.collection(i,"agency_reports",e,"reports"),p=d(),u={queued:0,already
1Queued:0,unreadable:0,scanned:0,capped:!1,lastDueAt:null};let y=null;for(;;){const h=[t.where("status","==","FINALIZED"),t.orderBy(t.documentId()),...y?[t.startAfter(y)]:[],t.limit(200)],w=await t.getDocs(t.query(o,...h));for(const b of w.docs){if(u.scanned++,!tt(b.data(),{from:a,to:r}))continue;if(!(await t.getDocs(t.query(D(e),t.where("hashedReportId","==",b.id),t.limit(1)))).empty){u.alreadyQueued++;continue}if(u.queued>=s){u.capped=!0;break}const q=await g(e,b.id).catch(()=>null);if(!q){u.unreadable++;continue}const L=x(q),E=m(e,R(b.id,L)),v=rt(p,u.queued);await t.runTransaction(i,async N=>(await N.get(E)).exists()?!1:(N.set(E,{...B({hashedReportId:b.id,chartVersion:L,uid:n,link:c,now:p}),nextAttemptAt:v}),!0))?(u.queued++,u.lastDueAt=v):u.alreadyQueued++}if(u.capped||w.size<200)break;y=w.docs.at(-1)}return u}return{getLink:k,enqueue:S,processPending:T,retryNow:Q,sendOne:O,backfill:$}}async function ct(i,t){const g=await z(U(M,"agency_reports",i,"reports",t));if(!g.exists())return null;const l=g.data();if(l.enc===!1||l.plaintextData&&!l.encryptedData)return typeof l.plaintextData=="string"?JSON.parse(l.plaintextData):l.plaintextData;const f=await Z.getAgencyKey(i,W.currentUser?.uid);return f?G.decryptWithKey(f,{data:l.encryptedData,iv:l.iv},`${i}:${t}`):null}async function ot(i,t){const g=await C(t);return H(Y(i,{agencyDemographics:g}))}const lt=j(J,"submitNativeChart",{timeout:6e4}),dt=`c_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`,F=ut({db:M,fs:X,loadChart:ct,exportChartXml:ot,clientId:dt,submit:async i=>(await lt(i)).data,isOnline:()=>typeof navigator>"u"||navigator.onLine!==!1});async function qt({companyCode:i,uid:t,reportData:g,hashedReportId:l}){const f=await F.enqueue({companyCode:i,uid:t,reportData:g,hashedReportId:l});return f.created&&F.processPending({companyCode:i}).catch(()=>{}),f}export{qt as enqueueFinalizedChart,F as stateOutbox};

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.