Files

12 lines
70 KiB
JavaScript
Raw Permalink Normal View History

2025-03-07 23:41:13 +01:00
// If you're looking for source code, see https://github.com/doukutsu-rs/metadata-tool
2025-03-08 01:12:03 +01:00
"use strict";var At=Object.create;var tt=Object.defineProperty;var $t=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var It=Object.getPrototypeOf,Pt=Object.prototype.hasOwnProperty;var jt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Nt(e))!Pt.call(t,s)&&s!==r&&tt(t,s,{get:()=>e[s],enumerable:!(n=$t(e,s))||n.enumerable});return t};var Dt=(t,e,r)=>(r=t!=null?At(It(t)):{},jt(e||!t||!t.__esModule?tt(r,"default",{value:t,enumerable:!0}):r,t));var wt=require("fs");var _;(function(t){t.assertEqual=s=>s;function e(s){}t.assertIs=e;function r(s){throw new Error}t.assertNever=r,t.arrayToEnum=s=>{let a={};for(let i of s)a[i]=i;return a},t.getValidEnumValues=s=>{let a=t.objectKeys(s).filter(o=>typeof s[s[o]]!="number"),i={};for(let o of a)i[o]=s[o];return t.objectValues(i)},t.objectValues=s=>t.objectKeys(s).map(function(a){return s[a]}),t.objectKeys=typeof Object.keys=="function"?s=>Object.keys(s):s=>{let a=[];for(let i in s)Object.prototype.hasOwnProperty.call(s,i)&&a.push(i);return a},t.find=(s,a)=>{for(let i of s)if(a(i))return i},t.isInteger=typeof Number.isInteger=="function"?s=>Number.isInteger(s):s=>typeof s=="number"&&isFinite(s)&&Math.floor(s)===s;function n(s,a=" | "){return s.map(i=>typeof i=="string"?`'${i}'`:i).join(a)}t.joinValues=n,t.jsonStringifyReplacer=(s,a)=>typeof a=="bigint"?a.toString():a})(_||(_={}));var Me;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(Me||(Me={}));var f=_.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),P=t=>{switch(typeof t){case"undefined":return f.undefined;case"string":return f.string;case"number":return isNaN(t)?f.nan:f.number;case"boolean":return f.boolean;case"function":return f.function;case"bigint":return f.bigint;case"symbol":return f.symbol;case"object":return Array.isArray(t)?f.array:t===null?f.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?f.promise:typeof Map<"u"&&t instanceof Map?f.map:typeof Set<"u"&&t instanceof Set?f.set:typeof Date<"u"&&t instanceof Date?f.date:f.object;default:return f.unknown}},u=_.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Zt=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),b=class t extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};let r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){let r=e||function(a){return a.message},n={_errors:[]},s=a=>{for(let i of a.issues)if(i.code==="invalid_union")i.unionErrors.map(s);else if(i.code==="invalid_return_type")s(i.returnTypeError);else if(i.code==="invalid_arguments")s(i.argumentsError);else if(i.path.length===0)n._errors.push(r(i));else{let o=n,c=0;for(;c<i.path.length;){let d=i.path[c];c===i.path.length-1?(o[d]=o[d]||{_errors:[]},o[d]._errors.push(r(i))):o[d]=o[d]||{_errors:[]},o=o[d],c++}}};return s(this),n}static assert(e){if(!(e instanceof t))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,_.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=r=>r.message){let r={},n=[];for(let s of this.issues)s.path.length>0?(r[s.path[0]]=r[s.path[0]]||[],r[s.path[0]].push(e(s))):n.push(e(s));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};b.create=t=>new b(t);var de=(t,e)=>{let r;switch(t.code){case u.invalid_type:t.received===f.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case u.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,_.jsonS
2025-03-07 23:41:13 +01:00
`).join(""),Ye=Ke.map(([z])=>z).join(";"),Xe=`/${d}/${r}`,St=`${e}
${Xe}
${Tt}
${Ye}
${s}`,Qe="AWS4-HMAC-SHA256",et=`${Ge}/${k}/${p}/aws4_request`,Ct=`${Qe}
${ie}
${et}
${De(St)}`,Ot=Wr(c,Ge,k,p),Et=be(Ot,Ct).toString("hex"),Rt=`${Qe} Credential=${o}/${et}, SignedHeaders=${Ye}, Signature=${Et}`;return Se.Authorization=Rt,{url:`https://${Z}${Xe}`,headers:Se}}async function ye(t,e,r,n={}){let s=typeof t=="string"?Buffer.from(t):t,{noUpload:a}=Be();return He(async()=>{let i=De(s);if(!(a==="1"&&r!=="application/json")){let{url:c,headers:d}=qe({method:"PUT",objectKey:e,contentType:r||"application/octet-stream",contentHash:i}),p=await fetch(c,{method:"PUT",headers:d,body:s});if(!p.ok){let k=await p.text();throw new Error(`HTTP error ${p.status}: ${k}`)}}return`${qr}/${e}`},n)}async function Te(t,e={}){return He(async()=>{let{url:r,headers:n}=qe({method:"GET",objectKey:t}),s=await fetch(r,{method:"GET",headers:n});if(!s.ok){if(s.status===404)throw new F(t);let a=await s.text();throw new Error(`HTTP error ${s.status}: ${a}`)}return Buffer.from(await s.arrayBuffer())},e)}var Fe=class{constructor(e,r){this.lockPath=e,this.key=r,this.expiresAt=Date.now()-1}async refresh(e,r=!1){let n=this.expiresAt-Date.now();if(n>0&&!r){S(`Lock at ${this.lockPath} is still valid for ${n}ms`);return}try{let s=await Te(this.lockPath,{retryCount:1}),a=JSON.parse(s.toString("utf-8"));if(a.key!==this.key)throw new Error(`Lock at ${this.lockPath} is now owned by another process`);a.until=Date.now()+e,await ye(JSON.stringify(a),this.lockPath,"application/json",{retryCount:2}),S(`Refreshed lock at ${this.lockPath} until ${new Date(a.until)}`)}catch(s){throw s instanceof F?new Error(`Lock at ${this.lockPath} no longer exists`):s}}async release(){try{let e=await Te(this.lockPath,{retryCount:1});JSON.parse(e.toString("utf-8")).key===this.key?(await Yr(this.lockPath),S(`Released lock at ${this.lockPath}`)):console.warn(`Cannot release lock at ${this.lockPath}, it's now owned by another process`)}catch(e){if(e instanceof F)S(`Lock at ${this.lockPath} may already be released`);else throw e}}},ze=class{constructor(){this.key="";this.lockPath=""}async refresh(){}async release(){}},Gr={...yt,timeoutMs:36e5,lockDurationMs:3e4,pollIntervalMs:2e3};async function Kr(t,e={}){let r={...Gr,...e},n=(0,me.randomUUID)(),s=Date.now(),a=0,{noLocking:i}=Be();if(i==="1")return S("Locking disabled, using no-op lock"),new ze;for(S(`Attempting to acquire lock at ${t} with key ${n}`);Date.now()-s<r.timeoutMs;){let o=()=>Te(t,{retryCount:0}).then(c=>{try{let d=JSON.parse(c.toString("utf-8"));return d.until<Date.now()?(S("Found expired lock, overwriting"),null):d}catch{return S("Found invalid lock file, overwriting"),null}}).catch(c=>{if(c instanceof F)return null;throw c});try{if(await o()){S(`Lock at ${t} is held, waiting...`),await je(r.pollIntervalMs);continue}let p={until:Date.now()+r.lockDurationMs,key:n},k=JSON.stringify(p);if(await ye(k,t,"application/json",{retryCount:1}),S(`Created lock file at ${t}`),await je(Math.random()*200+300),await Te(t,{retryCount:1}).then(M=>{try{return JSON.parse(M.toString("utf-8")).key!==n?!1:(S(`Successfully acquired lock at ${t}`),!0)}catch(ie){return console.error("Failed to parse lock data:",ie),!1}}).catch(M=>(console.error("Failed to validate lock:",M),!1)))return new Fe(t,n);S("Lock validation failed, retrying")}catch(c){console.error(`Error acquiring lock (attempt ${a}):`,c)}a++,await je(r.pollIntervalMs)}throw new Error(`Failed to acquire lock at ${t} after ${r.timeoutMs}ms`)}async function Yr(t,e={}){return He(async()=>{let{url:r,headers:n}=qe({method:"DELETE",objectKey:t}),s=await fetch(r,{method:"DELETE",headers:n});if(!s.ok&&s.status!==404){let a=await s.text();throw new Error(`HTTP error ${s.status}: ${a}`)}},e)}async function We(t,e,r){let n=`${t}.lock`,s=await Kr(n),a=await Te(t).then(i=>JSON.parse(i.toString("utf-8"))).catch(i=>{if(i instanceof F)return r;throw i});S("existingData",a);try{let i=await e(a),o=JSON.stringify(i);return await s.refresh(3e4),await ye(o,t,"application/json"),S("newData",i),i}finally{await s.release()}}var Xr=x.union([x.literal("stable"),x.literal("nightly")]),Je=x.string().min(1),gt=x.enum(Pe),vt=x.enum(mt),Qr=x.string().regex(/^([0-9a-f]{40}|[0-9a-f]{64})$/),en=x.ob
//# sourceMappingURL=uploadBuild.js.map