PageSourceSearch

https://aircam.me/assets/recording-recovery-D25UUjcG.js

js aircam.me collected 2026-10-10 01:56:37 UTC 1,284 bytes, 1 lines download raw bytes

1import{l as d,r as l,d as s}from"./camera-capture-Dn0dzSAQ.js";import"./index-CmwwG9o9.js";import"./use-is-desktop-device-COQj8ldc.js";import"./use-native-camera-BtSrjr4C.js";import"./camera-prefs-DMjgUFEP.js";import"./camera-constraints-CBoiZHGP.js";import"./VideoTrimmer-DhJI6L0b.js";import"./pause-BdqfOVl-.js";import"./play-BsXHHPLK.js";import"./mobile-note-sheet-VET49sbB.js";import"./chevron-left-C1KrrAOX.js";import"./heart-DIB5V7HB.js";import"./refresh-cw-DoiauZRs.js";import"./zap-DizpHiT6.js";import"./minimize-Dpg9NM1C.js";function m(e){return e.includes("mp4")?"mp4":"webm"}function a(e,o){if(o.length===0)return null;const r=new Blob(o,{type:e.mimeType||"video/webm"});if(r.size===0)return null;const i=new Date(e.startedAt).toISOString().replace(/[:.]/g,"-");return new File([r],`recovered-video-${i}.${m(e.mimeType)}`,{type:r.type})}let t=!1;async function T(e){if(t)return;t=!0;const o=await d();if(o.length===0){t=!1;return}for(const r of o){const i=await l(r.recordingId),n=a(r,i);if(n){console.info("recording.recover",{recordingId:r.recordingId,size:n.size,libraryId:r.libraryId,albumId:r.albumId});try{e([n],r.libraryId,r.albumId)}catch(c){console.warn("recording.recover.enqueue_failed",c)}}await s(r.recordingId)}t=!1}export{T as recoverInterruptedRecordings};

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.