@kyun.si/codex-hongguo 0.0.34 → 0.0.35-beta.2
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/.codex-plugin/plugin.json +1 -1
- package/README.en.md +14 -1
- package/README.md +14 -1
- package/dist/cli/main.mjs +7 -7
- package/dist/hooks/write.mjs +7 -2
- package/dist/server/index.mjs +13 -8
- package/dist/setup/check.mjs +8 -3
- package/dist/ui/player.html +189 -62
- package/package.json +1 -1
package/dist/setup/check.mjs
CHANGED
|
@@ -30,10 +30,15 @@ var te=Object.create;var pA=Object.defineProperty;var re=Object.getOwnPropertyDe
|
|
|
30
30
|
position_ms INTEGER NOT NULL, duration_ms INTEGER NOT NULL, updated_at INTEGER NOT NULL,
|
|
31
31
|
PRIMARY KEY(series_id,episode_id));
|
|
32
32
|
CREATE TABLE IF NOT EXISTS watch_restart (
|
|
33
|
-
series_id TEXT NOT NULL, episode_id TEXT NOT NULL, PRIMARY KEY(series_id,episode_id))
|
|
33
|
+
series_id TEXT NOT NULL, episode_id TEXT NOT NULL, PRIMARY KEY(series_id,episode_id));
|
|
34
|
+
CREATE TABLE IF NOT EXISTS player_preferences(id INTEGER PRIMARY KEY, body TEXT NOT NULL);`),this.db.prepare("PRAGMA user_version").get().user_version===0&&this.db.exec(`BEGIN IMMEDIATE;
|
|
34
35
|
DELETE FROM watch_progress WHERE series_id IN ('tide','ridge');
|
|
35
36
|
PRAGMA user_version=1;
|
|
36
|
-
COMMIT;`)
|
|
37
|
+
COMMIT;`),this.db.prepare("PRAGMA user_version").get().user_version<2&&this.db.exec(`BEGIN IMMEDIATE;
|
|
38
|
+
UPDATE player_preferences SET body=json_remove(body, '$.decoyUrl', '$.decoyFrameUrl')
|
|
39
|
+
WHERE json_type(body, '$.decoyUrl') IS NOT NULL OR json_type(body, '$.decoyFrameUrl') IS NOT NULL;
|
|
40
|
+
PRAGMA user_version=2;
|
|
41
|
+
COMMIT;`)}preferences(){let A=this.db.prepare("SELECT body FROM player_preferences WHERE id=1").get(),t={autoPrompt:!0,autoplayNext:!0,autoPauseOnFinish:!0,autoPlayOnStart:!0,defaultMuted:!0,volume:.7,hoverDecoyEnabled:!1,searchTerms:["\u603B\u88C1","\u91CD\u751F","\u9006\u88AD"]};return A?{...t,...JSON.parse(A.body)}:t}setupDismissed(){return this.db.prepare("SELECT dismissed FROM player_onboarding WHERE id=1").get()?.dismissed===1}setSetupDismissed(A){return this.db.prepare("INSERT OR REPLACE INTO player_onboarding VALUES(1,?)").run(Number(A)),{dismissed:A}}setPreferences(A){return this.transaction(()=>{let t=this.preferences(),r={...t,...A};return this.db.prepare("INSERT OR REPLACE INTO player_preferences VALUES(1,?)").run(JSON.stringify(r)),JSON.stringify(t.searchTerms)!==JSON.stringify(r.searchTerms)&&(this.db.exec("DELETE FROM recommendation_feed"),this.db.exec("DELETE FROM catalog_cache WHERE key LIKE 'feed:%'")),r})}event({session_id:A,turn_id:t,hook_event_name:r},i=Date.now()){if(!vA(A)||!vA(t)||!["UserPromptSubmit","Stop","Interrupt"].includes(r))return;let n=+(r==="Stop"),a=+(r==="Interrupt");return this.db.prepare(`INSERT INTO turn_state(session_id,turn_id,submitted_at,stop_kind,stopped,interrupted,observed_at)
|
|
37
42
|
VALUES(?,?,?,?,?,?,?) ON CONFLICT(session_id,turn_id) DO UPDATE SET
|
|
38
43
|
submitted_at=COALESCE(submitted_at,CASE WHEN excluded.submitted_at IS NOT NULL THEN min(observed_at,excluded.submitted_at) END),
|
|
39
44
|
stop_kind=COALESCE(excluded.stop_kind,stop_kind), stopped=max(stopped,excluded.stopped),
|
|
@@ -50,7 +55,7 @@ var te=Object.create;var pA=Object.defineProperty;var re=Object.getOwnPropertyDe
|
|
|
50
55
|
ORDER BY e.last_shown, c.key`).all(JSON.stringify(NA(i))).map(({id:g,title:I})=>({id:g,title:I}));C.sort((g,I)=>Number(E.has(g.id))-Number(E.has(I.id)));let s=r?[r,...C.filter(g=>g.id!==r.id).slice(0,2)]:C.slice(0,3);return s.length&&this.db.prepare("INSERT INTO turn_picks(session_id,turn_id,items,reserved_at) VALUES(?,?,?,?)").run(A,t,JSON.stringify(s),n?Date.now():null),s})}markPicksShown(A,t,r){return this.transaction(()=>{let i=r()&&this.db.prepare("UPDATE turn_picks SET shown=1 WHERE session_id=? AND turn_id=? AND shown=0 RETURNING items").get(A,t);if(i){let n=this.db.prepare("SELECT coalesce(max(last_shown),0)+1 AS n FROM pick_exposure").get().n,a=this.db.prepare("INSERT OR REPLACE INTO pick_exposure(series_id,last_shown) VALUES(?,?)");for(let o of JSON.parse(i.items))o.episodeId||a.run(o.id,n)}return{recorded:!!i}})}state(A,t){let r=A&&(t?this.db.prepare("SELECT * FROM turn_state WHERE session_id=? AND turn_id=?").get(A,t):this.db.prepare("SELECT * FROM turn_state WHERE session_id=? ORDER BY (submitted_at IS NOT NULL) DESC,coalesce(submitted_at,observed_at) DESC,rowid DESC LIMIT 1").get(A));if(!r)return{sessionId:null,turnId:null,state:"unknown",revision:0,observedAt:null};let i=r.interrupted?"interrupted":r.stopped?"stopped":"submitted";return{sessionId:r.session_id,turnId:r.turn_id,state:i,revision:r.revision,observedAt:r.observed_at}}candidates(){return this.db.prepare("SELECT session_id, max(observed_at) AS at FROM turn_state GROUP BY session_id ORDER BY at DESC LIMIT 8").all()}save({seriesId:A,episodeId:t,title:r,label:i,positionMs:n,durationMs:a,reset:o=!1}){return n<=0&&!o?{saved:!1}:this.transaction(()=>(n===0?this.db.prepare("INSERT OR IGNORE INTO watch_restart VALUES(?,?)").run(A,t):this.db.prepare("DELETE FROM watch_restart WHERE series_id=? AND episode_id=?").run(A,t),this.db.prepare(`INSERT INTO watch_progress VALUES(?,?,?,?,?,?,max(?,coalesce((SELECT max(updated_at)+1 FROM watch_progress),0))) ON CONFLICT(series_id,episode_id) DO UPDATE SET
|
|
51
56
|
title=excluded.title,label=excluded.label,position_ms=excluded.position_ms,duration_ms=excluded.duration_ms,updated_at=excluded.updated_at`).run(A,t,r,i,Math.min(n,a),a,Date.now()),{saved:!0}))}history(A,t,r=30){let i="series_id AS seriesId,episode_id AS episodeId,title,label,position_ms AS positionMs,duration_ms AS durationMs,updated_at AS updatedAt",n="(position_ms>0 OR (series_id,episode_id) IN (SELECT series_id,episode_id FROM watch_restart))";return A&&t?this.db.prepare("SELECT "+i+" FROM watch_progress WHERE series_id=? AND episode_id=? AND "+n).all(A,t):A?this.db.prepare("SELECT "+i+" FROM watch_progress WHERE series_id=? AND "+n+" ORDER BY updated_at DESC,rowid DESC LIMIT 1").all(A):this.db.prepare("SELECT "+i+` FROM (SELECT *, row_number() OVER(PARTITION BY series_id ORDER BY updated_at DESC,rowid DESC) AS rank
|
|
52
57
|
FROM watch_progress WHERE ${n} AND series_id GLOB 'hg-*' AND episode_id GLOB 'hg-*')
|
|
53
|
-
WHERE rank=1 ORDER BY updated_at DESC LIMIT ?`).all(r)}removeHistory(A){return this.transaction(()=>(this.db.prepare("DELETE FROM watch_progress WHERE series_id=?").run(A),this.db.prepare("DELETE FROM watch_restart WHERE series_id=?").run(A),{removed:!0}))}writable(){if(!this.persistent)return!1;try{return this.db.exec("UPDATE watch_progress SET updated_at=updated_at WHERE 0"),!0}catch{return!1}}close(){this.db.close()}};var Qe="\u8BF7\u5728 Codex \u8BBE\u7F6E \u2192 Hooks \u2192 \u7EA2\u679C\u77ED\u5267\u4E2D\u68C0\u67E5\u6388\u6743\uFF0C\u5BA1\u67E5\u3001\u4FE1\u4EFB\u5E76\u542F\u7528 UserPromptSubmit\u3001Stop\u3001Interrupt\u3002";function DA(){return{status:"manual_check",events:["userPromptSubmit","stop","interrupt"].map(e=>({event:e,status:"manual_check"})),message:Qe}}import{createHash as _A,randomUUID as Ye}from"node:crypto";import{createReadStream as OA}from"node:fs";import{mkdir as bA,lstat as Je,open as UA,readFile as YA,writeFile as Ge,rename as He,rm as M,chmod as Ke,stat as xA,unlink as yt,rmdir as mt}from"node:fs/promises";import{lstatSync as qe}from"node:fs";import{homedir as ze}from"node:os";import{posix as JA,win32 as GA}from"node:path";import{spawnSync as Pe}from"node:child_process";import{createRequire as le}from"module";var Be=le("/"),k,pe,de;try{k=Be("worker_threads"),pe=k.Worker,de=k.isMarkedAsUntransferable}catch{}var w=Uint8Array,F=Uint16Array,we=Int32Array,yA=new w([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),mA=new w([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),ve=new w([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),SA=function(e,A){for(var t=new F(31),r=0;r<31;++r)t[r]=A+=1<<e[r-1];for(var i=new we(t[30]),r=1;r<30;++r)for(var n=t[r];n<t[r+1];++n)i[n]=n-t[r]<<5|r;return{b:t,r:i}},k=SA(yA,2),RA=k.b,Ne=k.r;RA[28]=258,Ne[258]=28;var TA=SA(mA,0),De=TA.b,pt=TA.r,AA=new F(32768);for(h=0;h<32768;++h)S=(h&43690)>>1|(h&21845)<<1,S=(S&52428)>>2|(S&13107)<<2,S=(S&61680)>>4|(S&3855)<<4,AA[h]=((S&65280)>>8|(S&255)<<8)>>1;var S,h,U=(function(e,A,t){for(var r=e.length,i=0,n=new F(A);i<r;++i)e[i]&&++n[e[i]-1];var a=new F(A);for(i=1;i<A;++i)a[i]=a[i-1]+n[i-1]<<1;var o;if(t){o=new F(1<<A);var E=15-A;for(i=0;i<r;++i)if(e[i])for(var u=i<<4|e[i],C=A-e[i],s=a[e[i]-1]++<<C,g=s|(1<<C)-1;s<=g;++s)o[AA[s]>>E]=u}else for(o=new F(r),i=0;i<r;++i)e[i]&&(o[i]=AA[a[e[i]-1]++]>>15-e[i]);return o}),Y=new w(288);for(h=0;h<144;++h)Y[h]=8;var h;for(h=144;h<256;++h)Y[h]=9;var h;for(h=256;h<280;++h)Y[h]=7;var h;for(h=280;h<288;++h)Y[h]=8;var h,LA=new w(32);for(h=0;h<32;++h)LA[h]=5;var h;var ye=U(Y,9,1);var me=U(LA,5,1),V=function(e){for(var A=e[0],t=1;t<e.length;++t)e[t]>A&&(A=e[t]);return A},y=function(e,A,t){var r=A/8|0;return(e[r]|e[r+1]<<8)>>(A&7)&t},Z=function(e,A){var t=A/8|0;return(e[t]|e[t+1]<<8|e[t+2]<<16)>>(A&7)},Se=function(e){return(e+7)/8|0},tA=function(e,A,t){return(A==null||A<0)&&(A=0),(t==null||t>e.length)&&(t=e.length),new w(e.subarray(A,t))};var Re=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],d=function(e,A,t){var r=new Error(A||Re[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,d),!t)throw r;return r},Te=function(e,A,t,r){var i=e.length,n=r?r.length:0;if(!i||A.f&&!A.l)return t||new w(0);var a=!t,o=a||A.i!=2,E=A.i;a&&(t=new w(i*3));var u=function(QA){var lA=t.length;if(QA>lA){var BA=new w(Math.max(lA*2,QA));BA.set(t),t=BA}},C=A.f||0,s=A.p||0,g=A.b||0,I=A.l,f=A.d,Q=A.m,c=A.n,B=i*8;do{if(!I){C=y(e,s,1);var v=y(e,s+1,3);if(s+=3,v)if(v==1)I=ye,f=me,Q=9,c=5;else if(v==2){var z=y(e,s,31)+257,gA=y(e,s+10,15)+4,IA=z+y(e,s+5,31)+1;s+=14;for(var _=new w(IA),P=new w(19),N=0;N<gA;++N)P[ve[N]]=y(e,s+N*3,7);s+=gA*3;for(var CA=V(P),VA=(1<<CA)-1,ZA=U(P,CA,1),N=0;N<IA;){var EA=ZA[y(e,s,VA)];s+=EA&15;var p=EA>>4;if(p<16)_[N++]=p;else{var T=0,G=0;for(p==16?(G=3+y(e,s,3),s+=2,T=_[N-1]):p==17?(G=3+y(e,s,7),s+=3):p==18&&(G=11+y(e,s,127),s+=7);G--;)_[N++]=T}}var hA=_.subarray(0,z),R=_.subarray(z);Q=V(hA),c=V(R),I=U(hA,Q,1),f=U(R,c,1)}else d(1);else{var p=Se(s)+4,b=e[p-4]|e[p-3]<<8,x=p+b;if(x>i){E&&d(0);break}o&&u(g+b),t.set(e.subarray(p,x),g),A.b=g+=b,A.p=s=x*8,A.f=C;continue}if(s>B){E&&d(0);break}}o&&u(g+131072);for(var $A=(1<<Q)-1,Ae=(1<<c)-1,W=s;;W=s){var T=I[Z(e,s)&$A],L=T>>4;if(s+=T&15,s>B){E&&d(0);break}if(T||d(2),L<256)t[g++]=L;else if(L==256){W=s,I=null;break}else{var uA=L-254;if(L>264){var N=L-257,O=yA[N];uA=y(e,s,(1<<O)-1)+RA[N],s+=O}var X=f[Z(e,s)&Ae],j=X>>4;X||d(3),s+=X&15;var R=De[j];if(j>3){var O=mA[j];R+=Z(e,s)&(1<<O)-1,s+=O}if(s>B){E&&d(0);break}o&&u(g+131072);var fA=g+uA;if(g<R){var cA=n-R,ee=Math.min(R,fA);for(cA+g<0&&d(3);g<ee;++g)t[g]=r[cA+g]}for(;g<fA;++g)t[g]=t[g-R]}}A.l=I,A.p=W,A.b=g,A.f=C,I&&(C=1,A.m=Q,A.d=f,A.n=c)}while(!C);return g!=t.length&&a?tA(t,0,g):t.subarray(0,g)};var Le=new w(0);var m=function(e,A){return e[A]|e[A+1]<<8},D=function(e,A){return(e[A]|e[A+1]<<8|e[A+2]<<16|e[A+3]<<24)>>>0},$=function(e,A){return D(e,A)+D(e,A+4)*4294967296};function Fe(e,A){return Te(e,{i:2},A&&A.out,A&&A.dictionary)}var eA=typeof TextDecoder<"u"&&new TextDecoder,ke=0;try{eA.decode(Le,{stream:!0}),ke=1}catch{}var Me=function(e){for(var A="",t=0;;){var r=e[t++],i=(r>127)+(r>223)+(r>239);if(t+i>e.length)return{s:A,r:tA(e,t-1)};i?i==3?(r=((r&15)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63)-65536,A+=String.fromCharCode(55296|r>>10,56320|r&1023)):i&1?A+=String.fromCharCode((r&31)<<6|e[t++]&63):A+=String.fromCharCode((r&15)<<12|(e[t++]&63)<<6|e[t++]&63):A+=String.fromCharCode(r)}};function be(e,A){if(A){for(var t="",r=0;r<e.length;r+=16384)t+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return t}else{if(eA)return eA.decode(e);var i=Me(e),n=i.s,t=i.r;return t.length&&d(8),n}}var xe=function(e,A){return A+30+m(e,A+26)+m(e,A+28)},_e=function(e,A,t){var r=m(e,A+28),i=m(e,A+30),n=be(e.subarray(A+46,A+46+r),!(m(e,A+8)&2048)),a=A+46+r,o=Oe(e,a,i,t,D(e,A+20),D(e,A+24),D(e,A+42)),E=o[0],u=o[1],C=o[2];return[m(e,A+10),E,u,n,a+i+m(e,A+32),C]},Oe=function(e,A,t,r,i,n,a){var o=i==4294967295,E=n==4294967295,u=a==4294967295,C=A+t,s=o+E+u;if(r&&s){for(;A+4<C;A+=4+m(e,A+2))if(m(e,A)==1)return[o?$(e,A+4+8*E):i,E?$(e,A+4):n,u?$(e,A+4+8*(E+o)):a,1];r<2&&d(13)}return[i,n,a,0]};function FA(e,A){for(var t={},r=e.length-22;D(e,r)!=101010256;--r)(!r||e.length-r>65558)&&d(13);var i=m(e,r+8);if(!i)return{};var n=D(e,r+16),a=D(e,r-20)==117853008;if(a){var o=D(e,r-12);a=D(e,o)==101075792,a&&(i=D(e,o+32),n=D(e,o+48))}for(var E=A&&A.filter,u=0;u<i;++u){var C=_e(e,n,a),s=C[0],g=C[1],I=C[2],f=C[3],Q=C[4],c=C[5],B=xe(e,c);n=Q,(!E||E({name:f,size:g,originalSize:I,compression:s}))&&(s?s==8?t[f]=Fe(e.subarray(B,B+g),{out:new w(I)}):d(14,"unknown compression type "+s):t[f]=tA(e,B,B+g))}return t}var HA=ge(kA(),1);var MA={"darwin-arm64":{version:"9.0.2",url:"https://www.osxexperts.net/ffmpeg902arm.zip",format:"zip",entry:"ffmpeg",archiveBytes:22665869,archiveSha256:"07e00300593799005b060c03a99fe648b1edda0f30c36b0c1adafe8e3247e586",binaryBytes:52160568,binarySha256:"762f16b2913b8d3b8fdb8092df12b691053b035b13ae9b88205513c55cb8e71e"},"darwin-x64":{version:"9.0.2",url:"https://evermeet.cx/ffmpeg/ffmpeg-9.0.2.zip",format:"zip",entry:"ffmpeg",archiveBytes:26198325,archiveSha256:"4acc0be580f9b2788029eb7bd4d645ff87968911b0a62aeeb3940d42d54558d5",binaryBytes:80827688,binarySha256:"a45b462cf91ed89148ae218c4577e30896485d7a6792c3673bcf5f823fa01b63"},"linux-x64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-linux64-gpl-9.0.tar.xz",format:"tar.xz",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-linux64-gpl-9.0/bin/ffmpeg",archiveBytes:153175100,archiveSha256:"73e29a56974ae5a651133a04584c7483b21afe941e17dc91d79814a758b608d3"},"linux-arm64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-linuxarm64-gpl-9.0.tar.xz",format:"tar.xz",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-linuxarm64-gpl-9.0/bin/ffmpeg",archiveBytes:128664064,archiveSha256:"6cad88ae5bcec356cfc5d7979a036cc4007128201928a0cf243df3db483276cc"},"win32-x64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-win64-gpl-9.0.zip",format:"zip",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-win64-gpl-9.0/bin/ffmpeg.exe",archiveBytes:195110184,archiveSha256:"693f3e224bc184b40524a62ca47526cfebaf2504414021b92fe75f677ad868b9"},"win32-arm64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-winarm64-gpl-9.0.zip",format:"zip",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-winarm64-gpl-9.0/bin/ffmpeg.exe",archiveBytes:136603040,archiveSha256:"8b3c394762f26716ccef03ac1b7ac76430759080e1255aa9bc01d74db590bcb5",binaryBytes:95170560,binarySha256:"e2248aa5ecd155814e951fd0606df71589699a2fd4db14a9323a0b400a6c9b06"}};var q=new Map,K=new Map,We="@kyun.si/codex-hongguo",KA=new Set(["prepare","download","download-url","download-http","download-network","archive-size","archive-hash","extract","binary-hash","probe","publish"]),Xe=new Set(["UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_SOCKET","ECONNRESET","ECONNREFUSED","ETIMEDOUT","EAI_AGAIN","ENETUNREACH","EHOSTUNREACH"]),je=new Set([408,429,500,502,503,504]),l=(e="prepare",A)=>Object.assign(Error("\u64AD\u653E\u7EC4\u4EF6\u81EA\u52A8\u51C6\u5907\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u548C\u7F13\u5B58\u76EE\u5F55\u6743\u9650\u540E\u91CD\u8BD5\u5B89\u88C5\u3002"),{code:e,...Number.isInteger(A)&&A>=400&&A<=599?{httpStatus:A}:{}}),qA=e=>new Promise(A=>setTimeout(A,e));function Ve(e={}){let{env:A=process.env,home:t=ze(),platform:r=process.platform,arch:i=process.arch}=e,n=r==="win32"?GA:JA;if(A.HONGGUO_FFMPEG){if(!n.isAbsolute(A.HONGGUO_FFMPEG))throw l();return{...e,env:A,platform:r,target:A.HONGGUO_FFMPEG,override:!0}}let a=(e.artifacts||MA)[r+"-"+i];if(!a)throw Error("\u5F53\u524D\u7CFB\u7EDF\u67B6\u6784\u6682\u4E0D\u652F\u6301\u81EA\u52A8\u51C6\u5907\u64AD\u653E\u7EC4\u4EF6\u3002");let o=Ze({env:A,home:t,platform:r,paths:n}),E=n.join(o,"runtime","ffmpeg",a.archiveSha256.slice(0,16),r+"-"+i);return{...e,env:A,platform:r,artifact:a,directory:E,target:n.join(E,r==="win32"?"ffmpeg.exe":"ffmpeg")}}function Ze({env:e,home:A,platform:t,paths:r}){return e.HONGGUO_RUNTIME_DIR?r.join(e.HONGGUO_RUNTIME_DIR,"codex-hongguo"):t==="darwin"?r.join(A,"Library","Caches","CodexHongguo"):t==="win32"?r.join(e.LOCALAPPDATA||r.join(A,"AppData","Local"),"CodexHongguo","Cache"):r.join(e.XDG_CACHE_HOME||r.join(A,".cache"),"codex-hongguo")}function iA(e){try{let A=qe(e);return A.isFile()&&!A.isSymbolicLink()?`${A.size}:${A.mtimeMs}:${A.ctimeMs}`:null}catch{return null}}async function zA(e){let A=_A("sha256");for await(let t of OA(e))A.update(t);return A.digest("hex")}function PA(e,A){return A.probe?A.probe(e):Pe(e,["-version"],{stdio:"ignore",timeout:5e3,windowsHide:!0}).status===0}async function nA(e){let{target:A,artifact:t}=e;if(q.get(A)&&q.get(A)===iA(A))return!0;try{let r=await Je(A);if(!r.isFile()||r.isSymbolicLink())return!1;if(t){let i=JSON.parse(await YA(A+".json","utf8"));if(i.archiveSha256!==t.archiveSha256||!/^[a-f0-9]{64}$/.test(i.binarySha256)||r.size!==(t.binaryBytes||i.binaryBytes)||await zA(A)!==(t.binarySha256||i.binarySha256))return!1}return PA(A,e)?(q.set(A,iA(A)),!0):!1}catch{return!1}}async function $e(e,A,t){let r=AbortSignal.timeout(3e5);for(let i=0;;i++)try{return await At(e,A,t,r)}catch(n){await M(A,{force:!0});let a=Xe.has(n?.cause?.code||n?.code);if(!(a||n?.code==="download-http"&&je.has(n.httpStatus))||i>=2||r.aborted)throw l(a?"download-network":KA.has(n?.code)?n.code:"download",n?.httpStatus);await qA((i+1)*1e3)}}async function At(e,A,t,r){let i=new Set(["github.com","release-assets.githubusercontent.com","objects.githubusercontent.com","evermeet.cx","www.osxexperts.net"]),n=new URL(e.url),a;for(let C=0;C<=6;C++){if(n.protocol!=="https:"||n.username||n.password||n.port||!i.has(n.hostname))throw l("download-url");if(a=await t(n,{redirect:"manual",signal:r}),![301,302,303,307,308].includes(a.status))break;let s=a.headers.get("location");if(await a.body?.cancel(),!s||C===6)throw l("download-url");n=new URL(s,n)}if(!a.ok||!a.body)throw await a.body?.cancel(),l("download-http",a.status);if(Number(a.headers.get("content-length"))>e.archiveBytes)throw await a.body.cancel(),l("archive-size");let o=await UA(A,"wx",384),E=_A("sha256"),u=0;try{for await(let C of a.body){if(u+=C.length,u>e.archiveBytes)throw l("archive-size");E.update(C),await o.writeFile(C)}if(u!==e.archiveBytes)throw l("archive-size");if(E.digest("hex")!==e.archiveSha256)throw l("archive-hash")}finally{await o.close()}}async function et(e,A,t){let r=await UA(t,"wx",384);try{if(e.format==="zip"){let g=FA(await YA(A),{filter:I=>I.name===e.entry&&I.originalSize<=(e.binaryBytes||268435456)})[e.entry];if(!g||e.binaryBytes&&g.length!==e.binaryBytes)throw l();await r.writeFile(g);return}let i=new HA.default.XzReadableStream(tt(A)),n=i.getReader(),a=Buffer.alloc(0),o=0,E=0,u=!1,C=0;try{for(;;){let{value:s,done:g}=await n.read();if(g)break;if(C+=s.length,C>1024*1024*1024)throw l();for(a=Buffer.concat([a,s]);a.length;)if(o){let I=Math.min(o,a.length);if(u&&await r.writeFile(a.subarray(0,I)),a=a.subarray(I),o-=I,!o&&u)return}else if(E){let I=Math.min(E,a.length);a=a.subarray(I),E-=I}else{if(a.length<512)break;let I=a.subarray(0,512);a=a.subarray(512);let f=(B,v)=>I.subarray(B,v).toString("utf8").split("\0")[0],Q=[f(345,500),f(0,100)].filter(Boolean).join("/"),c=parseInt(f(124,136).trim()||"0",8);if(!Number.isSafeInteger(c)||c<0||c>512*1024*1024||(u=Q===e.entry,u&&(e.binaryBytes&&c!==e.binaryBytes||c>256*1024*1024||![0,48].includes(I[156]))))throw l();o=c,E=(512-c%512)%512}}throw l()}finally{await n.cancel().catch(()=>{})}}finally{await r.close()}}function tt(e){let A=OA(e)[Symbol.asyncIterator]();return new ReadableStream({async pull(t){let{value:r,done:i}=await A.next();i?t.close():t.enqueue(r)},async cancel(){await A.return?.()}})}async function WA(e={}){let A=Ve(e);if(await nA(A))return A.target;if(A.override)throw l();if(K.has(A.target))return K.get(A.target);let t=rt(A).finally(()=>K.delete(A.target));return K.set(A.target,t),t}async function rt(e){let{directory:A,target:t,artifact:r}=e,i=A+".lock",n=Date.now()+42e4;await bA(A,{recursive:!0,mode:448});let a=!1;for(;!a;)try{await bA(i,{mode:448}),a=!0}catch(g){if(g.code!=="EEXIST"||Date.now()>n)throw l();if(await nA(e))return t;try{Date.now()-(await xA(i)).mtimeMs>6e5&&await M(i,{recursive:!0,force:!0})}catch{}await qA(200)}let o=e.platform==="win32"?GA:JA,E=o.basename(t)+"."+Ye(),u=o.join(A,E+".archive"),C=o.join(A,E+".part"),s="download";try{if(await nA(e))return t;await $e(r,u,e.fetchImpl||fetch),s="extract",await et(r,u,C);let g=await zA(C);if(r.binarySha256&&g!==r.binarySha256)throw l("binary-hash");if(await Ke(C,493),!PA(C,e))throw l("probe");return s="publish",e.platform==="win32"&&await M(t,{force:!0}),await He(C,t),await Ge(t+".json",JSON.stringify({owner:We,schema:1,archiveSha256:r.archiveSha256,binarySha256:g,binaryBytes:(await xA(t)).size,version:r.version})+`
|
|
58
|
+
WHERE rank=1 ORDER BY updated_at DESC LIMIT ?`).all(r)}removeHistory(A){return this.transaction(()=>(this.db.prepare("DELETE FROM watch_progress WHERE series_id=?").run(A),this.db.prepare("DELETE FROM watch_restart WHERE series_id=?").run(A),{removed:!0}))}writable(){if(!this.persistent)return!1;try{return this.db.exec("UPDATE watch_progress SET updated_at=updated_at WHERE 0"),!0}catch{return!1}}close(){this.db.close()}};var Qe="\u8BF7\u5728 Codex \u8BBE\u7F6E \u2192 Hooks \u2192 \u7EA2\u679C\u77ED\u5267\u4E2D\u68C0\u67E5\u6388\u6743\uFF0C\u5BA1\u67E5\u3001\u4FE1\u4EFB\u5E76\u542F\u7528 UserPromptSubmit\u3001Stop\u3001Interrupt\u3002";function DA(){return{status:"manual_check",events:["userPromptSubmit","stop","interrupt"].map(e=>({event:e,status:"manual_check"})),message:Qe}}import{createHash as _A,randomUUID as Ye}from"node:crypto";import{createReadStream as OA}from"node:fs";import{mkdir as bA,lstat as Je,open as UA,readFile as YA,writeFile as Ge,rename as He,rm as M,chmod as Ke,stat as xA,unlink as yt,rmdir as mt}from"node:fs/promises";import{lstatSync as qe}from"node:fs";import{homedir as ze}from"node:os";import{posix as JA,win32 as GA}from"node:path";import{spawnSync as Pe}from"node:child_process";import{createRequire as le}from"module";var Be=le("/"),k,pe,de;try{k=Be("worker_threads"),pe=k.Worker,de=k.isMarkedAsUntransferable}catch{}var w=Uint8Array,F=Uint16Array,we=Int32Array,yA=new w([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),mA=new w([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),ve=new w([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),SA=function(e,A){for(var t=new F(31),r=0;r<31;++r)t[r]=A+=1<<e[r-1];for(var i=new we(t[30]),r=1;r<30;++r)for(var n=t[r];n<t[r+1];++n)i[n]=n-t[r]<<5|r;return{b:t,r:i}},k=SA(yA,2),TA=k.b,Ne=k.r;TA[28]=258,Ne[258]=28;var RA=SA(mA,0),De=RA.b,pt=RA.r,AA=new F(32768);for(h=0;h<32768;++h)S=(h&43690)>>1|(h&21845)<<1,S=(S&52428)>>2|(S&13107)<<2,S=(S&61680)>>4|(S&3855)<<4,AA[h]=((S&65280)>>8|(S&255)<<8)>>1;var S,h,U=(function(e,A,t){for(var r=e.length,i=0,n=new F(A);i<r;++i)e[i]&&++n[e[i]-1];var a=new F(A);for(i=1;i<A;++i)a[i]=a[i-1]+n[i-1]<<1;var o;if(t){o=new F(1<<A);var E=15-A;for(i=0;i<r;++i)if(e[i])for(var u=i<<4|e[i],C=A-e[i],s=a[e[i]-1]++<<C,g=s|(1<<C)-1;s<=g;++s)o[AA[s]>>E]=u}else for(o=new F(r),i=0;i<r;++i)e[i]&&(o[i]=AA[a[e[i]-1]++]>>15-e[i]);return o}),Y=new w(288);for(h=0;h<144;++h)Y[h]=8;var h;for(h=144;h<256;++h)Y[h]=9;var h;for(h=256;h<280;++h)Y[h]=7;var h;for(h=280;h<288;++h)Y[h]=8;var h,LA=new w(32);for(h=0;h<32;++h)LA[h]=5;var h;var ye=U(Y,9,1);var me=U(LA,5,1),V=function(e){for(var A=e[0],t=1;t<e.length;++t)e[t]>A&&(A=e[t]);return A},y=function(e,A,t){var r=A/8|0;return(e[r]|e[r+1]<<8)>>(A&7)&t},Z=function(e,A){var t=A/8|0;return(e[t]|e[t+1]<<8|e[t+2]<<16)>>(A&7)},Se=function(e){return(e+7)/8|0},tA=function(e,A,t){return(A==null||A<0)&&(A=0),(t==null||t>e.length)&&(t=e.length),new w(e.subarray(A,t))};var Te=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],d=function(e,A,t){var r=new Error(A||Te[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,d),!t)throw r;return r},Re=function(e,A,t,r){var i=e.length,n=r?r.length:0;if(!i||A.f&&!A.l)return t||new w(0);var a=!t,o=a||A.i!=2,E=A.i;a&&(t=new w(i*3));var u=function(QA){var lA=t.length;if(QA>lA){var BA=new w(Math.max(lA*2,QA));BA.set(t),t=BA}},C=A.f||0,s=A.p||0,g=A.b||0,I=A.l,f=A.d,Q=A.m,c=A.n,B=i*8;do{if(!I){C=y(e,s,1);var v=y(e,s+1,3);if(s+=3,v)if(v==1)I=ye,f=me,Q=9,c=5;else if(v==2){var z=y(e,s,31)+257,gA=y(e,s+10,15)+4,IA=z+y(e,s+5,31)+1;s+=14;for(var _=new w(IA),P=new w(19),N=0;N<gA;++N)P[ve[N]]=y(e,s+N*3,7);s+=gA*3;for(var CA=V(P),VA=(1<<CA)-1,ZA=U(P,CA,1),N=0;N<IA;){var EA=ZA[y(e,s,VA)];s+=EA&15;var p=EA>>4;if(p<16)_[N++]=p;else{var R=0,G=0;for(p==16?(G=3+y(e,s,3),s+=2,R=_[N-1]):p==17?(G=3+y(e,s,7),s+=3):p==18&&(G=11+y(e,s,127),s+=7);G--;)_[N++]=R}}var hA=_.subarray(0,z),T=_.subarray(z);Q=V(hA),c=V(T),I=U(hA,Q,1),f=U(T,c,1)}else d(1);else{var p=Se(s)+4,b=e[p-4]|e[p-3]<<8,x=p+b;if(x>i){E&&d(0);break}o&&u(g+b),t.set(e.subarray(p,x),g),A.b=g+=b,A.p=s=x*8,A.f=C;continue}if(s>B){E&&d(0);break}}o&&u(g+131072);for(var $A=(1<<Q)-1,Ae=(1<<c)-1,W=s;;W=s){var R=I[Z(e,s)&$A],L=R>>4;if(s+=R&15,s>B){E&&d(0);break}if(R||d(2),L<256)t[g++]=L;else if(L==256){W=s,I=null;break}else{var uA=L-254;if(L>264){var N=L-257,O=yA[N];uA=y(e,s,(1<<O)-1)+TA[N],s+=O}var X=f[Z(e,s)&Ae],j=X>>4;X||d(3),s+=X&15;var T=De[j];if(j>3){var O=mA[j];T+=Z(e,s)&(1<<O)-1,s+=O}if(s>B){E&&d(0);break}o&&u(g+131072);var fA=g+uA;if(g<T){var cA=n-T,ee=Math.min(T,fA);for(cA+g<0&&d(3);g<ee;++g)t[g]=r[cA+g]}for(;g<fA;++g)t[g]=t[g-T]}}A.l=I,A.p=W,A.b=g,A.f=C,I&&(C=1,A.m=Q,A.d=f,A.n=c)}while(!C);return g!=t.length&&a?tA(t,0,g):t.subarray(0,g)};var Le=new w(0);var m=function(e,A){return e[A]|e[A+1]<<8},D=function(e,A){return(e[A]|e[A+1]<<8|e[A+2]<<16|e[A+3]<<24)>>>0},$=function(e,A){return D(e,A)+D(e,A+4)*4294967296};function Fe(e,A){return Re(e,{i:2},A&&A.out,A&&A.dictionary)}var eA=typeof TextDecoder<"u"&&new TextDecoder,ke=0;try{eA.decode(Le,{stream:!0}),ke=1}catch{}var Me=function(e){for(var A="",t=0;;){var r=e[t++],i=(r>127)+(r>223)+(r>239);if(t+i>e.length)return{s:A,r:tA(e,t-1)};i?i==3?(r=((r&15)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63)-65536,A+=String.fromCharCode(55296|r>>10,56320|r&1023)):i&1?A+=String.fromCharCode((r&31)<<6|e[t++]&63):A+=String.fromCharCode((r&15)<<12|(e[t++]&63)<<6|e[t++]&63):A+=String.fromCharCode(r)}};function be(e,A){if(A){for(var t="",r=0;r<e.length;r+=16384)t+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return t}else{if(eA)return eA.decode(e);var i=Me(e),n=i.s,t=i.r;return t.length&&d(8),n}}var xe=function(e,A){return A+30+m(e,A+26)+m(e,A+28)},_e=function(e,A,t){var r=m(e,A+28),i=m(e,A+30),n=be(e.subarray(A+46,A+46+r),!(m(e,A+8)&2048)),a=A+46+r,o=Oe(e,a,i,t,D(e,A+20),D(e,A+24),D(e,A+42)),E=o[0],u=o[1],C=o[2];return[m(e,A+10),E,u,n,a+i+m(e,A+32),C]},Oe=function(e,A,t,r,i,n,a){var o=i==4294967295,E=n==4294967295,u=a==4294967295,C=A+t,s=o+E+u;if(r&&s){for(;A+4<C;A+=4+m(e,A+2))if(m(e,A)==1)return[o?$(e,A+4+8*E):i,E?$(e,A+4):n,u?$(e,A+4+8*(E+o)):a,1];r<2&&d(13)}return[i,n,a,0]};function FA(e,A){for(var t={},r=e.length-22;D(e,r)!=101010256;--r)(!r||e.length-r>65558)&&d(13);var i=m(e,r+8);if(!i)return{};var n=D(e,r+16),a=D(e,r-20)==117853008;if(a){var o=D(e,r-12);a=D(e,o)==101075792,a&&(i=D(e,o+32),n=D(e,o+48))}for(var E=A&&A.filter,u=0;u<i;++u){var C=_e(e,n,a),s=C[0],g=C[1],I=C[2],f=C[3],Q=C[4],c=C[5],B=xe(e,c);n=Q,(!E||E({name:f,size:g,originalSize:I,compression:s}))&&(s?s==8?t[f]=Fe(e.subarray(B,B+g),{out:new w(I)}):d(14,"unknown compression type "+s):t[f]=tA(e,B,B+g))}return t}var HA=ge(kA(),1);var MA={"darwin-arm64":{version:"9.0.2",url:"https://www.osxexperts.net/ffmpeg902arm.zip",format:"zip",entry:"ffmpeg",archiveBytes:22665869,archiveSha256:"07e00300593799005b060c03a99fe648b1edda0f30c36b0c1adafe8e3247e586",binaryBytes:52160568,binarySha256:"762f16b2913b8d3b8fdb8092df12b691053b035b13ae9b88205513c55cb8e71e"},"darwin-x64":{version:"9.0.2",url:"https://evermeet.cx/ffmpeg/ffmpeg-9.0.2.zip",format:"zip",entry:"ffmpeg",archiveBytes:26198325,archiveSha256:"4acc0be580f9b2788029eb7bd4d645ff87968911b0a62aeeb3940d42d54558d5",binaryBytes:80827688,binarySha256:"a45b462cf91ed89148ae218c4577e30896485d7a6792c3673bcf5f823fa01b63"},"linux-x64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-linux64-gpl-9.0.tar.xz",format:"tar.xz",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-linux64-gpl-9.0/bin/ffmpeg",archiveBytes:153175100,archiveSha256:"73e29a56974ae5a651133a04584c7483b21afe941e17dc91d79814a758b608d3"},"linux-arm64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-linuxarm64-gpl-9.0.tar.xz",format:"tar.xz",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-linuxarm64-gpl-9.0/bin/ffmpeg",archiveBytes:128664064,archiveSha256:"6cad88ae5bcec356cfc5d7979a036cc4007128201928a0cf243df3db483276cc"},"win32-x64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-win64-gpl-9.0.zip",format:"zip",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-win64-gpl-9.0/bin/ffmpeg.exe",archiveBytes:195110184,archiveSha256:"693f3e224bc184b40524a62ca47526cfebaf2504414021b92fe75f677ad868b9"},"win32-arm64":{version:"9.0.2-20261031",url:"https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-10-31-12-59/ffmpeg-n9.0.2-39-g7adfbe40dc-winarm64-gpl-9.0.zip",format:"zip",entry:"ffmpeg-n9.0.2-39-g7adfbe40dc-winarm64-gpl-9.0/bin/ffmpeg.exe",archiveBytes:136603040,archiveSha256:"8b3c394762f26716ccef03ac1b7ac76430759080e1255aa9bc01d74db590bcb5",binaryBytes:95170560,binarySha256:"e2248aa5ecd155814e951fd0606df71589699a2fd4db14a9323a0b400a6c9b06"}};var q=new Map,K=new Map,We="@kyun.si/codex-hongguo",KA=new Set(["prepare","download","download-url","download-http","download-network","archive-size","archive-hash","extract","binary-hash","probe","publish"]),Xe=new Set(["UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_SOCKET","ECONNRESET","ECONNREFUSED","ETIMEDOUT","EAI_AGAIN","ENETUNREACH","EHOSTUNREACH"]),je=new Set([408,429,500,502,503,504]),l=(e="prepare",A)=>Object.assign(Error("\u64AD\u653E\u7EC4\u4EF6\u81EA\u52A8\u51C6\u5907\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u548C\u7F13\u5B58\u76EE\u5F55\u6743\u9650\u540E\u91CD\u8BD5\u5B89\u88C5\u3002"),{code:e,...Number.isInteger(A)&&A>=400&&A<=599?{httpStatus:A}:{}}),qA=e=>new Promise(A=>setTimeout(A,e));function Ve(e={}){let{env:A=process.env,home:t=ze(),platform:r=process.platform,arch:i=process.arch}=e,n=r==="win32"?GA:JA;if(A.HONGGUO_FFMPEG){if(!n.isAbsolute(A.HONGGUO_FFMPEG))throw l();return{...e,env:A,platform:r,target:A.HONGGUO_FFMPEG,override:!0}}let a=(e.artifacts||MA)[r+"-"+i];if(!a)throw Error("\u5F53\u524D\u7CFB\u7EDF\u67B6\u6784\u6682\u4E0D\u652F\u6301\u81EA\u52A8\u51C6\u5907\u64AD\u653E\u7EC4\u4EF6\u3002");let o=Ze({env:A,home:t,platform:r,paths:n}),E=n.join(o,"runtime","ffmpeg",a.archiveSha256.slice(0,16),r+"-"+i);return{...e,env:A,platform:r,artifact:a,directory:E,target:n.join(E,r==="win32"?"ffmpeg.exe":"ffmpeg")}}function Ze({env:e,home:A,platform:t,paths:r}){return e.HONGGUO_RUNTIME_DIR?r.join(e.HONGGUO_RUNTIME_DIR,"codex-hongguo"):t==="darwin"?r.join(A,"Library","Caches","CodexHongguo"):t==="win32"?r.join(e.LOCALAPPDATA||r.join(A,"AppData","Local"),"CodexHongguo","Cache"):r.join(e.XDG_CACHE_HOME||r.join(A,".cache"),"codex-hongguo")}function iA(e){try{let A=qe(e);return A.isFile()&&!A.isSymbolicLink()?`${A.size}:${A.mtimeMs}:${A.ctimeMs}`:null}catch{return null}}async function zA(e){let A=_A("sha256");for await(let t of OA(e))A.update(t);return A.digest("hex")}function PA(e,A){return A.probe?A.probe(e):Pe(e,["-version"],{stdio:"ignore",timeout:5e3,windowsHide:!0}).status===0}async function nA(e){let{target:A,artifact:t}=e;if(q.get(A)&&q.get(A)===iA(A))return!0;try{let r=await Je(A);if(!r.isFile()||r.isSymbolicLink())return!1;if(t){let i=JSON.parse(await YA(A+".json","utf8"));if(i.archiveSha256!==t.archiveSha256||!/^[a-f0-9]{64}$/.test(i.binarySha256)||r.size!==(t.binaryBytes||i.binaryBytes)||await zA(A)!==(t.binarySha256||i.binarySha256))return!1}return PA(A,e)?(q.set(A,iA(A)),!0):!1}catch{return!1}}async function $e(e,A,t){let r=AbortSignal.timeout(3e5);for(let i=0;;i++)try{return await At(e,A,t,r)}catch(n){await M(A,{force:!0});let a=Xe.has(n?.cause?.code||n?.code);if(!(a||n?.code==="download-http"&&je.has(n.httpStatus))||i>=2||r.aborted)throw l(a?"download-network":KA.has(n?.code)?n.code:"download",n?.httpStatus);await qA((i+1)*1e3)}}async function At(e,A,t,r){let i=new Set(["github.com","release-assets.githubusercontent.com","objects.githubusercontent.com","evermeet.cx","www.osxexperts.net"]),n=new URL(e.url),a;for(let C=0;C<=6;C++){if(n.protocol!=="https:"||n.username||n.password||n.port||!i.has(n.hostname))throw l("download-url");if(a=await t(n,{redirect:"manual",signal:r}),![301,302,303,307,308].includes(a.status))break;let s=a.headers.get("location");if(await a.body?.cancel(),!s||C===6)throw l("download-url");n=new URL(s,n)}if(!a.ok||!a.body)throw await a.body?.cancel(),l("download-http",a.status);if(Number(a.headers.get("content-length"))>e.archiveBytes)throw await a.body.cancel(),l("archive-size");let o=await UA(A,"wx",384),E=_A("sha256"),u=0;try{for await(let C of a.body){if(u+=C.length,u>e.archiveBytes)throw l("archive-size");E.update(C),await o.writeFile(C)}if(u!==e.archiveBytes)throw l("archive-size");if(E.digest("hex")!==e.archiveSha256)throw l("archive-hash")}finally{await o.close()}}async function et(e,A,t){let r=await UA(t,"wx",384);try{if(e.format==="zip"){let g=FA(await YA(A),{filter:I=>I.name===e.entry&&I.originalSize<=(e.binaryBytes||268435456)})[e.entry];if(!g||e.binaryBytes&&g.length!==e.binaryBytes)throw l();await r.writeFile(g);return}let i=new HA.default.XzReadableStream(tt(A)),n=i.getReader(),a=Buffer.alloc(0),o=0,E=0,u=!1,C=0;try{for(;;){let{value:s,done:g}=await n.read();if(g)break;if(C+=s.length,C>1024*1024*1024)throw l();for(a=Buffer.concat([a,s]);a.length;)if(o){let I=Math.min(o,a.length);if(u&&await r.writeFile(a.subarray(0,I)),a=a.subarray(I),o-=I,!o&&u)return}else if(E){let I=Math.min(E,a.length);a=a.subarray(I),E-=I}else{if(a.length<512)break;let I=a.subarray(0,512);a=a.subarray(512);let f=(B,v)=>I.subarray(B,v).toString("utf8").split("\0")[0],Q=[f(345,500),f(0,100)].filter(Boolean).join("/"),c=parseInt(f(124,136).trim()||"0",8);if(!Number.isSafeInteger(c)||c<0||c>512*1024*1024||(u=Q===e.entry,u&&(e.binaryBytes&&c!==e.binaryBytes||c>256*1024*1024||![0,48].includes(I[156]))))throw l();o=c,E=(512-c%512)%512}}throw l()}finally{await n.cancel().catch(()=>{})}}finally{await r.close()}}function tt(e){let A=OA(e)[Symbol.asyncIterator]();return new ReadableStream({async pull(t){let{value:r,done:i}=await A.next();i?t.close():t.enqueue(r)},async cancel(){await A.return?.()}})}async function WA(e={}){let A=Ve(e);if(await nA(A))return A.target;if(A.override)throw l();if(K.has(A.target))return K.get(A.target);let t=rt(A).finally(()=>K.delete(A.target));return K.set(A.target,t),t}async function rt(e){let{directory:A,target:t,artifact:r}=e,i=A+".lock",n=Date.now()+42e4;await bA(A,{recursive:!0,mode:448});let a=!1;for(;!a;)try{await bA(i,{mode:448}),a=!0}catch(g){if(g.code!=="EEXIST"||Date.now()>n)throw l();if(await nA(e))return t;try{Date.now()-(await xA(i)).mtimeMs>6e5&&await M(i,{recursive:!0,force:!0})}catch{}await qA(200)}let o=e.platform==="win32"?GA:JA,E=o.basename(t)+"."+Ye(),u=o.join(A,E+".archive"),C=o.join(A,E+".part"),s="download";try{if(await nA(e))return t;await $e(r,u,e.fetchImpl||fetch),s="extract",await et(r,u,C);let g=await zA(C);if(r.binarySha256&&g!==r.binarySha256)throw l("binary-hash");if(await Ke(C,493),!PA(C,e))throw l("probe");return s="publish",e.platform==="win32"&&await M(t,{force:!0}),await He(C,t),await Ge(t+".json",JSON.stringify({owner:We,schema:1,archiveSha256:r.archiveSha256,binarySha256:g,binaryBytes:(await xA(t)).size,version:r.version})+`
|
|
54
59
|
`,{mode:384}),q.set(t,iA(t)),t}catch(g){throw l(KA.has(g?.code)&&g.code!=="prepare"?g.code:s,g?.httpStatus)}finally{await Promise.all([M(u,{force:!0}),M(C,{force:!0}),M(i,{recursive:!0,force:!0})])}}var sA=!1,aA;try{aA=new H,sA=aA.writable()}catch{}finally{aA?.close()}var[XA,it]=process.versions.node.split(".").map(Number),jA={version:process.version,ready:XA>22||XA===22&&it>=16},oA=!1;try{await WA(),oA=!0}catch{}var nt=DA(),at=jA.ready&&sA&&oA;console.log(JSON.stringify({runtime:jA,database:sA,ffmpeg:oA,hooks:nt,manualReady:at},null,2));
|
|
55
60
|
/*! Bundled license information:
|
|
56
61
|
|