pushy-server 1.5.1-20260116 → 1.5.2-20260117
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/index.js +2 -2
- package/lib/index.js.map +3 -3
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -1478,7 +1478,7 @@ model audit_logs {
|
|
|
1478
1478
|
@@index([createdAt], map: "createdAt")
|
|
1479
1479
|
@@map("audit_logs")
|
|
1480
1480
|
}
|
|
1481
|
-
`,runtimeDataModel:{models:{},enums:{},types:{}}};K9.runtimeDataModel=JSON.parse('{"models":{"apps":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"platform","kind":"enum","type":"apps_platform"},{"name":"name","kind":"scalar","type":"String"},{"name":"appKey","kind":"scalar","type":"String"},{"name":"appSecret","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"downloadUrl","kind":"scalar","type":"String"},{"name":"status","kind":"scalar","type":"String"},{"name":"ignoreBuildTime","kind":"scalar","type":"String"},{"name":"users","kind":"object","type":"users","relationName":"appsTousers"},{"name":"packages","kind":"object","type":"packages","relationName":"appsTopackages"},{"name":"versions","kind":"object","type":"versions","relationName":"appsToversions"},{"name":"bindings","kind":"object","type":"bindings","relationName":"appsTobindings"}],"dbName":null},"orders":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"type","kind":"enum","type":"orders_type"},{"name":"orderNo","kind":"scalar","type":"String"},{"name":"thirdOrderNo","kind":"scalar","type":"String"},{"name":"thirdUserId","kind":"scalar","type":"String"},{"name":"price","kind":"scalar","type":"Decimal"},{"name":"payTime","kind":"scalar","type":"String"},{"name":"status","kind":"enum","type":"orders_status"},{"name":"tier","kind":"scalar","type":"String"},{"name":"remark","kind":"scalar","type":"String"},{"name":"channel","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"users","kind":"object","type":"users","relationName":"ordersTousers"}],"dbName":null},"packages":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"appId","kind":"scalar","type":"Int"},{"name":"versionId","kind":"scalar","type":"Int"},{"name":"name","kind":"scalar","type":"String"},{"name":"hash","kind":"scalar","type":"String"},{"name":"status","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"buildTime","kind":"scalar","type":"String"},{"name":"buildNumber","kind":"scalar","type":"String"},{"name":"note","kind":"scalar","type":"String"},{"name":"deps","kind":"scalar","type":"Json"},{"name":"commit","kind":"scalar","type":"Json"},{"name":"apps","kind":"object","type":"apps","relationName":"appsTopackages"},{"name":"versions","kind":"object","type":"versions","relationName":"packagesToversions"},{"name":"bindings","kind":"object","type":"bindings","relationName":"bindingsTopackages"}],"dbName":null},"tasks":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"type","kind":"enum","type":"tasks_type"},{"name":"fromHash","kind":"scalar","type":"String"},{"name":"toHash","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":null},"users":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"email","kind":"scalar","type":"String"},{"name":"name","kind":"scalar","type":"String"},{"name":"salt","kind":"scalar","type":"String"},{"name":"secret","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"status","kind":"enum","type":"users_status"},{"name":"tier","kind":"scalar","type":"String"},{"name":"tierExpiresAt","kind":"scalar","type":"DateTime"},{"name":"quota","kind":"scalar","type":"Json"},{"name":"apps","kind":"object","type":"apps","relationName":"appsTousers"},{"name":"orders","kind":"object","type":"orders","relationName":"ordersTousers"},{"name":"apiTokens","kind":"object","type":"api_tokens","relationName":"api_tokensTousers"},{"name":"auditLogs","kind":"object","type":"audit_logs","relationName":"audit_logsTousers"}],"dbName":null},"versions":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"appId","kind":"scalar","type":"Int"},{"name":"hash","kind":"scalar","type":"String"},{"name":"name","kind":"scalar","type":"String"},{"name":"description","kind":"scalar","type":"String"},{"name":"metaInfo","kind":"scalar","type":"String"},{"name":"config","kind":"scalar","type":"Json"},{"name":"deps","kind":"scalar","type":"Json"},{"name":"commit","kind":"scalar","type":"Json"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"packages","kind":"object","type":"packages","relationName":"packagesToversions"},{"name":"apps","kind":"object","type":"apps","relationName":"appsToversions"},{"name":"bindings","kind":"object","type":"bindings","relationName":"bindingsToversions"}],"dbName":null},"reports":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"appId","kind":"scalar","type":"Int"},{"name":"packageId","kind":"scalar","type":"Int"},{"name":"versionId","kind":"scalar","type":"Int"},{"name":"time","kind":"scalar","type":"String"},{"name":"type","kind":"scalar","type":"String"},{"name":"data","kind":"scalar","type":"Json"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":null},"bindings":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"appId","kind":"scalar","type":"Int"},{"name":"packageId","kind":"scalar","type":"Int"},{"name":"versionId","kind":"scalar","type":"Int"},{"name":"type","kind":"enum","type":"binding_type"},{"name":"rollout","kind":"scalar","type":"Int"},{"name":"config","kind":"scalar","type":"Json"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"apps","kind":"object","type":"apps","relationName":"appsTobindings"},{"name":"packages","kind":"object","type":"packages","relationName":"bindingsTopackages"},{"name":"versions","kind":"object","type":"versions","relationName":"bindingsToversions"}],"dbName":"bindings"},"api_tokens":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"name","kind":"scalar","type":"String"},{"name":"tokenHash","kind":"scalar","type":"String"},{"name":"tokenSuffix","kind":"scalar","type":"String"},{"name":"permissions","kind":"scalar","type":"Json"},{"name":"expiresAt","kind":"scalar","type":"DateTime"},{"name":"revokedAt","kind":"scalar","type":"DateTime"},{"name":"lastUsedAt","kind":"scalar","type":"DateTime"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"users","kind":"object","type":"users","relationName":"api_tokensTousers"},{"name":"auditLogs","kind":"object","type":"audit_logs","relationName":"api_tokensToaudit_logs"}],"dbName":"api_tokens"},"audit_logs":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"apiTokenId","kind":"scalar","type":"Int"},{"name":"method","kind":"scalar","type":"String"},{"name":"path","kind":"scalar","type":"String"},{"name":"data","kind":"scalar","type":"Json"},{"name":"statusCode","kind":"scalar","type":"Int"},{"name":"ip","kind":"scalar","type":"String"},{"name":"userAgent","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"users","kind":"object","type":"users","relationName":"audit_logsTousers"},{"name":"apiTokens","kind":"object","type":"api_tokens","relationName":"api_tokensToaudit_logs"}],"dbName":"audit_logs"}},"enums":{},"types":{}}');async function vJI(A){let{Buffer:I}=await import("buffer"),g=I.from(A,"base64");return new WebAssembly.Module(g)}K9.compilerWasm={getRuntime:async()=>await Promise.resolve().then(() => (xt(),Tt)),getQueryCompilerWasmModule:async()=>{let{wasm:A}=await Promise.resolve().then(() => (bt(),$t));return await vJI(A)}};function ot(){return ct.getPrismaClient(K9)}var qB=cg(G9(),1);var rkg=qB.Extensions.getExtensionContext;var tkg={DbNull:qB.NullTypes.DbNull,JsonNull:qB.NullTypes.JsonNull,AnyNull:qB.NullTypes.AnyNull};var ekg=qB.makeStrictEnum({ReadUncommitted:"ReadUncommitted",ReadCommitted:"ReadCommitted",RepeatableRead:"RepeatableRead",Serializable:"Serializable"});var AHg=qB.Extensions.defineExtension;globalThis.__dirname=ft.dirname(dJI(import.meta.url));var vt=ot();var uJI=new $n(process.env.DATABASE_URL),BI=new vt({adapter:uJI});async function S8({userId:A=null,apiTokenId:I=null,method:g,path:C,data:B,statusCode:Q,ip:E,userAgent:D}){try{let G={};if(B&&typeof B==="object"&&!Array.isArray(B)){for(let[Y,w]of Object.entries(B))if(!["password","pwd","secret","appSecret","token","deps","commit"].includes(Y.toLowerCase()))G[Y]=w}await BI.audit_logs.create({data:{userId:A,apiTokenId:I,method:g,path:C,data:G,statusCode:Q,ip:E,userAgent:D}})}catch(G){console.error("Failed to log request audit:",G)}}function _t(A){let I=A.headers,g=I.get("x-forwarded-for");if(g)return g.split(",")[0].trim();let C=I.get("x-real-ip");if(C)return C;return null}function pt(A){return A.headers.get("user-agent")}var lJI=["POST","PUT","PATCH","DELETE"],mt=new xI().onAfterResponse(async({request:A,userId:I,path:g,query:C,body:B,params:Q,set:E,responseValue:D})=>{let G=A.method;if(!lJI.includes(G))return;let Y=D;if(!I&&Y&&typeof Y==="object"&&"userId"in Y){let J=Y.userId;if(typeof J==="number")I=J}if(!I)return;let w=typeof E.status==="number"?E.status:200;S8({userId:I,apiTokenId:null,method:G,path:g,data:{...C,...B,...Q},statusCode:w,ip:_t(A),userAgent:pt(A)}).catch((J)=>{console.error("Failed to log audit:",J)})}).as("scoped");import aJI from"os";var nJI=new Date,GH={version:"1.5.1-20260116",buildTime:"2026-01-16T04:32:14.513Z",commit:"2e777e45f40c8770db84779d258cab1895a89485",hostname:aJI.hostname(),startTime:nJI.toISOString(),runtimeVersion:typeof Bun<"u"?Bun.version:"unknown"};import{createHash as tJI}from"crypto";import{webcrypto as ut}from"crypto";var dt="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var sJI=128,xM,wH;function rJI(A){if(!xM||xM.length<A)xM=Buffer.allocUnsafe(A*sJI),ut.getRandomValues(xM),wH=0;else if(wH+A>xM.length)ut.getRandomValues(xM),wH=0;wH+=A}function sw(A=21){rJI(A|=0);let I="";for(let g=wH-A;g<wH;g++)I+=dt[xM[g]&63];return I}function lt(){return`pushy_${sw(48)}`}function J9(A){return tJI("sha256").update(A).digest("hex")}async function at(A){let I=J9(A),g=await BI.api_tokens.findUnique({where:{tokenHash:I}});if(!g)return null;if(g.revokedAt)return null;if(g.expiresAt&&g.expiresAt<new Date)return null;let C=new Date;return await BI.api_tokens.update({where:{id:g.id},data:{lastUsedAt:C}}),{id:g.id,userId:g.userId,name:g.name,permissions:g.permissions,expiresAt:g.expiresAt,lastUsedAt:C,createdAt:g.createdAt}}function nt(A,I){let{permissions:g}=A;if(I==="DELETE")return g.delete===!0;if(["GET","HEAD","OPTIONS"].includes(I))return g.read===!0;if(["POST","PUT","PATCH"].includes(I))return g.write===!0;return!1}async function st(A){try{return await BI.api_tokens.update({where:{id:A},data:{revokedAt:new Date}}),!0}catch{return!1}}var tIA=cg(rIA(),1),XqI=new tIA.default(process.env.REDIS_URL),Pg=XqI;var RH=cg(vM(),1),JS="https://pushy-admin.reactnative.cn/#",eIA="https://update.react-native.cn/api",MS=86400,Wqg=604800,AgA=20000,IE={appCheckUpdate:(A=RH.default())=>`count_appCheckUpdate_${A.format("YYYYMMDD")}`,userCheckUpdateQuota:(A=RH.default())=>`quota_userCheckUpdate_${A.format("YYYYMMDD")}`,uvCheckUpdate:(A,I=RH.default())=>`count_uvCheckUpdate_${I.format("YYYYMMDD")}_${A}`,hourlyAppCheckUpdate:(A=RH.default())=>`hourly_appCheckUpdate_${A.format("YYYYMMDDHH")}`,hourlyUvCheckUpdate:(A,I=RH.default())=>`hourly_uvCheckUpdate_${I.format("YYYYMMDDHH")}_${A}`,dynamicConfig:()=>"config_dynamic"},SH={ios:"Ipa",android:"Apk",harmony:"App"};var jqI=20000,IgA={},ggA=0;function CgA(){if(Date.now()-ggA>jqI)Pg.hgetall(IE.dynamicConfig()).then((I)=>{if(I)IgA={...I},ggA=Date.now()});return IgA}async function vQ({email:A,userId:I}){if(!A&&!I)return null;let g=`user_${A||I}`;return await _M({cacheKey:g,handler:()=>BI.users.findUnique({where:A?{email:A}:{id:I},select:{id:!0,name:!0,email:!0,tier:!0,tierExpiresAt:!0,salt:!0,secret:!0,status:!0,quota:!0}})})}async function KJ({appKey:A,appId:I}){if(!A&&!I)return null;let g=`app_${A||I}`;return await _M({cacheKey:g,handler:()=>BI.apps.findUnique({where:A?{appKey:A}:{id:I},select:{id:!0,name:!0,appKey:!0,downloadUrl:!0,status:!0,ignoreBuildTime:!0,platform:!0,userId:!0}})})}var $8=({appKey:A,appId:I})=>{let g=`app_${A||I}`;return Pg.del(g)};async function b8({userId:A}){let I=`apps_${A}`;return await _M({cacheKey:I,handler:()=>BI.apps.findMany({where:{userId:A},select:{id:!0,name:!0,platform:!0,status:!0,appKey:!0}})})}var NS=({userId:A})=>{let I=`apps_${A}`;return Pg.del(I)};async function _M({cacheKey:A,handler:I,expire:g=AgA}){let C=await Pg.get(A),B=Date.now(),Q=!0;if(typeof C==="string"){let E=JSON.parse(C),{_ed:D,_ing:G}=E,Y=g*0.5;if(D){if(D<B-g)Q=!1;else if(D<B-Y&&(!G||G<B-3000))Pg.set(A,JSON.stringify({data:E,_ing:B})),I().then((w)=>{let J=JSON.stringify({data:w,_ed:B});Pg.set(A,J,"EX",MS)}).catch((w)=>{let J=JSON.stringify({_err:w.message,_ed:B});Pg.set(A,J,"EX",MS)})}else Q=!1;if(Q){if(E._err)throw Error(E._err);if("data"in E)return E.data}}try{let E=await I(),D=JSON.stringify({data:E,_ed:B});return Pg.set(A,D,"EX",MS),E}catch(E){let D=JSON.stringify({_err:E.message,_ed:B});throw Pg.set(A,D,"EX",MS),E}}var BgA=["sunnylqm@qq.com"];var hH=(A)=>BgA.includes(A);var $5=cg(PQA(),1),b5=process.env.SECRET||"secret";if(b5==="secret")console.warn("Should have secret configured on production mode.");function XS(A){return $5.default.sign(A,b5)}function TLI(A){let I=null;try{I=$5.default.verify(A,b5)}catch{}return I}function uM(A,I){let g=TLI(A);if(!g||g.exp<Date.now())return;if(I&&g.type!==I)return;return g}var xLI=2592000000;function c5(A){return XS({type:"user",uid:A,exp:Date.now()+xLI})}var MJ=new xI().derive({as:"scoped"},({headers:A,status:I})=>{let g=A["x-accesstoken"],C=g&&uM(g,"user");if(!C)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});return{userId:C.uid}}),lM=new xI().derive({as:"scoped"},async({headers:A,request:I,status:g})=>{let C=A["x-api-token"];if(C){let E=await at(C);if(!E)return g(401,{message:"\u65E0\u6548\u6216\u5DF2\u8FC7\u671F\u7684 API token"});let D=I.method;if(!nt(E,D))return g(403,{message:"API token \u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u8D44\u6E90"});return{userId:E.userId,apiTokenInfo:E,authType:"api_token"}}let B=A["x-accesstoken"],Q=B&&uM(B,"user");if(!Q)return g(401,{message:"\u8BF7\u5148\u767B\u5F55\u6216\u63D0\u4F9B\u6709\u6548\u7684 API token"});return{userId:Q.uid,authType:"user_token"}}),WH=new xI().use(lM).derive({as:"scoped"},async({userId:A,params:{appId:I},status:g})=>{let C=Number(I),B=await KJ({appId:C});if(!B||B.userId!==A)return g(403,{message:"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u5E94\u7528"});return{userId:A,appId:C,app:B}}),TQA=new xI().derive({as:"scoped"},async({headers:A,status:I})=>{let g=A["x-accesstoken"],C=g&&uM(g,"user");if(!C)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});let B=await vQ({userId:C.uid});if(!B||!hH(B.email))return I(403,{message:"no access"});return{user:B}});var $LI=p.Object({key:p.String(),value:p.String()}),bLI=p.Object({tier:p.Optional(p.String()),tierExpiresAt:p.Optional(p.Union([p.String(),p.Null()])),status:p.Optional(p.Union([p.Literal("normal"),p.Literal("unverified")])),quota:p.Optional(p.Union([p.Any(),p.Null()]))}),cLI=p.Object({name:p.Optional(p.String()),platform:p.Optional(p.Union([p.Literal("ios"),p.Literal("android"),p.Literal("harmony")])),userId:p.Optional(p.Union([p.Numeric(),p.Null()])),downloadUrl:p.Optional(p.Union([p.String(),p.Null()])),status:p.Optional(p.Union([p.String(),p.Null()])),ignoreBuildTime:p.Optional(p.Union([p.Literal("enabled"),p.Literal("disabled"),p.Null()]))}),oLI=p.Object({name:p.Optional(p.String()),description:p.Optional(p.Union([p.String(),p.Null()])),metaInfo:p.Optional(p.Union([p.String(),p.Null()]))}),xQA=new xI({prefix:"/admin"}).use(TQA).get("/config/:key?",async({params:A,status:I})=>{let{key:g}=A;if(g){let B=await Pg.hget(IE.dynamicConfig(),g);if(B===null)return I(404,{message:"config not found"});return{key:g,value:B}}return{data:await Pg.hgetall(IE.dynamicConfig())}},{detail:{hide:!0}}).post("/config",async({body:A})=>{let{key:I,value:g}=A;return await Pg.hset(IE.dynamicConfig(),I,g),{key:I,value:g}},{body:$LI,detail:{hide:!0}}).delete("/config/:key",async({params:{key:A},status:I})=>{if(!await Pg.hexists(IE.dynamicConfig(),A))return I(404,{message:"config not found"});return await Pg.hdel(IE.dynamicConfig(),A),{key:A,deleted:!0}},{detail:{hide:!0}}).get("/users",async({query:A})=>{let{search:I}=A,g=I?{OR:[{name:{contains:I}},{email:{contains:I}}]}:{};return{data:await BI.users.findMany({where:g,select:{id:!0,email:!0,name:!0,status:!0,tier:!0,tierExpiresAt:!0,quota:!0,createdAt:!0},orderBy:{id:"desc"},take:50})}},{query:p.Object({search:p.Optional(p.String())}),detail:{hide:!0}}).put("/users/:id",async({params:{id:A},body:I,status:g})=>{let C=Number(A);if(!await BI.users.findUnique({where:{id:C}}))return g(404,{message:"User not found"});let Q={};if(I.tier!==void 0)Q.tier=I.tier;if(I.status!==void 0)Q.status=I.status;if(I.tierExpiresAt!==void 0)Q.tierExpiresAt=I.tierExpiresAt?new Date(I.tierExpiresAt):null;if(I.quota!==void 0)Q.quota=I.quota;return await BI.users.update({where:{id:C},data:Q,select:{id:!0,email:!0,name:!0,status:!0,tier:!0,tierExpiresAt:!0,quota:!0}})},{body:bLI,detail:{hide:!0}}).get("/apps",async({query:A})=>{let{search:I}=A,g={};if(I){let B=Number(I),Q=[{appKey:{contains:I}},{name:{contains:I}}];if(!Number.isNaN(B)&&Number.isInteger(B))Q.push({id:B});g.OR=Q}return{data:await BI.apps.findMany({where:g,select:{id:!0,userId:!0,platform:!0,name:!0,appKey:!0,appSecret:!0,downloadUrl:!0,status:!0,ignoreBuildTime:!0,createdAt:!0,updatedAt:!0},orderBy:{id:"desc"},take:50})}},{query:p.Object({search:p.Optional(p.String())}),detail:{hide:!0}}).put("/apps/:id",async({params:{id:A},body:I,status:g})=>{let C=Number(A),B=await BI.apps.findUnique({where:{id:C}});if(!B)return g(404,{message:"App not found"});let Q={};if(I.name!==void 0)Q.name=I.name;if(I.platform!==void 0)Q.platform=I.platform;if(I.userId!==void 0)Q.userId=I.userId?Number(I.userId):null;if(I.downloadUrl!==void 0)Q.downloadUrl=I.downloadUrl;if(I.status!==void 0)Q.status=I.status;if(I.ignoreBuildTime!==void 0)Q.ignoreBuildTime=I.ignoreBuildTime;let E=await BI.apps.update({where:{id:C},data:Q,select:{id:!0,userId:!0,platform:!0,name:!0,appKey:!0,appSecret:!0,downloadUrl:!0,status:!0,ignoreBuildTime:!0,createdAt:!0,updatedAt:!0}}),D=[$8({appId:C})];if(E.userId)D.push(NS({userId:E.userId}));if(B.userId&&B.userId!==E.userId)D.push(NS({userId:B.userId}));return await Promise.all(D),E},{body:cLI,detail:{hide:!0}}).get("/versions",async({query:A})=>{let{search:I}=A,g={};if(I){let B=Number(I),Q=[{hash:{contains:I}},{name:{contains:I}}];if(!Number.isNaN(B)&&Number.isInteger(B))Q.push({appId:{contains:B}});g.OR=Q}return{data:await BI.versions.findMany({where:g,select:{id:!0,appId:!0,hash:!0,name:!0,description:!0,metaInfo:!0,config:!0,deps:!0,commit:!0,createdAt:!0},orderBy:{id:"desc"},take:50})}},{query:p.Object({search:p.Optional(p.String())}),detail:{hide:!0}}).put("/versions/:id",async({params:{id:A},body:I,status:g})=>{let C=Number(A);if(!await BI.versions.findUnique({where:{id:C}}))return g(404,{message:"Version not found"});let Q={};if(I.name!==void 0)Q.name=I.name;if(I.description!==void 0)Q.description=I.description;if(I.metaInfo!==void 0)Q.metaInfo=I.metaInfo;return await BI.versions.update({where:{id:C},data:Q,select:{id:!0,appId:!0,hash:!0,name:!0,description:!0,metaInfo:!0,deps:!0,commit:!0,createdAt:!0}})},{body:oLI,detail:{hide:!0}});var fLI=p.Object({name:p.String({minLength:1,maxLength:100}),permissions:p.Object({read:p.Optional(p.Boolean()),write:p.Optional(p.Boolean()),delete:p.Optional(p.Boolean())}),expiresAt:p.Optional(p.String({format:"date-time"}))}),vLI=p.Object({tokenId:p.Numeric()}),$QA=new xI({prefix:"/api-token"}).use(MJ).post("/create",async({userId:A,status:I,body:{name:g,permissions:C,expiresAt:B}})=>{if(await BI.api_tokens.count({where:{userId:A,revokedAt:null}})>=10)return I(400,{message:"\u6BCF\u4E2A\u7528\u6237\u6700\u591A\u53EA\u80FD\u521B\u5EFA 10 \u4E2A token\uFF0C\u8BF7\u5148\u64A4\u9500\u4E00\u4E9B\u4E0D\u9700\u8981\u7684 token"});if(!C.read&&!C.write&&!C.delete)return I(400,{message:"\u81F3\u5C11\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u6743\u9650\uFF08read\u3001write \u6216 delete\uFF09"});let E=lt(),D=J9(E),G=E.slice(-4),Y=null;if(B){if(Y=new Date(B),Number.isNaN(Y.getTime()))return I(400,{message:"\u65E0\u6548\u7684\u8FC7\u671F\u65F6\u95F4\u683C\u5F0F\uFF0C\u8BF7\u4F7F\u7528 ISO 8601 \u683C\u5F0F"});if(Y<new Date)return I(400,{message:"\u8FC7\u671F\u65F6\u95F4\u5FC5\u987B\u662F\u672A\u6765\u7684\u65F6\u95F4"})}let w=await BI.api_tokens.create({data:{userId:A,name:g,tokenHash:D,tokenSuffix:G,permissions:JSON.parse(JSON.stringify(C)),expiresAt:Y}});return{id:w.id,name:w.name,token:E,permissions:w.permissions,expiresAt:w.expiresAt,createdAt:w.createdAt}},{body:fLI,detail:{hide:!0}}).get("/list",async({userId:A})=>{return{data:(await BI.api_tokens.findMany({where:{userId:A},select:{id:!0,name:!0,permissions:!0,expiresAt:!0,revokedAt:!0,lastUsedAt:!0,createdAt:!0,updatedAt:!0},orderBy:{createdAt:"desc"}})).map((g)=>({...g,isExpired:g.expiresAt?g.expiresAt<new Date:!1,isRevoked:!!g.revokedAt}))}},{detail:{hide:!0}}).delete("/:tokenId",async({userId:A,status:I,params:{tokenId:g}})=>{let C=await BI.api_tokens.findUnique({where:{id:g}});if(!C)return I(404,{message:"API token \u4E0D\u5B58\u5728"});if(C.userId!==A)return I(403,{message:"\u60A8\u6CA1\u6709\u6743\u9650\u64A4\u9500\u6B64 token"});if(C.revokedAt)return I(400,{message:"Token \u5DF2\u88AB\u64A4\u9500"});if(!await st(g))return I(500,{message:"\u64A4\u9500 token \u5931\u8D25"});return{message:"Token \u64A4\u9500\u6210\u529F"}},{params:vLI,detail:{hide:!0}});var bQA=p.Object({offset:p.Optional(p.Numeric()),limit:p.Optional(p.Numeric())}),o5;((g)=>{g.normal="normal";g.paused="paused"})(o5||={});var cQA=p.Object({offset:p.Optional(p.Numeric()),limit:p.Optional(p.Numeric()),status:p.Optional(p.Enum(o5))}),oQA=p.Object({appId:p.Numeric(),versionId:p.Optional(p.Numeric()),packageId:p.Optional(p.Numeric()),bindingId:p.Optional(p.Numeric())}),fQA=p.Object({bindingId:p.Numeric()}),vQA=p.Object({versionId:p.Numeric()}),_QA=p.Object({packageId:p.Numeric()}),SRg=p.Object({appId:p.Numeric(),versionId:p.Numeric()}),hRg=p.Object({appId:p.Numeric(),packageId:p.Numeric()}),pQA=p.Object({ext:p.String()}),mQA=p.Object({name:p.String(),platform:p.Union([p.Literal("ios"),p.Literal("android"),p.Literal("harmony")])}),dQA=p.Partial(p.Object({name:p.String(),downloadUrl:p.Nullable(p.String()),status:p.Nullable(p.Enum(o5)),ignoreBuildTime:p.Nullable(p.Union([p.Literal("enabled"),p.Literal("disabled")]))})),uQA=p.Object({hash:p.String(),name:p.String(),description:p.Optional(p.String()),metaInfo:p.Optional(p.String()),config:p.Optional(p.Object({rollout:p.Record(p.String(),p.Nullable(p.Number()))})),deps:p.Optional(p.Record(p.String(),p.String())),commit:p.Optional(p.Partial(p.Object({hash:p.String(),message:p.String(),author:p.String(),timestamp:p.String(),origin:p.String()})))}),lQA=p.Partial(p.Object({name:p.String(),description:p.String(),metaInfo:p.String(),config:p.Object({rollout:p.Record(p.String(),p.Nullable(p.Number()))})})),aQA=p.Object({hash:p.String(),name:p.String(),buildTime:p.String(),buildNumber:p.Optional(p.String()),note:p.Optional(p.String()),deps:p.Optional(p.Record(p.String(),p.String())),commit:p.Optional(p.Partial(p.Object({hash:p.String(),message:p.String(),author:p.String(),timestamp:p.String(),origin:p.String()})))}),nQA=p.Partial(p.Object({name:p.String(),note:p.Nullable(p.String()),status:p.String(),versionId:p.Nullable(p.Numeric())})),LRg=p.Union([p.Literal("full"),p.Literal("exp")]),sQA=p.Object({packageId:p.Numeric(),versionId:p.Numeric(),rollout:p.Optional(p.Nullable(p.Integer())),config:p.Optional(p.Record(p.String(),p.Any()))}),iRg=p.Object({packageId:p.Numeric()}),yRg=p.Object({email:p.String({format:"email"}),pwd:p.String()}),FRg=p.Object({token:p.String()}),ZRg=p.Object({email:p.String({format:"email"})}),WRg=p.Object({email:p.String({format:"email"}),pwd:p.String(),name:p.String()}),URg=p.Object({token:p.String(),newPwd:p.String()}),XRg=p.Object({orderNo:p.String()}),rQA=p.Object({fileName:p.String()}),tQA=p.Object({out_trade_no:p.String(),trade_no:p.String(),trade_status:p.String(),buyer_id:p.String(),gmt_payment:p.String()},{additionalProperties:!0}),eQA=p.Object({tier:p.String(),channel:p.Optional(p.String()),remark:p.Optional(p.String()),ret_url:p.Optional(p.String())}),AEA=p.Object({appKey:p.String()}),IEA=p.Object({packageVersion:p.String(),hash:p.Optional(p.Nullable(p.String())),toHash:p.Optional(p.String()),buildTime:p.Optional(p.String()),buildNumber:p.Optional(p.String()),cInfo:p.Optional(p.Partial(p.Object({rnu:p.String(),pushy:p.String(),rn:p.String(),os:p.String(),uuid:p.String()})))}),gEA=p.Object({token:p.String()}),f5=p.Object({email:p.String({format:"email"})}),CEA=p.Object({email:p.String({format:"email"}),pwd:p.String(),name:p.String()}),BEA=p.Object({token:p.String(),newPwd:p.String()}),jRg=p.Object({email:p.String({format:"email"})}),QEA=p.Object({email:p.String({format:"email"}),pwd:p.String()}),EEA=p.Object({offset:p.Optional(p.Numeric()),limit:p.Optional(p.Numeric()),type:p.Optional(p.Union([p.Literal("diffFromIpa"),p.Literal("diffFromApk"),p.Literal("diffFromApp"),p.Literal("diff"),p.Literal("hdiffFromIpa"),p.Literal("hdiffFromApk"),p.Literal("hdiff"),p.Literal("hdiffFromApp")])),fromHash:p.Optional(p.String()),toHash:p.Optional(p.String())});function DEA(A){if(A===null)return!1;return typeof A==="object"&&A instanceof Date===!1}function v5(A){if(A===null)return!0;if(A===void 0)return!0;if(A==="")return!0;if(A instanceof Date)return!1;if(typeof A==="boolean")return!1;if(typeof A==="number")return!1;if(Array.isArray(A)&&!A.length)return!0;if(DEA(A)&&!Object.keys(A).length)return!0;return!1}function _5(A){if(!DEA(A)&&!v5(A))return A;if(Array.isArray(A)){let g=0;return A.reduce((C,B)=>{if(!v5(B))C[g]=_5(B),g++;return C},[])}let I=Object.keys(A);if(I.length)return I.reduce((g,C)=>{if(!v5(A[C]))g[C]=_5(A[C]);return g},{})}var UH=_5;var My=cg(vM(),1);var Jy={free:{app:3,package:30,packageSize:"30m",bundle:30,bundleSize:"3m",pv:1000},standard:{app:5,package:50,packageSize:"150m",bundle:50,bundleSize:"15m",pv:1e4},premium:{app:10,package:60,packageSize:"500m",bundle:60,bundleSize:"50m",pv:1e5},pro:{app:50,package:100,packageSize:"2000m",bundle:100,bundleSize:"200m",pv:1e6},vip1:{app:50,package:100,packageSize:"2000m",bundle:100,bundleSize:"200m",pv:1e7},vip2:{app:50,package:100,packageSize:"2000m",bundle:100,bundleSize:"200m",pv:50000000},vip3:{app:50,package:100,packageSize:"2000m",bundle:100,bundleSize:"200m",pv:1e8}},jS={free:{price:0,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u514D\u8D39\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u514D\u8D39\u7248"},standard:{price:800,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u6807\u51C6\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u6807\u51C6\u7248\u4E00\u5E74\u671F\u670D\u52A1"},premium:{price:2400,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u9AD8\u7EA7\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u9AD8\u7EA7\u7248\u4E00\u5E74\u671F\u670D\u52A1"},pro:{price:7200,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u4E13\u4E1A\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u4E13\u4E1A\u7248\u4E00\u5E74\u671F\u670D\u52A1"},vip1:{price:30000,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP1",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP1 \u4E00\u5E74\u671F\u670D\u52A1"},vip2:{price:60000,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP2",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP2 \u4E00\u5E74\u671F\u670D\u52A1"},vip3:{price:120000,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP3",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP3 \u4E00\u5E74\u671F\u670D\u52A1"},custom:{price:0,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5B9A\u5236\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5B9A\u5236\u7248\u4E00\u5E74\u671F\u670D\u52A1"}};async function QG({user:A,userId:I}){let g=My.default(),C=A||await vQ({userId:I});if(!C)throw Error("User not found");if(C.tierExpiresAt){let B=My.default(C.tierExpiresAt);if(g.isAfter(B,"day"))C=await BI.users.update({data:{tier:"free",tierExpiresAt:null},where:{id:I}})}if(C.tier==="custom"||C.quota){let B=C.quota;if(B.base&&Jy[B.base])B={...Jy[B.base],...B};return B}return Jy[C.tier]}async function GEA({user:A}){let I=await QG({user:A}),g=A.id,C=await b8({userId:g}),Q=(await m5(C.map((D)=>D.appKey))).reduce((D,G)=>D+Number(G),0),E=I.pv;await Pg.zadd(IE.userCheckUpdateQuota(),E-Q,String(g))}async function wEA({user:A}){let I=await p5({user:A,days:7});return{counts:I,avg:Math.floor(I?.reduce((g,C)=>g+C,0)/7)}}async function p5({user:A,day:I,days:g}){let C=(await QG({user:A})).pv,B=A.id;if(g){let E=My.default(),D=Pg.pipeline();for(let Y=0;Y<g;Y++){let w=E.subtract(Y,"day");D.zscore(IE.userCheckUpdateQuota(w),String(B))}return(await D.exec())?.map(([Y,w])=>{if(w)return Number(w);return C})}let Q=await Pg.zscore(IE.userCheckUpdateQuota(I),String(B));if(Q)return Number(Q);return C}async function m5(A){if(A.length===0)return[];return await Pg.zmscore(IE.appCheckUpdate(),A)}var OS=cg(dM(),1),_LI=[8673,8672,14849],XH=new xI().derive({as:"scoped"},async({body:A,params:{appId:I},status:g})=>{let C=A?.deps;if(!C)return;if(_LI.includes(Number(I)))return;for(let[B,Q]of Object.entries(C))if(B==="react-native-update"){if(OS.default(Q,"<8"))return g(400,{message:`react-native-update \u5F53\u524D\u7248\u672C(${Q})\u5DF2\u4E0D\u518D\u652F\u6301\uFF0C\u8BF7\u6267\u884C "npm i react-native-update@8" \u66F4\u65B0\u5230 v8 \u7248\u672C\u540E\u91CD\u65B0\u6253\u5305 `});if(OS.default(Q,"8.0.0 - 8.5.5"))return g(400,{message:`react-native-update \u5F53\u524D\u7248\u672C(${Q})\u5DF2\u4E0D\u518D\u652F\u6301\uFF0C\u8BF7\u6267\u884C "npm i react-native-update@8" \u66F4\u65B0\u540E\u91CD\u65B0\u6253\u5305 `});if(OS.default(Q,"9.0.0 - 9.2.4"))return g(400,{message:`react-native-update \u5F53\u524D\u7248\u672C(${Q})\u5DF2\u4E0D\u518D\u652F\u6301\uFF0C\u8BF7\u6267\u884C "npm i react-native-update@9" \u66F4\u65B0\u540E\u91CD\u65B0\u6253\u5305 `});if(OS.default(Q,"10.0.0 - 10.26.4"))return g(400,{message:`react-native-update \u5F53\u524D\u7248\u672C(${Q})\u5DF2\u4E0D\u518D\u652F\u6301\uFF0C\u8BF7\u6267\u884C "npm i react-native-update@10" \u66F4\u65B0\u540E\u91CD\u65B0\u6253\u5305 `})}});var Ny=({types:A,fromHash:I,toHash:g,platform:C})=>{if(C)A=C==="harmony"?["hdiffFromApp"]:[`diffFrom${SH[C]}`,`hdiffFrom${SH[C]}`];if(!A)return;BI.tasks.createMany({data:A.map((B)=>({type:B,fromHash:I,toHash:g}))}).catch(()=>{})},YEA=({app:A,toHash:I})=>{BI.packages.findMany({where:{appId:A.id,status:"normal"},orderBy:{createdAt:"desc"},select:{hash:!0},skip:0,take:5}).then((g)=>{let C=g.map((B)=>({type:`hdiffFrom${SH[A.platform]}`,fromHash:B.hash,toHash:I}));BI.tasks.createMany({data:C}).catch(()=>{})})};var KEA=new xI({prefix:"/binding"}).use(WH).use(XH).get("/",async({query:{packageId:A},appId:I})=>{let g=Number(A);return{data:await BI.bindings.findMany({where:g?{packageId:g,appId:I}:{appId:I},select:{id:!0,versionId:!0,packageId:!0,rollout:!0}})}}).post("/",async({appId:A,app:I,status:g,body:C})=>{let{versionId:B,rollout:Q,config:E,packageId:D}=C,G=await BI.packages.findUnique({where:{id:D,appId:A},select:{id:!0,hash:!0,name:!0,buildTime:!0}});if(!G)return g(403,{message:"\u539F\u751F\u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u5E94\u7528"});let Y=await BI.versions.findUnique({where:{id:B,appId:A},select:{id:!0,hash:!0,config:!0}});if(!Y)return g(403,{message:"\u70ED\u66F4\u65B0\u7248\u672C\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u5E94\u7528"});let w="full";if(Q!==null&&Q!==void 0&&Q<100)w="exp";try{let J=await BI.$transaction(async(M)=>{if(await M.bindings.deleteMany({where:{OR:[{packageId:D,type:w},{packageId:D,versionId:B}]}}),await M.packages.update({where:{id:D},data:{versionId:null}}),Y.config?.rollout?.[D])delete Y.config.rollout[D];return await M.versions.update({where:{id:B},data:{config:Y.config}}),M.bindings.create({data:{appId:A,packageId:D,versionId:B,type:w,rollout:Q,config:E}})});return Ny({platform:I.platform,fromHash:G.hash,toHash:Y.hash}),{data:J}}catch(J){return console.error(J),g(403,{message:"\u521B\u5EFA\u6216\u66F4\u65B0\u7ED1\u5B9A\u5931\u8D25\uFF0C\u6700\u591A\u53EA\u80FD\u540C\u65F6\u7ED1\u5B9A\u4E00\u4E2A\u5168\u91CF\u548C\u4E00\u4E2A\u7070\u5EA6\u7248\u672C"})}},{body:sQA}).guard({params:fQA}).delete("/:bindingId",async({params:{bindingId:A},appId:I,status:g})=>{try{return await BI.bindings.delete({where:{id:A,appId:I}}),{}}catch(C){return console.error(C),g(403,{message:"\u5220\u9664\u7ED1\u5B9A\u5931\u8D25"})}});var NyA=cg(YyA(),1),qP=cg(JyA(),1);var xE={region:process.env.OSS_REGION,accessKey:process.env.OSS_ACCESSKEY,secretKey:process.env.OSS_SECRETKEY,maxSize:"500m",bucket:process.env.OSS_BUCKET,cdnUrl:"https://dl.charmlot.com",backupCdnUrls:["https://dl.rnpushy.cn","https://pushy.cdn.dfyun.com.cn"]};function MyA(A,I=1){if(A.length===0)return[];if(I>=A.length)return[...A].sort(()=>Math.random()-0.5);if(I<=0)return[];let g=Array.from({length:A.length},(B,Q)=>Q),C=[];for(let B=0;B<I;B++){let Q=Math.floor(Math.random()*g.length),E=g[Q];C.push(A[E]),g.splice(Q,1)}return C}var RP=process.env.ENV==="aliyun",xF=new NyA.default({region:xE.region,accessKeyId:xE.accessKey,accessKeySecret:xE.secretKey,bucket:xE.bucket,internal:RP}),ioI=`https://${xE.bucket}.${xE.region}.aliyuncs.com`,yoI=`https://${xE.bucket}.${xE.region}-internal.aliyuncs.com`,FoI=`https://${xE.bucket}.oss-accelerate.aliyuncs.com`,ZoI=qP.default(xE.maxSize||"20m");function kyA({internal:A,maxSize:I}){let g={expiration:new Date(Date.now()+600000).toISOString(),conditions:[{bucket:xE.bucket},["content-length-range",0,I?qP.default(I):ZoI]]},C={...xF.calculatePostSignature(g),"x-oss-forbid-overwrite":"true",key:sw(21)};return{url:A&&RP?yoI:ioI,backupUrl:FoI,formData:C,maxSize:I}}async function HyA(A){if(await Pq(A)){if(RP)return xF.signatureUrl(A);return`${xE.cdnUrl}/${A}`}throw Error(`Key ${A} not found`)}var WoI=[xE.cdnUrl,...xE.backupCdnUrls];function qyA(){let I=CgA().cdn;if(I)try{let g=JSON.parse(I);if(Array.isArray(g)&&g.length>0)return g}catch{}return WoI}var RyA=()=>{let[A,...I]=qyA();return[A,...MyA(I,2)].map((g)=>g.replace("https://",""))};function $F(A){return qyA().map((I)=>`${I}/${A}`)}async function Pq(A){try{return await xF.head(A),!0}catch{}return!1}function bF(A){return xF.delete(A)}async function SyA({appId:A,status:I,offset:g,limit:C}){let B={appId:A,status:I};if(I)B.status=I;let[Q,E]=await Promise.all([BI.packages.count({where:B}),BI.packages.findMany({where:B,orderBy:{id:"desc"},select:{id:!0,hash:!0,name:!0,status:!0,buildTime:!0,buildNumber:!0,note:!0,deps:!0,commit:!0,versions:{select:{id:!0,name:!0,hash:!0}},bindings:{select:{id:!0,type:!0,versions:{select:{id:!0,name:!0,hash:!0}}},orderBy:{createdAt:"desc"}}},skip:g,take:C})]);return{data:UH(E),count:Q}}var hyA=new xI({prefix:"/package"}).use(XH).use(WH).post("/create",async({userId:A,appId:I,status:g,body:{hash:C,name:B,buildTime:Q,note:E,deps:D,commit:G,buildNumber:Y}})=>{let w=await QG({userId:A});if(await BI.packages.count({where:{appId:I}})>=w.package)return g(403,{message:`\u6BCF\u4E2A\u5E94\u7528\u6700\u591A\u53EF\u4EE5\u53D1\u5E03${w.package}\u4E2A\u539F\u751F\u5305\u3002\u8BF7\u5148\u5220\u9664\u73B0\u6709\u7684\u539F\u751F\u5305\u6216\u5347\u7EA7\u5230\u66F4\u9AD8\u7EA7\u522B\u670D\u52A1\u3002`});try{return{id:(await BI.packages.create({data:{appId:I,hash:C,name:B,buildTime:Q,note:E,deps:D,commit:G,buildNumber:Y}})).id}}catch(M){return console.error(M),g(403,{message:"\u521B\u5EFA\u5305\u5931\u8D25\uFF08\u8BF7\u68C0\u67E5\u539F\u751F\u7248\u672C\u662F\u5426\u91CD\u590D\uFF09"})}},{body:aQA}).get("/list",async({appId:A,query:{offset:I=0,limit:g=10,status:C}})=>{return[26383].includes(A)?await _M({cacheKey:`packageList_${A}_${I}_${g}_${C}`,handler:()=>SyA({appId:A,offset:I,limit:g,status:C})}):SyA({appId:A,offset:I,limit:g,status:C})},{query:cQA}).guard({params:_QA}).delete("/:packageId",async({params:{packageId:A},appId:I})=>{let g=await BI.packages.findUnique({where:{appId:I,id:A}});if(g){let{hash:C}=g;await BI.packages.delete({where:{appId:I,id:A}}),bF(C)}return{}}).put("/:packageId",async({params:{packageId:A},appId:I,app:g,status:C,body:B})=>{let{versionId:Q}=B;if(Q){let E=await BI.versions.findUnique({where:{id:Q,appId:I},select:{id:!0,hash:!0,config:!0}});if(!E)return C(403,{message:"versionId \u9519\u8BEF\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u5E94\u7528"});let D=await BI.packages.findUnique({where:{id:A,appId:I},select:{hash:!0,name:!0,buildTime:!0,deps:!0,versions:{select:{hash:!0,config:!0}}}});if(!D)return C(403,{message:"packageId \u9519\u8BEF\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u5E94\u7528"});Ny({platform:g.platform,fromHash:D.hash,toHash:E.hash})}return await BI.packages.update({where:{appId:I,id:A},data:B}),{}},{body:nQA});function SP(A){if(!A||typeof A!=="object")return!1;let I=Object.getPrototypeOf(A);if(!(I===null||I===Object.prototype||Object.getPrototypeOf(I)===null))return!1;return Object.prototype.toString.call(A)==="[object Object]"}function LyA(A){return A==="__proto__"}function Tq(A,I){let g=Object.keys(I);for(let C=0;C<g.length;C++){let B=g[C];if(LyA(B))continue;let Q=I[B],E=A[B];if(iyA(Q)&&iyA(E))A[B]=Tq(E,Q);else if(Array.isArray(Q))A[B]=Tq([],Q);else if(SP(Q))A[B]=Tq({},Q);else if(E===void 0||Q!==void 0)A[B]=Q}return A}function iyA(A){return SP(A)||Array.isArray(A)}var yyA=new xI({prefix:"/version"}).use(XH).use(WH).post("/create",async({userId:A,appId:I,status:g,body:{hash:C,name:B,description:Q,metaInfo:E,config:D,deps:G,commit:Y},app:w})=>{let J=await QG({userId:A});if(await BI.versions.count({where:{appId:I}})>=J.bundle)return g(403,{message:`\u6BCF\u4E2A\u5E94\u7528\u6700\u591A\u53EF\u4EE5\u521B\u5EFA${J.bundle}\u4E2A\u70ED\u66F4\u65B0\u3002\u8BF7\u5148\u5220\u9664\u73B0\u6709\u7684\u70ED\u66F4\u65B0\u6216\u5347\u7EA7\u5230\u66F4\u9AD8\u7EA7\u522B\u670D\u52A1\u3002`});let K=await BI.versions.create({data:{appId:I,hash:C,name:B||"(untitled)",description:Q,metaInfo:E,config:D,deps:G,commit:Y}});return YEA({app:w,toHash:K.hash}),{id:K.id}},{body:uQA}).get("/list",async({appId:A,query:{offset:I=0,limit:g=10}})=>{let[C,B]=await Promise.all([BI.versions.count({where:{appId:A}}),BI.versions.findMany({where:{appId:A},orderBy:{id:"desc"},select:{id:!0,hash:!0,name:!0,description:!0,metaInfo:!0,config:!0,deps:!0,commit:!0,createdAt:!0,packages:{select:{id:!0,name:!0,status:!0}}},skip:I,take:g})]);return{data:UH(B),count:C}},{query:bQA}).guard({params:vQA}).delete("/:versionId",async({params:{versionId:A},appId:I})=>{let g=await BI.versions.findUnique({where:{appId:I,id:A}});if(g){let{hash:C}=g;await BI.versions.delete({where:{appId:I,id:A}}),bF(C)}return{}}).put("/:versionId",async({params:{versionId:A},appId:I,body:g})=>{let{name:C,description:B,metaInfo:Q,config:E}=g;if(E){let D=await BI.versions.findUnique({where:{appId:I,id:A}});if(D&&typeof D.config==="object"&&D.config!==null)E=Tq(D.config,E)}return await BI.versions.update({where:{appId:I,id:A},data:{name:C,description:B,metaInfo:Q,config:E}}),{}},{body:lQA});var FyA=new xI({prefix:"/app"}).use(lM).post("/create",async({userId:A,status:I,body:{name:g,platform:C}})=>{if(!A)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});let B=await QG({userId:A});if(await BI.apps.count({where:{userId:A}})>=B.app)return I(403,{message:`\u60A8\u76EE\u524D\u6700\u591A\u53EF\u4EE5\u521B\u5EFA${B.app}\u4E2A\u5E94\u7528\u3002\u8BF7\u5148\u5220\u9664\u5DF2\u6709\u5E94\u7528\u6216\u5347\u7EA7\u5230\u66F4\u9AD8\u7EA7\u522B\u670D\u52A1\u3002`});let E=sw(24),D=sw(24);return{id:(await BI.apps.create({data:{userId:A,name:g,platform:C,appKey:E,appSecret:D}})).id}},{body:mQA}).get("/list",async({userId:A})=>{if(!A)return{data:[]};let I=await b8({userId:A}),g=I.map((B)=>B.appKey),C=await m5(g);return{data:UH(I.map((B,Q)=>({...B,checkCount:C[Q]})))}}).group("/:appId",{params:oQA},(A)=>A.delete("/",async({userId:I,status:g,params:{appId:C}})=>{let B=await BI.packages.count({where:{appId:C}});if(B>0)return g(403,{message:`\u8BF7\u5148\u6E05\u7A7A\u6B64\u5E94\u7528\u4E0B\u7684\u6240\u6709\u539F\u751F\u5305(\u73B0\u6709${B}\u4E2A)`});let Q=await BI.versions.count({where:{appId:C}});if(Q>0)return g(403,{message:`\u8BF7\u5148\u6E05\u7A7A\u6B64\u5E94\u7528\u4E0B\u7684\u6240\u6709\u70ED\u66F4\u5305(\u73B0\u6709${Q}\u4E2A)`});if(!await BI.apps.delete({where:{userId:I,id:C}}))return g(404);return{}}).get("/",async({userId:I,status:g,params:{appId:C}})=>{let B=await KJ({appId:C});if(!B||B?.userId!==I)return g(404);return B}).put("/",async({userId:I,status:g,params:{appId:C},body:B})=>{if(B.ignoreBuildTime==="enabled"){let E=await vQ({userId:I});if(!E)return g(404);if(E.tier==="free"||E.tier==="standard")return g(403,{message:"\u6B64\u529F\u80FD\u9700\u8981\u9AD8\u7EA7\u7248\u4EE5\u4E0A"})}if(!await BI.apps.update({where:{userId:I,id:C},data:B}))return g(404);return await Promise.all([$8({appId:C}),NS({userId:I})]),{}},{body:dQA}).use(yyA).use(hyA).use(KEA));var UoI=p.Object({offset:p.Optional(p.Numeric()),limit:p.Optional(p.Numeric()),userId:p.Optional(p.Numeric()),method:p.Optional(p.String()),path:p.Optional(p.String()),startDate:p.Optional(p.String({format:"date-time"})),endDate:p.Optional(p.String({format:"date-time"}))}),XoI=["sunnylqm@qq.com","sunnylqm@gmail.com"],ZyA=new xI({prefix:"/audit"}).use(MJ).get("/logs",async({userId:A,status:I,query:{offset:g=0,limit:C=50,userId:B,method:Q,path:E,startDate:D,endDate:G}})=>{let Y=await vQ({userId:A});if(!Y)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});let w=XoI.includes(Y.email),J;if(!w){if(B&&B!==A)return I(403,{message:"\u65E0\u6743\u67E5\u770B\u5176\u4ED6\u7528\u6237\u7684\u5BA1\u8BA1\u65E5\u5FD7"});J=A}else J=B??A;let M={};if(J)M.userId=J;if(Q)M.method=Q;if(E)M.path=E;if(D||G){if(M.createdAt={},D)M.createdAt.gte=new Date(D);if(G)M.createdAt.lte=new Date(G)}let[K,N]=await Promise.all([BI.audit_logs.findMany({where:M,orderBy:{createdAt:"desc"},skip:Number(g),take:Number(C),select:{id:!0,userId:!0,method:!0,path:!0,data:!0,statusCode:!0,ip:!0,userAgent:!0,createdAt:!0,apiTokens:{select:{tokenSuffix:!0}}}}),BI.audit_logs.count({where:M})]);return{data:K,total:N,offset:Number(g),limit:Number(C)}},{query:UoI});var XyA=cg(vM(),1);var joI=300000,OoI=3600000,xq="\x1F",VoI=p.Object({start:p.String({format:"date-time"}),end:p.String({format:"date-time"}),mode:p.Optional(p.Union([p.Literal("pv"),p.Literal("uv")])),dataKey:p.Optional(p.String()),dataValue:p.Optional(p.String())}),zoI=p.Object({appKey:p.String(),start:p.String({format:"date-time"}),end:p.String({format:"date-time"}),dataKey:p.Optional(p.String()),dataValue:p.Optional(p.String()),mode:p.Optional(p.Union([p.Literal("pv"),p.Literal("uv")]))});function PoI(A){return XyA.default(A).format("YYYYMMDDHHmm")}function cF(A,I){return`${A}${xq}${I}`}function WyA(A){let I=Number(A.slice(0,4)),g=Number(A.slice(4,6)),C=Number(A.slice(6,8)),B=Number(A.slice(8,10)),Q=Number(A.slice(10,12));if(!Number.isFinite(I)||!Number.isFinite(g)||!Number.isFinite(C)||!Number.isFinite(B)||!Number.isFinite(Q))return null;return new Date(I,g-1,C,B,Q)}function UyA(A,I,g){let C=Math.floor(A.getTime()/g)*g,B=Math.floor(I.getTime()/g)*g,Q=[];for(let E=C;E<=B;E+=g)Q.push(PoI(new Date(E)));return Q}function oF(A,I,g){let C=g.get(A);if(C!==void 0)return C;let B=I.length;return I.push(A),g.set(A,B),B}var jyA=new xI({prefix:"/metrics"}).get("/global",async({query:A,status:I})=>{let{start:g,end:C,mode:B="pv",dataKey:Q,dataValue:E}=A,D=new Date(g),G=new Date(C);if(Number.isNaN(D.getTime())||Number.isNaN(G.getTime()))return I(400,{message:"invalid start or end"});if(Q&&E===void 0)return I(400,{message:"dataValue is required"});let Y=UyA(D,G,OoI),w=Pg.pipeline();for(let k of Y){let q=B==="uv"?`cu:agg:uv:${k}:global`:`cu:agg:${k}:global`;if(Q){let S=cF(String(Q),String(E));w.hget(q,S)}else w.hgetall(q)}let J=await w.exec(),M=[],K=new Map,N=Y.map((k,q)=>{let S=J?.[q],H=WyA(k),F=H?H.toISOString():k;if(Q){let U=S&&!S[0]?Number(S[1]??0):0,P=cF(String(Q),String(E));if(!Number.isFinite(U)||U===0)return{time:F,data:[]};let i=oF(P,M,K);return{time:F,data:[[i,U]]}}let y=S&&!S[0]?S[1]:null,Z=[];if(y)for(let[U,P]of Object.entries(y)){let i=Number(P);if(!Number.isFinite(i)||i===0)continue;let j=oF(U,M,K);Z.push([j,i])}return{time:F,data:Z}});if(M.length===0)return{dict:[],data:[]};return{dict:M,data:N}},{query:VoI}).use(lM).get("/app",async({query:A,status:I,userId:g})=>{let{appKey:C,start:B,end:Q,dataKey:E,dataValue:D,mode:G}=A,Y=new Date(B),w=new Date(Q);if(Number.isNaN(Y.getTime())||Number.isNaN(w.getTime()))return I(400,{message:"invalid start or end"});if(G==="uv")return I(400,{message:"uv is only supported for global metrics"});let J=await KJ({appKey:C});if(!J)return I(404,{message:"app not found"});let M=await vQ({userId:g});if(!M)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});if(!hH(M.email)&&J.userId!==g)return I(403,{message:"no access to app"});if(E&&D===void 0)return I(400,{message:"dataValue is required"});let K=UyA(Y,w,joI),N=Pg.pipeline();for(let U of K){let P=`cu:agg:${U}:app:${C}`;if(E){let i=cF(String(E),String(D));N.hget(P,i)}else N.hgetall(P)}let k=await N.exec(),q=[],S=new Map,H=K.map((U,P)=>{let i=k?.[P],j=WyA(U),X=j?j.toISOString():U;if(E){let $=i&&!i[0]?Number(i[1]??0):0,c=cF(String(E),String(D));if(!Number.isFinite($)||$===0)return{time:X,data:[]};let z=oF(c,q,S);return{time:X,data:[[z,$]]}}let W=i&&!i[0]?i[1]:null,O=[];if(W)for(let[$,c]of Object.entries(W)){let z=Number(c);if(!Number.isFinite(z)||z===0)continue;let f=oF($,q,S);O.push([f,z])}return{time:X,data:O}});if(q.length===0)return{dict:[],data:[]};let F=[];for(let U of q)if(U.startsWith(`hash${xq}`)){let P=U.slice(`hash${xq}`.length);if(P&&P!=="unknown")F.push(P)}let y=new Map;if(F.length>0){let U=await BI.versions.findMany({where:{appId:J.id,hash:{in:F}},select:{hash:!0,name:!0}});y=new Map(U.map((P)=>[P.hash,P.name]))}return{dict:q.map((U)=>{if(U.startsWith(`hash${xq}`)){let P=U.slice(`hash${xq}`.length),i=y.get(P);if(i)return`hash${xq}${i}`}return U}),data:H}},{query:zoI});var vJ=cg(vM(),1);var ovI=s4A(),fvI=$E(),vvI=RFA(),_vI=LFA(),pvI=FFA(),mvI=UFA(),dvI=OFA(),uvI=TFA(),JZg=x2(),MZg=ww(),NZg=(process.env.ETHEREAL_API||"https://api.nodemailer.com").replace(/\/+$/,""),kZg=(process.env.ETHEREAL_WEB||"https://ethereal.email").replace(/\/+$/,""),HZg=(process.env.ETHEREAL_API_KEY||"").replace(/\s*/g,"")||null,qZg=["true","yes","y","1"].includes((process.env.ETHEREAL_CACHE||"yes").toString().trim().toLowerCase());var vP=function(A,I){let g,C,B;if(typeof A==="object"&&typeof A.send!=="function"||typeof A==="string"&&/^(smtps?|direct):/i.test(A)){if(g=typeof A==="string"?A:A.url)C=fvI.parseConnectionUrl(g);else C=A;if(C.pool)A=new vvI(C);else if(C.sendmail)A=new pvI(C);else if(C.streamTransport)A=new mvI(C);else if(C.jsonTransport)A=new dvI(C);else if(C.SES){if(C.SES.ses&&C.SES.aws){let Q=Error("Using legacy SES configuration, expecting @aws-sdk/client-sesv2, see https://nodemailer.com/transports/ses/");throw Q.code="LegacyConfig",Q}A=new uvI(C)}else A=new _vI(C)}return B=new ovI(A,C,I),B};var _P={pool:!0,host:process.env.SMTP_HOST,secure:!0,rateLimit:10,auth:{user:process.env.SMTP_USER,pass:process.env.SMTP_PASS},from:process.env.SMTP_FROM};var avI=vP(_P);async function v2(A){return avI.sendMail({...A,from:_P.from}).catch((I)=>console.error(I))}class _2{#A;#I=0;#g=new Map;#C=new Map;constructor(A){this.#A=A}get cache(){return this.#g}get _cache(){return this.#C}get(A,I){let g=this.#g.get(A),C=I?.maxAge,B;function Q(){return B=B||Date.now(),B}if(g){if(g.expired&&Q()>g.expired)g.expired=0,g.value=void 0;else if(C!==void 0){let E=C?Q()+C:0;g.expired=E}return g.value}if(g=this.#C.get(A),g){if(g.expired&&Q()>g.expired)g.expired=0,g.value=void 0;else if(this._update(A,g),C!==void 0){let E=C?Q()+C:0;g.expired=E}return g.value}}set(A,I,g){let C=g?.maxAge,B=C?Date.now()+C:0,Q=this.#g.get(A);if(Q)Q.expired=B,Q.value=I;else Q={value:I,expired:B},this._update(A,Q)}keys(){let A=new Set,I=Date.now();for(let[C,B]of this.#g.entries())g(C,B);for(let[C,B]of this.#C.entries())g(C,B);function g(C,B){if(B.value&&!B.expired||B.expired>=I)A.add(C)}return Array.from(A)}reset(){this.#I=0,this.#g.clear(),this.#C.clear()}_update(A,I){if(this.#g.set(A,I),this.#I++,this.#I>=this.#A)this.#I=0,this.#C=this.#g,this.#g=new Map}}import{randomBytes as nvI,createHash as svI}from"crypto";import{Readable as xFA}from"stream";import{performance as rvI}from"perf_hooks";import{ReadableStream as tvI,TransformStream as evI}from"stream/web";import{Blob as A_I}from"buffer";var AI={kSocketId:Symbol("socket id"),kSocketStartTime:Symbol("socket start time"),kSocketConnectedTime:Symbol("socket connected time"),kSocketConnectErrorTime:Symbol("socket connectError time"),kSocketRequestEndTime:Symbol("socket request end time"),kSocketLocalAddress:Symbol("socket local address"),kSocketLocalPort:Symbol("socket local port"),kSocketConnectHost:Symbol("socket connect params: host"),kSocketConnectPort:Symbol("socket connect params: port"),kSocketConnectProtocol:Symbol("socket connect params: protocol"),kHandledRequests:Symbol("handled requests per socket"),kHandledResponses:Symbol("handled responses per socket"),kRequestSocket:Symbol("request on the socket"),kRequestId:Symbol("request id"),kRequestStartTime:Symbol("request start time"),kEnableRequestTiming:Symbol("enable request timing or not"),kRequestTiming:Symbol("request timing"),kRequestOriginalOpaque:Symbol("request original opaque"),kRequestInternalOpaque:Symbol("request internal opaque"),kErrorSocket:Symbol("socket of error")};var I_I={'"':"\\\"","\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"},g_I=/[\u0000-\u001F\u005C]/g;function C_I(A){return I_I[A]||"\\u"+(A.charCodeAt(0)+65536).toString(16).substring(1)}function B_I(A){return A.replace(g_I,C_I)}function $FA(A,I){if(typeof I==="function")A=I(A);else if(I)A=B_I(A);try{A=JSON.parse(A)}catch(g){if(g.name==="SyntaxError")g.name="JSONResponseFormatError";if(A.length>1024)g.message+=" (data json format: "+JSON.stringify(A.slice(0,512))+" ...skip... "+JSON.stringify(A.slice(A.length-512))+")";else g.message+=" (data json format: "+JSON.stringify(A)+")";throw g}return A}function pP(A){let I=svI("md5");return I.update(A,"utf8"),I.digest("hex")}var Q_I=/(\w{1,100})=["']?([^'"]+)["']?/,E_I=0,D_I="00000000";function bFA(A,I,g,C){let B=g.split(","),Q={};for(let S of B){let H=S.match(Q_I);if(H)Q[H[1]]=H[2].replace(/["']/g,"")}if(!Q.realm||!Q.nonce)return"";let E=Q.qop||"",D=C.indexOf(":"),G=C.substring(0,D),Y=C.substring(D+1),w=String(++E_I);w=`${D_I.substring(w.length)}${w}`;let J=nvI(8).toString("hex"),M=pP(`${G}:${Q.realm}:${Y}`),K=pP(`${A.toUpperCase()}:${I}`),N=`${M}:${Q.nonce}`;if(E)E=E.split(",")[0],N+=`:${w}:${J}:${E}`;N+=`:${K}`;let k=pP(N),q=`Digest username="${G}", realm="${Q.realm}", nonce="${Q.nonce}", uri="${I}", response="${k}"`;if(Q.opaque)q+=`, opaque="${Q.opaque}"`;if(E)q+=`, qop=${E}, nc=${w}, cnonce="${J}"`;return q}var G_I=Math.pow(2,31)-10,dF={};function yN(A){if(!dF[A]||dF[A]>=G_I)dF[A]=0;return++dF[A]}function VD(A,I){return Math.floor(((I??rvI.now())-A)*1000)/1000}function FN(A){if(typeof xFA.isReadable==="function")return xFA.isReadable(A);return A!==null&&typeof A==="object"&&typeof A.pipe==="function"&&A.readable!==!1&&typeof A._read==="function"&&typeof A._readableState==="object"}function cq(A,I,g){let C=I[AI.kRequestSocket]??g?.[AI.kErrorSocket];if(C){if(A.id=C[AI.kSocketId],A.handledRequests=C[AI.kHandledRequests],A.handledResponses=C[AI.kHandledResponses],C[AI.kSocketLocalAddress])A.localAddress=C[AI.kSocketLocalAddress],A.localPort=C[AI.kSocketLocalPort];if(C.remoteAddress)A.remoteAddress=C.remoteAddress,A.remotePort=C.remotePort,A.remoteFamily=C.remoteFamily;if(Array.isArray(C.autoSelectFamilyAttemptedAddresses))A.attemptedRemoteAddresses=C.autoSelectFamilyAttemptedAddresses;if(A.bytesRead=C.bytesRead,A.bytesWritten=C.bytesWritten,C[AI.kSocketConnectErrorTime])A.connectErrorTime=C[AI.kSocketConnectErrorTime],A.connectProtocol=C[AI.kSocketConnectProtocol],A.connectHost=C[AI.kSocketConnectHost],A.connectPort=C[AI.kSocketConnectPort];if(C[AI.kSocketConnectedTime])A.connectedTime=C[AI.kSocketConnectedTime];if(C[AI.kSocketRequestEndTime])A.lastRequestEndTime=C[AI.kSocketRequestEndTime];C[AI.kSocketRequestEndTime]=new Date}}function mP(A){let I={};for(let[g,C]of A.entries())if(I[g]){if(!Array.isArray(I[g]))I[g]=[I[g]];I[g].push(C)}else I[g]=C;return I}function cFA(){if(typeof global.ReadableStream>"u")global.ReadableStream=tvI;if(typeof global.TransformStream>"u")global.TransformStream=evI;if(typeof global.Blob>"u")global.Blob=A_I;if(typeof global.DOMException>"u")global.DOMException=w_I()}function w_I(){try{atob(0)}catch(A){return A.constructor}}var xZA=cg(oq(),1),$ZA=cg(lP(),1),GT=cg(g4(),1),bZA=cg(q4(),1);import eF from"diagnostics_channel";import{EventEmitter as JpI}from"events";import{STATUS_CODES as MpI}from"http";import{debuglog as NpI}from"util";import{createGunzip as jZA,createBrotliDecompress as OZA,gunzipSync as kpI,brotliDecompressSync as HpI}from"zlib";import{Readable as d2,pipeline as qpI}from"stream";import{pipeline as VZA}from"stream/promises";import{basename as TZA}from"path";import{createReadStream as RpI}from"fs";import{format as SpI}from"url";import{performance as hpI}from"perf_hooks";import LpI from"querystring";import{setTimeout as ipI}from"timers/promises";import{request as zZA,Agent as PZA,getGlobalDispatcher as ypI}from"undici";var WZA=cg(ZZA(),1);import BT from"path";var CpI=/[^\x00-\x7F]/i;class nF extends WZA.default{_getContentDisposition(A,I){let g,C;if(typeof I.filepath==="string")g=BT.normalize(I.filepath).replace(/\\/g,"/");else if(I.filename||A.name||A.path)g=BT.basename(I.filename||A.name||A.path);else if(A.readable&&A.hasOwnProperty("httpVersion"))g=BT.basename(A.client._httpMessage.path||"");if(g){if(C='filename="'+g+'"',CpI.test(g))C+="; filename*=UTF-8''"+encodeURIComponent(g)}return C}}import QpI from"dns";import{isIP as EpI}from"net";import{Agent as BpI}from"undici";class ZN extends BpI{#A;constructor(A){super(A);this.#A=A.opaqueLocalStorage}dispatch(A,I){let g=this.#A?.getStore();if(g)I.opaque=g;return super.dispatch(A,I)}}class sF extends Error{hostname;ip;family;constructor(A,I,g){super("illegal address");this.name=this.constructor.name,this.hostname=A,this.ip=I,this.family=g,Error.captureStackTrace(this,this.constructor)}}class p2 extends ZN{#A;constructor(A){let{lookup:I=QpI.lookup,...g}=A,C=(B,Q,E)=>{I(B,Q,(D,...G)=>{let Y=G[0],w=G[1];if(D)return E(D,Y,w);if(A.checkAddress){if(typeof Y==="string"){if(!A.checkAddress(Y,w,B))D=new sF(B,Y,w)}else if(Array.isArray(Y)){let J=Y;for(let M of J)if(!A.checkAddress(M.address,M.family,B)){D=new sF(B,M.address,M.family);break}}}E(D,Y,w)})};super({...g,connect:{...A.connect,lookup:C,allowH2:A.allowH2}});this.#A=A.checkAddress}dispatch(A,I){if(this.#A&&A.origin){let C=(typeof A.origin==="string"?new URL(A.origin):A.origin).hostname;if(C.startsWith("[")&&C.endsWith("]"))C=C.substring(1,C.length-1);let B=EpI(C);if(B===4||B===6){if(!this.#A(C,B,C))throw new sF(C,C,B)}}return super.dispatch(A,I)}}import DpI from"diagnostics_channel";import{performance as GpI}from"perf_hooks";import{debuglog as wpI}from"util";import{Socket as XZA}from"net";var zD=wpI("urllib/diagnosticsChannel"),UZA=!1;function WN(A,I){DpI.subscribe(A,I)}var QT;function rF(A){if(!A)return A;if(!QT){let I=Object.getOwnPropertySymbols(A);for(let g of I)if(g.description==="reset"){QT=g;break}}return{localAddress:A[AI.kSocketLocalAddress],localPort:A[AI.kSocketLocalPort],remoteAddress:A.remoteAddress,remotePort:A.remotePort,attemptedAddresses:A.autoSelectFamilyAttemptedAddresses,connecting:A.connecting,reset:A[QT]}}var YpI=XZA.prototype.destroy;XZA.prototype.destroy=function(A){if(A)Object.defineProperty(A,AI.kErrorSocket,{enumerable:!1,value:this});return YpI.call(this,A)};function KpI(A,I){if(!I)return;let g=Reflect.get(A,I);return g?.opts?.opaque??g?.opaque}function tF(){if(UZA)return;UZA=!0;let A;WN("undici:request:create",(I,g)=>{let{request:C}=I;if(!A){let Q=Object.getOwnPropertySymbols(C);for(let E of Q)if(E.description==="handler"){A=E;break}}let B=KpI(C,A);if(!B||!B[AI.kRequestId])return;if(Reflect.set(C,AI.kRequestInternalOpaque,B),zD("[%s] Request#%d %s %s, path: %s, headers: %j",g,B[AI.kRequestId],C.method,C.origin,C.path,C.headers),!B[AI.kEnableRequestTiming])return;B[AI.kRequestTiming].queuing=VD(B[AI.kRequestStartTime])}),WN("undici:client:connectError",(I,g)=>{let{error:C,connectParams:B,socket:Q}=I,E=Q;if(!E&&C[AI.kErrorSocket])E=C[AI.kErrorSocket];if(E){if(E[AI.kSocketId]=yN("UndiciSocket"),E[AI.kSocketConnectErrorTime]=new Date,E[AI.kHandledRequests]=0,E[AI.kHandledResponses]=0,E.localAddress)E[AI.kSocketLocalAddress]=E.localAddress,E[AI.kSocketLocalPort]=E.localPort;E[AI.kSocketConnectProtocol]=B.protocol,E[AI.kSocketConnectHost]=B.host,E[AI.kSocketConnectPort]=B.port,zD("[%s] Socket#%d connectError, connectParams: %j, error: %s, (sock: %j)",g,E[AI.kSocketId],B,C.message,rF(E))}else zD("[%s] connectError, connectParams: %j, error: %o",g,B,C)}),WN("undici:client:connected",(I,g)=>{let{socket:C,connectParams:B}=I;C[AI.kSocketId]=yN("UndiciSocket"),C[AI.kSocketStartTime]=GpI.now(),C[AI.kSocketConnectedTime]=new Date,C[AI.kHandledRequests]=0,C[AI.kHandledResponses]=0,C[AI.kSocketLocalAddress]=C.localAddress,C[AI.kSocketLocalPort]=C.localPort,C[AI.kSocketConnectProtocol]=B.protocol,C[AI.kSocketConnectHost]=B.host,C[AI.kSocketConnectPort]=B.port,zD("[%s] Socket#%d connected (sock: %j)",g,C[AI.kSocketId],rF(C))}),WN("undici:client:sendHeaders",(I,g)=>{let{request:C,socket:B}=I,Q=Reflect.get(C,AI.kRequestInternalOpaque);if(!Q||!Q[AI.kRequestId]){zD("[%s] opaque not found",g);return}if(B[AI.kHandledRequests]++,Q[AI.kRequestSocket]=B,zD("[%s] Request#%d send headers on Socket#%d (handled %d requests, sock: %j)",g,Q[AI.kRequestId],B[AI.kSocketId],B[AI.kHandledRequests],rF(B)),!Q[AI.kEnableRequestTiming])return;if(Q[AI.kRequestTiming].requestHeadersSent=VD(Q[AI.kRequestStartTime]),B[AI.kHandledRequests]===1)Q[AI.kRequestTiming].connected=VD(Q[AI.kRequestStartTime],B[AI.kSocketStartTime])}),WN("undici:request:bodySent",(I,g)=>{let{request:C}=I,B=Reflect.get(C,AI.kRequestInternalOpaque);if(!B||!B[AI.kRequestId]){zD("[%s] opaque not found",g);return}if(zD("[%s] Request#%d send body",g,B[AI.kRequestId]),!B[AI.kEnableRequestTiming])return;B[AI.kRequestTiming].requestSent=VD(B[AI.kRequestStartTime])}),WN("undici:request:headers",(I,g)=>{let{request:C,response:B}=I,Q=Reflect.get(C,AI.kRequestInternalOpaque);if(!Q||!Q[AI.kRequestId]){zD("[%s] opaque not found",g);return}let E=Q[AI.kRequestSocket];if(E)E[AI.kHandledResponses]++,zD("[%s] Request#%d get %s response headers on Socket#%d (handled %d responses, sock: %j)",g,Q[AI.kRequestId],B.statusCode,E[AI.kSocketId],E[AI.kHandledResponses],rF(E));else zD("[%s] Request#%d get %s response headers on Unknown Socket",g,Q[AI.kRequestId],B.statusCode);if(!Q[AI.kEnableRequestTiming])return;Q[AI.kRequestTiming].waiting=VD(Q[AI.kRequestStartTime])}),WN("undici:request:trailers",(I,g)=>{let{request:C}=I,B=Reflect.get(C,AI.kRequestInternalOpaque);if(!B||!B[AI.kRequestId]){zD("[%s] opaque not found",g);return}if(zD("[%s] Request#%d get response body and trailers",g,B[AI.kRequestId]),!B[AI.kEnableRequestTiming])return;B[AI.kRequestTiming].contentDownload=VD(B[AI.kRequestStartTime])})}class ET extends Error{status;headers;socket;res}class m2 extends ET{constructor(A,I){let g=`Request timeout for ${A} ms`;super(g,I);this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor)}}class DT extends ET{code;constructor(A,I,g){super(A,g);this.name=this.constructor.name,this.code=I,Error.captureStackTrace(this,this.constructor)}}var FpI=/^https?:\/\//i;function ZpI(){}var SY=NpI("urllib:HttpClient"),WpI="4.6.11",AZ=`node-urllib/${WpI} Node.js/${process.version.substring(1)} (${process.platform}; ${process.arch})`;function UpI(A){let I=A.path;if(I)return TZA(I);return""}function XpI(A){return A.status>=500}var hY={request:eF.channel("urllib:request"),response:eF.channel("urllib:response"),fetchRequest:eF.channel("urllib:fetch:request"),fetchResponse:eF.channel("urllib:fetch:response")},jpI=[301,302,303,307,308];class JK extends JpI{#A;#I;constructor(A){super();if(this.#A=A?.defaultArgs,A?.lookup||A?.checkAddress)this.#I=new p2({lookup:A.lookup,checkAddress:A.checkAddress,connect:A.connect,allowH2:A.allowH2});else if(A?.connect)this.#I=new PZA({connect:A.connect,allowH2:A.allowH2});else if(A?.allowH2)this.#I=new PZA({allowH2:A.allowH2});tF()}getDispatcher(){return this.#I??ypI()}setDispatcher(A){this.#I=A}getDispatcherPoolStats(){let A=this.getDispatcher(),I=Reflect.get(A,xZA.default.kClients),g={};if(!I)return g;for(let[C,B]of I){let E=(typeof B.deref==="function"?B.deref():B)?.stats;if(!E)continue;g[C]={connected:E.connected,free:E.free,pending:E.pending,queued:E.queued,running:E.running,size:E.size}}return g}async request(A,I){return await this.#g(A,I)}async curl(A,I){return await this.request(A,I)}async#g(A,I,g){let C=yN("HttpClientRequest"),B;if(typeof A==="string"){if(!FpI.test(A))A="http://"+A;B=new URL(A)}else if(!A.searchParams)B=new URL(SpI(A));else B=new URL(A.toString());let Q=(I?.type||I?.method||"GET").toUpperCase(),E=I?.headers,D={},G={retry:0,socketErrorRetry:1,timing:!0,...this.#A,...I,method:Q,headers:D};if(g={retries:0,socketErrorRetries:0,redirects:0,history:[],...g},!g.requestStartTime)g.requestStartTime=hpI.now();g.history.push(B.href);let Y=g.requestStartTime,w={queuing:0,dnslookup:0,connected:0,requestHeadersSent:0,requestSent:0,waiting:0,contentDownload:0},J=G.opaque,M={[AI.kRequestId]:C,[AI.kRequestStartTime]:Y,[AI.kEnableRequestTiming]:!!G.timing,[AI.kRequestTiming]:w,[AI.kRequestOriginalOpaque]:J},K={requestId:C,url:B.href,args:G,ctx:G.ctx,retries:g.retries},N={id:0,localAddress:"",localPort:0,remoteAddress:"",remotePort:0,remoteFamily:"",bytesWritten:0,bytesRead:0,handledRequests:0,handledResponses:0},q={status:-1,statusCode:-1,statusText:"",statusMessage:"",headers:{},size:0,aborted:!1,rt:0,keepAliveSocket:!0,requestUrls:g.history,timing:w,socket:N,retries:g.retries,socketErrorRetries:g.socketErrorRetries},S=5000,H=5000;if(G.timeout)if(Array.isArray(G.timeout))S=G.timeout[0]??S,H=G.timeout[1]??H;else S=H=G.timeout;if(E)for(let P in E)D[P.toLowerCase()]=E[P];if("user-agent"in D&&!D["user-agent"])delete D["user-agent"];else if(!D["user-agent"])D["user-agent"]=AZ;if(G.streaming||G.customResponse)G.dataType="stream";if(G.dataType==="json"&&!D.accept)D.accept="application/json";if(G.gzip&&G.compressed!==!1)G.compressed=!0;if(G.compressed&&!D["accept-encoding"])D["accept-encoding"]="gzip, br";if(g.retries>0)D["x-urllib-retry"]=`${g.retries}/${G.retry}`;if(g.socketErrorRetries>0)D["x-urllib-retry-on-socket-error"]=`${g.socketErrorRetries}/${G.socketErrorRetry}`;if(G.auth&&!D.authorization)D.authorization=`Basic ${Buffer.from(G.auth).toString("base64")}`;let y=!1,Z=!1;if(G.dataType==="stream"||G.writeStream)Z=!0;let U=G.maxRedirects??10;try{let P={method:Q,maxRedirections:0,headersTimeout:S,headers:D,bodyTimeout:H,opaque:M,dispatcher:G.dispatcher??this.#I,signal:G.signal,reset:!1};if(typeof G.highWaterMark==="number")P.highWaterMark=G.highWaterMark;if(typeof G.reset==="boolean")P.reset=G.reset;if(G.followRedirect===!1)U=0;let i=P.method==="GET"||P.method==="HEAD";if(G.stream&&!G.content){if(FN(G.stream)&&!(G.stream instanceof d2))SY("Request#%d convert old style stream to Readable",C),G.stream=new d2().wrap(G.stream),y=!0;else if(G.stream instanceof bZA.default)SY("Request#%d convert formstream to Readable",C),G.stream=new d2().wrap(G.stream),y=!0;G.content=G.stream}if(G.files){if(i)P.method="POST";let c=new nF,z=[];if(Array.isArray(G.files))for(let[f,n]of G.files.entries()){let AA=f===0?"file":`file${f}`;z.push([AA,n])}else if(G.files instanceof d2||FN(G.files))z.push(["file",G.files]);else if(typeof G.files==="string"||Buffer.isBuffer(G.files))z.push(["file",G.files]);else if(typeof G.files==="object"){let f=G.files;for(let n in f){let AA=f[n];z.push([n,AA,n])}}if(G.data)for(let f in G.data)c.append(f,G.data[f]);for(let[f,[n,AA,m]]of z.entries()){let BA="",d;if(typeof AA==="string")BA=TZA(AA),d=RpI(AA);else if(Buffer.isBuffer(AA))BA=m||`bufferfile${f}`,d=AA;else if(AA instanceof d2||FN(AA))BA=UpI(AA)||m||`streamfile${f}`,y=!0,d=AA;let gA=$ZA.default.lookup(BA)||"";c.append(n,d,{filename:BA,contentType:gA}),SY("formData append field: %s, mimeType: %s, fileName: %s",n,gA,BA)}Object.assign(D,c.getHeaders()),P.body=c}else if(G.content){if(!i){if(P.body=G.content,G.contentType)D["content-type"]=G.contentType;else if(typeof G.content==="string"&&!D["content-type"])D["content-type"]="text/plain;charset=UTF-8";y=FN(G.content)}}else if(G.data){let c=typeof G.data==="string"||Buffer.isBuffer(G.data)||FN(G.data);if(i){if(!c){let z;if(G.nestedQuerystring)z=GT.default.stringify(G.data);else z=LpI.stringify(G.data);let f=B.href;B=new URL(f+(f.includes("?")?"&":"?")+z)}}else if(c)P.body=G.data,y=FN(G.data);else if(G.contentType==="json"||G.contentType==="application/json"||D["content-type"]?.startsWith("application/json")){if(P.body=JSON.stringify(G.data),!D["content-type"])D["content-type"]="application/json"}else if(D["content-type"]="application/x-www-form-urlencoded;charset=UTF-8",G.nestedQuerystring)P.body=GT.default.stringify(G.data);else P.body=new URLSearchParams(G.data).toString()}if(y)G.retry=0,G.socketErrorRetry=0,U=0;if(Z)G.retry=0,G.socketErrorRetry=0;if(SY("Request#%d %s %s, headers: %j, headersTimeout: %s, bodyTimeout: %s, isStreamingRequest: %s, isStreamingResponse: %s, maxRedirections: %s, redirects: %s",C,P.method,B.href,D,S,H,y,Z,U,g.redirects),P.headers=D,hY.request.publish({request:K}),this.listenerCount("request")>0)this.emit("request",K);let j=await zZA(B,P);if(j.statusCode===401&&(j.headers["www-authenticate"]||j.headers["x-www-authenticate"])&&!P.headers.authorization&&G.digestAuth){let c=j.headers["www-authenticate"]??j.headers["x-www-authenticate"],z=Array.isArray(c)?c.find((f)=>f.startsWith("Digest ")):c;if(z&&z.startsWith("Digest ")){if(SY("Request#%d %s: got digest auth header WWW-Authenticate: %s",C,B.href,z),P.headers.authorization=bFA(P.method,`${B.pathname}${B.search}`,z,G.digestAuth),SY("Request#%d %s: auth with digest header: %s",C,A,P.headers.authorization),Array.isArray(j.headers["set-cookie"]))P.headers.cookie=j.headers["set-cookie"].join(";");await j.body.arrayBuffer(),j=await zZA(B,P)}}let X=j.headers["content-encoding"],W=X==="gzip"||X==="br";if(q.headers=j.headers,q.status=q.statusCode=j.statusCode,q.statusMessage=q.statusText=MpI[q.status]||"",q.headers["content-length"])q.size=parseInt(q.headers["content-length"]);if(jpI.includes(q.statusCode)&&U>0&&g.redirects<U){if(q.headers.location){g.redirects++;let c=new URL(q.headers.location,B.href);return await j.body.arrayBuffer(),SY("Request#%d got response, status: %s, headers: %j, timing: %j, redirect to %s",C,q.status,q.headers,q.timing,c.href),await this.#g(c.href,I,g)}}let O=null;if(G.dataType==="stream")if(G.compressed===!0&&W){let c=X==="gzip"?jZA():OZA();q=Object.assign(qpI(j.body,c,ZpI),q)}else q=Object.assign(j.body,q);else if(G.writeStream)if(G.compressed===!0&&W){let c=X==="gzip"?jZA():OZA();await VZA(j.body,c,G.writeStream)}else await VZA(j.body,G.writeStream);else{if(O=Buffer.from(await j.body.arrayBuffer()),W&&O.length>0)try{O=X==="gzip"?kpI(O):HpI(O)}catch(c){if(c.name==="Error")c.name="UnzipError";throw c}if(G.dataType==="text"||G.dataType==="html")O=O.toString();else if(G.dataType==="json")if(O.length===0)O=null;else O=$FA(O.toString(),G.fixJSONCtlChars)}q.rt=VD(Y),cq(N,M);let $={opaque:J,data:O,status:q.status,statusCode:q.status,statusText:q.statusText,headers:q.headers,url:B.href,redirected:g.history.length>1,requestUrls:q.requestUrls,res:q};if(SY("Request#%d got response, status: %s, headers: %j, timing: %j, socket: %j",C,q.status,q.headers,q.timing,q.socket),G.retry>0&&g.retries<G.retry){if((G.isRetry??XpI)($)){if(G.retryDelay)await ipI(G.retryDelay);return g.retries++,await this.#g(A,I,g)}}if(hY.response.publish({request:K,response:q}),this.listenerCount("response")>0)this.emit("response",{requestId:C,error:null,ctx:G.ctx,req:{...K,options:G},res:q});return $}catch(P){SY("Request#%d throw error: %s, socketErrorRetry: %s, socketErrorRetries: %s",C,P,G.socketErrorRetry,g.socketErrorRetries);let i=P;if(i.name==="HeadersTimeoutError")i=new m2(S,{cause:i});else if(i.name==="BodyTimeoutError")i=new m2(H,{cause:i});else if(i.name==="InformationalError"&&i.message.includes("stream timeout"))i=new m2(H,{cause:i});else if(i.code==="UND_ERR_CONNECT_TIMEOUT")i=new DT(i.message,i.code,{cause:i});else if(i.code==="UND_ERR_SOCKET"||i.code==="ECONNRESET"){if(G.socketErrorRetry>0&&g.socketErrorRetries<G.socketErrorRetry)return g.socketErrorRetries++,SY("Request#%d retry on socket error, socketErrorRetries: %d",C,g.socketErrorRetries),await this.#g(A,I,g)}if(i.opaque=J,i.status=q.status,i.headers=q.headers,i.res=q,i.socket)i._rawSocket=i.socket;if(i.socket=N,q.rt=VD(Y),cq(N,M,P),hY.response.publish({request:K,response:q,error:i}),this.listenerCount("response")>0)this.emit("response",{requestId:C,error:i,ctx:G.ctx,req:{...K,options:G},res:q});throw i}}}import{MockAgent as K3g,ProxyAgent as HlI,Agent as wUA,Dispatcher as J3g,setGlobalDispatcher as M3g,getGlobalDispatcher as N3g,Request as k3g,Response as H3g,Headers as q3g,FormData as R3g}from"undici";var QUA=cg(oq(),1),EUA=cg(CUA(),1);import{AsyncLocalStorage as GlI}from"async_hooks";import{debuglog as wlI}from"util";import{fetch as YlI,Request as KlI,getGlobalDispatcher as JlI}from"undici";var BUA=wlI("urllib/fetch");class LY{static#A;static#I=new GlI;static getDispatcher(){return LY.#A??JlI()}static setDispatcher(A){LY.#A=A}static setClientOptions(A){let I={opaqueLocalStorage:LY.#I},g=ZN;if(A?.lookup||A?.checkAddress)I={...I,lookup:A.lookup,checkAddress:A.checkAddress,connect:A.connect,allowH2:A.allowH2},g=p2;else if(A?.connect)I={...I,connect:A.connect,allowH2:A.allowH2},g=ZN;else if(A?.allowH2)I={...I,allowH2:A.allowH2},g=ZN;LY.#A=new g(I),tF()}static getDispatcherPoolStats(){let A=LY.getDispatcher(),I=Reflect.get(A,QUA.default.kClients),g={};if(!I)return g;for(let[C,B]of I){let E=(typeof B.deref==="function"?B.deref():B)?.stats;if(!E)continue;g[C]={connected:E.connected,free:E.free,pending:E.pending,queued:E.queued,running:E.running,size:E.size}}return g}static async fetch(A,I){let g=performance.now();I=I??{},I.dispatcher=I.dispatcher??LY.#A;let C=new KlI(A,I),B=yN("HttpClientRequest"),Q={queuing:0,dnslookup:0,connected:0,requestHeadersSent:0,requestSent:0,waiting:0,contentDownload:0},E={[AI.kRequestId]:B,[AI.kRequestStartTime]:g,[AI.kEnableRequestTiming]:!!(I.timing??!0),[AI.kRequestTiming]:Q},D={requestId:B,url:C.url,args:{method:C.method,type:C.method,data:C.body,headers:mP(C.headers)},retries:0},G={requestId:B,request:C},Y={id:0,localAddress:"",localPort:0,remoteAddress:"",remotePort:0,remoteFamily:"",bytesWritten:0,bytesRead:0,handledRequests:0,handledResponses:0};hY.request.publish({request:D}),hY.fetchRequest.publish({fetch:G});let w,M={status:-1,statusCode:-1,statusText:"",statusMessage:"",headers:{},size:0,aborted:!1,rt:0,keepAliveSocket:!0,requestUrls:[C.url],timing:Q,socket:Y,retries:0,socketErrorRetries:0};try{await LY.#I.run(E,async()=>{w=await YlI(C)})}catch(N){throw cq(Y,E,N),M.rt=VD(g),BUA("Request#%d throw error: %s",B,N),hY.fetchResponse.publish({fetch:G,error:N}),hY.response.publish({request:D,response:M,error:N}),N}let K=EUA.getResponseState(w);if(cq(Y,E),M.headers=mP(w.headers),M.status=M.statusCode=w.status,M.statusMessage=w.statusText,M.headers["content-length"])M.size=parseInt(M.headers["content-length"]);return M.rt=VD(g),BUA("Request#%d got response, status: %s, headers: %j, timing: %j, socket: %j",B,M.status,M.headers,Q,M.socket),hY.fetchResponse.publish({fetch:G,timingInfo:K.timingInfo,response:w}),hY.response.publish({request:D,response:M}),w}}var MlI=LY.fetch;cFA();var oT,fT,vT,_T,DUA=new _2(50);function NlI(A,I){if(A===!1){if(I){if(!_T)_T=new JK({allowH2:I,connect:{rejectUnauthorized:A}});return _T}if(!vT)vT=new JK({connect:{rejectUnauthorized:A}});return vT}if(I){if(!fT)fT=new JK({allowH2:I});return fT}if(!oT)oT=new JK;return oT}async function GUA(A,I){if(I?.socketPath){let g=DUA.get(I.socketPath);if(!g)g=new JK({connect:{socketPath:I.socketPath}}),DUA.set(I.socketPath,g);return await g.request(A,I)}return await NlI(I?.rejectUnauthorized,I?.allowH2).request(A,I)}async function klI(A,I){return await GUA(A,I)}var t2={request:GUA,curl:klI,USER_AGENT:AZ};import{debuglog as MnI}from"util";import{createVerify as u1A,randomUUID as NnI}from"crypto";import{Readable as l1A}from"stream";var eq=cg(UUA(),1),a1A=cg(nT(),1);import{ReadableStream as plI}from"stream/web";class e2 extends Error{status;headers;error;code;param;type;constructor(A,I,g,C){super(`${e2.makeMessage(A,I,g)}`);this.status=A,this.headers=C;let B=I;this.error=B,this.code=B?.code,this.param=B?.param,this.type=B?.type}static makeMessage(A,I,g){let C=I?.message?typeof I.message==="string"?I.message:JSON.stringify(I.message):I?JSON.stringify(I):g;if(A&&C)return`${A} ${C}`;if(A)return`${A} status code (no body)`;if(C)return C;return"(no status code or body)"}}function mlI(A,I){let g=A.indexOf(I);if(g!==-1)return[A.substring(0,g),I,A.substring(g+I.length)];return[A,"",""]}class sT{data;event;chunks;constructor(){this.event=null,this.data=[],this.chunks=[]}decode(A){let I=A;if(A.endsWith("\r"))I=A.substring(0,A.length-1);if(!I){if(!this.event&&!this.data.length)return null;let Q={event:this.event,data:this.data.join(`
|
|
1481
|
+
`,runtimeDataModel:{models:{},enums:{},types:{}}};K9.runtimeDataModel=JSON.parse('{"models":{"apps":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"platform","kind":"enum","type":"apps_platform"},{"name":"name","kind":"scalar","type":"String"},{"name":"appKey","kind":"scalar","type":"String"},{"name":"appSecret","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"downloadUrl","kind":"scalar","type":"String"},{"name":"status","kind":"scalar","type":"String"},{"name":"ignoreBuildTime","kind":"scalar","type":"String"},{"name":"users","kind":"object","type":"users","relationName":"appsTousers"},{"name":"packages","kind":"object","type":"packages","relationName":"appsTopackages"},{"name":"versions","kind":"object","type":"versions","relationName":"appsToversions"},{"name":"bindings","kind":"object","type":"bindings","relationName":"appsTobindings"}],"dbName":null},"orders":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"type","kind":"enum","type":"orders_type"},{"name":"orderNo","kind":"scalar","type":"String"},{"name":"thirdOrderNo","kind":"scalar","type":"String"},{"name":"thirdUserId","kind":"scalar","type":"String"},{"name":"price","kind":"scalar","type":"Decimal"},{"name":"payTime","kind":"scalar","type":"String"},{"name":"status","kind":"enum","type":"orders_status"},{"name":"tier","kind":"scalar","type":"String"},{"name":"remark","kind":"scalar","type":"String"},{"name":"channel","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"users","kind":"object","type":"users","relationName":"ordersTousers"}],"dbName":null},"packages":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"appId","kind":"scalar","type":"Int"},{"name":"versionId","kind":"scalar","type":"Int"},{"name":"name","kind":"scalar","type":"String"},{"name":"hash","kind":"scalar","type":"String"},{"name":"status","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"buildTime","kind":"scalar","type":"String"},{"name":"buildNumber","kind":"scalar","type":"String"},{"name":"note","kind":"scalar","type":"String"},{"name":"deps","kind":"scalar","type":"Json"},{"name":"commit","kind":"scalar","type":"Json"},{"name":"apps","kind":"object","type":"apps","relationName":"appsTopackages"},{"name":"versions","kind":"object","type":"versions","relationName":"packagesToversions"},{"name":"bindings","kind":"object","type":"bindings","relationName":"bindingsTopackages"}],"dbName":null},"tasks":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"type","kind":"enum","type":"tasks_type"},{"name":"fromHash","kind":"scalar","type":"String"},{"name":"toHash","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":null},"users":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"email","kind":"scalar","type":"String"},{"name":"name","kind":"scalar","type":"String"},{"name":"salt","kind":"scalar","type":"String"},{"name":"secret","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"status","kind":"enum","type":"users_status"},{"name":"tier","kind":"scalar","type":"String"},{"name":"tierExpiresAt","kind":"scalar","type":"DateTime"},{"name":"quota","kind":"scalar","type":"Json"},{"name":"apps","kind":"object","type":"apps","relationName":"appsTousers"},{"name":"orders","kind":"object","type":"orders","relationName":"ordersTousers"},{"name":"apiTokens","kind":"object","type":"api_tokens","relationName":"api_tokensTousers"},{"name":"auditLogs","kind":"object","type":"audit_logs","relationName":"audit_logsTousers"}],"dbName":null},"versions":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"appId","kind":"scalar","type":"Int"},{"name":"hash","kind":"scalar","type":"String"},{"name":"name","kind":"scalar","type":"String"},{"name":"description","kind":"scalar","type":"String"},{"name":"metaInfo","kind":"scalar","type":"String"},{"name":"config","kind":"scalar","type":"Json"},{"name":"deps","kind":"scalar","type":"Json"},{"name":"commit","kind":"scalar","type":"Json"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"packages","kind":"object","type":"packages","relationName":"packagesToversions"},{"name":"apps","kind":"object","type":"apps","relationName":"appsToversions"},{"name":"bindings","kind":"object","type":"bindings","relationName":"bindingsToversions"}],"dbName":null},"reports":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"appId","kind":"scalar","type":"Int"},{"name":"packageId","kind":"scalar","type":"Int"},{"name":"versionId","kind":"scalar","type":"Int"},{"name":"time","kind":"scalar","type":"String"},{"name":"type","kind":"scalar","type":"String"},{"name":"data","kind":"scalar","type":"Json"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"}],"dbName":null},"bindings":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"appId","kind":"scalar","type":"Int"},{"name":"packageId","kind":"scalar","type":"Int"},{"name":"versionId","kind":"scalar","type":"Int"},{"name":"type","kind":"enum","type":"binding_type"},{"name":"rollout","kind":"scalar","type":"Int"},{"name":"config","kind":"scalar","type":"Json"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"apps","kind":"object","type":"apps","relationName":"appsTobindings"},{"name":"packages","kind":"object","type":"packages","relationName":"bindingsTopackages"},{"name":"versions","kind":"object","type":"versions","relationName":"bindingsToversions"}],"dbName":"bindings"},"api_tokens":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"name","kind":"scalar","type":"String"},{"name":"tokenHash","kind":"scalar","type":"String"},{"name":"tokenSuffix","kind":"scalar","type":"String"},{"name":"permissions","kind":"scalar","type":"Json"},{"name":"expiresAt","kind":"scalar","type":"DateTime"},{"name":"revokedAt","kind":"scalar","type":"DateTime"},{"name":"lastUsedAt","kind":"scalar","type":"DateTime"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"updatedAt","kind":"scalar","type":"DateTime"},{"name":"users","kind":"object","type":"users","relationName":"api_tokensTousers"},{"name":"auditLogs","kind":"object","type":"audit_logs","relationName":"api_tokensToaudit_logs"}],"dbName":"api_tokens"},"audit_logs":{"fields":[{"name":"id","kind":"scalar","type":"Int"},{"name":"userId","kind":"scalar","type":"Int"},{"name":"apiTokenId","kind":"scalar","type":"Int"},{"name":"method","kind":"scalar","type":"String"},{"name":"path","kind":"scalar","type":"String"},{"name":"data","kind":"scalar","type":"Json"},{"name":"statusCode","kind":"scalar","type":"Int"},{"name":"ip","kind":"scalar","type":"String"},{"name":"userAgent","kind":"scalar","type":"String"},{"name":"createdAt","kind":"scalar","type":"DateTime"},{"name":"users","kind":"object","type":"users","relationName":"audit_logsTousers"},{"name":"apiTokens","kind":"object","type":"api_tokens","relationName":"api_tokensToaudit_logs"}],"dbName":"audit_logs"}},"enums":{},"types":{}}');async function vJI(A){let{Buffer:I}=await import("buffer"),g=I.from(A,"base64");return new WebAssembly.Module(g)}K9.compilerWasm={getRuntime:async()=>await Promise.resolve().then(() => (xt(),Tt)),getQueryCompilerWasmModule:async()=>{let{wasm:A}=await Promise.resolve().then(() => (bt(),$t));return await vJI(A)}};function ot(){return ct.getPrismaClient(K9)}var qB=cg(G9(),1);var rkg=qB.Extensions.getExtensionContext;var tkg={DbNull:qB.NullTypes.DbNull,JsonNull:qB.NullTypes.JsonNull,AnyNull:qB.NullTypes.AnyNull};var ekg=qB.makeStrictEnum({ReadUncommitted:"ReadUncommitted",ReadCommitted:"ReadCommitted",RepeatableRead:"RepeatableRead",Serializable:"Serializable"});var AHg=qB.Extensions.defineExtension;globalThis.__dirname=ft.dirname(dJI(import.meta.url));var vt=ot();var uJI=new $n(process.env.DATABASE_URL),BI=new vt({adapter:uJI});async function S8({userId:A=null,apiTokenId:I=null,method:g,path:C,data:B,statusCode:Q,ip:E,userAgent:D}){try{let G={};if(B&&typeof B==="object"&&!Array.isArray(B)){for(let[Y,w]of Object.entries(B))if(!["password","pwd","secret","appSecret","token","deps","commit"].includes(Y.toLowerCase()))G[Y]=w}await BI.audit_logs.create({data:{userId:A,apiTokenId:I,method:g,path:C,data:G,statusCode:Q,ip:E,userAgent:D}})}catch(G){console.error("Failed to log request audit:",G)}}function _t(A){let I=A.headers,g=I.get("x-forwarded-for");if(g)return g.split(",")[0].trim();let C=I.get("x-real-ip");if(C)return C;return null}function pt(A){return A.headers.get("user-agent")}var lJI=["POST","PUT","PATCH","DELETE"],mt=new xI().onAfterResponse(async({request:A,userId:I,path:g,query:C,body:B,params:Q,set:E,responseValue:D})=>{let G=A.method;if(!lJI.includes(G))return;let Y=D;if(!I&&Y&&typeof Y==="object"&&"userId"in Y){let J=Y.userId;if(typeof J==="number")I=J}if(!I)return;let w=typeof E.status==="number"?E.status:200;S8({userId:I,apiTokenId:null,method:G,path:g,data:{...C,...B,...Q},statusCode:w,ip:_t(A),userAgent:pt(A)}).catch((J)=>{console.error("Failed to log audit:",J)})}).as("scoped");import aJI from"os";var nJI=new Date,GH={version:"1.5.2-20260117",buildTime:"2026-01-17T04:19:42.014Z",commit:"389bdd3cddc11c412030bc918896e0fd9852e23e",hostname:aJI.hostname(),startTime:nJI.toISOString(),runtimeVersion:typeof Bun<"u"?Bun.version:"unknown"};import{createHash as tJI}from"crypto";import{webcrypto as ut}from"crypto";var dt="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var sJI=128,xM,wH;function rJI(A){if(!xM||xM.length<A)xM=Buffer.allocUnsafe(A*sJI),ut.getRandomValues(xM),wH=0;else if(wH+A>xM.length)ut.getRandomValues(xM),wH=0;wH+=A}function sw(A=21){rJI(A|=0);let I="";for(let g=wH-A;g<wH;g++)I+=dt[xM[g]&63];return I}function lt(){return`pushy_${sw(48)}`}function J9(A){return tJI("sha256").update(A).digest("hex")}async function at(A){let I=J9(A),g=await BI.api_tokens.findUnique({where:{tokenHash:I}});if(!g)return null;if(g.revokedAt)return null;if(g.expiresAt&&g.expiresAt<new Date)return null;let C=new Date;return await BI.api_tokens.update({where:{id:g.id},data:{lastUsedAt:C}}),{id:g.id,userId:g.userId,name:g.name,permissions:g.permissions,expiresAt:g.expiresAt,lastUsedAt:C,createdAt:g.createdAt}}function nt(A,I){let{permissions:g}=A;if(I==="DELETE")return g.delete===!0;if(["GET","HEAD","OPTIONS"].includes(I))return g.read===!0;if(["POST","PUT","PATCH"].includes(I))return g.write===!0;return!1}async function st(A){try{return await BI.api_tokens.update({where:{id:A},data:{revokedAt:new Date}}),!0}catch{return!1}}var tIA=cg(rIA(),1),XqI=new tIA.default(process.env.REDIS_URL),Pg=XqI;var RH=cg(vM(),1),JS="https://pushy-admin.reactnative.cn/#",eIA="https://update.react-native.cn/api",MS=86400,Wqg=604800,AgA=20000,IE={appCheckUpdate:(A=RH.default())=>`count_appCheckUpdate_${A.format("YYYYMMDD")}`,userCheckUpdateQuota:(A=RH.default())=>`quota_userCheckUpdate_${A.format("YYYYMMDD")}`,uvCheckUpdate:(A,I=RH.default())=>`count_uvCheckUpdate_${I.format("YYYYMMDD")}_${A}`,hourlyAppCheckUpdate:(A=RH.default())=>`hourly_appCheckUpdate_${A.format("YYYYMMDDHH")}`,hourlyUvCheckUpdate:(A,I=RH.default())=>`hourly_uvCheckUpdate_${I.format("YYYYMMDDHH")}_${A}`,dynamicConfig:()=>"config_dynamic"},SH={ios:"Ipa",android:"Apk",harmony:"App"};var jqI=20000,IgA={},ggA=0;function CgA(){if(Date.now()-ggA>jqI)Pg.hgetall(IE.dynamicConfig()).then((I)=>{if(I)IgA={...I},ggA=Date.now()});return IgA}async function vQ({email:A,userId:I}){if(!A&&!I)return null;let g=`user_${A||I}`;return await _M({cacheKey:g,handler:()=>BI.users.findUnique({where:A?{email:A}:{id:I},select:{id:!0,name:!0,email:!0,tier:!0,tierExpiresAt:!0,salt:!0,secret:!0,status:!0,quota:!0}})})}async function KJ({appKey:A,appId:I}){if(!A&&!I)return null;let g=`app_${A||I}`;return await _M({cacheKey:g,handler:()=>BI.apps.findUnique({where:A?{appKey:A}:{id:I},select:{id:!0,name:!0,appKey:!0,downloadUrl:!0,status:!0,ignoreBuildTime:!0,platform:!0,userId:!0}})})}var $8=({appKey:A,appId:I})=>{let g=`app_${A||I}`;return Pg.del(g)};async function b8({userId:A}){let I=`apps_${A}`;return await _M({cacheKey:I,handler:()=>BI.apps.findMany({where:{userId:A},select:{id:!0,name:!0,platform:!0,status:!0,appKey:!0}})})}var NS=({userId:A})=>{let I=`apps_${A}`;return Pg.del(I)};async function _M({cacheKey:A,handler:I,expire:g=AgA}){let C=await Pg.get(A),B=Date.now(),Q=!0;if(typeof C==="string"){let E=JSON.parse(C),{_ed:D,_ing:G}=E,Y=g*0.5;if(D){if(D<B-g)Q=!1;else if(D<B-Y&&(!G||G<B-3000))Pg.set(A,JSON.stringify({data:E,_ing:B})),I().then((w)=>{let J=JSON.stringify({data:w,_ed:B});Pg.set(A,J,"EX",MS)}).catch((w)=>{let J=JSON.stringify({_err:w.message,_ed:B});Pg.set(A,J,"EX",MS)})}else Q=!1;if(Q){if(E._err)throw Error(E._err);if("data"in E)return E.data}}try{let E=await I(),D=JSON.stringify({data:E,_ed:B});return Pg.set(A,D,"EX",MS),E}catch(E){let D=JSON.stringify({_err:E.message,_ed:B});throw Pg.set(A,D,"EX",MS),E}}var BgA=["sunnylqm@qq.com"];var hH=(A)=>BgA.includes(A);var $5=cg(PQA(),1),b5=process.env.SECRET||"secret";if(b5==="secret")console.warn("Should have secret configured on production mode.");function XS(A){return $5.default.sign(A,b5)}function TLI(A){let I=null;try{I=$5.default.verify(A,b5)}catch{}return I}function uM(A,I){let g=TLI(A);if(!g||g.exp<Date.now())return;if(I&&g.type!==I)return;return g}var xLI=2592000000;function c5(A){return XS({type:"user",uid:A,exp:Date.now()+xLI})}var MJ=new xI().derive({as:"scoped"},({headers:A,status:I})=>{let g=A["x-accesstoken"],C=g&&uM(g,"user");if(!C)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});return{userId:C.uid}}),lM=new xI().derive({as:"scoped"},async({headers:A,request:I,status:g})=>{let C=A["x-api-token"];if(C){let E=await at(C);if(!E)return g(401,{message:"\u65E0\u6548\u6216\u5DF2\u8FC7\u671F\u7684 API token"});let D=I.method;if(!nt(E,D))return g(403,{message:"API token \u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u8D44\u6E90"});return{userId:E.userId,apiTokenInfo:E,authType:"api_token"}}let B=A["x-accesstoken"],Q=B&&uM(B,"user");if(!Q)return g(401,{message:"\u8BF7\u5148\u767B\u5F55\u6216\u63D0\u4F9B\u6709\u6548\u7684 API token"});return{userId:Q.uid,authType:"user_token"}}),WH=new xI().use(lM).derive({as:"scoped"},async({userId:A,params:{appId:I},status:g})=>{let C=Number(I),B=await KJ({appId:C});if(!B||B.userId!==A)return g(403,{message:"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u5E94\u7528"});return{userId:A,appId:C,app:B}}),TQA=new xI().derive({as:"scoped"},async({headers:A,status:I})=>{let g=A["x-accesstoken"],C=g&&uM(g,"user");if(!C)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});let B=await vQ({userId:C.uid});if(!B||!hH(B.email))return I(403,{message:"no access"});return{user:B}});var $LI=p.Object({key:p.String(),value:p.String()}),bLI=p.Object({tier:p.Optional(p.String()),tierExpiresAt:p.Optional(p.Union([p.String(),p.Null()])),status:p.Optional(p.Union([p.Literal("normal"),p.Literal("unverified")])),quota:p.Optional(p.Union([p.Any(),p.Null()]))}),cLI=p.Object({name:p.Optional(p.String()),platform:p.Optional(p.Union([p.Literal("ios"),p.Literal("android"),p.Literal("harmony")])),userId:p.Optional(p.Union([p.Numeric(),p.Null()])),downloadUrl:p.Optional(p.Union([p.String(),p.Null()])),status:p.Optional(p.Union([p.String(),p.Null()])),ignoreBuildTime:p.Optional(p.Union([p.Literal("enabled"),p.Literal("disabled"),p.Null()]))}),oLI=p.Object({name:p.Optional(p.String()),description:p.Optional(p.Union([p.String(),p.Null()])),metaInfo:p.Optional(p.Union([p.String(),p.Null()]))}),xQA=new xI({prefix:"/admin"}).use(TQA).get("/config/:key?",async({params:A,status:I})=>{let{key:g}=A;if(g){let B=await Pg.hget(IE.dynamicConfig(),g);if(B===null)return I(404,{message:"config not found"});return{key:g,value:B}}return{data:await Pg.hgetall(IE.dynamicConfig())}},{detail:{hide:!0}}).post("/config",async({body:A})=>{let{key:I,value:g}=A;return await Pg.hset(IE.dynamicConfig(),I,g),{key:I,value:g}},{body:$LI,detail:{hide:!0}}).delete("/config/:key",async({params:{key:A},status:I})=>{if(!await Pg.hexists(IE.dynamicConfig(),A))return I(404,{message:"config not found"});return await Pg.hdel(IE.dynamicConfig(),A),{key:A,deleted:!0}},{detail:{hide:!0}}).get("/users",async({query:A})=>{let{search:I}=A,g=I?{OR:[{name:{contains:I}},{email:{contains:I}}]}:{};return{data:await BI.users.findMany({where:g,select:{id:!0,email:!0,name:!0,status:!0,tier:!0,tierExpiresAt:!0,quota:!0,createdAt:!0},orderBy:{id:"desc"},take:50})}},{query:p.Object({search:p.Optional(p.String())}),detail:{hide:!0}}).put("/users/:id",async({params:{id:A},body:I,status:g})=>{let C=Number(A);if(!await BI.users.findUnique({where:{id:C}}))return g(404,{message:"User not found"});let Q={};if(I.tier!==void 0)Q.tier=I.tier;if(I.status!==void 0)Q.status=I.status;if(I.tierExpiresAt!==void 0)Q.tierExpiresAt=I.tierExpiresAt?new Date(I.tierExpiresAt):null;if(I.quota!==void 0)Q.quota=I.quota;return await BI.users.update({where:{id:C},data:Q,select:{id:!0,email:!0,name:!0,status:!0,tier:!0,tierExpiresAt:!0,quota:!0}})},{body:bLI,detail:{hide:!0}}).get("/apps",async({query:A})=>{let{search:I}=A,g={};if(I){let B=Number(I),Q=[{appKey:{contains:I}},{name:{contains:I}}];if(!Number.isNaN(B)&&Number.isInteger(B))Q.push({id:B});g.OR=Q}return{data:await BI.apps.findMany({where:g,select:{id:!0,userId:!0,platform:!0,name:!0,appKey:!0,appSecret:!0,downloadUrl:!0,status:!0,ignoreBuildTime:!0,createdAt:!0,updatedAt:!0},orderBy:{id:"desc"},take:50})}},{query:p.Object({search:p.Optional(p.String())}),detail:{hide:!0}}).put("/apps/:id",async({params:{id:A},body:I,status:g})=>{let C=Number(A),B=await BI.apps.findUnique({where:{id:C}});if(!B)return g(404,{message:"App not found"});let Q={};if(I.name!==void 0)Q.name=I.name;if(I.platform!==void 0)Q.platform=I.platform;if(I.userId!==void 0)Q.userId=I.userId?Number(I.userId):null;if(I.downloadUrl!==void 0)Q.downloadUrl=I.downloadUrl;if(I.status!==void 0)Q.status=I.status;if(I.ignoreBuildTime!==void 0)Q.ignoreBuildTime=I.ignoreBuildTime;let E=await BI.apps.update({where:{id:C},data:Q,select:{id:!0,userId:!0,platform:!0,name:!0,appKey:!0,appSecret:!0,downloadUrl:!0,status:!0,ignoreBuildTime:!0,createdAt:!0,updatedAt:!0}}),D=[$8({appId:C})];if(E.userId)D.push(NS({userId:E.userId}));if(B.userId&&B.userId!==E.userId)D.push(NS({userId:B.userId}));return await Promise.all(D),E},{body:cLI,detail:{hide:!0}}).get("/versions",async({query:A})=>{let{search:I}=A,g={};if(I){let B=Number(I),Q=[{hash:{contains:I}},{name:{contains:I}}];if(!Number.isNaN(B)&&Number.isInteger(B))Q.push({appId:{contains:B}});g.OR=Q}return{data:await BI.versions.findMany({where:g,select:{id:!0,appId:!0,hash:!0,name:!0,description:!0,metaInfo:!0,config:!0,deps:!0,commit:!0,createdAt:!0},orderBy:{id:"desc"},take:50})}},{query:p.Object({search:p.Optional(p.String())}),detail:{hide:!0}}).put("/versions/:id",async({params:{id:A},body:I,status:g})=>{let C=Number(A);if(!await BI.versions.findUnique({where:{id:C}}))return g(404,{message:"Version not found"});let Q={};if(I.name!==void 0)Q.name=I.name;if(I.description!==void 0)Q.description=I.description;if(I.metaInfo!==void 0)Q.metaInfo=I.metaInfo;return await BI.versions.update({where:{id:C},data:Q,select:{id:!0,appId:!0,hash:!0,name:!0,description:!0,metaInfo:!0,deps:!0,commit:!0,createdAt:!0}})},{body:oLI,detail:{hide:!0}});var fLI=p.Object({name:p.String({minLength:1,maxLength:100}),permissions:p.Object({read:p.Optional(p.Boolean()),write:p.Optional(p.Boolean()),delete:p.Optional(p.Boolean())}),expiresAt:p.Optional(p.String({format:"date-time"}))}),vLI=p.Object({tokenId:p.Numeric()}),$QA=new xI({prefix:"/api-token"}).use(MJ).post("/create",async({userId:A,status:I,body:{name:g,permissions:C,expiresAt:B}})=>{if(await BI.api_tokens.count({where:{userId:A,revokedAt:null}})>=10)return I(400,{message:"\u6BCF\u4E2A\u7528\u6237\u6700\u591A\u53EA\u80FD\u521B\u5EFA 10 \u4E2A token\uFF0C\u8BF7\u5148\u64A4\u9500\u4E00\u4E9B\u4E0D\u9700\u8981\u7684 token"});if(!C.read&&!C.write&&!C.delete)return I(400,{message:"\u81F3\u5C11\u9700\u8981\u6307\u5B9A\u4E00\u4E2A\u6743\u9650\uFF08read\u3001write \u6216 delete\uFF09"});let E=lt(),D=J9(E),G=E.slice(-4),Y=null;if(B){if(Y=new Date(B),Number.isNaN(Y.getTime()))return I(400,{message:"\u65E0\u6548\u7684\u8FC7\u671F\u65F6\u95F4\u683C\u5F0F\uFF0C\u8BF7\u4F7F\u7528 ISO 8601 \u683C\u5F0F"});if(Y<new Date)return I(400,{message:"\u8FC7\u671F\u65F6\u95F4\u5FC5\u987B\u662F\u672A\u6765\u7684\u65F6\u95F4"})}let w=await BI.api_tokens.create({data:{userId:A,name:g,tokenHash:D,tokenSuffix:G,permissions:JSON.parse(JSON.stringify(C)),expiresAt:Y}});return{id:w.id,name:w.name,token:E,tokenSuffix:G,permissions:w.permissions,expiresAt:w.expiresAt,createdAt:w.createdAt}},{body:fLI,detail:{hide:!0}}).get("/list",async({userId:A})=>{return{data:(await BI.api_tokens.findMany({where:{userId:A},select:{id:!0,name:!0,tokenSuffix:!0,permissions:!0,expiresAt:!0,revokedAt:!0,lastUsedAt:!0,createdAt:!0,updatedAt:!0},orderBy:{createdAt:"desc"}})).map((g)=>({...g,isExpired:g.expiresAt?g.expiresAt<new Date:!1,isRevoked:!!g.revokedAt}))}},{detail:{hide:!0}}).delete("/:tokenId",async({userId:A,status:I,params:{tokenId:g}})=>{let C=await BI.api_tokens.findUnique({where:{id:g}});if(!C)return I(404,{message:"API token \u4E0D\u5B58\u5728"});if(C.userId!==A)return I(403,{message:"\u60A8\u6CA1\u6709\u6743\u9650\u64A4\u9500\u6B64 token"});if(C.revokedAt)return I(400,{message:"Token \u5DF2\u88AB\u64A4\u9500"});if(!await st(g))return I(500,{message:"\u64A4\u9500 token \u5931\u8D25"});return{message:"Token \u64A4\u9500\u6210\u529F"}},{params:vLI,detail:{hide:!0}});var bQA=p.Object({offset:p.Optional(p.Numeric()),limit:p.Optional(p.Numeric())}),o5;((g)=>{g.normal="normal";g.paused="paused"})(o5||={});var cQA=p.Object({offset:p.Optional(p.Numeric()),limit:p.Optional(p.Numeric()),status:p.Optional(p.Enum(o5))}),oQA=p.Object({appId:p.Numeric(),versionId:p.Optional(p.Numeric()),packageId:p.Optional(p.Numeric()),bindingId:p.Optional(p.Numeric())}),fQA=p.Object({bindingId:p.Numeric()}),vQA=p.Object({versionId:p.Numeric()}),_QA=p.Object({packageId:p.Numeric()}),SRg=p.Object({appId:p.Numeric(),versionId:p.Numeric()}),hRg=p.Object({appId:p.Numeric(),packageId:p.Numeric()}),pQA=p.Object({ext:p.String()}),mQA=p.Object({name:p.String(),platform:p.Union([p.Literal("ios"),p.Literal("android"),p.Literal("harmony")])}),dQA=p.Partial(p.Object({name:p.String(),downloadUrl:p.Nullable(p.String()),status:p.Nullable(p.Enum(o5)),ignoreBuildTime:p.Nullable(p.Union([p.Literal("enabled"),p.Literal("disabled")]))})),uQA=p.Object({hash:p.String(),name:p.String(),description:p.Optional(p.String()),metaInfo:p.Optional(p.String()),config:p.Optional(p.Object({rollout:p.Record(p.String(),p.Nullable(p.Number()))})),deps:p.Optional(p.Record(p.String(),p.String())),commit:p.Optional(p.Partial(p.Object({hash:p.String(),message:p.String(),author:p.String(),timestamp:p.String(),origin:p.String()})))}),lQA=p.Partial(p.Object({name:p.String(),description:p.String(),metaInfo:p.String(),config:p.Object({rollout:p.Record(p.String(),p.Nullable(p.Number()))})})),aQA=p.Object({hash:p.String(),name:p.String(),buildTime:p.String(),buildNumber:p.Optional(p.String()),note:p.Optional(p.String()),deps:p.Optional(p.Record(p.String(),p.String())),commit:p.Optional(p.Partial(p.Object({hash:p.String(),message:p.String(),author:p.String(),timestamp:p.String(),origin:p.String()})))}),nQA=p.Partial(p.Object({name:p.String(),note:p.Nullable(p.String()),status:p.String(),versionId:p.Nullable(p.Numeric())})),LRg=p.Union([p.Literal("full"),p.Literal("exp")]),sQA=p.Object({packageId:p.Numeric(),versionId:p.Numeric(),rollout:p.Optional(p.Nullable(p.Integer())),config:p.Optional(p.Record(p.String(),p.Any()))}),iRg=p.Object({packageId:p.Numeric()}),yRg=p.Object({email:p.String({format:"email"}),pwd:p.String()}),FRg=p.Object({token:p.String()}),ZRg=p.Object({email:p.String({format:"email"})}),WRg=p.Object({email:p.String({format:"email"}),pwd:p.String(),name:p.String()}),URg=p.Object({token:p.String(),newPwd:p.String()}),XRg=p.Object({orderNo:p.String()}),rQA=p.Object({fileName:p.String()}),tQA=p.Object({out_trade_no:p.String(),trade_no:p.String(),trade_status:p.String(),buyer_id:p.String(),gmt_payment:p.String()},{additionalProperties:!0}),eQA=p.Object({tier:p.String(),channel:p.Optional(p.String()),remark:p.Optional(p.String()),ret_url:p.Optional(p.String())}),AEA=p.Object({appKey:p.String()}),IEA=p.Object({packageVersion:p.String(),hash:p.Optional(p.Nullable(p.String())),toHash:p.Optional(p.String()),buildTime:p.Optional(p.String()),buildNumber:p.Optional(p.String()),cInfo:p.Optional(p.Partial(p.Object({rnu:p.String(),pushy:p.String(),rn:p.String(),os:p.String(),uuid:p.String()})))}),gEA=p.Object({token:p.String()}),f5=p.Object({email:p.String({format:"email"})}),CEA=p.Object({email:p.String({format:"email"}),pwd:p.String(),name:p.String()}),BEA=p.Object({token:p.String(),newPwd:p.String()}),jRg=p.Object({email:p.String({format:"email"})}),QEA=p.Object({email:p.String({format:"email"}),pwd:p.String()}),EEA=p.Object({offset:p.Optional(p.Numeric()),limit:p.Optional(p.Numeric()),type:p.Optional(p.Union([p.Literal("diffFromIpa"),p.Literal("diffFromApk"),p.Literal("diffFromApp"),p.Literal("diff"),p.Literal("hdiffFromIpa"),p.Literal("hdiffFromApk"),p.Literal("hdiff"),p.Literal("hdiffFromApp")])),fromHash:p.Optional(p.String()),toHash:p.Optional(p.String())});function DEA(A){if(A===null)return!1;return typeof A==="object"&&A instanceof Date===!1}function v5(A){if(A===null)return!0;if(A===void 0)return!0;if(A==="")return!0;if(A instanceof Date)return!1;if(typeof A==="boolean")return!1;if(typeof A==="number")return!1;if(Array.isArray(A)&&!A.length)return!0;if(DEA(A)&&!Object.keys(A).length)return!0;return!1}function _5(A){if(!DEA(A)&&!v5(A))return A;if(Array.isArray(A)){let g=0;return A.reduce((C,B)=>{if(!v5(B))C[g]=_5(B),g++;return C},[])}let I=Object.keys(A);if(I.length)return I.reduce((g,C)=>{if(!v5(A[C]))g[C]=_5(A[C]);return g},{})}var UH=_5;var My=cg(vM(),1);var Jy={free:{app:3,package:30,packageSize:"30m",bundle:30,bundleSize:"3m",pv:1000},standard:{app:5,package:50,packageSize:"150m",bundle:50,bundleSize:"15m",pv:1e4},premium:{app:10,package:60,packageSize:"500m",bundle:60,bundleSize:"50m",pv:1e5},pro:{app:50,package:100,packageSize:"2000m",bundle:100,bundleSize:"200m",pv:1e6},vip1:{app:50,package:100,packageSize:"2000m",bundle:100,bundleSize:"200m",pv:1e7},vip2:{app:50,package:100,packageSize:"2000m",bundle:100,bundleSize:"200m",pv:50000000},vip3:{app:50,package:100,packageSize:"2000m",bundle:100,bundleSize:"200m",pv:1e8}},jS={free:{price:0,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u514D\u8D39\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u514D\u8D39\u7248"},standard:{price:800,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u6807\u51C6\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u6807\u51C6\u7248\u4E00\u5E74\u671F\u670D\u52A1"},premium:{price:2400,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u9AD8\u7EA7\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u9AD8\u7EA7\u7248\u4E00\u5E74\u671F\u670D\u52A1"},pro:{price:7200,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u4E13\u4E1A\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u4E13\u4E1A\u7248\u4E00\u5E74\u671F\u670D\u52A1"},vip1:{price:30000,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP1",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP1 \u4E00\u5E74\u671F\u670D\u52A1"},vip2:{price:60000,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP2",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP2 \u4E00\u5E74\u671F\u670D\u52A1"},vip3:{price:120000,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP3",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5927\u5BA2\u6237 VIP3 \u4E00\u5E74\u671F\u670D\u52A1"},custom:{price:0,title:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5B9A\u5236\u7248",summary:"Pushy \u70ED\u66F4\u65B0\u670D\u52A1\u5B9A\u5236\u7248\u4E00\u5E74\u671F\u670D\u52A1"}};async function QG({user:A,userId:I}){let g=My.default(),C=A||await vQ({userId:I});if(!C)throw Error("User not found");if(C.tierExpiresAt){let B=My.default(C.tierExpiresAt);if(g.isAfter(B,"day"))C=await BI.users.update({data:{tier:"free",tierExpiresAt:null},where:{id:I}})}if(C.tier==="custom"||C.quota){let B=C.quota;if(B.base&&Jy[B.base])B={...Jy[B.base],...B};return B}return Jy[C.tier]}async function GEA({user:A}){let I=await QG({user:A}),g=A.id,C=await b8({userId:g}),Q=(await m5(C.map((D)=>D.appKey))).reduce((D,G)=>D+Number(G),0),E=I.pv;await Pg.zadd(IE.userCheckUpdateQuota(),E-Q,String(g))}async function wEA({user:A}){let I=await p5({user:A,days:7});return{counts:I,avg:Math.floor(I?.reduce((g,C)=>g+C,0)/7)}}async function p5({user:A,day:I,days:g}){let C=(await QG({user:A})).pv,B=A.id;if(g){let E=My.default(),D=Pg.pipeline();for(let Y=0;Y<g;Y++){let w=E.subtract(Y,"day");D.zscore(IE.userCheckUpdateQuota(w),String(B))}return(await D.exec())?.map(([Y,w])=>{if(w)return Number(w);return C})}let Q=await Pg.zscore(IE.userCheckUpdateQuota(I),String(B));if(Q)return Number(Q);return C}async function m5(A){if(A.length===0)return[];return await Pg.zmscore(IE.appCheckUpdate(),A)}var OS=cg(dM(),1),_LI=[8673,8672,14849],XH=new xI().derive({as:"scoped"},async({body:A,params:{appId:I},status:g})=>{let C=A?.deps;if(!C)return;if(_LI.includes(Number(I)))return;for(let[B,Q]of Object.entries(C))if(B==="react-native-update"){if(OS.default(Q,"<8"))return g(400,{message:`react-native-update \u5F53\u524D\u7248\u672C(${Q})\u5DF2\u4E0D\u518D\u652F\u6301\uFF0C\u8BF7\u6267\u884C "npm i react-native-update@8" \u66F4\u65B0\u5230 v8 \u7248\u672C\u540E\u91CD\u65B0\u6253\u5305 `});if(OS.default(Q,"8.0.0 - 8.5.5"))return g(400,{message:`react-native-update \u5F53\u524D\u7248\u672C(${Q})\u5DF2\u4E0D\u518D\u652F\u6301\uFF0C\u8BF7\u6267\u884C "npm i react-native-update@8" \u66F4\u65B0\u540E\u91CD\u65B0\u6253\u5305 `});if(OS.default(Q,"9.0.0 - 9.2.4"))return g(400,{message:`react-native-update \u5F53\u524D\u7248\u672C(${Q})\u5DF2\u4E0D\u518D\u652F\u6301\uFF0C\u8BF7\u6267\u884C "npm i react-native-update@9" \u66F4\u65B0\u540E\u91CD\u65B0\u6253\u5305 `});if(OS.default(Q,"10.0.0 - 10.26.4"))return g(400,{message:`react-native-update \u5F53\u524D\u7248\u672C(${Q})\u5DF2\u4E0D\u518D\u652F\u6301\uFF0C\u8BF7\u6267\u884C "npm i react-native-update@10" \u66F4\u65B0\u540E\u91CD\u65B0\u6253\u5305 `})}});var Ny=({types:A,fromHash:I,toHash:g,platform:C})=>{if(C)A=C==="harmony"?["hdiffFromApp"]:[`diffFrom${SH[C]}`,`hdiffFrom${SH[C]}`];if(!A)return;BI.tasks.createMany({data:A.map((B)=>({type:B,fromHash:I,toHash:g}))}).catch(()=>{})},YEA=({app:A,toHash:I})=>{BI.packages.findMany({where:{appId:A.id,status:"normal"},orderBy:{createdAt:"desc"},select:{hash:!0},skip:0,take:5}).then((g)=>{let C=g.map((B)=>({type:`hdiffFrom${SH[A.platform]}`,fromHash:B.hash,toHash:I}));BI.tasks.createMany({data:C}).catch(()=>{})})};var KEA=new xI({prefix:"/binding"}).use(WH).use(XH).get("/",async({query:{packageId:A},appId:I})=>{let g=Number(A);return{data:await BI.bindings.findMany({where:g?{packageId:g,appId:I}:{appId:I},select:{id:!0,versionId:!0,packageId:!0,rollout:!0}})}}).post("/",async({appId:A,app:I,status:g,body:C})=>{let{versionId:B,rollout:Q,config:E,packageId:D}=C,G=await BI.packages.findUnique({where:{id:D,appId:A},select:{id:!0,hash:!0,name:!0,buildTime:!0}});if(!G)return g(403,{message:"\u539F\u751F\u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u5E94\u7528"});let Y=await BI.versions.findUnique({where:{id:B,appId:A},select:{id:!0,hash:!0,config:!0}});if(!Y)return g(403,{message:"\u70ED\u66F4\u65B0\u7248\u672C\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u5E94\u7528"});let w="full";if(Q!==null&&Q!==void 0&&Q<100)w="exp";try{let J=await BI.$transaction(async(M)=>{if(await M.bindings.deleteMany({where:{OR:[{packageId:D,type:w},{packageId:D,versionId:B}]}}),await M.packages.update({where:{id:D},data:{versionId:null}}),Y.config?.rollout?.[D])delete Y.config.rollout[D];return await M.versions.update({where:{id:B},data:{config:Y.config}}),M.bindings.create({data:{appId:A,packageId:D,versionId:B,type:w,rollout:Q,config:E}})});return Ny({platform:I.platform,fromHash:G.hash,toHash:Y.hash}),{data:J}}catch(J){return console.error(J),g(403,{message:"\u521B\u5EFA\u6216\u66F4\u65B0\u7ED1\u5B9A\u5931\u8D25\uFF0C\u6700\u591A\u53EA\u80FD\u540C\u65F6\u7ED1\u5B9A\u4E00\u4E2A\u5168\u91CF\u548C\u4E00\u4E2A\u7070\u5EA6\u7248\u672C"})}},{body:sQA}).guard({params:fQA}).delete("/:bindingId",async({params:{bindingId:A},appId:I,status:g})=>{try{return await BI.bindings.delete({where:{id:A,appId:I}}),{}}catch(C){return console.error(C),g(403,{message:"\u5220\u9664\u7ED1\u5B9A\u5931\u8D25"})}});var NyA=cg(YyA(),1),qP=cg(JyA(),1);var xE={region:process.env.OSS_REGION,accessKey:process.env.OSS_ACCESSKEY,secretKey:process.env.OSS_SECRETKEY,maxSize:"500m",bucket:process.env.OSS_BUCKET,cdnUrl:"https://dl.charmlot.com",backupCdnUrls:["https://dl.rnpushy.cn","https://pushy.cdn.dfyun.com.cn"]};function MyA(A,I=1){if(A.length===0)return[];if(I>=A.length)return[...A].sort(()=>Math.random()-0.5);if(I<=0)return[];let g=Array.from({length:A.length},(B,Q)=>Q),C=[];for(let B=0;B<I;B++){let Q=Math.floor(Math.random()*g.length),E=g[Q];C.push(A[E]),g.splice(Q,1)}return C}var RP=process.env.ENV==="aliyun",xF=new NyA.default({region:xE.region,accessKeyId:xE.accessKey,accessKeySecret:xE.secretKey,bucket:xE.bucket,internal:RP}),ioI=`https://${xE.bucket}.${xE.region}.aliyuncs.com`,yoI=`https://${xE.bucket}.${xE.region}-internal.aliyuncs.com`,FoI=`https://${xE.bucket}.oss-accelerate.aliyuncs.com`,ZoI=qP.default(xE.maxSize||"20m");function kyA({internal:A,maxSize:I}){let g={expiration:new Date(Date.now()+600000).toISOString(),conditions:[{bucket:xE.bucket},["content-length-range",0,I?qP.default(I):ZoI]]},C={...xF.calculatePostSignature(g),"x-oss-forbid-overwrite":"true",key:sw(21)};return{url:A&&RP?yoI:ioI,backupUrl:FoI,formData:C,maxSize:I}}async function HyA(A){if(await Pq(A)){if(RP)return xF.signatureUrl(A);return`${xE.cdnUrl}/${A}`}throw Error(`Key ${A} not found`)}var WoI=[xE.cdnUrl,...xE.backupCdnUrls];function qyA(){let I=CgA().cdn;if(I)try{let g=JSON.parse(I);if(Array.isArray(g)&&g.length>0)return g}catch{}return WoI}var RyA=()=>{let[A,...I]=qyA();return[A,...MyA(I,2)].map((g)=>g.replace("https://",""))};function $F(A){return qyA().map((I)=>`${I}/${A}`)}async function Pq(A){try{return await xF.head(A),!0}catch{}return!1}function bF(A){return xF.delete(A)}async function SyA({appId:A,status:I,offset:g,limit:C}){let B={appId:A,status:I};if(I)B.status=I;let[Q,E]=await Promise.all([BI.packages.count({where:B}),BI.packages.findMany({where:B,orderBy:{id:"desc"},select:{id:!0,hash:!0,name:!0,status:!0,buildTime:!0,buildNumber:!0,note:!0,deps:!0,commit:!0,versions:{select:{id:!0,name:!0,hash:!0}},bindings:{select:{id:!0,type:!0,versions:{select:{id:!0,name:!0,hash:!0}}},orderBy:{createdAt:"desc"}}},skip:g,take:C})]);return{data:UH(E),count:Q}}var hyA=new xI({prefix:"/package"}).use(XH).use(WH).post("/create",async({userId:A,appId:I,status:g,body:{hash:C,name:B,buildTime:Q,note:E,deps:D,commit:G,buildNumber:Y}})=>{let w=await QG({userId:A});if(await BI.packages.count({where:{appId:I}})>=w.package)return g(403,{message:`\u6BCF\u4E2A\u5E94\u7528\u6700\u591A\u53EF\u4EE5\u53D1\u5E03${w.package}\u4E2A\u539F\u751F\u5305\u3002\u8BF7\u5148\u5220\u9664\u73B0\u6709\u7684\u539F\u751F\u5305\u6216\u5347\u7EA7\u5230\u66F4\u9AD8\u7EA7\u522B\u670D\u52A1\u3002`});try{return{id:(await BI.packages.create({data:{appId:I,hash:C,name:B,buildTime:Q,note:E,deps:D,commit:G,buildNumber:Y}})).id}}catch(M){return console.error(M),g(403,{message:"\u521B\u5EFA\u5305\u5931\u8D25\uFF08\u8BF7\u68C0\u67E5\u539F\u751F\u7248\u672C\u662F\u5426\u91CD\u590D\uFF09"})}},{body:aQA}).get("/list",async({appId:A,query:{offset:I=0,limit:g=10,status:C}})=>{return[26383].includes(A)?await _M({cacheKey:`packageList_${A}_${I}_${g}_${C}`,handler:()=>SyA({appId:A,offset:I,limit:g,status:C})}):SyA({appId:A,offset:I,limit:g,status:C})},{query:cQA}).guard({params:_QA}).delete("/:packageId",async({params:{packageId:A},appId:I})=>{let g=await BI.packages.findUnique({where:{appId:I,id:A}});if(g){let{hash:C}=g;await BI.packages.delete({where:{appId:I,id:A}}),bF(C)}return{}}).put("/:packageId",async({params:{packageId:A},appId:I,app:g,status:C,body:B})=>{let{versionId:Q}=B;if(Q){let E=await BI.versions.findUnique({where:{id:Q,appId:I},select:{id:!0,hash:!0,config:!0}});if(!E)return C(403,{message:"versionId \u9519\u8BEF\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u5E94\u7528"});let D=await BI.packages.findUnique({where:{id:A,appId:I},select:{hash:!0,name:!0,buildTime:!0,deps:!0,versions:{select:{hash:!0,config:!0}}}});if(!D)return C(403,{message:"packageId \u9519\u8BEF\u6216\u4E0D\u5C5E\u4E8E\u5F53\u524D\u5E94\u7528"});Ny({platform:g.platform,fromHash:D.hash,toHash:E.hash})}return await BI.packages.update({where:{appId:I,id:A},data:B}),{}},{body:nQA});function SP(A){if(!A||typeof A!=="object")return!1;let I=Object.getPrototypeOf(A);if(!(I===null||I===Object.prototype||Object.getPrototypeOf(I)===null))return!1;return Object.prototype.toString.call(A)==="[object Object]"}function LyA(A){return A==="__proto__"}function Tq(A,I){let g=Object.keys(I);for(let C=0;C<g.length;C++){let B=g[C];if(LyA(B))continue;let Q=I[B],E=A[B];if(iyA(Q)&&iyA(E))A[B]=Tq(E,Q);else if(Array.isArray(Q))A[B]=Tq([],Q);else if(SP(Q))A[B]=Tq({},Q);else if(E===void 0||Q!==void 0)A[B]=Q}return A}function iyA(A){return SP(A)||Array.isArray(A)}var yyA=new xI({prefix:"/version"}).use(XH).use(WH).post("/create",async({userId:A,appId:I,status:g,body:{hash:C,name:B,description:Q,metaInfo:E,config:D,deps:G,commit:Y},app:w})=>{let J=await QG({userId:A});if(await BI.versions.count({where:{appId:I}})>=J.bundle)return g(403,{message:`\u6BCF\u4E2A\u5E94\u7528\u6700\u591A\u53EF\u4EE5\u521B\u5EFA${J.bundle}\u4E2A\u70ED\u66F4\u65B0\u3002\u8BF7\u5148\u5220\u9664\u73B0\u6709\u7684\u70ED\u66F4\u65B0\u6216\u5347\u7EA7\u5230\u66F4\u9AD8\u7EA7\u522B\u670D\u52A1\u3002`});let K=await BI.versions.create({data:{appId:I,hash:C,name:B||"(untitled)",description:Q,metaInfo:E,config:D,deps:G,commit:Y}});return YEA({app:w,toHash:K.hash}),{id:K.id}},{body:uQA}).get("/list",async({appId:A,query:{offset:I=0,limit:g=10}})=>{let[C,B]=await Promise.all([BI.versions.count({where:{appId:A}}),BI.versions.findMany({where:{appId:A},orderBy:{id:"desc"},select:{id:!0,hash:!0,name:!0,description:!0,metaInfo:!0,config:!0,deps:!0,commit:!0,createdAt:!0,packages:{select:{id:!0,name:!0,status:!0}}},skip:I,take:g})]);return{data:UH(B),count:C}},{query:bQA}).guard({params:vQA}).delete("/:versionId",async({params:{versionId:A},appId:I})=>{let g=await BI.versions.findUnique({where:{appId:I,id:A}});if(g){let{hash:C}=g;await BI.versions.delete({where:{appId:I,id:A}}),bF(C)}return{}}).put("/:versionId",async({params:{versionId:A},appId:I,body:g})=>{let{name:C,description:B,metaInfo:Q,config:E}=g;if(E){let D=await BI.versions.findUnique({where:{appId:I,id:A}});if(D&&typeof D.config==="object"&&D.config!==null)E=Tq(D.config,E)}return await BI.versions.update({where:{appId:I,id:A},data:{name:C,description:B,metaInfo:Q,config:E}}),{}},{body:lQA});var FyA=new xI({prefix:"/app"}).use(lM).post("/create",async({userId:A,status:I,body:{name:g,platform:C}})=>{if(!A)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});let B=await QG({userId:A});if(await BI.apps.count({where:{userId:A}})>=B.app)return I(403,{message:`\u60A8\u76EE\u524D\u6700\u591A\u53EF\u4EE5\u521B\u5EFA${B.app}\u4E2A\u5E94\u7528\u3002\u8BF7\u5148\u5220\u9664\u5DF2\u6709\u5E94\u7528\u6216\u5347\u7EA7\u5230\u66F4\u9AD8\u7EA7\u522B\u670D\u52A1\u3002`});let E=sw(24),D=sw(24);return{id:(await BI.apps.create({data:{userId:A,name:g,platform:C,appKey:E,appSecret:D}})).id}},{body:mQA}).get("/list",async({userId:A})=>{if(!A)return{data:[]};let I=await b8({userId:A}),g=I.map((B)=>B.appKey),C=await m5(g);return{data:UH(I.map((B,Q)=>({...B,checkCount:C[Q]})))}}).group("/:appId",{params:oQA},(A)=>A.delete("/",async({userId:I,status:g,params:{appId:C}})=>{let B=await BI.packages.count({where:{appId:C}});if(B>0)return g(403,{message:`\u8BF7\u5148\u6E05\u7A7A\u6B64\u5E94\u7528\u4E0B\u7684\u6240\u6709\u539F\u751F\u5305(\u73B0\u6709${B}\u4E2A)`});let Q=await BI.versions.count({where:{appId:C}});if(Q>0)return g(403,{message:`\u8BF7\u5148\u6E05\u7A7A\u6B64\u5E94\u7528\u4E0B\u7684\u6240\u6709\u70ED\u66F4\u5305(\u73B0\u6709${Q}\u4E2A)`});if(!await BI.apps.delete({where:{userId:I,id:C}}))return g(404);return{}}).get("/",async({userId:I,status:g,params:{appId:C}})=>{let B=await KJ({appId:C});if(!B||B?.userId!==I)return g(404);return B}).put("/",async({userId:I,status:g,params:{appId:C},body:B})=>{if(B.ignoreBuildTime==="enabled"){let E=await vQ({userId:I});if(!E)return g(404);if(E.tier==="free"||E.tier==="standard")return g(403,{message:"\u6B64\u529F\u80FD\u9700\u8981\u9AD8\u7EA7\u7248\u4EE5\u4E0A"})}if(!await BI.apps.update({where:{userId:I,id:C},data:B}))return g(404);return await Promise.all([$8({appId:C}),NS({userId:I})]),{}},{body:dQA}).use(yyA).use(hyA).use(KEA));var UoI=p.Object({offset:p.Optional(p.Numeric()),limit:p.Optional(p.Numeric()),userId:p.Optional(p.Numeric()),method:p.Optional(p.String()),path:p.Optional(p.String()),startDate:p.Optional(p.String({format:"date-time"})),endDate:p.Optional(p.String({format:"date-time"}))}),XoI=["sunnylqm@qq.com","sunnylqm@gmail.com"],ZyA=new xI({prefix:"/audit"}).use(MJ).get("/logs",async({userId:A,status:I,query:{offset:g=0,limit:C=50,userId:B,method:Q,path:E,startDate:D,endDate:G}})=>{let Y=await vQ({userId:A});if(!Y)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});let w=XoI.includes(Y.email),J;if(!w){if(B&&B!==A)return I(403,{message:"\u65E0\u6743\u67E5\u770B\u5176\u4ED6\u7528\u6237\u7684\u5BA1\u8BA1\u65E5\u5FD7"});J=A}else J=B??A;let M={};if(J)M.userId=J;if(Q)M.method=Q;if(E)M.path=E;if(D||G){if(M.createdAt={},D)M.createdAt.gte=new Date(D);if(G)M.createdAt.lte=new Date(G)}let[K,N]=await Promise.all([BI.audit_logs.findMany({where:M,orderBy:{createdAt:"desc"},skip:Number(g),take:Number(C),select:{id:!0,userId:!0,method:!0,path:!0,data:!0,statusCode:!0,ip:!0,userAgent:!0,createdAt:!0,apiTokens:{select:{tokenSuffix:!0}}}}),BI.audit_logs.count({where:M})]);return{data:K,total:N,offset:Number(g),limit:Number(C)}},{query:UoI});var XyA=cg(vM(),1);var joI=300000,OoI=3600000,xq="\x1F",VoI=p.Object({start:p.String({format:"date-time"}),end:p.String({format:"date-time"}),mode:p.Optional(p.Union([p.Literal("pv"),p.Literal("uv")])),dataKey:p.Optional(p.String()),dataValue:p.Optional(p.String())}),zoI=p.Object({appKey:p.String(),start:p.String({format:"date-time"}),end:p.String({format:"date-time"}),dataKey:p.Optional(p.String()),dataValue:p.Optional(p.String()),mode:p.Optional(p.Union([p.Literal("pv"),p.Literal("uv")]))});function PoI(A){return XyA.default(A).format("YYYYMMDDHHmm")}function cF(A,I){return`${A}${xq}${I}`}function WyA(A){let I=Number(A.slice(0,4)),g=Number(A.slice(4,6)),C=Number(A.slice(6,8)),B=Number(A.slice(8,10)),Q=Number(A.slice(10,12));if(!Number.isFinite(I)||!Number.isFinite(g)||!Number.isFinite(C)||!Number.isFinite(B)||!Number.isFinite(Q))return null;return new Date(I,g-1,C,B,Q)}function UyA(A,I,g){let C=Math.floor(A.getTime()/g)*g,B=Math.floor(I.getTime()/g)*g,Q=[];for(let E=C;E<=B;E+=g)Q.push(PoI(new Date(E)));return Q}function oF(A,I,g){let C=g.get(A);if(C!==void 0)return C;let B=I.length;return I.push(A),g.set(A,B),B}var jyA=new xI({prefix:"/metrics"}).get("/global",async({query:A,status:I})=>{let{start:g,end:C,mode:B="pv",dataKey:Q,dataValue:E}=A,D=new Date(g),G=new Date(C);if(Number.isNaN(D.getTime())||Number.isNaN(G.getTime()))return I(400,{message:"invalid start or end"});if(Q&&E===void 0)return I(400,{message:"dataValue is required"});let Y=UyA(D,G,OoI),w=Pg.pipeline();for(let k of Y){let q=B==="uv"?`cu:agg:uv:${k}:global`:`cu:agg:${k}:global`;if(Q){let S=cF(String(Q),String(E));w.hget(q,S)}else w.hgetall(q)}let J=await w.exec(),M=[],K=new Map,N=Y.map((k,q)=>{let S=J?.[q],H=WyA(k),F=H?H.toISOString():k;if(Q){let U=S&&!S[0]?Number(S[1]??0):0,P=cF(String(Q),String(E));if(!Number.isFinite(U)||U===0)return{time:F,data:[]};let i=oF(P,M,K);return{time:F,data:[[i,U]]}}let y=S&&!S[0]?S[1]:null,Z=[];if(y)for(let[U,P]of Object.entries(y)){let i=Number(P);if(!Number.isFinite(i)||i===0)continue;let j=oF(U,M,K);Z.push([j,i])}return{time:F,data:Z}});if(M.length===0)return{dict:[],data:[]};return{dict:M,data:N}},{query:VoI}).use(lM).get("/app",async({query:A,status:I,userId:g})=>{let{appKey:C,start:B,end:Q,dataKey:E,dataValue:D,mode:G}=A,Y=new Date(B),w=new Date(Q);if(Number.isNaN(Y.getTime())||Number.isNaN(w.getTime()))return I(400,{message:"invalid start or end"});if(G==="uv")return I(400,{message:"uv is only supported for global metrics"});let J=await KJ({appKey:C});if(!J)return I(404,{message:"app not found"});let M=await vQ({userId:g});if(!M)return I(401,{message:"\u8BF7\u5148\u767B\u5F55"});if(!hH(M.email)&&J.userId!==g)return I(403,{message:"no access to app"});if(E&&D===void 0)return I(400,{message:"dataValue is required"});let K=UyA(Y,w,joI),N=Pg.pipeline();for(let U of K){let P=`cu:agg:${U}:app:${C}`;if(E){let i=cF(String(E),String(D));N.hget(P,i)}else N.hgetall(P)}let k=await N.exec(),q=[],S=new Map,H=K.map((U,P)=>{let i=k?.[P],j=WyA(U),X=j?j.toISOString():U;if(E){let $=i&&!i[0]?Number(i[1]??0):0,c=cF(String(E),String(D));if(!Number.isFinite($)||$===0)return{time:X,data:[]};let z=oF(c,q,S);return{time:X,data:[[z,$]]}}let W=i&&!i[0]?i[1]:null,O=[];if(W)for(let[$,c]of Object.entries(W)){let z=Number(c);if(!Number.isFinite(z)||z===0)continue;let f=oF($,q,S);O.push([f,z])}return{time:X,data:O}});if(q.length===0)return{dict:[],data:[]};let F=[];for(let U of q)if(U.startsWith(`hash${xq}`)){let P=U.slice(`hash${xq}`.length);if(P&&P!=="unknown")F.push(P)}let y=new Map;if(F.length>0){let U=await BI.versions.findMany({where:{appId:J.id,hash:{in:F}},select:{hash:!0,name:!0}});y=new Map(U.map((P)=>[P.hash,P.name]))}return{dict:q.map((U)=>{if(U.startsWith(`hash${xq}`)){let P=U.slice(`hash${xq}`.length),i=y.get(P);if(i)return`hash${xq}${i}`}return U}),data:H}},{query:zoI});var vJ=cg(vM(),1);var ovI=s4A(),fvI=$E(),vvI=RFA(),_vI=LFA(),pvI=FFA(),mvI=UFA(),dvI=OFA(),uvI=TFA(),JZg=x2(),MZg=ww(),NZg=(process.env.ETHEREAL_API||"https://api.nodemailer.com").replace(/\/+$/,""),kZg=(process.env.ETHEREAL_WEB||"https://ethereal.email").replace(/\/+$/,""),HZg=(process.env.ETHEREAL_API_KEY||"").replace(/\s*/g,"")||null,qZg=["true","yes","y","1"].includes((process.env.ETHEREAL_CACHE||"yes").toString().trim().toLowerCase());var vP=function(A,I){let g,C,B;if(typeof A==="object"&&typeof A.send!=="function"||typeof A==="string"&&/^(smtps?|direct):/i.test(A)){if(g=typeof A==="string"?A:A.url)C=fvI.parseConnectionUrl(g);else C=A;if(C.pool)A=new vvI(C);else if(C.sendmail)A=new pvI(C);else if(C.streamTransport)A=new mvI(C);else if(C.jsonTransport)A=new dvI(C);else if(C.SES){if(C.SES.ses&&C.SES.aws){let Q=Error("Using legacy SES configuration, expecting @aws-sdk/client-sesv2, see https://nodemailer.com/transports/ses/");throw Q.code="LegacyConfig",Q}A=new uvI(C)}else A=new _vI(C)}return B=new ovI(A,C,I),B};var _P={pool:!0,host:process.env.SMTP_HOST,secure:!0,rateLimit:10,auth:{user:process.env.SMTP_USER,pass:process.env.SMTP_PASS},from:process.env.SMTP_FROM};var avI=vP(_P);async function v2(A){return avI.sendMail({...A,from:_P.from}).catch((I)=>console.error(I))}class _2{#A;#I=0;#g=new Map;#C=new Map;constructor(A){this.#A=A}get cache(){return this.#g}get _cache(){return this.#C}get(A,I){let g=this.#g.get(A),C=I?.maxAge,B;function Q(){return B=B||Date.now(),B}if(g){if(g.expired&&Q()>g.expired)g.expired=0,g.value=void 0;else if(C!==void 0){let E=C?Q()+C:0;g.expired=E}return g.value}if(g=this.#C.get(A),g){if(g.expired&&Q()>g.expired)g.expired=0,g.value=void 0;else if(this._update(A,g),C!==void 0){let E=C?Q()+C:0;g.expired=E}return g.value}}set(A,I,g){let C=g?.maxAge,B=C?Date.now()+C:0,Q=this.#g.get(A);if(Q)Q.expired=B,Q.value=I;else Q={value:I,expired:B},this._update(A,Q)}keys(){let A=new Set,I=Date.now();for(let[C,B]of this.#g.entries())g(C,B);for(let[C,B]of this.#C.entries())g(C,B);function g(C,B){if(B.value&&!B.expired||B.expired>=I)A.add(C)}return Array.from(A)}reset(){this.#I=0,this.#g.clear(),this.#C.clear()}_update(A,I){if(this.#g.set(A,I),this.#I++,this.#I>=this.#A)this.#I=0,this.#C=this.#g,this.#g=new Map}}import{randomBytes as nvI,createHash as svI}from"crypto";import{Readable as xFA}from"stream";import{performance as rvI}from"perf_hooks";import{ReadableStream as tvI,TransformStream as evI}from"stream/web";import{Blob as A_I}from"buffer";var AI={kSocketId:Symbol("socket id"),kSocketStartTime:Symbol("socket start time"),kSocketConnectedTime:Symbol("socket connected time"),kSocketConnectErrorTime:Symbol("socket connectError time"),kSocketRequestEndTime:Symbol("socket request end time"),kSocketLocalAddress:Symbol("socket local address"),kSocketLocalPort:Symbol("socket local port"),kSocketConnectHost:Symbol("socket connect params: host"),kSocketConnectPort:Symbol("socket connect params: port"),kSocketConnectProtocol:Symbol("socket connect params: protocol"),kHandledRequests:Symbol("handled requests per socket"),kHandledResponses:Symbol("handled responses per socket"),kRequestSocket:Symbol("request on the socket"),kRequestId:Symbol("request id"),kRequestStartTime:Symbol("request start time"),kEnableRequestTiming:Symbol("enable request timing or not"),kRequestTiming:Symbol("request timing"),kRequestOriginalOpaque:Symbol("request original opaque"),kRequestInternalOpaque:Symbol("request internal opaque"),kErrorSocket:Symbol("socket of error")};var I_I={'"':"\\\"","\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"},g_I=/[\u0000-\u001F\u005C]/g;function C_I(A){return I_I[A]||"\\u"+(A.charCodeAt(0)+65536).toString(16).substring(1)}function B_I(A){return A.replace(g_I,C_I)}function $FA(A,I){if(typeof I==="function")A=I(A);else if(I)A=B_I(A);try{A=JSON.parse(A)}catch(g){if(g.name==="SyntaxError")g.name="JSONResponseFormatError";if(A.length>1024)g.message+=" (data json format: "+JSON.stringify(A.slice(0,512))+" ...skip... "+JSON.stringify(A.slice(A.length-512))+")";else g.message+=" (data json format: "+JSON.stringify(A)+")";throw g}return A}function pP(A){let I=svI("md5");return I.update(A,"utf8"),I.digest("hex")}var Q_I=/(\w{1,100})=["']?([^'"]+)["']?/,E_I=0,D_I="00000000";function bFA(A,I,g,C){let B=g.split(","),Q={};for(let S of B){let H=S.match(Q_I);if(H)Q[H[1]]=H[2].replace(/["']/g,"")}if(!Q.realm||!Q.nonce)return"";let E=Q.qop||"",D=C.indexOf(":"),G=C.substring(0,D),Y=C.substring(D+1),w=String(++E_I);w=`${D_I.substring(w.length)}${w}`;let J=nvI(8).toString("hex"),M=pP(`${G}:${Q.realm}:${Y}`),K=pP(`${A.toUpperCase()}:${I}`),N=`${M}:${Q.nonce}`;if(E)E=E.split(",")[0],N+=`:${w}:${J}:${E}`;N+=`:${K}`;let k=pP(N),q=`Digest username="${G}", realm="${Q.realm}", nonce="${Q.nonce}", uri="${I}", response="${k}"`;if(Q.opaque)q+=`, opaque="${Q.opaque}"`;if(E)q+=`, qop=${E}, nc=${w}, cnonce="${J}"`;return q}var G_I=Math.pow(2,31)-10,dF={};function yN(A){if(!dF[A]||dF[A]>=G_I)dF[A]=0;return++dF[A]}function VD(A,I){return Math.floor(((I??rvI.now())-A)*1000)/1000}function FN(A){if(typeof xFA.isReadable==="function")return xFA.isReadable(A);return A!==null&&typeof A==="object"&&typeof A.pipe==="function"&&A.readable!==!1&&typeof A._read==="function"&&typeof A._readableState==="object"}function cq(A,I,g){let C=I[AI.kRequestSocket]??g?.[AI.kErrorSocket];if(C){if(A.id=C[AI.kSocketId],A.handledRequests=C[AI.kHandledRequests],A.handledResponses=C[AI.kHandledResponses],C[AI.kSocketLocalAddress])A.localAddress=C[AI.kSocketLocalAddress],A.localPort=C[AI.kSocketLocalPort];if(C.remoteAddress)A.remoteAddress=C.remoteAddress,A.remotePort=C.remotePort,A.remoteFamily=C.remoteFamily;if(Array.isArray(C.autoSelectFamilyAttemptedAddresses))A.attemptedRemoteAddresses=C.autoSelectFamilyAttemptedAddresses;if(A.bytesRead=C.bytesRead,A.bytesWritten=C.bytesWritten,C[AI.kSocketConnectErrorTime])A.connectErrorTime=C[AI.kSocketConnectErrorTime],A.connectProtocol=C[AI.kSocketConnectProtocol],A.connectHost=C[AI.kSocketConnectHost],A.connectPort=C[AI.kSocketConnectPort];if(C[AI.kSocketConnectedTime])A.connectedTime=C[AI.kSocketConnectedTime];if(C[AI.kSocketRequestEndTime])A.lastRequestEndTime=C[AI.kSocketRequestEndTime];C[AI.kSocketRequestEndTime]=new Date}}function mP(A){let I={};for(let[g,C]of A.entries())if(I[g]){if(!Array.isArray(I[g]))I[g]=[I[g]];I[g].push(C)}else I[g]=C;return I}function cFA(){if(typeof global.ReadableStream>"u")global.ReadableStream=tvI;if(typeof global.TransformStream>"u")global.TransformStream=evI;if(typeof global.Blob>"u")global.Blob=A_I;if(typeof global.DOMException>"u")global.DOMException=w_I()}function w_I(){try{atob(0)}catch(A){return A.constructor}}var xZA=cg(oq(),1),$ZA=cg(lP(),1),GT=cg(g4(),1),bZA=cg(q4(),1);import eF from"diagnostics_channel";import{EventEmitter as JpI}from"events";import{STATUS_CODES as MpI}from"http";import{debuglog as NpI}from"util";import{createGunzip as jZA,createBrotliDecompress as OZA,gunzipSync as kpI,brotliDecompressSync as HpI}from"zlib";import{Readable as d2,pipeline as qpI}from"stream";import{pipeline as VZA}from"stream/promises";import{basename as TZA}from"path";import{createReadStream as RpI}from"fs";import{format as SpI}from"url";import{performance as hpI}from"perf_hooks";import LpI from"querystring";import{setTimeout as ipI}from"timers/promises";import{request as zZA,Agent as PZA,getGlobalDispatcher as ypI}from"undici";var WZA=cg(ZZA(),1);import BT from"path";var CpI=/[^\x00-\x7F]/i;class nF extends WZA.default{_getContentDisposition(A,I){let g,C;if(typeof I.filepath==="string")g=BT.normalize(I.filepath).replace(/\\/g,"/");else if(I.filename||A.name||A.path)g=BT.basename(I.filename||A.name||A.path);else if(A.readable&&A.hasOwnProperty("httpVersion"))g=BT.basename(A.client._httpMessage.path||"");if(g){if(C='filename="'+g+'"',CpI.test(g))C+="; filename*=UTF-8''"+encodeURIComponent(g)}return C}}import QpI from"dns";import{isIP as EpI}from"net";import{Agent as BpI}from"undici";class ZN extends BpI{#A;constructor(A){super(A);this.#A=A.opaqueLocalStorage}dispatch(A,I){let g=this.#A?.getStore();if(g)I.opaque=g;return super.dispatch(A,I)}}class sF extends Error{hostname;ip;family;constructor(A,I,g){super("illegal address");this.name=this.constructor.name,this.hostname=A,this.ip=I,this.family=g,Error.captureStackTrace(this,this.constructor)}}class p2 extends ZN{#A;constructor(A){let{lookup:I=QpI.lookup,...g}=A,C=(B,Q,E)=>{I(B,Q,(D,...G)=>{let Y=G[0],w=G[1];if(D)return E(D,Y,w);if(A.checkAddress){if(typeof Y==="string"){if(!A.checkAddress(Y,w,B))D=new sF(B,Y,w)}else if(Array.isArray(Y)){let J=Y;for(let M of J)if(!A.checkAddress(M.address,M.family,B)){D=new sF(B,M.address,M.family);break}}}E(D,Y,w)})};super({...g,connect:{...A.connect,lookup:C,allowH2:A.allowH2}});this.#A=A.checkAddress}dispatch(A,I){if(this.#A&&A.origin){let C=(typeof A.origin==="string"?new URL(A.origin):A.origin).hostname;if(C.startsWith("[")&&C.endsWith("]"))C=C.substring(1,C.length-1);let B=EpI(C);if(B===4||B===6){if(!this.#A(C,B,C))throw new sF(C,C,B)}}return super.dispatch(A,I)}}import DpI from"diagnostics_channel";import{performance as GpI}from"perf_hooks";import{debuglog as wpI}from"util";import{Socket as XZA}from"net";var zD=wpI("urllib/diagnosticsChannel"),UZA=!1;function WN(A,I){DpI.subscribe(A,I)}var QT;function rF(A){if(!A)return A;if(!QT){let I=Object.getOwnPropertySymbols(A);for(let g of I)if(g.description==="reset"){QT=g;break}}return{localAddress:A[AI.kSocketLocalAddress],localPort:A[AI.kSocketLocalPort],remoteAddress:A.remoteAddress,remotePort:A.remotePort,attemptedAddresses:A.autoSelectFamilyAttemptedAddresses,connecting:A.connecting,reset:A[QT]}}var YpI=XZA.prototype.destroy;XZA.prototype.destroy=function(A){if(A)Object.defineProperty(A,AI.kErrorSocket,{enumerable:!1,value:this});return YpI.call(this,A)};function KpI(A,I){if(!I)return;let g=Reflect.get(A,I);return g?.opts?.opaque??g?.opaque}function tF(){if(UZA)return;UZA=!0;let A;WN("undici:request:create",(I,g)=>{let{request:C}=I;if(!A){let Q=Object.getOwnPropertySymbols(C);for(let E of Q)if(E.description==="handler"){A=E;break}}let B=KpI(C,A);if(!B||!B[AI.kRequestId])return;if(Reflect.set(C,AI.kRequestInternalOpaque,B),zD("[%s] Request#%d %s %s, path: %s, headers: %j",g,B[AI.kRequestId],C.method,C.origin,C.path,C.headers),!B[AI.kEnableRequestTiming])return;B[AI.kRequestTiming].queuing=VD(B[AI.kRequestStartTime])}),WN("undici:client:connectError",(I,g)=>{let{error:C,connectParams:B,socket:Q}=I,E=Q;if(!E&&C[AI.kErrorSocket])E=C[AI.kErrorSocket];if(E){if(E[AI.kSocketId]=yN("UndiciSocket"),E[AI.kSocketConnectErrorTime]=new Date,E[AI.kHandledRequests]=0,E[AI.kHandledResponses]=0,E.localAddress)E[AI.kSocketLocalAddress]=E.localAddress,E[AI.kSocketLocalPort]=E.localPort;E[AI.kSocketConnectProtocol]=B.protocol,E[AI.kSocketConnectHost]=B.host,E[AI.kSocketConnectPort]=B.port,zD("[%s] Socket#%d connectError, connectParams: %j, error: %s, (sock: %j)",g,E[AI.kSocketId],B,C.message,rF(E))}else zD("[%s] connectError, connectParams: %j, error: %o",g,B,C)}),WN("undici:client:connected",(I,g)=>{let{socket:C,connectParams:B}=I;C[AI.kSocketId]=yN("UndiciSocket"),C[AI.kSocketStartTime]=GpI.now(),C[AI.kSocketConnectedTime]=new Date,C[AI.kHandledRequests]=0,C[AI.kHandledResponses]=0,C[AI.kSocketLocalAddress]=C.localAddress,C[AI.kSocketLocalPort]=C.localPort,C[AI.kSocketConnectProtocol]=B.protocol,C[AI.kSocketConnectHost]=B.host,C[AI.kSocketConnectPort]=B.port,zD("[%s] Socket#%d connected (sock: %j)",g,C[AI.kSocketId],rF(C))}),WN("undici:client:sendHeaders",(I,g)=>{let{request:C,socket:B}=I,Q=Reflect.get(C,AI.kRequestInternalOpaque);if(!Q||!Q[AI.kRequestId]){zD("[%s] opaque not found",g);return}if(B[AI.kHandledRequests]++,Q[AI.kRequestSocket]=B,zD("[%s] Request#%d send headers on Socket#%d (handled %d requests, sock: %j)",g,Q[AI.kRequestId],B[AI.kSocketId],B[AI.kHandledRequests],rF(B)),!Q[AI.kEnableRequestTiming])return;if(Q[AI.kRequestTiming].requestHeadersSent=VD(Q[AI.kRequestStartTime]),B[AI.kHandledRequests]===1)Q[AI.kRequestTiming].connected=VD(Q[AI.kRequestStartTime],B[AI.kSocketStartTime])}),WN("undici:request:bodySent",(I,g)=>{let{request:C}=I,B=Reflect.get(C,AI.kRequestInternalOpaque);if(!B||!B[AI.kRequestId]){zD("[%s] opaque not found",g);return}if(zD("[%s] Request#%d send body",g,B[AI.kRequestId]),!B[AI.kEnableRequestTiming])return;B[AI.kRequestTiming].requestSent=VD(B[AI.kRequestStartTime])}),WN("undici:request:headers",(I,g)=>{let{request:C,response:B}=I,Q=Reflect.get(C,AI.kRequestInternalOpaque);if(!Q||!Q[AI.kRequestId]){zD("[%s] opaque not found",g);return}let E=Q[AI.kRequestSocket];if(E)E[AI.kHandledResponses]++,zD("[%s] Request#%d get %s response headers on Socket#%d (handled %d responses, sock: %j)",g,Q[AI.kRequestId],B.statusCode,E[AI.kSocketId],E[AI.kHandledResponses],rF(E));else zD("[%s] Request#%d get %s response headers on Unknown Socket",g,Q[AI.kRequestId],B.statusCode);if(!Q[AI.kEnableRequestTiming])return;Q[AI.kRequestTiming].waiting=VD(Q[AI.kRequestStartTime])}),WN("undici:request:trailers",(I,g)=>{let{request:C}=I,B=Reflect.get(C,AI.kRequestInternalOpaque);if(!B||!B[AI.kRequestId]){zD("[%s] opaque not found",g);return}if(zD("[%s] Request#%d get response body and trailers",g,B[AI.kRequestId]),!B[AI.kEnableRequestTiming])return;B[AI.kRequestTiming].contentDownload=VD(B[AI.kRequestStartTime])})}class ET extends Error{status;headers;socket;res}class m2 extends ET{constructor(A,I){let g=`Request timeout for ${A} ms`;super(g,I);this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor)}}class DT extends ET{code;constructor(A,I,g){super(A,g);this.name=this.constructor.name,this.code=I,Error.captureStackTrace(this,this.constructor)}}var FpI=/^https?:\/\//i;function ZpI(){}var SY=NpI("urllib:HttpClient"),WpI="4.6.11",AZ=`node-urllib/${WpI} Node.js/${process.version.substring(1)} (${process.platform}; ${process.arch})`;function UpI(A){let I=A.path;if(I)return TZA(I);return""}function XpI(A){return A.status>=500}var hY={request:eF.channel("urllib:request"),response:eF.channel("urllib:response"),fetchRequest:eF.channel("urllib:fetch:request"),fetchResponse:eF.channel("urllib:fetch:response")},jpI=[301,302,303,307,308];class JK extends JpI{#A;#I;constructor(A){super();if(this.#A=A?.defaultArgs,A?.lookup||A?.checkAddress)this.#I=new p2({lookup:A.lookup,checkAddress:A.checkAddress,connect:A.connect,allowH2:A.allowH2});else if(A?.connect)this.#I=new PZA({connect:A.connect,allowH2:A.allowH2});else if(A?.allowH2)this.#I=new PZA({allowH2:A.allowH2});tF()}getDispatcher(){return this.#I??ypI()}setDispatcher(A){this.#I=A}getDispatcherPoolStats(){let A=this.getDispatcher(),I=Reflect.get(A,xZA.default.kClients),g={};if(!I)return g;for(let[C,B]of I){let E=(typeof B.deref==="function"?B.deref():B)?.stats;if(!E)continue;g[C]={connected:E.connected,free:E.free,pending:E.pending,queued:E.queued,running:E.running,size:E.size}}return g}async request(A,I){return await this.#g(A,I)}async curl(A,I){return await this.request(A,I)}async#g(A,I,g){let C=yN("HttpClientRequest"),B;if(typeof A==="string"){if(!FpI.test(A))A="http://"+A;B=new URL(A)}else if(!A.searchParams)B=new URL(SpI(A));else B=new URL(A.toString());let Q=(I?.type||I?.method||"GET").toUpperCase(),E=I?.headers,D={},G={retry:0,socketErrorRetry:1,timing:!0,...this.#A,...I,method:Q,headers:D};if(g={retries:0,socketErrorRetries:0,redirects:0,history:[],...g},!g.requestStartTime)g.requestStartTime=hpI.now();g.history.push(B.href);let Y=g.requestStartTime,w={queuing:0,dnslookup:0,connected:0,requestHeadersSent:0,requestSent:0,waiting:0,contentDownload:0},J=G.opaque,M={[AI.kRequestId]:C,[AI.kRequestStartTime]:Y,[AI.kEnableRequestTiming]:!!G.timing,[AI.kRequestTiming]:w,[AI.kRequestOriginalOpaque]:J},K={requestId:C,url:B.href,args:G,ctx:G.ctx,retries:g.retries},N={id:0,localAddress:"",localPort:0,remoteAddress:"",remotePort:0,remoteFamily:"",bytesWritten:0,bytesRead:0,handledRequests:0,handledResponses:0},q={status:-1,statusCode:-1,statusText:"",statusMessage:"",headers:{},size:0,aborted:!1,rt:0,keepAliveSocket:!0,requestUrls:g.history,timing:w,socket:N,retries:g.retries,socketErrorRetries:g.socketErrorRetries},S=5000,H=5000;if(G.timeout)if(Array.isArray(G.timeout))S=G.timeout[0]??S,H=G.timeout[1]??H;else S=H=G.timeout;if(E)for(let P in E)D[P.toLowerCase()]=E[P];if("user-agent"in D&&!D["user-agent"])delete D["user-agent"];else if(!D["user-agent"])D["user-agent"]=AZ;if(G.streaming||G.customResponse)G.dataType="stream";if(G.dataType==="json"&&!D.accept)D.accept="application/json";if(G.gzip&&G.compressed!==!1)G.compressed=!0;if(G.compressed&&!D["accept-encoding"])D["accept-encoding"]="gzip, br";if(g.retries>0)D["x-urllib-retry"]=`${g.retries}/${G.retry}`;if(g.socketErrorRetries>0)D["x-urllib-retry-on-socket-error"]=`${g.socketErrorRetries}/${G.socketErrorRetry}`;if(G.auth&&!D.authorization)D.authorization=`Basic ${Buffer.from(G.auth).toString("base64")}`;let y=!1,Z=!1;if(G.dataType==="stream"||G.writeStream)Z=!0;let U=G.maxRedirects??10;try{let P={method:Q,maxRedirections:0,headersTimeout:S,headers:D,bodyTimeout:H,opaque:M,dispatcher:G.dispatcher??this.#I,signal:G.signal,reset:!1};if(typeof G.highWaterMark==="number")P.highWaterMark=G.highWaterMark;if(typeof G.reset==="boolean")P.reset=G.reset;if(G.followRedirect===!1)U=0;let i=P.method==="GET"||P.method==="HEAD";if(G.stream&&!G.content){if(FN(G.stream)&&!(G.stream instanceof d2))SY("Request#%d convert old style stream to Readable",C),G.stream=new d2().wrap(G.stream),y=!0;else if(G.stream instanceof bZA.default)SY("Request#%d convert formstream to Readable",C),G.stream=new d2().wrap(G.stream),y=!0;G.content=G.stream}if(G.files){if(i)P.method="POST";let c=new nF,z=[];if(Array.isArray(G.files))for(let[f,n]of G.files.entries()){let AA=f===0?"file":`file${f}`;z.push([AA,n])}else if(G.files instanceof d2||FN(G.files))z.push(["file",G.files]);else if(typeof G.files==="string"||Buffer.isBuffer(G.files))z.push(["file",G.files]);else if(typeof G.files==="object"){let f=G.files;for(let n in f){let AA=f[n];z.push([n,AA,n])}}if(G.data)for(let f in G.data)c.append(f,G.data[f]);for(let[f,[n,AA,m]]of z.entries()){let BA="",d;if(typeof AA==="string")BA=TZA(AA),d=RpI(AA);else if(Buffer.isBuffer(AA))BA=m||`bufferfile${f}`,d=AA;else if(AA instanceof d2||FN(AA))BA=UpI(AA)||m||`streamfile${f}`,y=!0,d=AA;let gA=$ZA.default.lookup(BA)||"";c.append(n,d,{filename:BA,contentType:gA}),SY("formData append field: %s, mimeType: %s, fileName: %s",n,gA,BA)}Object.assign(D,c.getHeaders()),P.body=c}else if(G.content){if(!i){if(P.body=G.content,G.contentType)D["content-type"]=G.contentType;else if(typeof G.content==="string"&&!D["content-type"])D["content-type"]="text/plain;charset=UTF-8";y=FN(G.content)}}else if(G.data){let c=typeof G.data==="string"||Buffer.isBuffer(G.data)||FN(G.data);if(i){if(!c){let z;if(G.nestedQuerystring)z=GT.default.stringify(G.data);else z=LpI.stringify(G.data);let f=B.href;B=new URL(f+(f.includes("?")?"&":"?")+z)}}else if(c)P.body=G.data,y=FN(G.data);else if(G.contentType==="json"||G.contentType==="application/json"||D["content-type"]?.startsWith("application/json")){if(P.body=JSON.stringify(G.data),!D["content-type"])D["content-type"]="application/json"}else if(D["content-type"]="application/x-www-form-urlencoded;charset=UTF-8",G.nestedQuerystring)P.body=GT.default.stringify(G.data);else P.body=new URLSearchParams(G.data).toString()}if(y)G.retry=0,G.socketErrorRetry=0,U=0;if(Z)G.retry=0,G.socketErrorRetry=0;if(SY("Request#%d %s %s, headers: %j, headersTimeout: %s, bodyTimeout: %s, isStreamingRequest: %s, isStreamingResponse: %s, maxRedirections: %s, redirects: %s",C,P.method,B.href,D,S,H,y,Z,U,g.redirects),P.headers=D,hY.request.publish({request:K}),this.listenerCount("request")>0)this.emit("request",K);let j=await zZA(B,P);if(j.statusCode===401&&(j.headers["www-authenticate"]||j.headers["x-www-authenticate"])&&!P.headers.authorization&&G.digestAuth){let c=j.headers["www-authenticate"]??j.headers["x-www-authenticate"],z=Array.isArray(c)?c.find((f)=>f.startsWith("Digest ")):c;if(z&&z.startsWith("Digest ")){if(SY("Request#%d %s: got digest auth header WWW-Authenticate: %s",C,B.href,z),P.headers.authorization=bFA(P.method,`${B.pathname}${B.search}`,z,G.digestAuth),SY("Request#%d %s: auth with digest header: %s",C,A,P.headers.authorization),Array.isArray(j.headers["set-cookie"]))P.headers.cookie=j.headers["set-cookie"].join(";");await j.body.arrayBuffer(),j=await zZA(B,P)}}let X=j.headers["content-encoding"],W=X==="gzip"||X==="br";if(q.headers=j.headers,q.status=q.statusCode=j.statusCode,q.statusMessage=q.statusText=MpI[q.status]||"",q.headers["content-length"])q.size=parseInt(q.headers["content-length"]);if(jpI.includes(q.statusCode)&&U>0&&g.redirects<U){if(q.headers.location){g.redirects++;let c=new URL(q.headers.location,B.href);return await j.body.arrayBuffer(),SY("Request#%d got response, status: %s, headers: %j, timing: %j, redirect to %s",C,q.status,q.headers,q.timing,c.href),await this.#g(c.href,I,g)}}let O=null;if(G.dataType==="stream")if(G.compressed===!0&&W){let c=X==="gzip"?jZA():OZA();q=Object.assign(qpI(j.body,c,ZpI),q)}else q=Object.assign(j.body,q);else if(G.writeStream)if(G.compressed===!0&&W){let c=X==="gzip"?jZA():OZA();await VZA(j.body,c,G.writeStream)}else await VZA(j.body,G.writeStream);else{if(O=Buffer.from(await j.body.arrayBuffer()),W&&O.length>0)try{O=X==="gzip"?kpI(O):HpI(O)}catch(c){if(c.name==="Error")c.name="UnzipError";throw c}if(G.dataType==="text"||G.dataType==="html")O=O.toString();else if(G.dataType==="json")if(O.length===0)O=null;else O=$FA(O.toString(),G.fixJSONCtlChars)}q.rt=VD(Y),cq(N,M);let $={opaque:J,data:O,status:q.status,statusCode:q.status,statusText:q.statusText,headers:q.headers,url:B.href,redirected:g.history.length>1,requestUrls:q.requestUrls,res:q};if(SY("Request#%d got response, status: %s, headers: %j, timing: %j, socket: %j",C,q.status,q.headers,q.timing,q.socket),G.retry>0&&g.retries<G.retry){if((G.isRetry??XpI)($)){if(G.retryDelay)await ipI(G.retryDelay);return g.retries++,await this.#g(A,I,g)}}if(hY.response.publish({request:K,response:q}),this.listenerCount("response")>0)this.emit("response",{requestId:C,error:null,ctx:G.ctx,req:{...K,options:G},res:q});return $}catch(P){SY("Request#%d throw error: %s, socketErrorRetry: %s, socketErrorRetries: %s",C,P,G.socketErrorRetry,g.socketErrorRetries);let i=P;if(i.name==="HeadersTimeoutError")i=new m2(S,{cause:i});else if(i.name==="BodyTimeoutError")i=new m2(H,{cause:i});else if(i.name==="InformationalError"&&i.message.includes("stream timeout"))i=new m2(H,{cause:i});else if(i.code==="UND_ERR_CONNECT_TIMEOUT")i=new DT(i.message,i.code,{cause:i});else if(i.code==="UND_ERR_SOCKET"||i.code==="ECONNRESET"){if(G.socketErrorRetry>0&&g.socketErrorRetries<G.socketErrorRetry)return g.socketErrorRetries++,SY("Request#%d retry on socket error, socketErrorRetries: %d",C,g.socketErrorRetries),await this.#g(A,I,g)}if(i.opaque=J,i.status=q.status,i.headers=q.headers,i.res=q,i.socket)i._rawSocket=i.socket;if(i.socket=N,q.rt=VD(Y),cq(N,M,P),hY.response.publish({request:K,response:q,error:i}),this.listenerCount("response")>0)this.emit("response",{requestId:C,error:i,ctx:G.ctx,req:{...K,options:G},res:q});throw i}}}import{MockAgent as K3g,ProxyAgent as HlI,Agent as wUA,Dispatcher as J3g,setGlobalDispatcher as M3g,getGlobalDispatcher as N3g,Request as k3g,Response as H3g,Headers as q3g,FormData as R3g}from"undici";var QUA=cg(oq(),1),EUA=cg(CUA(),1);import{AsyncLocalStorage as GlI}from"async_hooks";import{debuglog as wlI}from"util";import{fetch as YlI,Request as KlI,getGlobalDispatcher as JlI}from"undici";var BUA=wlI("urllib/fetch");class LY{static#A;static#I=new GlI;static getDispatcher(){return LY.#A??JlI()}static setDispatcher(A){LY.#A=A}static setClientOptions(A){let I={opaqueLocalStorage:LY.#I},g=ZN;if(A?.lookup||A?.checkAddress)I={...I,lookup:A.lookup,checkAddress:A.checkAddress,connect:A.connect,allowH2:A.allowH2},g=p2;else if(A?.connect)I={...I,connect:A.connect,allowH2:A.allowH2},g=ZN;else if(A?.allowH2)I={...I,allowH2:A.allowH2},g=ZN;LY.#A=new g(I),tF()}static getDispatcherPoolStats(){let A=LY.getDispatcher(),I=Reflect.get(A,QUA.default.kClients),g={};if(!I)return g;for(let[C,B]of I){let E=(typeof B.deref==="function"?B.deref():B)?.stats;if(!E)continue;g[C]={connected:E.connected,free:E.free,pending:E.pending,queued:E.queued,running:E.running,size:E.size}}return g}static async fetch(A,I){let g=performance.now();I=I??{},I.dispatcher=I.dispatcher??LY.#A;let C=new KlI(A,I),B=yN("HttpClientRequest"),Q={queuing:0,dnslookup:0,connected:0,requestHeadersSent:0,requestSent:0,waiting:0,contentDownload:0},E={[AI.kRequestId]:B,[AI.kRequestStartTime]:g,[AI.kEnableRequestTiming]:!!(I.timing??!0),[AI.kRequestTiming]:Q},D={requestId:B,url:C.url,args:{method:C.method,type:C.method,data:C.body,headers:mP(C.headers)},retries:0},G={requestId:B,request:C},Y={id:0,localAddress:"",localPort:0,remoteAddress:"",remotePort:0,remoteFamily:"",bytesWritten:0,bytesRead:0,handledRequests:0,handledResponses:0};hY.request.publish({request:D}),hY.fetchRequest.publish({fetch:G});let w,M={status:-1,statusCode:-1,statusText:"",statusMessage:"",headers:{},size:0,aborted:!1,rt:0,keepAliveSocket:!0,requestUrls:[C.url],timing:Q,socket:Y,retries:0,socketErrorRetries:0};try{await LY.#I.run(E,async()=>{w=await YlI(C)})}catch(N){throw cq(Y,E,N),M.rt=VD(g),BUA("Request#%d throw error: %s",B,N),hY.fetchResponse.publish({fetch:G,error:N}),hY.response.publish({request:D,response:M,error:N}),N}let K=EUA.getResponseState(w);if(cq(Y,E),M.headers=mP(w.headers),M.status=M.statusCode=w.status,M.statusMessage=w.statusText,M.headers["content-length"])M.size=parseInt(M.headers["content-length"]);return M.rt=VD(g),BUA("Request#%d got response, status: %s, headers: %j, timing: %j, socket: %j",B,M.status,M.headers,Q,M.socket),hY.fetchResponse.publish({fetch:G,timingInfo:K.timingInfo,response:w}),hY.response.publish({request:D,response:M}),w}}var MlI=LY.fetch;cFA();var oT,fT,vT,_T,DUA=new _2(50);function NlI(A,I){if(A===!1){if(I){if(!_T)_T=new JK({allowH2:I,connect:{rejectUnauthorized:A}});return _T}if(!vT)vT=new JK({connect:{rejectUnauthorized:A}});return vT}if(I){if(!fT)fT=new JK({allowH2:I});return fT}if(!oT)oT=new JK;return oT}async function GUA(A,I){if(I?.socketPath){let g=DUA.get(I.socketPath);if(!g)g=new JK({connect:{socketPath:I.socketPath}}),DUA.set(I.socketPath,g);return await g.request(A,I)}return await NlI(I?.rejectUnauthorized,I?.allowH2).request(A,I)}async function klI(A,I){return await GUA(A,I)}var t2={request:GUA,curl:klI,USER_AGENT:AZ};import{debuglog as MnI}from"util";import{createVerify as u1A,randomUUID as NnI}from"crypto";import{Readable as l1A}from"stream";var eq=cg(UUA(),1),a1A=cg(nT(),1);import{ReadableStream as plI}from"stream/web";class e2 extends Error{status;headers;error;code;param;type;constructor(A,I,g,C){super(`${e2.makeMessage(A,I,g)}`);this.status=A,this.headers=C;let B=I;this.error=B,this.code=B?.code,this.param=B?.param,this.type=B?.type}static makeMessage(A,I,g){let C=I?.message?typeof I.message==="string"?I.message:JSON.stringify(I.message):I?JSON.stringify(I):g;if(A&&C)return`${A} ${C}`;if(A)return`${A} status code (no body)`;if(C)return C;return"(no status code or body)"}}function mlI(A,I){let g=A.indexOf(I);if(g!==-1)return[A.substring(0,g),I,A.substring(g+I.length)];return[A,"",""]}class sT{data;event;chunks;constructor(){this.event=null,this.data=[],this.chunks=[]}decode(A){let I=A;if(A.endsWith("\r"))I=A.substring(0,A.length-1);if(!I){if(!this.event&&!this.data.length)return null;let Q={event:this.event,data:this.data.join(`
|
|
1482
1482
|
`),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],Q}if(this.chunks.push(I),I.startsWith(":"))return null;let[g,C,B]=mlI(I,":");if(B.startsWith(" "))B=B.substring(1);if(g==="event")this.event=B;else if(g==="data")this.data.push(B);return null}}class sq{static NEWLINE_CHARS=new Set([`
|
|
1483
1483
|
`,"\r","\v","\f","\x1C","\x1D","\x1E","\x85","\u2028","\u2029"]);static NEWLINE_REGEXP=/\r\n|[\n\r\x0b\x0c\x1c\x1d\x1e\x85\u2028\u2029]/g;buffer;trailingCR;textDecoder;constructor(){this.buffer=[],this.trailingCR=!1}decode(A){let I=this.decodeText(A);if(this.trailingCR)I="\r"+I,this.trailingCR=!1;if(I.endsWith("\r"))this.trailingCR=!0,I=I.slice(0,-1);if(!I)return[];let g=sq.NEWLINE_CHARS.has(I[I.length-1]||""),C=I.split(sq.NEWLINE_REGEXP);if(g)C.pop();if(C.length===1&&!g)return this.buffer.push(C[0]),[];if(this.buffer.length>0)C=[this.buffer.join("")+C[0],...C.slice(1)],this.buffer=[];if(!g)this.buffer=[C.pop()||""];return C}decodeText(A){if(A===null)return"";if(typeof A==="string")return A;if(typeof Buffer<"u"){if(A instanceof Buffer)return A.toString();if(A instanceof Uint8Array)return Buffer.from(A).toString();throw Error(`Unexpected: received non-Uint8Array (${A?.constructor.name}) stream chunk in an environment with a global "Buffer" defined, which this library assumes to be Node. Please report this error.`)}if(typeof TextDecoder<"u"){if(A instanceof Uint8Array||A instanceof ArrayBuffer)return this.textDecoder??=new TextDecoder("utf8"),this.textDecoder.decode(A);throw Error(`Unexpected: received non-Uint8Array/ArrayBuffer (${A.constructor.name}) in a web platform. Please report this error.`)}throw Error("Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.")}flush(){if(!this.buffer.length&&!this.trailingCR)return[];let A=[this.buffer.join("")];return this.buffer=[],this.trailingCR=!1,A}}function pUA(A){if(A[Symbol.asyncIterator])return A;let I=A.getReader();return{async next(){try{let g=await I.read();if(g?.done)I.releaseLock();return g}catch(g){throw I.releaseLock(),g}},async return(){let g=I.cancel();return I.releaseLock(),await g,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}class TJ{iterator;controller;constructor(A,I){this.iterator=A,this.controller=I}static fromSSEResponse(A,I){let g=!1,C=new sT;async function*B(){if(!A.body)throw I.abort(),Error("Attempted to iterate over a response with no body");let E=new sq,D=pUA(A.body);for await(let G of D)for(let Y of E.decode(G)){let w=C.decode(Y);if(w)yield w}for(let G of E.flush()){let Y=C.decode(G);if(Y)yield Y}}async function*Q(){if(g)throw Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");g=!0;let E=!1;try{for await(let D of B()){if(E)continue;if(D.data.startsWith("[DONE]")){E=!0;continue}if(D.event===null){let G;try{G=JSON.parse(D.data)}catch(Y){throw console.error("Could not parse message into JSON:",D.data),console.error("From chunk:",D.raw),Y}if(G&&G.error)throw new e2(void 0,G.error,void 0,void 0);yield G}else{let G;try{G=JSON.parse(D.data)}catch(Y){throw console.error("Could not parse message into JSON:",D.data),console.error("From chunk:",D.raw),Y}if(D.event==="error")throw new e2(void 0,G.error,G.message,void 0);yield{event:D.event,data:G}}}E=!0}catch(D){if(D instanceof Error&&D.name==="AbortError")return;throw D}finally{if(!E)I.abort()}}return new TJ(Q,I)}static fromReadableStream(A,I,g){let C=!1;async function*B(){let E=new sq,D=pUA(A);for await(let G of D)for(let Y of E.decode(G))yield Y;for(let G of E.flush())yield G}async function*Q(){if(C)throw Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");C=!0;let E=!1;try{for await(let D of B()){if(E)continue;if(D)if(g?.disableJSONParse)yield D;else yield JSON.parse(D)}E=!0}catch(D){if(D instanceof Error&&D.name==="AbortError")return;throw D}finally{if(!E)I?.abort()}}return new TJ(Q,I)}[Symbol.asyncIterator](){return this.iterator()}tee(){let A=[],I=[],g=this.iterator(),C=(B)=>{return{next:()=>{if(B.length===0){let Q=g.next();A.push(Q),I.push(Q)}return B.shift()}}};return[new TJ(()=>C(A),this.controller),new TJ(()=>C(I),this.controller)]}toReadableStream(){let A=this,I,g=new TextEncoder;return new plI({async start(){I=A[Symbol.asyncIterator]()},async pull(C){try{let{value:B,done:Q}=await I.next();if(Q)return C.close();let E=g.encode(JSON.stringify(B)+`
|
|
1484
1484
|
`);C.enqueue(E)}catch(B){C.error(B)}},async cancel(){await I.return?.()}})}}var mUA=cg(q4(),1);class rq extends mUA.default{constructor(A){super({minChunkSize:2097152,...A})}}class Ah{method;files;fields;constructor(){this.fields=[],this.files=[],this.method="post"}getFields(){return this.fields}getFiles(){return this.files}getMethod(){return this.method}setMethod(A){this.method=A.toLowerCase()}addField(A,I){if(dUA(I))this.fields.push({name:A,value:JSON.parse(I)});else this.fields.push({name:A,value:I})}addFile(A,I,g){let C={fieldName:A,name:I};if(typeof g==="string")C.path=g;else if(Buffer.isBuffer(g))C.content=g;else C.stream=g;this.files.push(C)}}function dUA(A){if(typeof A!=="string")return!1;if(A=A.replace(/\s/g,"").replace(/\n|\r/,""),/^\{(.*?)\}$/.test(A))return/"(.*?)":(.*?)/g.test(A);if(/^\[(.*?)\]$/.test(A))return A.replace(/^\[/,"").replace(/\]$/,"").replace(/},{/g,`}
|
|
@@ -1592,5 +1592,5 @@ React Native\u4E2D\u6587\u7F51 \u70ED\u66F4\u65B0\u670D\u52A1
|
|
|
1592
1592
|
</p>
|
|
1593
1593
|
`}),{userId:C.id}},{body:f5,detail:{hide:!0}}).post("/resetpwd/reset",async({status:A,body:{token:I,newPwd:g}})=>{let C=uM(I,"resetpwd");if(!C)return A(403,{message:"\u65E0\u6548\u7684\u6FC0\u6D3B\u7801\u6216\u6FC0\u6D3B\u7801\u5DF2\u8FC7\u671F"});let B=`${sw(16)}==`,Q=Gh(g+B);if(!await BI.users.update({where:{id:C.uid},data:{salt:B,secret:Q},select:{email:!0}}))return A(404);let D=await Pg.get("failAttempts");try{if(D){let G=JSON.parse(D);if(G[C.uid])G[C.uid]=0,Pg.set("failAttempts",JSON.stringify(G))}}catch{}return{userId:C.uid}},{body:BEA,detail:{hide:!0}}).post("/login",async({status:A,body:{email:I,pwd:g}})=>{let C=await vQ({email:I});if(!C)return A(403,{message:"\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF"});let B=L7.default().format("YYYYMMDD"),Q={today:B},E=await Pg.get("failAttempts");try{if(E)Q=JSON.parse(E)}catch{}if(B!==Q.today)Q={today:B};if(!Q[C.id])Q[C.id]=0;if(Q[C.id]>4)return A(403,{message:"\u5931\u8D25\u6B21\u6570\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u767B\u5F55\u5DF2\u9501\u5B9A\uFF0C\u8BF7\u627E\u56DE\u5BC6\u7801\u6216\u660E\u65E5\u91CD\u8BD5\u3002"});if(C.secret!==Gh(g+C.salt))return Q[C.id]+=1,await Pg.set("failAttempts",JSON.stringify(Q)),A(403,{message:"\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF"});if(C.status==="unverified")return A(423,{message:"\u60A8\u7684\u8D26\u6237\u8FD8\u6CA1\u6709\u901A\u8FC7\u5BA1\u6838"});return{token:c5(C.id),userId:C.id,info:{email:I,name:C.name}}},{body:QEA,detail:{hide:!0}}).use(lM).get("/me",async({status:A,userId:I})=>{let g=await vQ({userId:I});if(!g)return A(401,{message:"\u8BF7\u5148\u767B\u5F55"});let{avg:C,counts:B}=await wEA({user:g}),Q={id:g.id,name:g.name,email:g.email,tier:g.tier,tierExpiresAt:g.tierExpiresAt,checkQuota:B[0],last7dAvg:C,last7dCounts:B};if(hH(g.email))Q.admin=!0;let E=Q;if(g.tier==="custom")E.quota=await QG({user:g});return E},{detail:{hide:!0}});var YjA=process.env.PORT||9000,KjA=new xI;if(process.env.ENV==="aliyun")KjA.use(s1A);KjA.use(tm({exclude:{paths:["/status"]},documentation:{info:{title:"Pushy Server",version:GH.version},servers:[{url:"/api/"}]}})).use(rv()).onAfterHandle(({set:A})=>{A.headers["X-Server-Info"]=`${GH.version}@${GH.hostname}`}).use(nv({level:"error",serializers:{...vL,request:(A)=>`${A.method} ${A.url}`},redact:{paths:["pid","hostname"],remove:!0},customProps:(A)=>({body:A.body})})).use(mt).use(wjA).use(xQA).use($QA).use(ZyA).use(FyA).use(DjA).use(n1A).use(QjA).use(jyA).use(r1A).all("/status",GH).listen(YjA);console.log("process.env.NODE_ENV","production");console.log(`Pushy server (${GH.version}) is running on port ${YjA}`);
|
|
1594
1594
|
|
|
1595
|
-
//# debugId=
|
|
1595
|
+
//# debugId=E17720324DA5886464756E2164756E21
|
|
1596
1596
|
//# sourceMappingURL=index.js.map
|