fix: clarify release creation 404 errors (#817)

* fix: clarify release creation 404 errors

Signed-off-by: Rui Chen <rui@chenrui.dev>

* fix: clarify inaccessible release targets

Signed-off-by: Rui Chen <rui@chenrui.dev>

---------

Signed-off-by: Rui Chen <rui@chenrui.dev>
This commit is contained in:
Rui Chen authored and GitHub committed 2026-07-13 10:02:44 -04:00
1 parent e6c70a53cf
commit 7e13ed4ac5
4 files changed
+355 -23

No files matched your search

+104
View File
@@ -793,6 +793,110 @@ describe('github', () => {
});
describe('error handling', () => {
it.each([
{
name: 'a remote repository without a discussion category',
repository: 'remote-owner/release-repo',
category: undefined,
},
{
name: 'the current repository without a discussion category',
repository: 'owner/repo',
category: undefined,
},
{
name: 'a repository with a discussion category',
repository: 'owner/repo',
category: 'Announcements',
},
])('classifies a create-release 404 for $name without retrying', async (testCase) => {
const releaseError = {
status: 404,
message: 'Not Found - create-a-release',
};
const log = vi.spyOn(console, 'log').mockImplementation(() => undefined);
const createRelease = vi.fn().mockRejectedValue(releaseError);
const releaser = createReleaser({
getReleaseByTag: vi.fn().mockRejectedValue({ status: 404 }),
createRelease,
allReleases: async function* () {
yield { data: [] };
},
});
const thrown = await release(
{
...config,
github_repository: testCase.repository,
input_discussion_category_name: testCase.category,
},
releaser,
1,
).catch((error) => error);
expect(thrown).toMatchObject({
name: 'ReleaseCreationError',
status: 404,
cause: releaseError,
});
expect(thrown.message).toContain(
`GitHub returned 404 while creating the release. Verify that ${testCase.repository} exists under the expected owner`,
);
expect(thrown.message).toContain('the token can access it');
expect(thrown.message).toContain('fine-grained PAT');
expect(thrown.message).toContain('Contents: write');
expect(thrown.message).toContain('GitHub response: Not Found - create-a-release');
if (testCase.category) {
expect(thrown.message).toContain('Discussions and the requested category "Announcements"');
} else {
expect(thrown.message).not.toContain('discussion category mismatch');
expect(thrown.message).not.toContain('requested category');
}
expect(createRelease).toHaveBeenCalledOnce();
expect(log).not.toHaveBeenCalledWith(
expect.stringContaining('Unexpected error fetching GitHub release'),
);
});
it('classifies a draft-listing 404 as a repository access failure', async () => {
const listingError = {
status: 404,
message: 'Not Found - list-releases',
};
const createRelease = vi.fn();
const releaser = createReleaser({
getReleaseByTag: vi.fn().mockRejectedValue({ status: 404 }),
allReleases: async function* () {
throw listingError;
},
createRelease,
});
const thrown = await release(
{
...config,
github_repository: 'remote-owner/release-repo',
input_discussion_category_name: undefined,
},
releaser,
1,
).catch((error) => error);
expect(thrown).toMatchObject({
name: 'ReleaseAccessError',
status: 404,
cause: listingError,
});
expect(thrown.message).toContain('GitHub returned 404 while checking existing releases');
expect(thrown.message).toContain('remote-owner/release-repo');
expect(thrown.message).toContain('the token can access it');
expect(thrown.message).toContain('fine-grained PAT');
expect(thrown.message).toContain('Contents: write');
expect(thrown.message).toContain('GitHub response: Not Found - list-releases');
expect(thrown.message).not.toContain('discussion category mismatch');
expect(createRelease).not.toHaveBeenCalled();
});
it('reports a useful create error without assuming response data exists', async () => {
const releaseError = {
status: 403,
+182
View File
@@ -0,0 +1,182 @@
import { getOctokit } from '@actions/github';
import { createServer, type Server } from 'http';
import { type AddressInfo } from 'net';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
import { GitHubReleaser, release, type Release } from '../src/github';
import { parseConfig, type Config } from '../src/util';
type CapturedRequest = {
path: string;
authorization: string | undefined;
contentType: string | undefined;
body: Record<string, unknown>;
};
const closeServer = async (server: Server): Promise<void> => {
server.closeIdleConnections();
server.closeAllConnections();
await new Promise<void>((resolve, reject) => {
server.close((error) => (error ? reject(error) : resolve()));
});
};
describe('release creation transport', () => {
let server: Server;
let baseUrl: string;
const requests: CapturedRequest[] = [];
const releases = new Map<string, Release>();
beforeAll(async () => {
server = createServer(async (request, response) => {
const url = new URL(request.url || '/', 'http://127.0.0.1');
const tagMatch = url.pathname.match(/^\/repos\/owner\/remote\/releases\/tags\/(.+)$/);
if (request.method === 'GET' && tagMatch) {
const release = releases.get(decodeURIComponent(tagMatch[1]));
response.writeHead(release ? 200 : 404, { 'content-type': 'application/json' });
response.end(JSON.stringify(release ?? { message: 'Not Found' }));
return;
}
if (request.method === 'GET' && url.pathname === '/repos/owner/remote/releases') {
response.writeHead(200, { 'content-type': 'application/json' });
response.end(JSON.stringify([...releases.values()]));
return;
}
if (request.method === 'POST' && url.pathname === '/repos/owner/remote/releases') {
const chunks: Buffer[] = [];
for await (const chunk of request) {
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
}
const body = JSON.parse(Buffer.concat(chunks).toString('utf8')) as Record<string, unknown>;
requests.push({
path: url.pathname,
authorization: request.headers.authorization,
contentType: request.headers['content-type'],
body,
});
const tag = String(body.tag_name);
const createdRelease: Release = {
id: requests.length,
upload_url: `http://127.0.0.1/uploads/${requests.length}`,
html_url: `http://127.0.0.1/releases/${requests.length}`,
tag_name: tag,
name: String(body.name),
body: typeof body.body === 'string' ? body.body : null,
target_commitish: 'main',
draft: Boolean(body.draft),
prerelease: Boolean(body.prerelease),
assets: [],
};
releases.set(tag, createdRelease);
response.writeHead(201, { 'content-type': 'application/json' });
response.end(JSON.stringify(createdRelease));
return;
}
response.writeHead(500, { 'content-type': 'application/json' });
response.end(
JSON.stringify({ message: `Unexpected route ${request.method} ${url.pathname}` }),
);
});
await new Promise<void>((resolve, reject) => {
server.once('error', reject);
server.listen(0, '127.0.0.1', resolve);
});
const address = server.address() as AddressInfo;
baseUrl = `http://127.0.0.1:${address.port}`;
});
afterAll(async () => {
await closeServer(server);
});
it('serializes user-facing category inputs through the real Octokit request path', async () => {
const parsedEmptyCategory = parseConfig({
INPUT_DISCUSSION_CATEGORY_NAME: '',
}).input_discussion_category_name;
expect(parsedEmptyCategory).toBeUndefined();
const cases: Array<{
name: string;
categoryProperty: 'absent' | 'present';
category: string | undefined;
expectedCategory: string | undefined;
}> = [
{
name: 'absent-category',
categoryProperty: 'absent',
category: undefined,
expectedCategory: undefined,
},
{
name: 'undefined-category',
categoryProperty: 'present',
category: undefined,
expectedCategory: undefined,
},
{
name: 'empty-input-category',
categoryProperty: 'present',
category: parsedEmptyCategory,
expectedCategory: undefined,
},
{
name: 'valid-category',
categoryProperty: 'present',
category: 'Announcements',
expectedCategory: 'Announcements',
},
];
for (const testCase of cases) {
const config: Config = {
github_token: 'not-a-real-token',
github_ref: 'refs/heads/main',
github_repository: 'owner/remote',
input_tag_name: testCase.name,
input_name: `Release ${testCase.name}`,
input_files: [],
input_draft: false,
input_prerelease: true,
input_fail_on_unmatched_files: false,
input_generate_release_notes: false,
input_append_body: false,
input_make_latest: undefined,
};
if (testCase.categoryProperty === 'present') {
config.input_discussion_category_name = testCase.category;
}
const releaser = new GitHubReleaser(
getOctokit(config.github_token, {
baseUrl,
}),
);
await expect(release(config, releaser, 1)).resolves.toMatchObject({
release: { tag_name: testCase.name },
created: true,
});
const request = requests.at(-1);
expect(request).toMatchObject({
path: '/repos/owner/remote/releases',
authorization: 'token not-a-real-token',
contentType: 'application/json; charset=utf-8',
body: {
tag_name: testCase.name,
name: `Release ${testCase.name}`,
draft: false,
prerelease: true,
generate_release_notes: false,
},
});
if (testCase.expectedCategory) {
expect(request?.body.discussion_category_name).toBe(testCase.expectedCategory);
} else {
expect(request?.body).not.toHaveProperty('discussion_category_name');
}
}
});
});
+21 -21
View File
@@ -1,8 +1,8 @@
"use strict";var $w=Object.create;var wp=Object.defineProperty;var eb=Object.getOwnPropertyDescriptor;var tb=Object.getOwnPropertyNames;var sb=Object.getPrototypeOf,rb=Object.prototype.hasOwnProperty;var Q=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(s){throw t=0,s}};var ib=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of tb(t))!rb.call(e,i)&&i!==s&&wp(e,i,{get:()=>t[i],enumerable:!(r=eb(t,i))||r.enumerable});return e};var Ee=(e,t,s)=>(s=e!=null?$w(sb(e)):{},ib(t||!e||!e.__esModule?wp(s,"default",{value:e,enumerable:!0}):s,e));var Sp=Q(tr=>{"use strict";var u2=require("net"),Ab=require("tls"),nA=require("http"),Rp=require("https"),cb=require("events"),p2=require("assert"),lb=require("util");tr.httpOverHttp=ub;tr.httpsOverHttp=pb;tr.httpOverHttps=gb;tr.httpsOverHttps=hb;function ub(e){var t=new Rt(e);return t.request=nA.request,t}function pb(e){var t=new Rt(e);return t.request=nA.request,t.createSocket=Tp,t.defaultPort=443,t}function gb(e){var t=new Rt(e);return t.request=Rp.request,t}function hb(e){var t=new Rt(e);return t.request=Rp.request,t.createSocket=Tp,t.defaultPort=443,t}function Rt(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||nA.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on("free",function(r,i,o,n){for(var a=Fp(i,o,n),A=0,c=t.requests.length;A<c;++A){var u=t.requests[A];if(u.host===a.host&&u.port===a.port){t.requests.splice(A,1),u.request.onSocket(r);return}}r.destroy(),t.removeSocket(r)})}lb.inherits(Rt,cb.EventEmitter);Rt.prototype.addRequest=function(t,s,r,i){var o=this,n=aA({request:t},o.options,Fp(s,r,i));if(o.sockets.length>=this.maxSockets){o.requests.push(n);return}o.createSocket(n,function(a){a.on("free",A),a.on("close",c),a.on("agentRemove",c),t.onSocket(a);function A(){o.emit("free",a,n)}function c(u){o.removeSocket(a),a.removeListener("free",A),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Rt.prototype.createSocket=function(t,s){var r=this,i={};r.sockets.push(i);var o=aA({},r.proxyOptions,{method:"CONNECT",path:t.host+":"+t.port,agent:!1,headers:{host:t.host+":"+t.port}});t.localAddress&&(o.localAddress=t.localAddress),o.proxyAuth&&(o.headers=o.headers||{},o.headers["Proxy-Authorization"]="Basic "+new Buffer(o.proxyAuth).toString("base64")),Zt("making CONNECT request");var n=r.request(o);n.useChunkedEncodingByDefault=!1,n.once("response",a),n.once("upgrade",A),n.once("connect",c),n.once("error",u),n.end();function a(l){l.upgrade=!0}function A(l,p,g){process.nextTick(function(){c(l,p,g)})}function c(l,p,g){if(n.removeAllListeners(),p.removeAllListeners(),l.statusCode!==200){Zt("tunneling socket could not be established, statusCode=%d",l.statusCode),p.destroy();var d=new Error("tunneling socket could not be established, statusCode="+l.statusCode);d.code="ECONNRESET",t.request.emit("error",d),r.removeSocket(i);return}if(g.length>0){Zt("got illegal response body from proxy"),p.destroy();var d=new Error("got illegal response body from proxy");d.code="ECONNRESET",t.request.emit("error",d),r.removeSocket(i);return}return Zt("tunneling connection has established"),r.sockets[r.sockets.indexOf(i)]=p,s(p)}function u(l){n.removeAllListeners(),Zt(`tunneling socket could not be established, cause=%s
`,l.message,l.stack);var p=new Error("tunneling socket could not be established, cause="+l.message);p.code="ECONNRESET",t.request.emit("error",p),r.removeSocket(i)}};Rt.prototype.removeSocket=function(t){var s=this.sockets.indexOf(t);if(s!==-1){this.sockets.splice(s,1);var r=this.requests.shift();r&&this.createSocket(r,function(i){r.request.onSocket(i)})}};function Tp(e,t){var s=this;Rt.prototype.createSocket.call(s,e,function(r){var i=e.request.getHeader("host"),o=aA({},s.options,{socket:r,servername:i?i.replace(/:.*$/,""):e.host}),n=Ab.connect(0,o);s.sockets[s.sockets.indexOf(r)]=n,t(n)})}function Fp(e,t,s){return typeof e=="string"?{host:e,port:t,localAddress:s}:e}function aA(e){for(var t=1,s=arguments.length;t<s;++t){var r=arguments[t];if(typeof r=="object")for(var i=Object.keys(r),o=0,n=i.length;o<n;++o){var a=i[o];r[a]!==void 0&&(e[a]=r[a])}}return e}var Zt;process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?Zt=function(){var e=Array.prototype.slice.call(arguments);typeof e[0]=="string"?e[0]="TUNNEL: "+e[0]:e.unshift("TUNNEL:"),console.error.apply(console,e)}:Zt=function(){};tr.debug=Zt});var AA=Q((h2,Up)=>{Up.exports=Sp()});var z=Q((d2,Np)=>{Np.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}});var _=Q((E2,ng)=>{"use strict";var Gp=Symbol.for("undici.error.UND_ERR"),Z=class extends Error{constructor(t){super(t),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](t){return t&&t[Gp]===!0}[Gp]=!0},Mp=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),cA=class extends Z{constructor(t){super(t),this.name="ConnectTimeoutError",this.message=t||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[Mp]===!0}[Mp]=!0},Lp=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),lA=class extends Z{constructor(t){super(t),this.name="HeadersTimeoutError",this.message=t||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[Lp]===!0}[Lp]=!0},_p=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),uA=class extends Z{constructor(t){super(t),this.name="HeadersOverflowError",this.message=t||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](t){return t&&t[_p]===!0}[_p]=!0},Yp=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),pA=class extends Z{constructor(t){super(t),this.name="BodyTimeoutError",this.message=t||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[Yp]===!0}[Yp]=!0},Op=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"),gA=class extends Z{constructor(t,s,r,i){super(t),this.name="ResponseStatusCodeError",this.message=t||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=i,this.status=s,this. Line truncated
`)||e.includes("\r")||e.includes("\0"))===!1}function Rx(e,t){let{headersList:s}=t,r=(s.get("referrer-policy",!0)??"").split(","),i="";if(r.length>0)for(let o=r.length;o!==0;o--){let n=r[o-1].trim();if(hx.has(n)){i=n;break}}i!==""&&(e.referrerPolicy=i)}function Tx(){return"allowed"}function Fx(){return"success"}function Sx(){return"success"}function Ux(e){let t=null;t=e.mode,e.headersList.set("sec-fetch-mode",t,!0)}function Nx(e){let t=e.origin;if(!(t==="client"||t===void 0)){if(e.responseTainting==="cors"||e.mode==="websocket")e.headersList.append("origin",t,!0);else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":t=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":e.origin&&oc(e.origin)&&!oc(gi(e))&&(t=null);break;case"same-origin":jo(e,gi(e))||(t=null);break;default:}e.headersList.append("origin",t,!0)}}}function ur(e,t){return e}function Gx(e,t,s){return!e?.startTime||e.startTime<t?{domainLookupStartTime:t,domainLookupEndTime:t,connectionStartTime:t,connectionEndTime:t,secureConnectionStartTime:t,ALPNNegotiatedProtocol:e?.ALPNNegotiatedProtocol}:{domainLookupStartTime:ur(e.domainLookupStartTime,s),domainLookupEndTime:ur(e.domainLookupEndTime,s),connectionStartTime:ur(e.connectionStartTime,s),connectionEndTime:ur(e.connectionEndTime,s),secureConnectionStartTime:ur(e.secureConnectionStartTime,s),ALPNNegotiatedProtocol:e.ALPNNegotiatedProtocol}}function Mx(e){return ur(Qx.now(),e)}function Lx(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function Bh(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function _x(e){return{referrerPolicy:e.referrerPolicy}}function Yx(e){let t=e.referrerPolicy;Is(t);let s=null;if(e.referrer==="client"){let a=hh();if(!a||a.origin==="null")return"no-referrer";s=new URL(a)}else e.referrer instanceof URL&&(s=e.referrer);let r=ic(s),i=ic(s,!0);r.toString().length>4096&&(r=i);let o=jo(e,r),n=pi(r)&&!pi(e.url);switch(t){case"origin":return i??ic(s,!0);case"unsafe-url":return r;case"same-origin":return o?i:"no-referrer";case"origin-when-cross-origin":return o?r:i;case"strict-origin-when-cross-origin":{let a=gi(e);return jo(r,a)?r:pi(r)&&!pi(a)?"no-referrer":i}default:return n?"no-referrer":i}}function ic(e,t){return Is(e instanceof URL),e=new URL(e),e.protocol==="file:"||e.protocol==="about:"||e.protocol==="blank:"?"no-referrer":(e.username="",e.password="",e.hash="",t&&(e.pathname="",e.search=""),e)}function pi(e){if(!(e instanceof URL))return!1;if(e.href==="about:blank"||e.href==="about:srcdoc"||e.protocol==="data:"||e.protocol==="file:")return!0;return t(e.origin);function t(s){if(s==null||s==="null")return!1;let r=new URL(s);return!!(r.protocol==="https:"||r.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(r.hostname)||r.hostname==="localhost"||r.hostname.includes("localhost.")||r.hostname.endsWith(".localhost"))}}function Ox(e,t){if(Wo===void 0)return!0;let s=Ch(t);if(s==="no metadata"||s.length===0)return!0;let r=Px(s),i=Hx(s,r);for(let o of i){let n=o.algo,a=o.hash,A=Wo.createHash(n).update(e).digest("base64");if(A[A.length-1]==="="&&(A[A.length-2]==="="?A=A.slice(0,-2):A=A.slice(0,-1)),Vx(A,a))return!0}return!1}var Jx=/(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function Ch(e){let t=[],s=!0;for(let r of e.split(" ")){s=!1;let i=Jx.exec(r);if(i===null||i.groups===void 0||i.groups.algo===void 0)continue;let o=i.groups.algo.toLowerCase();Eh.includes(o)&&t.push(i.groups)}return s===!0?"no metadata":t}function Px(e){let t=e[0].algo;if(t[3]==="5")return t;for(let s=1;s<e.length;++s){let r=e[s];if(r.algo[3]==="5"){t="sha512";break}else{if(t[3]==="3")continue;r.algo[3]==="3"&&(t="sha384")}}return t}function Hx(e,t){if(e.length===1)return e;let s=0;for(let r=0;r<e.length;++r)e[r].algo===t&&(e[s++]=e[r]);return e.length=s,e}function Vx(e,t){if(e.length!==t.length)return!1;for(let s=0;s<e.length;++s)if(e[s]!==t[s]){if(e[s]==="+"&&t[s]==="-"||e[s]==="/"&&t[s]==="_")continue;return!1}return!0}function qx(e){}function jo(e,t){return e.origin===t.origin&&e.origin==="null"||e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port}function Wx(){let e,t;return{promise:new Promise((r,i)=>{e=r,t=i}),resolve:e,reject:t}}function jx(e){return e.controller.state==="aborted"}function zx(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function Zx(e){return Ix[e.toLowerCase()]??e}function Kx(e){let t=JSON.stringify(e);if(t===void 0)throw new TypeError("Value is not JSON serializable");return Is(typeof t=="string"),t}var Xx=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function Ih(e,t,s=0,r=1){class i{#e;#t;#s;constructor(n,a){this.#e=n, Line truncated
`);function kv(e){for(let t=0;t<e.length;++t)if((e.charCodeAt(t)&-128)!==0)return!1;return!0}function Dv(e){let t=e.length;if(t<27||t>70)return!1;for(let s=0;s<t;++s){let r=e.charCodeAt(s);if(!(r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||r===39||r===45||r===95))return!1}return!0}function Rv(e,t){Zo(t!=="failure"&&t.essence==="multipart/form-data");let s=t.parameters.get("boundary");if(s===void 0)return"failure";let r=Buffer.from(`--${s}`,"utf8"),i=[],o={position:0};for(;e[o.position]===13&&e[o.position+1]===10;)o.position+=2;let n=e.length;for(;e[n-1]===10&&e[n-2]===13;)n-=2;for(n!==e.length&&(e=e.subarray(0,n));;){if(e.subarray(o.position,o.position+r.length).equals(r))o.position+=r.length;else return"failure";if(o.position===e.length-2&&Ko(e,xv,o)||o.position===e.length-4&&Ko(e,vv,o))return i;if(e[o.position]!==13||e[o.position+1]!==10)return"failure";o.position+=2;let a=Tv(e,o);if(a==="failure")return"failure";let{name:A,filename:c,contentType:u,encoding:l}=a;o.position+=2;let p;{let d=e.indexOf(r.subarray(2),o.position);if(d===-1)return"failure";p=e.subarray(o.position,d-4),o.position+=p.length,l==="base64"&&(p=Buffer.from(p.toString(),"base64"))}if(e[o.position]!==13||e[o.position+1]!==10)return"failure";o.position+=2;let g;c!==null?(u??="text/plain",kv(u)||(u=""),g=new bv([p],c,{type:u})):g=Qv(Buffer.from(p)),Zo(Uh(A)),Zo(typeof g=="string"&&Uh(g)||Cv(g)),i.push(Iv(A,g,c))}}function Tv(e,t){let s=null,r=null,i=null,o=null;for(;;){if(e[t.position]===13&&e[t.position+1]===10)return s===null?"failure":{name:s,filename:r,contentType:i,encoding:o};let n=gr(a=>a!==10&&a!==13&&a!==58,e,t);if(n=pc(n,!0,!0,a=>a===9||a===32),!Bv.test(n.toString())||e[t.position]!==58)return"failure";switch(t.position++,gr(a=>a===32||a===9,e,t),fv(n)){case"content-disposition":{if(s=r=null,!Ko(e,yv,t)||(t.position+=17,s=Mh(e,t),s===null))return"failure";if(Ko(e,Gh,t)){let a=t.position+Gh.length;if(e[a]===42&&(t.position+=1,a+=1),e[a]!==61||e[a+1]!==34||(t.position+=12,r=Mh(e,t),r===null))return"failure"}break}case"content-type":{let a=gr(A=>A!==10&&A!==13,e,t);a=pc(a,!1,!0,A=>A===9||A===32),i=Nh(a);break}case"content-transfer-encoding":{let a=gr(A=>A!==10&&A!==13,e,t);a=pc(a,!1,!0,A=>A===9||A===32),o=Nh(a);break}default:gr(a=>a!==10&&a!==13,e,t)}if(e[t.position]!==13&&e[t.position+1]!==10)return"failure";t.position+=2}}function Mh(e,t){Zo(e[t.position-1]===34);let s=gr(r=>r!==10&&r!==13&&r!==34,e,t);return e[t.position]!==34?null:(t.position++,s=new TextDecoder().decode(s).replace(/%0A/ig,`
`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),s)}function gr(e,t,s){let r=s.position;for(;r<t.length&&e(t[r]);)++r;return t.subarray(s.position,s.position=r)}function pc(e,t,s,r){let i=0,o=e.length-1;if(t)for(;i<e.length&&r(e[i]);)i++;if(s)for(;o>0&&r(e[o]);)o--;return i===0&&o===e.length-1?e:e.subarray(i,o+1)}function Ko(e,t,s){if(e.length<t.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[s.position+r])return!1;return!0}Lh.exports={multipartFormDataParser:Rv,validateBoundary:Dv}});var Er=Q((O2,zh)=>{"use strict";var Ei=U(),{ReadableStreamFrom:Fv,isBlobLike:Yh,isReadableStreamLike:Sv,readableStreamClose:Uv,createDeferredPromise:Nv,fullyReadBody:Gv,extractMimeType:Mv,utf8DecodeBytes:Ph}=Ne(),{FormData:Oh}=di(),{kState:dr}=Kt(),{webidl:Lv}=he(),{Blob:_v}=require("node:buffer"),gc=require("node:assert"),{isErrored:Hh,isDisturbed:Yv}=require("node:stream"),{isArrayBuffer:Ov}=require("node:util/types"),{serializeAMimeType:Jv}=ke(),{multipartFormDataParser:Pv}=_h(),hc;try{let e=require("node:crypto");hc=t=>e.randomInt(0,t)}catch{hc=e=>Math.floor(Math.random(e))}var Xo=new TextEncoder;function Hv(){}var Vh=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,qh;Vh&&(qh=new FinalizationRegistry(e=>{let t=e.deref();t&&!t.locked&&!Yv(t)&&!Hh(t)&&t.cancel("Response object has been garbage collected").catch(Hv)}));function Wh(e,t=!1){let s=null;e instanceof ReadableStream?s=e:Yh(e)?s=e.stream():s=new ReadableStream({async pull(A){let c=typeof i=="string"?Xo.encode(i):i;c.byteLength&&A.enqueue(c),queueMicrotask(()=>Uv(A))},start(){},type:"bytes"}),gc(Sv(s));let r=null,i=null,o=null,n=null;if(typeof e=="string")i=e,n="text/plain;charset=UTF-8";else if(e instanceof URLSearchParams)i=e.toString(),n="application/x-www-form-urlencoded;charset=UTF-8";else if(Ov(e))i=new Uint8Array(e.slice());else if(ArrayBuffer.isView(e))i=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));else if(Ei.isFormDataLike(e)){let A=`----formdata-undici-0${`${hc(1e11)}`.padStart(11,"0")}`,c=`--${A}\r
"use strict";var sb=Object.create;var yp=Object.defineProperty;var rb=Object.getOwnPropertyDescriptor;var ib=Object.getOwnPropertyNames;var ob=Object.getPrototypeOf,nb=Object.prototype.hasOwnProperty;var B=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(s){throw t=0,s}};var ab=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ib(t))!nb.call(e,i)&&i!==s&&yp(e,i,{get:()=>t[i],enumerable:!(r=rb(t,i))||r.enumerable});return e};var Ee=(e,t,s)=>(s=e!=null?sb(ob(e)):{},ab(t||!e||!e.__esModule?yp(s,"default",{value:e,enumerable:!0}):s,e));var Np=B(sr=>{"use strict";var E2=require("net"),ub=require("tls"),aA=require("http"),Fp=require("https"),pb=require("events"),m2=require("assert"),gb=require("util");sr.httpOverHttp=hb;sr.httpsOverHttp=db;sr.httpOverHttps=Eb;sr.httpsOverHttps=mb;function hb(e){var t=new Rt(e);return t.request=aA.request,t}function db(e){var t=new Rt(e);return t.request=aA.request,t.createSocket=Sp,t.defaultPort=443,t}function Eb(e){var t=new Rt(e);return t.request=Fp.request,t}function mb(e){var t=new Rt(e);return t.request=Fp.request,t.createSocket=Sp,t.defaultPort=443,t}function Rt(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||aA.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on("free",function(r,i,o,n){for(var a=Up(i,o,n),A=0,c=t.requests.length;A<c;++A){var u=t.requests[A];if(u.host===a.host&&u.port===a.port){t.requests.splice(A,1),u.request.onSocket(r);return}}r.destroy(),t.removeSocket(r)})}gb.inherits(Rt,pb.EventEmitter);Rt.prototype.addRequest=function(t,s,r,i){var o=this,n=AA({request:t},o.options,Up(s,r,i));if(o.sockets.length>=this.maxSockets){o.requests.push(n);return}o.createSocket(n,function(a){a.on("free",A),a.on("close",c),a.on("agentRemove",c),t.onSocket(a);function A(){o.emit("free",a,n)}function c(u){o.removeSocket(a),a.removeListener("free",A),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Rt.prototype.createSocket=function(t,s){var r=this,i={};r.sockets.push(i);var o=AA({},r.proxyOptions,{method:"CONNECT",path:t.host+":"+t.port,agent:!1,headers:{host:t.host+":"+t.port}});t.localAddress&&(o.localAddress=t.localAddress),o.proxyAuth&&(o.headers=o.headers||{},o.headers["Proxy-Authorization"]="Basic "+new Buffer(o.proxyAuth).toString("base64")),Zt("making CONNECT request");var n=r.request(o);n.useChunkedEncodingByDefault=!1,n.once("response",a),n.once("upgrade",A),n.once("connect",c),n.once("error",u),n.end();function a(l){l.upgrade=!0}function A(l,p,g){process.nextTick(function(){c(l,p,g)})}function c(l,p,g){if(n.removeAllListeners(),p.removeAllListeners(),l.statusCode!==200){Zt("tunneling socket could not be established, statusCode=%d",l.statusCode),p.destroy();var d=new Error("tunneling socket could not be established, statusCode="+l.statusCode);d.code="ECONNRESET",t.request.emit("error",d),r.removeSocket(i);return}if(g.length>0){Zt("got illegal response body from proxy"),p.destroy();var d=new Error("got illegal response body from proxy");d.code="ECONNRESET",t.request.emit("error",d),r.removeSocket(i);return}return Zt("tunneling connection has established"),r.sockets[r.sockets.indexOf(i)]=p,s(p)}function u(l){n.removeAllListeners(),Zt(`tunneling socket could not be established, cause=%s
`,l.message,l.stack);var p=new Error("tunneling socket could not be established, cause="+l.message);p.code="ECONNRESET",t.request.emit("error",p),r.removeSocket(i)}};Rt.prototype.removeSocket=function(t){var s=this.sockets.indexOf(t);if(s!==-1){this.sockets.splice(s,1);var r=this.requests.shift();r&&this.createSocket(r,function(i){r.request.onSocket(i)})}};function Sp(e,t){var s=this;Rt.prototype.createSocket.call(s,e,function(r){var i=e.request.getHeader("host"),o=AA({},s.options,{socket:r,servername:i?i.replace(/:.*$/,""):e.host}),n=ub.connect(0,o);s.sockets[s.sockets.indexOf(r)]=n,t(n)})}function Up(e,t,s){return typeof e=="string"?{host:e,port:t,localAddress:s}:e}function AA(e){for(var t=1,s=arguments.length;t<s;++t){var r=arguments[t];if(typeof r=="object")for(var i=Object.keys(r),o=0,n=i.length;o<n;++o){var a=i[o];r[a]!==void 0&&(e[a]=r[a])}}return e}var Zt;process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?Zt=function(){var e=Array.prototype.slice.call(arguments);typeof e[0]=="string"?e[0]="TUNNEL: "+e[0]:e.unshift("TUNNEL:"),console.error.apply(console,e)}:Zt=function(){};sr.debug=Zt});var cA=B((Q2,Gp)=>{Gp.exports=Np()});var z=B((B2,Mp)=>{Mp.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}});var _=B((C2,Ag)=>{"use strict";var Lp=Symbol.for("undici.error.UND_ERR"),Z=class extends Error{constructor(t){super(t),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](t){return t&&t[Lp]===!0}[Lp]=!0},_p=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),lA=class extends Z{constructor(t){super(t),this.name="ConnectTimeoutError",this.message=t||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[_p]===!0}[_p]=!0},Yp=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),uA=class extends Z{constructor(t){super(t),this.name="HeadersTimeoutError",this.message=t||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[Yp]===!0}[Yp]=!0},Op=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),pA=class extends Z{constructor(t){super(t),this.name="HeadersOverflowError",this.message=t||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](t){return t&&t[Op]===!0}[Op]=!0},Jp=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),gA=class extends Z{constructor(t){super(t),this.name="BodyTimeoutError",this.message=t||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](t){return t&&t[Jp]===!0}[Jp]=!0},Pp=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"),hA=class extends Z{constructor(t,s,r,i){super(t),this.name="ResponseStatusCodeError",this.message=t||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=i,this.status=s,this. Line truncated
`)||e.includes("\r")||e.includes("\0"))===!1}function Sx(e,t){let{headersList:s}=t,r=(s.get("referrer-policy",!0)??"").split(","),i="";if(r.length>0)for(let o=r.length;o!==0;o--){let n=r[o-1].trim();if(mx.has(n)){i=n;break}}i!==""&&(e.referrerPolicy=i)}function Ux(){return"allowed"}function Nx(){return"success"}function Gx(){return"success"}function Mx(e){let t=null;t=e.mode,e.headersList.set("sec-fetch-mode",t,!0)}function Lx(e){let t=e.origin;if(!(t==="client"||t===void 0)){if(e.responseTainting==="cors"||e.mode==="websocket")e.headersList.append("origin",t,!0);else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":t=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":e.origin&&nc(e.origin)&&!nc(gi(e))&&(t=null);break;case"same-origin":jo(e,gi(e))||(t=null);break;default:}e.headersList.append("origin",t,!0)}}}function pr(e,t){return e}function _x(e,t,s){return!e?.startTime||e.startTime<t?{domainLookupStartTime:t,domainLookupEndTime:t,connectionStartTime:t,connectionEndTime:t,secureConnectionStartTime:t,ALPNNegotiatedProtocol:e?.ALPNNegotiatedProtocol}:{domainLookupStartTime:pr(e.domainLookupStartTime,s),domainLookupEndTime:pr(e.domainLookupEndTime,s),connectionStartTime:pr(e.connectionStartTime,s),connectionEndTime:pr(e.connectionEndTime,s),secureConnectionStartTime:pr(e.secureConnectionStartTime,s),ALPNNegotiatedProtocol:e.ALPNNegotiatedProtocol}}function Yx(e){return pr(Ix.now(),e)}function Ox(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function Ih(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function Jx(e){return{referrerPolicy:e.referrerPolicy}}function Px(e){let t=e.referrerPolicy;ws(t);let s=null;if(e.referrer==="client"){let a=Eh();if(!a||a.origin==="null")return"no-referrer";s=new URL(a)}else e.referrer instanceof URL&&(s=e.referrer);let r=oc(s),i=oc(s,!0);r.toString().length>4096&&(r=i);let o=jo(e,r),n=pi(r)&&!pi(e.url);switch(t){case"origin":return i??oc(s,!0);case"unsafe-url":return r;case"same-origin":return o?i:"no-referrer";case"origin-when-cross-origin":return o?r:i;case"strict-origin-when-cross-origin":{let a=gi(e);return jo(r,a)?r:pi(r)&&!pi(a)?"no-referrer":i}default:return n?"no-referrer":i}}function oc(e,t){return ws(e instanceof URL),e=new URL(e),e.protocol==="file:"||e.protocol==="about:"||e.protocol==="blank:"?"no-referrer":(e.username="",e.password="",e.hash="",t&&(e.pathname="",e.search=""),e)}function pi(e){if(!(e instanceof URL))return!1;if(e.href==="about:blank"||e.href==="about:srcdoc"||e.protocol==="data:"||e.protocol==="file:")return!0;return t(e.origin);function t(s){if(s==null||s==="null")return!1;let r=new URL(s);return!!(r.protocol==="https:"||r.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(r.hostname)||r.hostname==="localhost"||r.hostname.includes("localhost.")||r.hostname.endsWith(".localhost"))}}function Hx(e,t){if(Wo===void 0)return!0;let s=wh(t);if(s==="no metadata"||s.length===0)return!0;let r=qx(s),i=Wx(s,r);for(let o of i){let n=o.algo,a=o.hash,A=Wo.createHash(n).update(e).digest("base64");if(A[A.length-1]==="="&&(A[A.length-2]==="="?A=A.slice(0,-2):A=A.slice(0,-1)),jx(A,a))return!0}return!1}var Vx=/(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function wh(e){let t=[],s=!0;for(let r of e.split(" ")){s=!1;let i=Vx.exec(r);if(i===null||i.groups===void 0||i.groups.algo===void 0)continue;let o=i.groups.algo.toLowerCase();fh.includes(o)&&t.push(i.groups)}return s===!0?"no metadata":t}function qx(e){let t=e[0].algo;if(t[3]==="5")return t;for(let s=1;s<e.length;++s){let r=e[s];if(r.algo[3]==="5"){t="sha512";break}else{if(t[3]==="3")continue;r.algo[3]==="3"&&(t="sha384")}}return t}function Wx(e,t){if(e.length===1)return e;let s=0;for(let r=0;r<e.length;++r)e[r].algo===t&&(e[s++]=e[r]);return e.length=s,e}function jx(e,t){if(e.length!==t.length)return!1;for(let s=0;s<e.length;++s)if(e[s]!==t[s]){if(e[s]==="+"&&t[s]==="-"||e[s]==="/"&&t[s]==="_")continue;return!1}return!0}function zx(e){}function jo(e,t){return e.origin===t.origin&&e.origin==="null"||e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port}function Zx(){let e,t;return{promise:new Promise((r,i)=>{e=r,t=i}),resolve:e,reject:t}}function Kx(e){return e.controller.state==="aborted"}function Xx(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function $x(e){return yx[e.toLowerCase()]??e}function ev(e){let t=JSON.stringify(e);if(t===void 0)throw new TypeError("Value is not JSON serializable");return ws(typeof t=="string"),t}var tv=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function bh(e,t,s=0,r=1){class i{#e;#t;#s;constructor(n,a){this.#e=n, Line truncated
`);function Tv(e){for(let t=0;t<e.length;++t)if((e.charCodeAt(t)&-128)!==0)return!1;return!0}function Fv(e){let t=e.length;if(t<27||t>70)return!1;for(let s=0;s<t;++s){let r=e.charCodeAt(s);if(!(r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||r===39||r===45||r===95))return!1}return!0}function Sv(e,t){Zo(t!=="failure"&&t.essence==="multipart/form-data");let s=t.parameters.get("boundary");if(s===void 0)return"failure";let r=Buffer.from(`--${s}`,"utf8"),i=[],o={position:0};for(;e[o.position]===13&&e[o.position+1]===10;)o.position+=2;let n=e.length;for(;e[n-1]===10&&e[n-2]===13;)n-=2;for(n!==e.length&&(e=e.subarray(0,n));;){if(e.subarray(o.position,o.position+r.length).equals(r))o.position+=r.length;else return"failure";if(o.position===e.length-2&&Ko(e,Dv,o)||o.position===e.length-4&&Ko(e,Rv,o))return i;if(e[o.position]!==13||e[o.position+1]!==10)return"failure";o.position+=2;let a=Uv(e,o);if(a==="failure")return"failure";let{name:A,filename:c,contentType:u,encoding:l}=a;o.position+=2;let p;{let d=e.indexOf(r.subarray(2),o.position);if(d===-1)return"failure";p=e.subarray(o.position,d-4),o.position+=p.length,l==="base64"&&(p=Buffer.from(p.toString(),"base64"))}if(e[o.position]!==13||e[o.position+1]!==10)return"failure";o.position+=2;let g;c!==null?(u??="text/plain",Tv(u)||(u=""),g=new vv([p],c,{type:u})):g=Iv(Buffer.from(p)),Zo(Gh(A)),Zo(typeof g=="string"&&Gh(g)||bv(g)),i.push(yv(A,g,c))}}function Uv(e,t){let s=null,r=null,i=null,o=null;for(;;){if(e[t.position]===13&&e[t.position+1]===10)return s===null?"failure":{name:s,filename:r,contentType:i,encoding:o};let n=hr(a=>a!==10&&a!==13&&a!==58,e,t);if(n=gc(n,!0,!0,a=>a===9||a===32),!wv.test(n.toString())||e[t.position]!==58)return"failure";switch(t.position++,hr(a=>a===32||a===9,e,t),Cv(n)){case"content-disposition":{if(s=r=null,!Ko(e,kv,t)||(t.position+=17,s=_h(e,t),s===null))return"failure";if(Ko(e,Lh,t)){let a=t.position+Lh.length;if(e[a]===42&&(t.position+=1,a+=1),e[a]!==61||e[a+1]!==34||(t.position+=12,r=_h(e,t),r===null))return"failure"}break}case"content-type":{let a=hr(A=>A!==10&&A!==13,e,t);a=gc(a,!1,!0,A=>A===9||A===32),i=Mh(a);break}case"content-transfer-encoding":{let a=hr(A=>A!==10&&A!==13,e,t);a=gc(a,!1,!0,A=>A===9||A===32),o=Mh(a);break}default:hr(a=>a!==10&&a!==13,e,t)}if(e[t.position]!==13&&e[t.position+1]!==10)return"failure";t.position+=2}}function _h(e,t){Zo(e[t.position-1]===34);let s=hr(r=>r!==10&&r!==13&&r!==34,e,t);return e[t.position]!==34?null:(t.position++,s=new TextDecoder().decode(s).replace(/%0A/ig,`
`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),s)}function hr(e,t,s){let r=s.position;for(;r<t.length&&e(t[r]);)++r;return t.subarray(s.position,s.position=r)}function gc(e,t,s,r){let i=0,o=e.length-1;if(t)for(;i<e.length&&r(e[i]);)i++;if(s)for(;o>0&&r(e[o]);)o--;return i===0&&o===e.length-1?e:e.subarray(i,o+1)}function Ko(e,t,s){if(e.length<t.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[s.position+r])return!1;return!0}Yh.exports={multipartFormDataParser:Sv,validateBoundary:Fv}});var mr=B((q2,Kh)=>{"use strict";var Ei=U(),{ReadableStreamFrom:Nv,isBlobLike:Jh,isReadableStreamLike:Gv,readableStreamClose:Mv,createDeferredPromise:Lv,fullyReadBody:_v,extractMimeType:Yv,utf8DecodeBytes:Vh}=Ne(),{FormData:Ph}=di(),{kState:Er}=Kt(),{webidl:Ov}=he(),{Blob:Jv}=require("node:buffer"),hc=require("node:assert"),{isErrored:qh,isDisturbed:Pv}=require("node:stream"),{isArrayBuffer:Hv}=require("node:util/types"),{serializeAMimeType:Vv}=ke(),{multipartFormDataParser:qv}=Oh(),dc;try{let e=require("node:crypto");dc=t=>e.randomInt(0,t)}catch{dc=e=>Math.floor(Math.random(e))}var Xo=new TextEncoder;function Wv(){}var Wh=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,jh;Wh&&(jh=new FinalizationRegistry(e=>{let t=e.deref();t&&!t.locked&&!Pv(t)&&!qh(t)&&t.cancel("Response object has been garbage collected").catch(Wv)}));function zh(e,t=!1){let s=null;e instanceof ReadableStream?s=e:Jh(e)?s=e.stream():s=new ReadableStream({async pull(A){let c=typeof i=="string"?Xo.encode(i):i;c.byteLength&&A.enqueue(c),queueMicrotask(()=>Mv(A))},start(){},type:"bytes"}),hc(Gv(s));let r=null,i=null,o=null,n=null;if(typeof e=="string")i=e,n="text/plain;charset=UTF-8";else if(e instanceof URLSearchParams)i=e.toString(),n="application/x-www-form-urlencoded;charset=UTF-8";else if(Hv(e))i=new Uint8Array(e.slice());else if(ArrayBuffer.isView(e))i=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));else if(Ei.isFormDataLike(e)){let A=`----formdata-undici-0${`${dc(1e11)}`.padStart(11,"0")}`,c=`--${A}\r
Content-Disposition: form-data`;let u=f=>f.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),l=f=>f.replace(/\r?\n|\r/g,`\r
`),p=[],g=new Uint8Array([13,10]);o=0;let d=!1;for(let[f,h]of e)if(typeof h=="string"){let m=Xo.encode(c+`; name="${u(l(f))}"\r
\r
@@ -11,48 +11,48 @@ ${l(h)}\r
Content-Type: ${h.type||"application/octet-stream"}\r
\r
`);p.push(m,h,g),typeof h.size=="number"?o+=m.byteLength+h.size+g.byteLength:d=!0}let E=Xo.encode(`--${A}--\r
`);p.push(E),o+=E.byteLength,d&&(o=null),i=e,r=async function*(){for(let f of p)f.stream?yield*f.stream():yield f},n=`multipart/form-data; boundary=${A}`}else if(Yh(e))i=e,o=e.size,e.type&&(n=e.type);else if(typeof e[Symbol.asyncIterator]=="function"){if(t)throw new TypeError("keepalive");if(Ei.isDisturbed(e)||e.locked)throw new TypeError("Response body object should not be disturbed or locked");s=e instanceof ReadableStream?e:Fv(e)}if((typeof i=="string"||Ei.isBuffer(i))&&(o=Buffer.byteLength(i)),r!=null){let A;s=new ReadableStream({async start(){A=r(e)[Symbol.asyncIterator]()},async pull(c){let{value:u,done:l}=await A.next();if(l)queueMicrotask(()=>{c.close(),c.byobRequest?.respond(0)});else if(!Hh(s)){let p=new Uint8Array(u);p.byteLength&&c.enqueue(p)}return c.desiredSize>0},async cancel(c){await A.return()},type:"bytes"})}return[{stream:s,source:i,length:o},n]}function Vv(e,t=!1){return e instanceof ReadableStream&&(gc(!Ei.isDisturbed(e),"The body has already been consumed."),gc(!e.locked,"The stream is locked.")),Wh(e,t)}function qv(e,t){let[s,r]=t.stream.tee();return t.stream=s,{stream:r,length:t.length,source:t.source}}function Wv(e){if(e.aborted)throw new DOMException("The operation was aborted.","AbortError")}function jv(e){return{blob(){return hr(this,s=>{let r=Jh(this);return r===null?r="":r&&(r=Jv(r)),new _v([s],{type:r})},e)},arrayBuffer(){return hr(this,s=>new Uint8Array(s).buffer,e)},text(){return hr(this,Ph,e)},json(){return hr(this,Zv,e)},formData(){return hr(this,s=>{let r=Jh(this);if(r!==null)switch(r.essence){case"multipart/form-data":{let i=Pv(s,r);if(i==="failure")throw new TypeError("Failed to parse body as FormData.");let o=new Oh;return o[dr]=i,o}case"application/x-www-form-urlencoded":{let i=new URLSearchParams(s.toString()),o=new Oh;for(let[n,a]of i)o.append(n,a);return o}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e)},bytes(){return hr(this,s=>new Uint8Array(s),e)}}}function zv(e){Object.assign(e.prototype,jv(e))}async function hr(e,t,s){if(Lv.brandCheck(e,s),jh(e))throw new TypeError("Body is unusable: Body has already been read");Wv(e[dr]);let r=Nv(),i=n=>r.reject(n),o=n=>{try{r.resolve(t(n))}catch(a){i(a)}};return e[dr].body==null?(o(Buffer.allocUnsafe(0)),r.promise):(await Gv(e[dr].body,o,i),r.promise)}function jh(e){let t=e[dr].body;return t!=null&&(t.stream.locked||Ei.isDisturbed(t.stream))}function Zv(e){return JSON.parse(Ph(e))}function Jh(e){let t=e[dr].headersList,s=Mv(t);return s==="failure"?null:s}zh.exports={extractBody:Wh,safelyExtractBody:Vv,cloneBody:qv,mixinBody:zv,streamRegistry:qh,hasFinalizationRegistry:Vh,bodyUnusable:jh}});var ud=Q((J2,ld)=>{"use strict";var v=require("node:assert"),D=U(),{channels:Zh}=rr(),dc=ZA(),{RequestContentLengthMismatchError:ws,ResponseContentLengthMismatchError:Kh,RequestAbortedError:od,HeadersTimeoutError:Kv,HeadersOverflowError:Xv,SocketError:mr,InformationalError:fr,BodyTimeoutError:$v,HTTPParserError:ek,ResponseExceededMaxSizeError:tk}=_(),{kUrl:nd,kReset:De,kClient:sn,kParser:W,kBlocking:Qi,kRunning:ie,kPending:ad,kSize:Xh,kWriting:Xt,kQueue:rt,kNoRef:mi,kKeepAliveDefaultTimeout:sk,kHostHeader:rk,kPendingIdx:ik,kRunningIdx:je,kError:Ce,kPipelining:rn,kSocket:ys,kKeepAliveTimeoutValue:nn,kMaxHeadersSize:Ec,kKeepAliveMaxTimeout:ok,kKeepAliveTimeoutThreshold:nk,kHeadersTimeout:ak,kBodyTimeout:Ak,kStrictContentLength:Qc,kMaxRequests:$h,kCounter:ck,kMaxResponseSize:lk,kOnError:ed,kResume:Gt,kHTTPContext:Ad}=z(),Ge=qg(),td=Buffer.alloc(0),$o=Buffer[Symbol.species],en=D.addListener,uk=D.removeAllListeners,xs=Symbol("kIdleSocketValidation"),bs=Symbol("kIdleSocketValidationTimeout"),wc=Symbol("kSocketUsed"),mc;async function pk(){let e=process.env.JEST_WORKER_ID?$A():void 0,t;try{t=await WebAssembly.compile(zg())}catch{t=await WebAssembly.compile(e||$A())}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(s,r,i)=>0,wasm_on_status:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onStatus(new $o(Qt.buffer,o,i))||0},wasm_on_message_begin:s=>(v($.ptr===s),$.onMessageBegin()||0),wasm_on_header_field:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onHeaderField(new $o(Qt.buffer,o,i))||0},wasm_on_header_value:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onHeaderValue(new $o(Qt.buffer,o,i))||0},wasm_on_headers_complete:(s,r,i,o)=>(v($.ptr===s),$.onHeadersComplete(r,!!i,!!o)||0),wasm_on_body:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onBody(new $o(Qt.buffer,o,i))||0},wasm_on_message_complete:s=>(v($.ptr===s),$.onMessageComplete()||0)}})}var fc=null,Bc=pk();Bc.catch();var $=null,Qt=null,tn=0,Bt=null,gk=0,fi=1,Qr=2|fi,on=4|fi,Cc=8|gk,Ic=class{constructor(t,s,{exports:r}){v(Number.isFinite(t[Ec])&&t[Ec]>0),this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(Ge.TYPE.RESPONSE),this.client=t,this.socket=s,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers= Line truncated
`);p.push(E),o+=E.byteLength,d&&(o=null),i=e,r=async function*(){for(let f of p)f.stream?yield*f.stream():yield f},n=`multipart/form-data; boundary=${A}`}else if(Jh(e))i=e,o=e.size,e.type&&(n=e.type);else if(typeof e[Symbol.asyncIterator]=="function"){if(t)throw new TypeError("keepalive");if(Ei.isDisturbed(e)||e.locked)throw new TypeError("Response body object should not be disturbed or locked");s=e instanceof ReadableStream?e:Nv(e)}if((typeof i=="string"||Ei.isBuffer(i))&&(o=Buffer.byteLength(i)),r!=null){let A;s=new ReadableStream({async start(){A=r(e)[Symbol.asyncIterator]()},async pull(c){let{value:u,done:l}=await A.next();if(l)queueMicrotask(()=>{c.close(),c.byobRequest?.respond(0)});else if(!qh(s)){let p=new Uint8Array(u);p.byteLength&&c.enqueue(p)}return c.desiredSize>0},async cancel(c){await A.return()},type:"bytes"})}return[{stream:s,source:i,length:o},n]}function jv(e,t=!1){return e instanceof ReadableStream&&(hc(!Ei.isDisturbed(e),"The body has already been consumed."),hc(!e.locked,"The stream is locked.")),zh(e,t)}function zv(e,t){let[s,r]=t.stream.tee();return t.stream=s,{stream:r,length:t.length,source:t.source}}function Zv(e){if(e.aborted)throw new DOMException("The operation was aborted.","AbortError")}function Kv(e){return{blob(){return dr(this,s=>{let r=Hh(this);return r===null?r="":r&&(r=Vv(r)),new Jv([s],{type:r})},e)},arrayBuffer(){return dr(this,s=>new Uint8Array(s).buffer,e)},text(){return dr(this,Vh,e)},json(){return dr(this,$v,e)},formData(){return dr(this,s=>{let r=Hh(this);if(r!==null)switch(r.essence){case"multipart/form-data":{let i=qv(s,r);if(i==="failure")throw new TypeError("Failed to parse body as FormData.");let o=new Ph;return o[Er]=i,o}case"application/x-www-form-urlencoded":{let i=new URLSearchParams(s.toString()),o=new Ph;for(let[n,a]of i)o.append(n,a);return o}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e)},bytes(){return dr(this,s=>new Uint8Array(s),e)}}}function Xv(e){Object.assign(e.prototype,Kv(e))}async function dr(e,t,s){if(Ov.brandCheck(e,s),Zh(e))throw new TypeError("Body is unusable: Body has already been read");Zv(e[Er]);let r=Lv(),i=n=>r.reject(n),o=n=>{try{r.resolve(t(n))}catch(a){i(a)}};return e[Er].body==null?(o(Buffer.allocUnsafe(0)),r.promise):(await _v(e[Er].body,o,i),r.promise)}function Zh(e){let t=e[Er].body;return t!=null&&(t.stream.locked||Ei.isDisturbed(t.stream))}function $v(e){return JSON.parse(Vh(e))}function Hh(e){let t=e[Er].headersList,s=Yv(t);return s==="failure"?null:s}Kh.exports={extractBody:zh,safelyExtractBody:jv,cloneBody:zv,mixinBody:Xv,streamRegistry:jh,hasFinalizationRegistry:Wh,bodyUnusable:Zh}});var gd=B((W2,pd)=>{"use strict";var v=require("node:assert"),D=U(),{channels:Xh}=ir(),Ec=KA(),{RequestContentLengthMismatchError:bs,ResponseContentLengthMismatchError:$h,RequestAbortedError:ad,HeadersTimeoutError:ek,HeadersOverflowError:tk,SocketError:fr,InformationalError:Qr,BodyTimeoutError:sk,HTTPParserError:rk,ResponseExceededMaxSizeError:ik}=_(),{kUrl:Ad,kReset:De,kClient:sn,kParser:W,kBlocking:Qi,kRunning:ie,kPending:cd,kSize:ed,kWriting:Xt,kQueue:rt,kNoRef:mi,kKeepAliveDefaultTimeout:ok,kHostHeader:nk,kPendingIdx:ak,kRunningIdx:je,kError:Ce,kPipelining:rn,kSocket:xs,kKeepAliveTimeoutValue:nn,kMaxHeadersSize:mc,kKeepAliveMaxTimeout:Ak,kKeepAliveTimeoutThreshold:ck,kHeadersTimeout:lk,kBodyTimeout:uk,kStrictContentLength:Bc,kMaxRequests:td,kCounter:pk,kMaxResponseSize:gk,kOnError:sd,kResume:Gt,kHTTPContext:ld}=z(),Ge=jg(),rd=Buffer.alloc(0),$o=Buffer[Symbol.species],en=D.addListener,hk=D.removeAllListeners,vs=Symbol("kIdleSocketValidation"),ys=Symbol("kIdleSocketValidationTimeout"),bc=Symbol("kSocketUsed"),fc;async function dk(){let e=process.env.JEST_WORKER_ID?ec():void 0,t;try{t=await WebAssembly.compile(Kg())}catch{t=await WebAssembly.compile(e||ec())}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(s,r,i)=>0,wasm_on_status:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onStatus(new $o(Qt.buffer,o,i))||0},wasm_on_message_begin:s=>(v($.ptr===s),$.onMessageBegin()||0),wasm_on_header_field:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onHeaderField(new $o(Qt.buffer,o,i))||0},wasm_on_header_value:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onHeaderValue(new $o(Qt.buffer,o,i))||0},wasm_on_headers_complete:(s,r,i,o)=>(v($.ptr===s),$.onHeadersComplete(r,!!i,!!o)||0),wasm_on_body:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onBody(new $o(Qt.buffer,o,i))||0},wasm_on_message_complete:s=>(v($.ptr===s),$.onMessageComplete()||0)}})}var Qc=null,Cc=dk();Cc.catch();var $=null,Qt=null,tn=0,Bt=null,Ek=0,fi=1,Br=2|fi,on=4|fi,Ic=8|Ek,wc=class{constructor(t,s,{exports:r}){v(Number.isFinite(t[mc])&&t[mc]>0),this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(Ge.TYPE.RESPONSE),this.client=t,this.socket=s,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers= Line truncated
`;if(typeof i=="string"?E+=`host: ${i}\r
`:E+=e[rk],o?E+=`connection: upgrade\r
`:E+=e[nk],o?E+=`connection: upgrade\r
upgrade: ${o}\r
`:e[rn]&&!g[De]?E+=`connection: keep-alive\r
`:E+=`connection: close\r
`,Array.isArray(c))for(let f=0;f<c.length;f+=2){let h=c[f+0],m=c[f+1];if(Array.isArray(m))for(let B=0;B<m.length;B++)E+=`${h}: ${m[B]}\r
`,Array.isArray(c))for(let f=0;f<c.length;f+=2){let h=c[f+0],m=c[f+1];if(Array.isArray(m))for(let Q=0;Q<m.length;Q++)E+=`${h}: ${m[Q]}\r
`;else E+=`${h}: ${m}\r
`}return Zh.sendHeaders.hasSubscribers&&Zh.sendHeaders.publish({request:t,headers:E,socket:g}),!A||p===0?rd(d,null,e,t,g,u,E,l):D.isBuffer(A)?rd(d,A,e,t,g,u,E,l):D.isBlobLike(A)?typeof A.stream=="function"?id(d,A.stream(),e,t,g,u,E,l):Bk(d,A,e,t,g,u,E,l):D.isStream(A)?Qk(d,A,e,t,g,u,E,l):D.isIterable(A)?id(d,A,e,t,g,u,E,l):v(!1),!0}function Qk(e,t,s,r,i,o,n,a){v(o!==0||s[ie]===0,"stream body cannot be pipelined");let A=!1,c=new an({abort:e,socket:i,request:r,contentLength:o,client:s,expectsPayload:a,header:n}),u=function(d){if(!A)try{!c.write(d)&&this.pause&&this.pause()}catch(E){D.destroy(this,E)}},l=function(){A||t.resume&&t.resume()},p=function(){if(queueMicrotask(()=>{t.removeListener("error",g)}),!A){let d=new od;queueMicrotask(()=>g(d))}},g=function(d){if(!A){if(A=!0,v(i.destroyed||i[Xt]&&s[ie]<=1),i.off("drain",l).off("error",g),t.removeListener("data",u).removeListener("end",g).removeListener("close",p),!d)try{c.end()}catch(E){d=E}c.destroy(d),d&&(d.code!=="UND_ERR_INFO"||d.message!=="reset")?D.destroy(t,d):D.destroy(t)}};t.on("data",u).on("end",g).on("error",g).on("close",p),t.resume&&t.resume(),i.on("drain",l).on("error",g),t.errorEmitted??t.errored?setImmediate(()=>g(t.errored)):(t.endEmitted??t.readableEnded)&&setImmediate(()=>g(null)),(t.closeEmitted??t.closed)&&setImmediate(p)}function rd(e,t,s,r,i,o,n,a){try{t?D.isBuffer(t)&&(v(o===t.byteLength,"buffer body must have content length"),i.cork(),i.write(`${n}content-length: ${o}\r
`}return Xh.sendHeaders.hasSubscribers&&Xh.sendHeaders.publish({request:t,headers:E,socket:g}),!A||p===0?od(d,null,e,t,g,u,E,l):D.isBuffer(A)?od(d,A,e,t,g,u,E,l):D.isBlobLike(A)?typeof A.stream=="function"?nd(d,A.stream(),e,t,g,u,E,l):wk(d,A,e,t,g,u,E,l):D.isStream(A)?Ik(d,A,e,t,g,u,E,l):D.isIterable(A)?nd(d,A,e,t,g,u,E,l):v(!1),!0}function Ik(e,t,s,r,i,o,n,a){v(o!==0||s[ie]===0,"stream body cannot be pipelined");let A=!1,c=new an({abort:e,socket:i,request:r,contentLength:o,client:s,expectsPayload:a,header:n}),u=function(d){if(!A)try{!c.write(d)&&this.pause&&this.pause()}catch(E){D.destroy(this,E)}},l=function(){A||t.resume&&t.resume()},p=function(){if(queueMicrotask(()=>{t.removeListener("error",g)}),!A){let d=new ad;queueMicrotask(()=>g(d))}},g=function(d){if(!A){if(A=!0,v(i.destroyed||i[Xt]&&s[ie]<=1),i.off("drain",l).off("error",g),t.removeListener("data",u).removeListener("end",g).removeListener("close",p),!d)try{c.end()}catch(E){d=E}c.destroy(d),d&&(d.code!=="UND_ERR_INFO"||d.message!=="reset")?D.destroy(t,d):D.destroy(t)}};t.on("data",u).on("end",g).on("error",g).on("close",p),t.resume&&t.resume(),i.on("drain",l).on("error",g),t.errorEmitted??t.errored?setImmediate(()=>g(t.errored)):(t.endEmitted??t.readableEnded)&&setImmediate(()=>g(null)),(t.closeEmitted??t.closed)&&setImmediate(p)}function od(e,t,s,r,i,o,n,a){try{t?D.isBuffer(t)&&(v(o===t.byteLength,"buffer body must have content length"),i.cork(),i.write(`${n}content-length: ${o}\r
\r
`,"latin1"),i.write(t),i.uncork(),r.onBodySent(t),!a&&r.reset!==!1&&(i[De]=!0)):o===0?i.write(`${n}content-length: 0\r
\r
`,"latin1"):(v(o===null,"no body must not have content length"),i.write(`${n}\r
`,"latin1")),r.onRequestSent(),s[Gt]()}catch(A){e(A)}}async function Bk(e,t,s,r,i,o,n,a){v(o===t.size,"blob body must have content length");try{if(o!=null&&o!==t.size)throw new ws;let A=Buffer.from(await t.arrayBuffer());i.cork(),i.write(`${n}content-length: ${o}\r
`,"latin1")),r.onRequestSent(),s[Gt]()}catch(A){e(A)}}async function wk(e,t,s,r,i,o,n,a){v(o===t.size,"blob body must have content length");try{if(o!=null&&o!==t.size)throw new bs;let A=Buffer.from(await t.arrayBuffer());i.cork(),i.write(`${n}content-length: ${o}\r
\r
`,"latin1"),i.write(A),i.uncork(),r.onBodySent(A),r.onRequestSent(),!a&&r.reset!==!1&&(i[De]=!0),s[Gt]()}catch(A){e(A)}}async function id(e,t,s,r,i,o,n,a){v(o!==0||s[ie]===0,"iterator body cannot be pipelined");let A=null;function c(){if(A){let p=A;A=null,p()}}let u=()=>new Promise((p,g)=>{v(A===null),i[Ce]?g(i[Ce]):A=p});i.on("close",c).on("drain",c);let l=new an({abort:e,socket:i,request:r,contentLength:o,client:s,expectsPayload:a,header:n});try{for await(let p of t){if(i[Ce])throw i[Ce];l.write(p)||await u()}l.end()}catch(p){l.destroy(p)}finally{i.off("close",c).off("drain",c)}}var an=class{constructor({abort:t,socket:s,request:r,contentLength:i,client:o,expectsPayload:n,header:a}){this.socket=s,this.request=r,this.contentLength=i,this.client=o,this.bytesWritten=0,this.expectsPayload=n,this.header=a,this.abort=t,s[Xt]=!0}write(t){let{socket:s,request:r,contentLength:i,client:o,bytesWritten:n,expectsPayload:a,header:A}=this;if(s[Ce])throw s[Ce];if(s.destroyed)return!1;let c=Buffer.byteLength(t);if(!c)return!0;if(i!==null&&n+c>i){if(o[Qc])throw new ws;process.emitWarning(new ws)}s.cork(),n===0&&(!a&&r.reset!==!1&&(s[De]=!0),i===null?s.write(`${A}transfer-encoding: chunked\r
`,"latin1"),i.write(A),i.uncork(),r.onBodySent(A),r.onRequestSent(),!a&&r.reset!==!1&&(i[De]=!0),s[Gt]()}catch(A){e(A)}}async function nd(e,t,s,r,i,o,n,a){v(o!==0||s[ie]===0,"iterator body cannot be pipelined");let A=null;function c(){if(A){let p=A;A=null,p()}}let u=()=>new Promise((p,g)=>{v(A===null),i[Ce]?g(i[Ce]):A=p});i.on("close",c).on("drain",c);let l=new an({abort:e,socket:i,request:r,contentLength:o,client:s,expectsPayload:a,header:n});try{for await(let p of t){if(i[Ce])throw i[Ce];l.write(p)||await u()}l.end()}catch(p){l.destroy(p)}finally{i.off("close",c).off("drain",c)}}var an=class{constructor({abort:t,socket:s,request:r,contentLength:i,client:o,expectsPayload:n,header:a}){this.socket=s,this.request=r,this.contentLength=i,this.client=o,this.bytesWritten=0,this.expectsPayload=n,this.header=a,this.abort=t,s[Xt]=!0}write(t){let{socket:s,request:r,contentLength:i,client:o,bytesWritten:n,expectsPayload:a,header:A}=this;if(s[Ce])throw s[Ce];if(s.destroyed)return!1;let c=Buffer.byteLength(t);if(!c)return!0;if(i!==null&&n+c>i){if(o[Bc])throw new bs;process.emitWarning(new bs)}s.cork(),n===0&&(!a&&r.reset!==!1&&(s[De]=!0),i===null?s.write(`${A}transfer-encoding: chunked\r
`,"latin1"):s.write(`${A}content-length: ${i}\r
\r
`,"latin1")),i===null&&s.write(`\r
${c.toString(16)}\r
`,"latin1"),this.bytesWritten+=c;let u=s.write(t);return s.uncork(),r.onBodySent(t),u||s[W].timeout&&s[W].timeoutType===Qr&&s[W].timeout.refresh&&s[W].timeout.refresh(),u}end(){let{socket:t,contentLength:s,client:r,bytesWritten:i,expectsPayload:o,header:n,request:a}=this;if(a.onRequestSent(),t[Xt]=!1,t[Ce])throw t[Ce];if(!t.destroyed){if(i===0?o?t.write(`${n}content-length: 0\r
`,"latin1"),this.bytesWritten+=c;let u=s.write(t);return s.uncork(),r.onBodySent(t),u||s[W].timeout&&s[W].timeoutType===Br&&s[W].timeout.refresh&&s[W].timeout.refresh(),u}end(){let{socket:t,contentLength:s,client:r,bytesWritten:i,expectsPayload:o,header:n,request:a}=this;if(a.onRequestSent(),t[Xt]=!1,t[Ce])throw t[Ce];if(!t.destroyed){if(i===0?o?t.write(`${n}content-length: 0\r
\r
`,"latin1"):t.write(`${n}\r
`,"latin1"):s===null&&t.write(`\r
0\r
\r
`,"latin1"),s!==null&&i!==s){if(r[Qc])throw new ws;process.emitWarning(new ws)}t[W].timeout&&t[W].timeoutType===Qr&&t[W].timeout.refresh&&t[W].timeout.refresh(),r[Gt]()}}destroy(t){let{socket:s,client:r,abort:i}=this;s[Xt]=!1,t&&(v(r[ie]<=1,"pipeline should only contain this request"),i(t))}};ld.exports=hk});var Qd=Q((P2,fd)=>{"use strict";var ze=require("node:assert"),{pipeline:Ck}=require("node:stream"),G=U(),{RequestContentLengthMismatchError:bc,RequestAbortedError:pd,SocketError:Bi,InformationalError:yc}=_(),{kUrl:An,kReset:ln,kClient:Br,kRunning:un,kPending:Ik,kQueue:$t,kPendingIdx:xc,kRunningIdx:it,kError:nt,kSocket:Ae,kStrictContentLength:wk,kOnError:vc,kMaxConcurrentStreams:md,kHTTP2Session:ot,kResume:es,kSize:bk,kHTTPContext:yk}=z(),Mt=Symbol("open streams"),gd,hd=!1,cn;try{cn=require("node:http2")}catch{cn={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:xk,HTTP2_HEADER_METHOD:vk,HTTP2_HEADER_PATH:kk,HTTP2_HEADER_SCHEME:Dk,HTTP2_HEADER_CONTENT_LENGTH:Rk,HTTP2_HEADER_EXPECT:Tk,HTTP2_HEADER_STATUS:Fk}}=cn;function Sk(e){let t=[];for(let[s,r]of Object.entries(e))if(Array.isArray(r))for(let i of r)t.push(Buffer.from(s),Buffer.from(i));else t.push(Buffer.from(s),Buffer.from(r));return t}async function Uk(e,t){e[Ae]=t,hd||(hd=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let s=cn.connect(e[An],{createConnection:()=>t,peerMaxConcurrentStreams:e[md]});s[Mt]=0,s[Br]=e,s[Ae]=t,G.addListener(s,"error",Gk),G.addListener(s,"frameError",Mk),G.addListener(s,"end",Lk),G.addListener(s,"goaway",_k),G.addListener(s,"close",function(){let{[Br]:i}=this,{[Ae]:o}=i,n=this[Ae][nt]||this[nt]||new Bi("closed",G.getSocketInfo(o));if(i[ot]=null,i.destroyed){ze(i[Ik]===0);let a=i[$t].splice(i[it]);for(let A=0;A<a.length;A++){let c=a[A];G.errorRequest(i,c,n)}}}),s.unref(),e[ot]=s,t[ot]=s,G.addListener(t,"error",function(i){ze(i.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[nt]=i,this[Br][vc](i)}),G.addListener(t,"end",function(){G.destroy(this,new Bi("other side closed",G.getSocketInfo(this)))}),G.addListener(t,"close",function(){let i=this[nt]||new Bi("closed",G.getSocketInfo(this));e[Ae]=null,this[ot]!=null&&this[ot].destroy(i),e[xc]=e[it],ze(e[un]===0),e.emit("disconnect",e[An],[e],i),e[es]()});let r=!1;return t.on("close",()=>{r=!0}),{version:"h2",defaultPipelining:1/0,write(...i){return Ok(e,...i)},resume(){Nk(e)},destroy(i,o){r?queueMicrotask(o):t.destroy(i).on("close",o)},get destroyed(){return t.destroyed},busy(){return!1}}}function Nk(e){let t=e[Ae];t?.destroyed===!1&&(e[bk]===0&&e[md]===0?(t.unref(),e[ot].unref()):(t.ref(),e[ot].ref()))}function Gk(e){ze(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[Ae][nt]=e,this[Br][vc](e)}function Mk(e,t,s){if(s===0){let r=new yc(`HTTP/2: "frameError" received - type ${e}, code ${t}`);this[Ae][nt]=r,this[Br][vc](r)}}function Lk(){let e=new Bi("other side closed",G.getSocketInfo(this[Ae]));this.destroy(e),G.destroy(this[Ae],e)}function _k(e){let t=this[nt]||new Bi(`HTTP/2: "GOAWAY" frame received with code ${e}`,G.getSocketInfo(this)),s=this[Br];if(s[Ae]=null,s[yk]=null,this[ot]!=null&&(this[ot].destroy(t),this[ot]=null),G.destroy(this[Ae],t),s[it]<s[$t].length){let r=s[$t][s[it]];s[$t][s[it]++]=null,G.errorRequest(s,r,t),s[xc]=s[it]}ze(s[un]===0),s.emit("disconnect",s[An],[s],t),s[es]()}function Yk(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function Ok(e,t){let s=e[ot],{method:r,path:i,host:o,upgrade:n,expectContinue:a,signal:A,headers:c}=t,{body:u}=t;if(n)return G.errorRequest(e,t,new Error("Upgrade not supported for H2")),!1;let l={};for(let C=0;C<c.length;C+=2){let b=c[C+0],N=c[C+1];if(Array.isArray(N))for(let O=0;O<N.length;O++)l[b]?l[b]+=`,${N[O]}`:l[b]=N[O];else l[b]=N}let p,{hostname:g,port:d}=e[An];l[xk]=o||`${g}${d?`:${d}`:""}`,l[vk]=r;let E=C=>{t.aborted||t.completed||(C=C||new pd,G.errorRequest(e,t,C),p!=null&&G.destroy(p,C),G.destroy(u,C),e[$t][e[it]++]=null,e[es]())};try{t.onConnect(E)}catch(C){G.errorRequest(e,t,C)}if(t.aborted)return!1;if(r==="CONNECT")return s.ref(),p=s.request(l,{endStream:!1,signal:A}),p.id&&!p.pending?(t.onUpgrade(null,null,p),++s[Mt],e[$t][e[it]++]=null):p.once("ready",()=>{t.onUpgrade(null,null,p),++s[Mt],e[$t][e[it]++]=null}),p.once("close",()=>{s[Mt]-=1,s[Mt]===0&&s.unref()}),!0;l[kk]=i,l[Dk]="https";let f=r==="PUT"||r==="POST"||r==="PATCH";u&&typeof u.read=="function"&&u.read(0);let h=G.bodyLength(u);if(G.isFormDataLike(u)){gd??=Er().extractBody;let[C,b]=gd(u);l["content-type"]=b,u=C.stream,h=C.length}if(h==null&&(h=t.contentLength),(h===0||!f)&&(h=null),Yk(r)&&h>0&&t.contentLength!=null&&t.contentLength!==h){if(e[wk])return G.errorRequest(e,t,new bc),!1;process.emitWarning(new bc)}h!=null&&(ze(u,"no body must not have content length"),l[Rk]=`${h}`),s.ref();let m=r==="GET"||r==="HEAD"||u===null;return a?(l[Tk]="100-continue",p=s.request(l,{endStream:m,signal:A}),p.once("continue",B)):(p=s.request(l,{endStream:m,signal:A}),B()),++s[Mt],p.once("r Line truncated
`,this[g0]=A??3e5,this[p0]=i??3e5,this[h0]=m??!0,this[d0]=C,this[Tc]=N,this[ss]=null,this[B0]=ge>-1?ge:-1,this[I0]=jt??100,this[te]=null,this[at]=[],this[_t]=0,this[At]=0,this[bi]=er=>Sc(this,er),this[C0]=er=>Td(this,er)}get pipelining(){return this[dn]}set pipelining(t){this[dn]=t,this[bi](!0)}get[vi](){return this[at].length-this[At]}get[xi](){return this[At]-this[_t]}get[yi](){return this[at].length-this[_t]}get[o0](){return!!this[te]&&!this[Ir]&&!this[te].destroyed}get[Rc](){return!!(this[te]?.busy(null)||this[yi]>=(Rd(this)||1)||this[vi]>0)}[i0](t){Fd(this),this.once("connect",t)}[Q0](t,s){let r=t.origin||this[It].origin,i=new Xk(r,t,s);return this[at].push(i),this[ks]||(vs.bodyLength(i.body)==null&&vs.isIterable(i.body)?(this[ks]=1,queueMicrotask(()=>Sc(this))):this[bi](!0)),this[ks]&&this[rs]!==2&&this[Rc]&&(this[rs]=2),this[rs]<2}async[m0](){return new Promise(t=>{this[yi]?this[ss]=t:t(null)})}async[f0](t){return new Promise(s=>{let r=this[at].splice(this[At]);for(let o=0;o<r.length;o++){let n=r[o];vs.errorRequest(this,n,t)}let i=()=>{this[ss]&&(this[ss](),this[ss]=null),s(null)};this[te]?(this[te].destroy(t,i),this[te]=null):queueMicrotask(i),this[bi]()})}},y0=hn();function Td(e,t){if(e[xi]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){Lt(e[At]===e[_t]);let s=e[at].splice(e[_t]);for(let r=0;r<s.length;r++){let i=s[r];vs.errorRequest(e,i,t)}Lt(e[yi]===0)}}async function Fd(e){Lt(!e[Ir]),Lt(!e[te]);let{host:t,hostname:s,protocol:r,port:i}=e[It];if(s[0]==="["){let o=s.indexOf("]");Lt(o!==-1);let n=s.substring(1,o);Lt(Dd.isIP(n)),s=n}e[Ir]=!0,Cr.beforeConnect.hasSubscribers&&Cr.beforeConnect.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[ts],localAddress:e[wi]},connector:e[Ii]});try{let o=await new Promise((n,a)=>{e[Ii]({host:t,hostname:s,protocol:r,port:i,servername:e[ts],localAddress:e[wi]},(A,c)=>{A?a(A):n(c)})});if(e.destroyed){vs.destroy(o.on("error",vd),new t0);return}Lt(o);try{e[te]=o.alpnProtocol==="h2"?await b0(e,o):await w0(e,o)}catch(n){throw o.destroy().on("error",vd),n}e[Ir]=!1,o[E0]=0,o[Tc]=e[Tc],o[r0]=e,o[a0]=null,Cr.connected.hasSubscribers&&Cr.connected.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[ts],localAddress:e[wi]},connector:e[Ii],socket:o}),e.emit("connect",e[It],[e])}catch(o){if(e.destroyed)return;if(e[Ir]=!1,Cr.connectError.hasSubscribers&&Cr.connectError.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[ts],localAddress:e[wi]},connector:e[Ii],error:o}),o.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(Lt(e[xi]===0);e[vi]>0&&e[at][e[At]].servername===e[ts];){let n=e[at][e[At]++];vs.errorRequest(e,n,o)}else Td(e,o);e.emit("connectionError",e[It],[e],o)}e[bi]()}function kd(e){e[rs]=0,e.emit("drain",e[It],[e])}function Sc(e,t){e[ks]!==2&&(e[ks]=2,x0(e,t),e[ks]=0,e[_t]>256&&(e[at].splice(0,e[_t]),e[At]-=e[_t],e[_t]=0))}function x0(e,t){for(;;){if(e.destroyed){Lt(e[vi]===0);return}if(e[ss]&&!e[yi]){e[ss](),e[ss]=null;return}if(e[te]&&e[te].resume(),e[Rc])e[rs]=2;else if(e[rs]===2){t?(e[rs]=1,queueMicrotask(()=>kd(e))):kd(e);continue}if(e[vi]===0||e[xi]>=(Rd(e)||1))return;let s=e[at][e[At]];if(e[It].protocol==="https:"&&e[ts]!==s.servername){if(e[xi]>0)return;e[ts]=s.servername,e[te]?.destroy(new e0("servername changed"),()=>{e[te]=null,Sc(e)})}if(e[Ir])return;if(!e[te]){Fd(e);return}if(e[te].destroyed||e[te].busy(s))return;!s.aborted&&e[te].write(s)?e[At]++:e[at].splice(e[At],1)}}Sd.exports=Fc});var Uc=Q((j2,Ud)=>{"use strict";var En=class{constructor(){this.bottom=0,this.top=0,this.list=new Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(t){this.list[this.top]=t,this.top=this.top+1&2047}shift(){let t=this.list[this.bottom];return t===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,t)}};Ud.exports=class{constructor(){this.head=this.tail=new En}isEmpty(){return this.head.isEmpty()}push(t){this.head.isFull()&&(this.head=this.head.next=new En),this.head.push(t)}shift(){let t=this.tail,s=t.shift();return t.isEmpty()&&t.next!==null&&(this.tail=t.next),s}}});var Gd=Q((z2,Nd)=>{var{kFree:v0,kConnected:k0,kPending:D0,kQueued:R0,kRunning:T0,kSize:F0}=z(),Ds=Symbol("pool"),Nc=class{constructor(t){this[Ds]=t}get connected(){return this[Ds][k0]}get free(){return this[Ds][v0]}get pending(){return this[Ds][D0]}get queued(){return this[Ds][R0]}get running(){return this[Ds][T0]}get size(){return this[Ds][F0]}};Nd.exports=Nc});var Oc=Q((Z2,qd)=>{"use strict";var S0=ar(),U0=Uc(),{kConnected:Gc,kSize:Md,kRunning:Ld,kPending:_d,kQueued:ki,kBusy:N0,kFree:G0,kUrl:M0,kClose:L0,kDestroy:_0,kDispatch:Y0}=z(),O0=Gd(),Re=Symbol("clients"),Ie=Symbol("needDrain"),Di=Symbol("queue"),Mc=Symbol("closed resolve"),Lc=Symbol("onDrain"),Yd=Symbol("onConnect"),Od=Symbol("onDisconnect"),Jd=Symbol("onConnectionError"),_c=Symbol("get dispatcher"),Hd=Symbol("add client"),Vd=Sym Line truncated
`,"latin1"),s!==null&&i!==s){if(r[Bc])throw new bs;process.emitWarning(new bs)}t[W].timeout&&t[W].timeoutType===Br&&t[W].timeout.refresh&&t[W].timeout.refresh(),r[Gt]()}}destroy(t){let{socket:s,client:r,abort:i}=this;s[Xt]=!1,t&&(v(r[ie]<=1,"pipeline should only contain this request"),i(t))}};pd.exports=mk});var Cd=B((j2,Bd)=>{"use strict";var ze=require("node:assert"),{pipeline:bk}=require("node:stream"),G=U(),{RequestContentLengthMismatchError:yc,RequestAbortedError:hd,SocketError:Bi,InformationalError:xc}=_(),{kUrl:An,kReset:ln,kClient:Cr,kRunning:un,kPending:yk,kQueue:$t,kPendingIdx:vc,kRunningIdx:it,kError:nt,kSocket:Ae,kStrictContentLength:xk,kOnError:kc,kMaxConcurrentStreams:Qd,kHTTP2Session:ot,kResume:es,kSize:vk,kHTTPContext:kk}=z(),Mt=Symbol("open streams"),dd,Ed=!1,cn;try{cn=require("node:http2")}catch{cn={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:Dk,HTTP2_HEADER_METHOD:Rk,HTTP2_HEADER_PATH:Tk,HTTP2_HEADER_SCHEME:Fk,HTTP2_HEADER_CONTENT_LENGTH:Sk,HTTP2_HEADER_EXPECT:Uk,HTTP2_HEADER_STATUS:Nk}}=cn;function Gk(e){let t=[];for(let[s,r]of Object.entries(e))if(Array.isArray(r))for(let i of r)t.push(Buffer.from(s),Buffer.from(i));else t.push(Buffer.from(s),Buffer.from(r));return t}async function Mk(e,t){e[Ae]=t,Ed||(Ed=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let s=cn.connect(e[An],{createConnection:()=>t,peerMaxConcurrentStreams:e[Qd]});s[Mt]=0,s[Cr]=e,s[Ae]=t,G.addListener(s,"error",_k),G.addListener(s,"frameError",Yk),G.addListener(s,"end",Ok),G.addListener(s,"goaway",Jk),G.addListener(s,"close",function(){let{[Cr]:i}=this,{[Ae]:o}=i,n=this[Ae][nt]||this[nt]||new Bi("closed",G.getSocketInfo(o));if(i[ot]=null,i.destroyed){ze(i[yk]===0);let a=i[$t].splice(i[it]);for(let A=0;A<a.length;A++){let c=a[A];G.errorRequest(i,c,n)}}}),s.unref(),e[ot]=s,t[ot]=s,G.addListener(t,"error",function(i){ze(i.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[nt]=i,this[Cr][kc](i)}),G.addListener(t,"end",function(){G.destroy(this,new Bi("other side closed",G.getSocketInfo(this)))}),G.addListener(t,"close",function(){let i=this[nt]||new Bi("closed",G.getSocketInfo(this));e[Ae]=null,this[ot]!=null&&this[ot].destroy(i),e[vc]=e[it],ze(e[un]===0),e.emit("disconnect",e[An],[e],i),e[es]()});let r=!1;return t.on("close",()=>{r=!0}),{version:"h2",defaultPipelining:1/0,write(...i){return Hk(e,...i)},resume(){Lk(e)},destroy(i,o){r?queueMicrotask(o):t.destroy(i).on("close",o)},get destroyed(){return t.destroyed},busy(){return!1}}}function Lk(e){let t=e[Ae];t?.destroyed===!1&&(e[vk]===0&&e[Qd]===0?(t.unref(),e[ot].unref()):(t.ref(),e[ot].ref()))}function _k(e){ze(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[Ae][nt]=e,this[Cr][kc](e)}function Yk(e,t,s){if(s===0){let r=new xc(`HTTP/2: "frameError" received - type ${e}, code ${t}`);this[Ae][nt]=r,this[Cr][kc](r)}}function Ok(){let e=new Bi("other side closed",G.getSocketInfo(this[Ae]));this.destroy(e),G.destroy(this[Ae],e)}function Jk(e){let t=this[nt]||new Bi(`HTTP/2: "GOAWAY" frame received with code ${e}`,G.getSocketInfo(this)),s=this[Cr];if(s[Ae]=null,s[kk]=null,this[ot]!=null&&(this[ot].destroy(t),this[ot]=null),G.destroy(this[Ae],t),s[it]<s[$t].length){let r=s[$t][s[it]];s[$t][s[it]++]=null,G.errorRequest(s,r,t),s[vc]=s[it]}ze(s[un]===0),s.emit("disconnect",s[An],[s],t),s[es]()}function Pk(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function Hk(e,t){let s=e[ot],{method:r,path:i,host:o,upgrade:n,expectContinue:a,signal:A,headers:c}=t,{body:u}=t;if(n)return G.errorRequest(e,t,new Error("Upgrade not supported for H2")),!1;let l={};for(let C=0;C<c.length;C+=2){let b=c[C+0],N=c[C+1];if(Array.isArray(N))for(let O=0;O<N.length;O++)l[b]?l[b]+=`,${N[O]}`:l[b]=N[O];else l[b]=N}let p,{hostname:g,port:d}=e[An];l[Dk]=o||`${g}${d?`:${d}`:""}`,l[Rk]=r;let E=C=>{t.aborted||t.completed||(C=C||new hd,G.errorRequest(e,t,C),p!=null&&G.destroy(p,C),G.destroy(u,C),e[$t][e[it]++]=null,e[es]())};try{t.onConnect(E)}catch(C){G.errorRequest(e,t,C)}if(t.aborted)return!1;if(r==="CONNECT")return s.ref(),p=s.request(l,{endStream:!1,signal:A}),p.id&&!p.pending?(t.onUpgrade(null,null,p),++s[Mt],e[$t][e[it]++]=null):p.once("ready",()=>{t.onUpgrade(null,null,p),++s[Mt],e[$t][e[it]++]=null}),p.once("close",()=>{s[Mt]-=1,s[Mt]===0&&s.unref()}),!0;l[Tk]=i,l[Fk]="https";let f=r==="PUT"||r==="POST"||r==="PATCH";u&&typeof u.read=="function"&&u.read(0);let h=G.bodyLength(u);if(G.isFormDataLike(u)){dd??=mr().extractBody;let[C,b]=dd(u);l["content-type"]=b,u=C.stream,h=C.length}if(h==null&&(h=t.contentLength),(h===0||!f)&&(h=null),Pk(r)&&h>0&&t.contentLength!=null&&t.contentLength!==h){if(e[xk])return G.errorRequest(e,t,new yc),!1;process.emitWarning(new yc)}h!=null&&(ze(u,"no body must not have content length"),l[Sk]=`${h}`),s.ref();let m=r==="GET"||r==="HEAD"||u===null;return a?(l[Uk]="100-continue",p=s.request(l,{endStream:m,signal:A}),p.once("continue",Q)):(p=s.request(l,{endStream:m,signal:A}),Q()),++s[Mt],p.once("r Line truncated
`,this[E0]=A??3e5,this[d0]=i??3e5,this[m0]=m??!0,this[f0]=C,this[Fc]=N,this[ss]=null,this[w0]=ge>-1?ge:-1,this[y0]=jt??100,this[te]=null,this[at]=[],this[_t]=0,this[At]=0,this[bi]=tr=>Uc(this,tr),this[b0]=tr=>Sd(this,tr)}get pipelining(){return this[dn]}set pipelining(t){this[dn]=t,this[bi](!0)}get[vi](){return this[at].length-this[At]}get[xi](){return this[At]-this[_t]}get[yi](){return this[at].length-this[_t]}get[A0](){return!!this[te]&&!this[wr]&&!this[te].destroyed}get[Tc](){return!!(this[te]?.busy(null)||this[yi]>=(Fd(this)||1)||this[vi]>0)}[a0](t){Ud(this),this.once("connect",t)}[I0](t,s){let r=t.origin||this[It].origin,i=new t0(r,t,s);return this[at].push(i),this[Ds]||(ks.bodyLength(i.body)==null&&ks.isIterable(i.body)?(this[Ds]=1,queueMicrotask(()=>Uc(this))):this[bi](!0)),this[Ds]&&this[rs]!==2&&this[Tc]&&(this[rs]=2),this[rs]<2}async[B0](){return new Promise(t=>{this[yi]?this[ss]=t:t(null)})}async[C0](t){return new Promise(s=>{let r=this[at].splice(this[At]);for(let o=0;o<r.length;o++){let n=r[o];ks.errorRequest(this,n,t)}let i=()=>{this[ss]&&(this[ss](),this[ss]=null),s(null)};this[te]?(this[te].destroy(t,i),this[te]=null):queueMicrotask(i),this[bi]()})}},k0=hn();function Sd(e,t){if(e[xi]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){Lt(e[At]===e[_t]);let s=e[at].splice(e[_t]);for(let r=0;r<s.length;r++){let i=s[r];ks.errorRequest(e,i,t)}Lt(e[yi]===0)}}async function Ud(e){Lt(!e[wr]),Lt(!e[te]);let{host:t,hostname:s,protocol:r,port:i}=e[It];if(s[0]==="["){let o=s.indexOf("]");Lt(o!==-1);let n=s.substring(1,o);Lt(Td.isIP(n)),s=n}e[wr]=!0,Ir.beforeConnect.hasSubscribers&&Ir.beforeConnect.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[ts],localAddress:e[wi]},connector:e[Ii]});try{let o=await new Promise((n,a)=>{e[Ii]({host:t,hostname:s,protocol:r,port:i,servername:e[ts],localAddress:e[wi]},(A,c)=>{A?a(A):n(c)})});if(e.destroyed){ks.destroy(o.on("error",Dd),new i0);return}Lt(o);try{e[te]=o.alpnProtocol==="h2"?await v0(e,o):await x0(e,o)}catch(n){throw o.destroy().on("error",Dd),n}e[wr]=!1,o[Q0]=0,o[Fc]=e[Fc],o[n0]=e,o[l0]=null,Ir.connected.hasSubscribers&&Ir.connected.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[ts],localAddress:e[wi]},connector:e[Ii],socket:o}),e.emit("connect",e[It],[e])}catch(o){if(e.destroyed)return;if(e[wr]=!1,Ir.connectError.hasSubscribers&&Ir.connectError.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[ts],localAddress:e[wi]},connector:e[Ii],error:o}),o.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(Lt(e[xi]===0);e[vi]>0&&e[at][e[At]].servername===e[ts];){let n=e[at][e[At]++];ks.errorRequest(e,n,o)}else Sd(e,o);e.emit("connectionError",e[It],[e],o)}e[bi]()}function Rd(e){e[rs]=0,e.emit("drain",e[It],[e])}function Uc(e,t){e[Ds]!==2&&(e[Ds]=2,D0(e,t),e[Ds]=0,e[_t]>256&&(e[at].splice(0,e[_t]),e[At]-=e[_t],e[_t]=0))}function D0(e,t){for(;;){if(e.destroyed){Lt(e[vi]===0);return}if(e[ss]&&!e[yi]){e[ss](),e[ss]=null;return}if(e[te]&&e[te].resume(),e[Tc])e[rs]=2;else if(e[rs]===2){t?(e[rs]=1,queueMicrotask(()=>Rd(e))):Rd(e);continue}if(e[vi]===0||e[xi]>=(Fd(e)||1))return;let s=e[at][e[At]];if(e[It].protocol==="https:"&&e[ts]!==s.servername){if(e[xi]>0)return;e[ts]=s.servername,e[te]?.destroy(new r0("servername changed"),()=>{e[te]=null,Uc(e)})}if(e[wr])return;if(!e[te]){Ud(e);return}if(e[te].destroyed||e[te].busy(s))return;!s.aborted&&e[te].write(s)?e[At]++:e[at].splice(e[At],1)}}Nd.exports=Sc});var Nc=B(($2,Gd)=>{"use strict";var En=class{constructor(){this.bottom=0,this.top=0,this.list=new Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(t){this.list[this.top]=t,this.top=this.top+1&2047}shift(){let t=this.list[this.bottom];return t===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,t)}};Gd.exports=class{constructor(){this.head=this.tail=new En}isEmpty(){return this.head.isEmpty()}push(t){this.head.isFull()&&(this.head=this.head.next=new En),this.head.push(t)}shift(){let t=this.tail,s=t.shift();return t.isEmpty()&&t.next!==null&&(this.tail=t.next),s}}});var Ld=B((eY,Md)=>{var{kFree:R0,kConnected:T0,kPending:F0,kQueued:S0,kRunning:U0,kSize:N0}=z(),Rs=Symbol("pool"),Gc=class{constructor(t){this[Rs]=t}get connected(){return this[Rs][T0]}get free(){return this[Rs][R0]}get pending(){return this[Rs][F0]}get queued(){return this[Rs][S0]}get running(){return this[Rs][U0]}get size(){return this[Rs][N0]}};Md.exports=Gc});var Jc=B((tY,jd)=>{"use strict";var G0=Ar(),M0=Nc(),{kConnected:Mc,kSize:_d,kRunning:Yd,kPending:Od,kQueued:ki,kBusy:L0,kFree:_0,kUrl:Y0,kClose:O0,kDestroy:J0,kDispatch:P0}=z(),H0=Ld(),Re=Symbol("clients"),Ie=Symbol("needDrain"),Di=Symbol("queue"),Lc=Symbol("closed resolve"),_c=Symbol("onDrain"),Jd=Symbol("onConnect"),Pd=Symbol("onDisconnect"),Hd=Symbol("onConnectionError"),Yc=Symbol("get dispatcher"),qd=Symbol("add client"),Wd=Sym Line truncated
${r.count} ${r.noun} ${r.is} pending:
${t.format(s)}
`.trim())}};Xm.exports=Ol});var Un=Q((bY,rf)=>{"use strict";var ef=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:gT}=_(),hT=yr();sf()===void 0&&tf(new hT);function tf(e){if(!e||typeof e.dispatch!="function")throw new gT("Argument agent must implement Agent");Object.defineProperty(globalThis,ef,{value:e,writable:!0,enumerable:!1,configurable:!1})}function sf(){return globalThis[ef]}rf.exports={setGlobalDispatcher:tf,getGlobalDispatcher:sf}});var Nn=Q((xY,of)=>{"use strict";of.exports=class{#e;constructor(t){if(typeof t!="object"||t===null)throw new TypeError("handler must be an object");this.#e=t}onConnect(...t){return this.#e.onConnect?.(...t)}onError(...t){return this.#e.onError?.(...t)}onUpgrade(...t){return this.#e.onUpgrade?.(...t)}onResponseStarted(...t){return this.#e.onResponseStarted?.(...t)}onHeaders(...t){return this.#e.onHeaders?.(...t)}onData(...t){return this.#e.onData?.(...t)}onComplete(...t){return this.#e.onComplete?.(...t)}onBodySent(...t){return this.#e.onBodySent?.(...t)}}});var af=Q((vY,nf)=>{"use strict";var dT=gn();nf.exports=e=>{let t=e?.maxRedirections;return s=>function(i,o){let{maxRedirections:n=t,...a}=i;if(!n)return s(i,o);let A=new dT(s,n,i,o);return s(a,A)}}});var cf=Q((kY,Af)=>{"use strict";var ET=bn();Af.exports=e=>t=>function(r,i){return t(r,new ET({...r,retryOptions:{...e,...r.retryOptions}},{handler:i,dispatch:t}))}});var uf=Q((DY,lf)=>{"use strict";var mT=U(),{InvalidArgumentError:fT,RequestAbortedError:QT}=_(),BT=Nn(),Jl=class extends BT{#e=1024*1024;#t=null;#s=!1;#r=!1;#i=0;#o=null;#l=null;constructor({maxSize:t},s){if(super(s),t!=null&&(!Number.isFinite(t)||t<1))throw new fT("maxSize must be a number greater than 0");this.#e=t??this.#e,this.#l=s}onConnect(t){this.#t=t,this.#l.onConnect(this.#A.bind(this))}#A(t){this.#r=!0,this.#o=t}onHeaders(t,s,r,i){let n=mT.parseHeaders(s)["content-length"];if(n!=null&&n>this.#e)throw new QT(`Response size (${n}) larger than maxSize (${this.#e})`);return this.#r?!0:this.#l.onHeaders(t,s,r,i)}onError(t){this.#s||(t=this.#o??t,this.#l.onError(t))}onData(t){return this.#i=this.#i+t.length,this.#i>=this.#e&&(this.#s=!0,this.#r?this.#l.onError(this.#o):this.#l.onComplete([])),!0}onComplete(t){if(!this.#s){if(this.#r){this.#l.onError(this.reason);return}this.#l.onComplete(t)}}};function CT({maxSize:e}={maxSize:1024*1024}){return t=>function(r,i){let{dumpMaxSize:o=e}=r,n=new Jl({maxSize:o},i);return t(r,n)}}lf.exports=CT});var hf=Q((RY,gf)=>{"use strict";var{isIP:IT}=require("node:net"),{lookup:wT}=require("node:dns"),bT=Nn(),{InvalidArgumentError:Nr,InformationalError:yT}=_(),pf=Math.pow(2,31)-1,Pl=class{#e=0;#t=0;#s=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(t){this.#e=t.maxTTL,this.#t=t.maxItems,this.dualStack=t.dualStack,this.affinity=t.affinity,this.lookup=t.lookup??this.#r,this.pick=t.pick??this.#i}get full(){return this.#s.size===this.#t}runLookup(t,s,r){let i=this.#s.get(t.hostname);if(i==null&&this.full){r(null,t.origin);return}let o={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...s.dns,maxTTL:this.#e,maxItems:this.#t};if(i==null)this.lookup(t,o,(n,a)=>{if(n||a==null||a.length===0){r(n??new yT("No DNS entries found"));return}this.setRecords(t,a);let A=this.#s.get(t.hostname),c=this.pick(t,A,o.affinity),u;typeof c.port=="number"?u=`:${c.port}`:t.port!==""?u=`:${t.port}`:u="",r(null,`${t.protocol}//${c.family===6?`[${c.address}]`:c.address}${u}`)});else{let n=this.pick(t,i,o.affinity);if(n==null){this.#s.delete(t.hostname),this.runLookup(t,s,r);return}let a;typeof n.port=="number"?a=`:${n.port}`:t.port!==""?a=`:${t.port}`:a="",r(null,`${t.protocol}//${n.family===6?`[${n.address}]`:n.address}${a}`)}}#r(t,s,r){wT(t.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(i,o)=>{if(i)return r(i);let n=new Map;for(let a of o)n.set(`${a.address}:${a.family}`,a);r(null,n.values())})}#i(t,s,r){let i=null,{records:o,offset:n}=s,a;if(this.dualStack?(r==null&&(n==null||n===pf?(s.offset=0,r=4):(s.offset++,r=(s.offset&1)===1?6:4)),o[r]!=null&&o[r].ips.length>0?a=o[r]:a=o[r===4?6:4]):a=o[r],a==null||a.ips.length===0)return i;a.offset==null||a.offset===pf?a.offset=0:a.offset++;let A=a.offset%a.ips.length;return i=a.ips[A]??null,i==null?i:Date.now()-i.timestamp>i.ttl?(a.ips.splice(A,1),this.pick(t,s,r)):i}setRecords(t,s){let r=Date.now(),i={records:{4:null,6:null}};for(let o of s){o.timestamp=r,typeof o.ttl=="number"?o.ttl=Math.min(o.ttl,this.#e):o.ttl=this.#e;let n=i.records[o.family]??{ips:[]};n.ips.push(o),i.records[o.family]=n}this.#s.set(t.hostname,i)}getHandler(t,s){return new Hl(this,t,s)}},Hl=class extends bT{#e=null;#t=null;#s=null;#r=null;#i=null;constructor(t,{origin:s,handler:r,dispatch:i},o){super(r),this.#i=s,this.#r=r,this.#t={...o},this.#e=t,this.#s=i}onError(t){switch(t.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#e.dualStack){this.#e.runLookup(this.#i,this.#t,(s,r)=>{if(s)return this.#r.onError(s);let i={...this.#t,origin: Line truncated
${o}`;break;case"retry":WB(o)&&(s[i]=o);break;case"id":jB(o)&&(s[i]=o);break;case"event":o.length>0&&(s[i]=o);break}}processEvent(t){t.retry&&WB(t.retry)&&(this.state.reconnectionTime=parseInt(t.retry,10)),t.id&&jB(t.id)&&(this.state.lastEventId=t.id),t.data!==void 0&&this.push({type:t.event||"message",options:{data:t.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};zB.exports={EventSourceStream:Tu}});var iC=Q((aO,rC)=>{"use strict";var{pipeline:SN}=require("node:stream"),{fetching:UN}=Ji(),{makeRequest:NN}=Lr(),{webidl:Ht}=he(),{EventSourceStream:GN}=ZB(),{parseMIMEType:MN}=ke(),{createFastMessageEvent:LN}=Hr(),{isNetworkError:KB}=Yi(),{delay:_N}=Du(),{kEnumerableProperty:Hs}=U(),{environmentSettingsObject:XB}=Ne(),$B=!1,eC=3e3,so=0,tC=1,ro=2,YN="anonymous",ON="use-credentials",zr=class e extends EventTarget{#e={open:null,error:null,message:null};#t=null;#s=!1;#r=so;#i=null;#o=null;#l;#A;constructor(t,s={}){super(),Ht.util.markAsUncloneable(this);let r="EventSource constructor";Ht.argumentLengthCheck(arguments,1,r),$B||($B=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),t=Ht.converters.USVString(t,r,"url"),s=Ht.converters.EventSourceInitDict(s,r,"eventSourceInitDict"),this.#l=s.dispatcher,this.#A={lastEventId:"",reconnectionTime:eC};let i=XB,o;try{o=new URL(t,i.settingsObject.baseUrl),this.#A.origin=o.origin}catch(A){throw new DOMException(A,"SyntaxError")}this.#t=o.href;let n=YN;s.withCredentials&&(n=ON,this.#s=!0);let a={redirect:"follow",keepalive:!0,mode:"cors",credentials:n==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};a.client=XB.settingsObject,a.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],a.cache="no-store",a.initiator="other",a.urlList=[new URL(this.#t)],this.#i=NN(a),this.#c()}get readyState(){return this.#r}get url(){return this.#t}get withCredentials(){return this.#s}#c(){if(this.#r===ro)return;this.#r=so;let t={request:this.#i,dispatcher:this.#l},s=r=>{KB(r)&&(this.dispatchEvent(new Event("error")),this.close()),this.#u()};t.processResponseEndOfBody=s,t.processResponse=r=>{if(KB(r))if(r.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#u();return}let i=r.headersList.get("content-type",!0),o=i!==null?MN(i):"failure",n=o!=="failure"&&o.essence==="text/event-stream";if(r.status!==200||n===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#r=tC,this.dispatchEvent(new Event("open")),this.#A.origin=r.urlList[r.urlList.length-1].origin;let a=new GN({eventSourceSettings:this.#A,push:A=>{this.dispatchEvent(LN(A.type,A.options))}});SN(r.body.stream,a,A=>{A?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#o=UN(t)}async#u(){this.#r!==ro&&(this.#r=so,this.dispatchEvent(new Event("error")),await _N(this.#A.reconnectionTime),this.#r===so&&(this.#A.lastEventId.length&&this.#i.headersList.set("last-event-id",this.#A.lastEventId,!0),this.#c()))}close(){Ht.brandCheck(this,e),this.#r!==ro&&(this.#r=ro,this.#o.abort(),this.#i=null)}get onopen(){return this.#e.open}set onopen(t){this.#e.open&&this.removeEventListener("open",this.#e.open),typeof t=="function"?(this.#e.open=t,this.addEventListener("open",t)):this.#e.open=null}get onmessage(){return this.#e.message}set onmessage(t){this.#e.message&&this.removeEventListener("message",this.#e.message),typeof t=="function"?(this.#e.message=t,this.addEventListener("message",t)):this.#e.message=null}get onerror(){return this.#e.error}set onerror(t){this.#e.error&&this.removeEventListener("error",this.#e.error),typeof t=="function"?(this.#e.error=t,this.addEventListener("error",t)):this.#e.error=null}},sC={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:so,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:tC,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:ro,writable:!1}};Object.defineProperties(zr,sC);Object.defineProperties(zr.prototype,sC);Object.defineProperties(zr.prototype,{close:Hs,onerror:Hs,onmessage:Hs,onopen:Hs,readyState:Hs,url:Hs,withCredentials:Hs});Ht.converters.EventSourceInitDict=Ht.dictionaryConverter([{key:"withCredentials",converter:Ht.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:Ht.converters.any}]);rC.exports={EventSource:zr,defaultReconnectionTime:eC}});var wa=Q((AO,T)=>{"use strict";var JN=wr(),oC=ni(),PN=br(),HN=tE(),VN=yr(),qN=el(),WN=yE(),jN=TE(),nC=_(),Ia=U(),{InvalidArgumentError:Ca}=nC,Zr=mm(),zN=Ai(),ZN=Nl(),KN=$m(),XN=Ll(),$N=Il(),eG=bn(),{getGlobalDispatcher:aC,setGlobalDispatcher:tG}=Un(),sG=Nn(),rG=gn(),iG=hn();Object.assign(oC.prototype,Zr);T.exports.Dispatcher=oC;T.exports.Client=JN;T.exports.Pool=PN;T.exports.BalancedPool=HN;T.exports.Agent=VN;T.exports.ProxyAgent=qN;T.exports.EnvHttpProxyAgent=WN;T.exports.RetryAgent=jN;T.exports.RetryHandler=eG;T.exports.DecoratorHandler=sG;T.exports.Redire Line truncated
`.trim())}};ef.exports=Jl});var Un=B((DY,nf)=>{"use strict";var sf=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:ET}=_(),mT=xr();of()===void 0&&rf(new mT);function rf(e){if(!e||typeof e.dispatch!="function")throw new ET("Argument agent must implement Agent");Object.defineProperty(globalThis,sf,{value:e,writable:!0,enumerable:!1,configurable:!1})}function of(){return globalThis[sf]}nf.exports={setGlobalDispatcher:rf,getGlobalDispatcher:of}});var Nn=B((TY,af)=>{"use strict";af.exports=class{#e;constructor(t){if(typeof t!="object"||t===null)throw new TypeError("handler must be an object");this.#e=t}onConnect(...t){return this.#e.onConnect?.(...t)}onError(...t){return this.#e.onError?.(...t)}onUpgrade(...t){return this.#e.onUpgrade?.(...t)}onResponseStarted(...t){return this.#e.onResponseStarted?.(...t)}onHeaders(...t){return this.#e.onHeaders?.(...t)}onData(...t){return this.#e.onData?.(...t)}onComplete(...t){return this.#e.onComplete?.(...t)}onBodySent(...t){return this.#e.onBodySent?.(...t)}}});var cf=B((FY,Af)=>{"use strict";var fT=gn();Af.exports=e=>{let t=e?.maxRedirections;return s=>function(i,o){let{maxRedirections:n=t,...a}=i;if(!n)return s(i,o);let A=new fT(s,n,i,o);return s(a,A)}}});var uf=B((SY,lf)=>{"use strict";var QT=bn();lf.exports=e=>t=>function(r,i){return t(r,new QT({...r,retryOptions:{...e,...r.retryOptions}},{handler:i,dispatch:t}))}});var gf=B((UY,pf)=>{"use strict";var BT=U(),{InvalidArgumentError:CT,RequestAbortedError:IT}=_(),wT=Nn(),Pl=class extends wT{#e=1024*1024;#t=null;#s=!1;#r=!1;#i=0;#o=null;#l=null;constructor({maxSize:t},s){if(super(s),t!=null&&(!Number.isFinite(t)||t<1))throw new CT("maxSize must be a number greater than 0");this.#e=t??this.#e,this.#l=s}onConnect(t){this.#t=t,this.#l.onConnect(this.#A.bind(this))}#A(t){this.#r=!0,this.#o=t}onHeaders(t,s,r,i){let n=BT.parseHeaders(s)["content-length"];if(n!=null&&n>this.#e)throw new IT(`Response size (${n}) larger than maxSize (${this.#e})`);return this.#r?!0:this.#l.onHeaders(t,s,r,i)}onError(t){this.#s||(t=this.#o??t,this.#l.onError(t))}onData(t){return this.#i=this.#i+t.length,this.#i>=this.#e&&(this.#s=!0,this.#r?this.#l.onError(this.#o):this.#l.onComplete([])),!0}onComplete(t){if(!this.#s){if(this.#r){this.#l.onError(this.reason);return}this.#l.onComplete(t)}}};function bT({maxSize:e}={maxSize:1024*1024}){return t=>function(r,i){let{dumpMaxSize:o=e}=r,n=new Pl({maxSize:o},i);return t(r,n)}}pf.exports=bT});var Ef=B((NY,df)=>{"use strict";var{isIP:yT}=require("node:net"),{lookup:xT}=require("node:dns"),vT=Nn(),{InvalidArgumentError:Gr,InformationalError:kT}=_(),hf=Math.pow(2,31)-1,Hl=class{#e=0;#t=0;#s=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(t){this.#e=t.maxTTL,this.#t=t.maxItems,this.dualStack=t.dualStack,this.affinity=t.affinity,this.lookup=t.lookup??this.#r,this.pick=t.pick??this.#i}get full(){return this.#s.size===this.#t}runLookup(t,s,r){let i=this.#s.get(t.hostname);if(i==null&&this.full){r(null,t.origin);return}let o={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...s.dns,maxTTL:this.#e,maxItems:this.#t};if(i==null)this.lookup(t,o,(n,a)=>{if(n||a==null||a.length===0){r(n??new kT("No DNS entries found"));return}this.setRecords(t,a);let A=this.#s.get(t.hostname),c=this.pick(t,A,o.affinity),u;typeof c.port=="number"?u=`:${c.port}`:t.port!==""?u=`:${t.port}`:u="",r(null,`${t.protocol}//${c.family===6?`[${c.address}]`:c.address}${u}`)});else{let n=this.pick(t,i,o.affinity);if(n==null){this.#s.delete(t.hostname),this.runLookup(t,s,r);return}let a;typeof n.port=="number"?a=`:${n.port}`:t.port!==""?a=`:${t.port}`:a="",r(null,`${t.protocol}//${n.family===6?`[${n.address}]`:n.address}${a}`)}}#r(t,s,r){xT(t.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(i,o)=>{if(i)return r(i);let n=new Map;for(let a of o)n.set(`${a.address}:${a.family}`,a);r(null,n.values())})}#i(t,s,r){let i=null,{records:o,offset:n}=s,a;if(this.dualStack?(r==null&&(n==null||n===hf?(s.offset=0,r=4):(s.offset++,r=(s.offset&1)===1?6:4)),o[r]!=null&&o[r].ips.length>0?a=o[r]:a=o[r===4?6:4]):a=o[r],a==null||a.ips.length===0)return i;a.offset==null||a.offset===hf?a.offset=0:a.offset++;let A=a.offset%a.ips.length;return i=a.ips[A]??null,i==null?i:Date.now()-i.timestamp>i.ttl?(a.ips.splice(A,1),this.pick(t,s,r)):i}setRecords(t,s){let r=Date.now(),i={records:{4:null,6:null}};for(let o of s){o.timestamp=r,typeof o.ttl=="number"?o.ttl=Math.min(o.ttl,this.#e):o.ttl=this.#e;let n=i.records[o.family]??{ips:[]};n.ips.push(o),i.records[o.family]=n}this.#s.set(t.hostname,i)}getHandler(t,s){return new Vl(this,t,s)}},Vl=class extends vT{#e=null;#t=null;#s=null;#r=null;#i=null;constructor(t,{origin:s,handler:r,dispatch:i},o){super(r),this.#i=s,this.#r=r,this.#t={...o},this.#e=t,this.#s=i}onError(t){switch(t.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#e.dualStack){this.#e.runLookup(this.#i,this.#t,(s,r)=>{if(s)return this.#r.onError(s);let i={...this.#t,origin: Line truncated
${o}`;break;case"retry":zB(o)&&(s[i]=o);break;case"id":ZB(o)&&(s[i]=o);break;case"event":o.length>0&&(s[i]=o);break}}processEvent(t){t.retry&&zB(t.retry)&&(this.state.reconnectionTime=parseInt(t.retry,10)),t.id&&ZB(t.id)&&(this.state.lastEventId=t.id),t.data!==void 0&&this.push({type:t.event||"message",options:{data:t.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};KB.exports={EventSourceStream:Fu}});var nC=B((pO,oC)=>{"use strict";var{pipeline:GN}=require("node:stream"),{fetching:MN}=Ji(),{makeRequest:LN}=_r(),{webidl:Ht}=he(),{EventSourceStream:_N}=XB(),{parseMIMEType:YN}=ke(),{createFastMessageEvent:ON}=Vr(),{isNetworkError:$B}=Yi(),{delay:JN}=Ru(),{kEnumerableProperty:Vs}=U(),{environmentSettingsObject:eC}=Ne(),tC=!1,sC=3e3,so=0,rC=1,ro=2,PN="anonymous",HN="use-credentials",Zr=class e extends EventTarget{#e={open:null,error:null,message:null};#t=null;#s=!1;#r=so;#i=null;#o=null;#l;#A;constructor(t,s={}){super(),Ht.util.markAsUncloneable(this);let r="EventSource constructor";Ht.argumentLengthCheck(arguments,1,r),tC||(tC=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),t=Ht.converters.USVString(t,r,"url"),s=Ht.converters.EventSourceInitDict(s,r,"eventSourceInitDict"),this.#l=s.dispatcher,this.#A={lastEventId:"",reconnectionTime:sC};let i=eC,o;try{o=new URL(t,i.settingsObject.baseUrl),this.#A.origin=o.origin}catch(A){throw new DOMException(A,"SyntaxError")}this.#t=o.href;let n=PN;s.withCredentials&&(n=HN,this.#s=!0);let a={redirect:"follow",keepalive:!0,mode:"cors",credentials:n==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};a.client=eC.settingsObject,a.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],a.cache="no-store",a.initiator="other",a.urlList=[new URL(this.#t)],this.#i=LN(a),this.#c()}get readyState(){return this.#r}get url(){return this.#t}get withCredentials(){return this.#s}#c(){if(this.#r===ro)return;this.#r=so;let t={request:this.#i,dispatcher:this.#l},s=r=>{$B(r)&&(this.dispatchEvent(new Event("error")),this.close()),this.#u()};t.processResponseEndOfBody=s,t.processResponse=r=>{if($B(r))if(r.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#u();return}let i=r.headersList.get("content-type",!0),o=i!==null?YN(i):"failure",n=o!=="failure"&&o.essence==="text/event-stream";if(r.status!==200||n===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#r=rC,this.dispatchEvent(new Event("open")),this.#A.origin=r.urlList[r.urlList.length-1].origin;let a=new _N({eventSourceSettings:this.#A,push:A=>{this.dispatchEvent(ON(A.type,A.options))}});GN(r.body.stream,a,A=>{A?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#o=MN(t)}async#u(){this.#r!==ro&&(this.#r=so,this.dispatchEvent(new Event("error")),await JN(this.#A.reconnectionTime),this.#r===so&&(this.#A.lastEventId.length&&this.#i.headersList.set("last-event-id",this.#A.lastEventId,!0),this.#c()))}close(){Ht.brandCheck(this,e),this.#r!==ro&&(this.#r=ro,this.#o.abort(),this.#i=null)}get onopen(){return this.#e.open}set onopen(t){this.#e.open&&this.removeEventListener("open",this.#e.open),typeof t=="function"?(this.#e.open=t,this.addEventListener("open",t)):this.#e.open=null}get onmessage(){return this.#e.message}set onmessage(t){this.#e.message&&this.removeEventListener("message",this.#e.message),typeof t=="function"?(this.#e.message=t,this.addEventListener("message",t)):this.#e.message=null}get onerror(){return this.#e.error}set onerror(t){this.#e.error&&this.removeEventListener("error",this.#e.error),typeof t=="function"?(this.#e.error=t,this.addEventListener("error",t)):this.#e.error=null}},iC={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:so,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:rC,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:ro,writable:!1}};Object.defineProperties(Zr,iC);Object.defineProperties(Zr.prototype,iC);Object.defineProperties(Zr.prototype,{close:Vs,onerror:Vs,onmessage:Vs,onopen:Vs,readyState:Vs,url:Vs,withCredentials:Vs});Ht.converters.EventSourceInitDict=Ht.dictionaryConverter([{key:"withCredentials",converter:Ht.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:Ht.converters.any}]);oC.exports={EventSource:Zr,defaultReconnectionTime:sC}});var wa=B((gO,T)=>{"use strict";var VN=br(),aC=ni(),qN=yr(),WN=rE(),jN=xr(),zN=tl(),ZN=vE(),KN=SE(),AC=_(),Ia=U(),{InvalidArgumentError:Ca}=AC,Kr=Qm(),XN=Ai(),$N=Gl(),eG=tf(),tG=_l(),sG=wl(),rG=bn(),{getGlobalDispatcher:cC,setGlobalDispatcher:iG}=Un(),oG=Nn(),nG=gn(),aG=hn();Object.assign(aC.prototype,Kr);T.exports.Dispatcher=aC;T.exports.Client=VN;T.exports.Pool=qN;T.exports.BalancedPool=WN;T.exports.Agent=jN;T.exports.ProxyAgent=zN;T.exports.EnvHttpProxyAgent=ZN;T.exports.RetryAgent=KN;T.exports.RetryHandler=rG;T.exports.DecoratorHandler=oG;T.exports.Redire Line truncated
`+e.errors.map(t=>` - ${t.message}`).join(`
`)}var UM=class extends Error{constructor(e,t,s){super(SM(s)),this.request=e,this.headers=t,this.response=s,this.errors=s.errors,this.data=s.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},NM=["method","baseUrl","url","headers","request","query","mediaType","operationName"],GM=["query","method","url"],XC=/\/api\/v3\/?$/;function MM(e,t,s){if(s){if(typeof t=="string"&&"query"in s)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let n in s)if(GM.includes(n))return Promise.reject(new Error(`[@octokit/graphql] "${n}" cannot be used as variable name`))}let r=typeof t=="string"?Object.assign({query:t},s):t,i=Object.keys(r).reduce((n,a)=>NM.includes(a)?(n[a]=r[a],n):(n.variables||(n.variables={}),n.variables[a]=r[a],n),{}),o=r.baseUrl||e.endpoint.DEFAULTS.baseUrl;return XC.test(o)&&(i.url=o.replace(XC,"/api/graphql")),e(i).then(n=>{if(n.data.errors){let a={};for(let A of Object.keys(n.headers))a[A]=n.headers[A];throw new UM(i,a,n.data)}return n.data.data})}function qu(e,t){let s=e.defaults(t);return Object.assign((i,o)=>MM(s,i,o),{defaults:qu.bind(null,s),endpoint:s.endpoint})}var CJ=qu(lo,{headers:{"user-agent":`octokit-graphql.js/${FM} ${hs()}`},method:"POST",url:"/graphql"});function $C(e){return qu(e,{method:"POST",url:"/graphql"})}var Wu="(?:[a-zA-Z0-9_-]+)",eI="\\.",tI=new RegExp(`^${Wu}${eI}${Wu}${eI}${Wu}$`),LM=tI.test.bind(tI);async function _M(e){let t=LM(e),s=e.startsWith("v1.")||e.startsWith("ghs_"),r=e.startsWith("ghu_");return{type:"token",token:e,tokenType:t?"app":s?"installation":r?"user-to-server":"oauth"}}function YM(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function OM(e,t,s,r){let i=t.endpoint.merge(s,r);return i.headers.authorization=YM(e),t(i)}var sI=function(t){if(!t)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof t!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return t=t.replace(/^(token|bearer) +/i,""),Object.assign(_M.bind(null,t),{hook:OM.bind(null,t)})};var ju="7.0.6";var rI=()=>{},JM=console.warn.bind(console),PM=console.error.bind(console);function HM(e={}){return typeof e.debug!="function"&&(e.debug=rI),typeof e.info!="function"&&(e.info=rI),typeof e.warn!="function"&&(e.warn=JM),typeof e.error!="function"&&(e.error=PM),e}var iI=`octokit-core.js/${ju} ${hs()}`,Ma=class{static VERSION=ju;static defaults(t){return class extends this{constructor(...r){let i=r[0]||{};if(typeof t=="function"){super(t(i));return}super(Object.assign({},t,i,i.userAgent&&t.userAgent?{userAgent:`${i.userAgent} ${t.userAgent}`}:null))}}}static plugins=[];static plugin(...t){let s=this.plugins;return class extends this{static plugins=s.concat(t.filter(i=>!s.includes(i)))}}constructor(t={}){let s=new TC.Collection,r={baseUrl:lo.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},t.request,{hook:s.bind(null,"request")}),mediaType:{previews:[],format:""}};if(r.headers["user-agent"]=t.userAgent?`${t.userAgent} ${iI}`:iI,t.baseUrl&&(r.baseUrl=t.baseUrl),t.previews&&(r.mediaType.previews=t.previews),t.timeZone&&(r.headers["time-zone"]=t.timeZone),this.request=lo.defaults(r),this.graphql=$C(this.request).defaults(r),this.log=HM(t.log),this.hook=s,t.authStrategy){let{authStrategy:o,...n}=t,a=o(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:n},t.auth));s.wrap("request",a.hook),this.auth=a}else if(!t.auth)this.auth=async()=>({type:"unauthenticated"});else{let o=sI(t.auth);s.wrap("request",o.hook),this.auth=o}let i=this.constructor;for(let o=0;o<i.plugins.length;++o)Object.assign(this,i.plugins[o](this,t))}request;graphql;log;hook;auth};var zu="17.0.0";var VM={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createHostedRunnerForOrg:["POST /orgs/{org}/actions/hosted-runners"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],cre Line truncated
`)}var MM=class extends Error{constructor(e,t,s){super(GM(s)),this.request=e,this.headers=t,this.response=s,this.errors=s.errors,this.data=s.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},LM=["method","baseUrl","url","headers","request","query","mediaType","operationName"],_M=["query","method","url"],eI=/\/api\/v3\/?$/;function YM(e,t,s){if(s){if(typeof t=="string"&&"query"in s)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let n in s)if(_M.includes(n))return Promise.reject(new Error(`[@octokit/graphql] "${n}" cannot be used as variable name`))}let r=typeof t=="string"?Object.assign({query:t},s):t,i=Object.keys(r).reduce((n,a)=>LM.includes(a)?(n[a]=r[a],n):(n.variables||(n.variables={}),n.variables[a]=r[a],n),{}),o=r.baseUrl||e.endpoint.DEFAULTS.baseUrl;return eI.test(o)&&(i.url=o.replace(eI,"/api/graphql")),e(i).then(n=>{if(n.data.errors){let a={};for(let A of Object.keys(n.headers))a[A]=n.headers[A];throw new MM(i,a,n.data)}return n.data.data})}function Wu(e,t){let s=e.defaults(t);return Object.assign((i,o)=>YM(s,i,o),{defaults:Wu.bind(null,s),endpoint:s.endpoint})}var xJ=Wu(lo,{headers:{"user-agent":`octokit-graphql.js/${NM} ${hs()}`},method:"POST",url:"/graphql"});function tI(e){return Wu(e,{method:"POST",url:"/graphql"})}var ju="(?:[a-zA-Z0-9_-]+)",sI="\\.",rI=new RegExp(`^${ju}${sI}${ju}${sI}${ju}$`),OM=rI.test.bind(rI);async function JM(e){let t=OM(e),s=e.startsWith("v1.")||e.startsWith("ghs_"),r=e.startsWith("ghu_");return{type:"token",token:e,tokenType:t?"app":s?"installation":r?"user-to-server":"oauth"}}function PM(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function HM(e,t,s,r){let i=t.endpoint.merge(s,r);return i.headers.authorization=PM(e),t(i)}var iI=function(t){if(!t)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof t!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return t=t.replace(/^(token|bearer) +/i,""),Object.assign(JM.bind(null,t),{hook:HM.bind(null,t)})};var zu="7.0.6";var oI=()=>{},VM=console.warn.bind(console),qM=console.error.bind(console);function WM(e={}){return typeof e.debug!="function"&&(e.debug=oI),typeof e.info!="function"&&(e.info=oI),typeof e.warn!="function"&&(e.warn=VM),typeof e.error!="function"&&(e.error=qM),e}var nI=`octokit-core.js/${zu} ${hs()}`,Ma=class{static VERSION=zu;static defaults(t){return class extends this{constructor(...r){let i=r[0]||{};if(typeof t=="function"){super(t(i));return}super(Object.assign({},t,i,i.userAgent&&t.userAgent?{userAgent:`${i.userAgent} ${t.userAgent}`}:null))}}}static plugins=[];static plugin(...t){let s=this.plugins;return class extends this{static plugins=s.concat(t.filter(i=>!s.includes(i)))}}constructor(t={}){let s=new SC.Collection,r={baseUrl:lo.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},t.request,{hook:s.bind(null,"request")}),mediaType:{previews:[],format:""}};if(r.headers["user-agent"]=t.userAgent?`${t.userAgent} ${nI}`:nI,t.baseUrl&&(r.baseUrl=t.baseUrl),t.previews&&(r.mediaType.previews=t.previews),t.timeZone&&(r.headers["time-zone"]=t.timeZone),this.request=lo.defaults(r),this.graphql=tI(this.request).defaults(r),this.log=WM(t.log),this.hook=s,t.authStrategy){let{authStrategy:o,...n}=t,a=o(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:n},t.auth));s.wrap("request",a.hook),this.auth=a}else if(!t.auth)this.auth=async()=>({type:"unauthenticated"});else{let o=iI(t.auth);s.wrap("request",o.hook),this.auth=o}let i=this.constructor;for(let o=0;o<i.plugins.length;++o)Object.assign(this,i.plugins[o](this,t))}request;graphql;log;hook;auth};var Zu="17.0.0";var jM={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createHostedRunnerForOrg:["POST /orgs/{org}/actions/hosted-runners"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],cre Line truncated
globstar while`,e,l,t,p,g),this.matchOne(e.slice(l),t.slice(p),s))return this.debug("globstar found match!",l,a,g),!0;if(g==="."||g===".."||!r.dot&&g.charAt(0)==="."){this.debug("dot detected!",e,l,t,p);break}this.debug("globstar swallow a segment, and continue"),l++}return!!(s&&(this.debug(`
>>> no match, partial?`,e,l,t,p),l===a))}let d;if(typeof c=="string"?(d=u===c,this.debug("string match",c,u,d)):(d=c.test(u),this.debug("pattern match",c,u,d)),!d)return!1}if(o===a&&n===A)return!0;if(o===a)return s;if(n===A)return o===a-1&&e[o]==="";throw new Error("wtf?")}braceExpand(){return rw(this.pattern,this.options)}parse(e){ja(e);let t=this.options;if(e==="**")return ye;if(e==="")return"";let s,r=null;(s=e.match(HL))?r=t.dot?qL:VL:(s=e.match(UL))?r=(t.nocase?t.dot?LL:ML:t.dot?GL:NL)(s[1]):(s=e.match(WL))?r=(t.nocase?t.dot?zL:jL:t.dot?ZL:KL)(s):(s=e.match(_L))?r=t.dot?OL:YL:(s=e.match(JL))&&(r=PL);let i=XI.fromGlob(e,this.options).toMMPattern();return r&&typeof i=="object"&&Reflect.defineProperty(i,"test",{value:r}),i}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,s=t.noglobstar?e_:t.dot?t_:s_,r=new Set(t.nocase?["i"]:[]),i=e.map(a=>{let A=a.map(u=>{if(u instanceof RegExp)for(let l of u.flags.split(""))r.add(l);return typeof u=="string"?a_(u):u===ye?ye:u._src});A.forEach((u,l)=>{let p=A[l+1],g=A[l-1];u!==ye||g===ye||(g===void 0?p!==void 0&&p!==ye?A[l+1]="(?:\\/|"+s+"\\/)?"+p:A[l]=s:p===void 0?A[l-1]=g+"(?:\\/|\\/"+s+")?":p!==ye&&(A[l-1]=g+"(?:\\/|\\/"+s+"\\/)"+p,A[l+1]=ye))});let c=A.filter(u=>u!==ye);if(this.partial&&c.length>=1){let u=[];for(let l=1;l<=c.length;l++)u.push(c.slice(0,l).join("/"));return"(?:"+u.join("|")+")"}return c.join("/")}).join("|"),[o,n]=e.length>1?["(?:",")"]:["",""];i="^"+o+i+n+"$",this.partial&&(i="^(?:\\/|"+o+i.slice(1,-1)+n+")$"),this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...r].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;let s=this.options;this.isWindows&&(e=e.split("\\").join("/"));let r=this.slashSplit(e);this.debug(this.pattern,"split",r);let i=this.set;this.debug(this.pattern,"set",i);let o=r[r.length-1];if(!o)for(let n=r.length-2;!o&&n>=0;n--)o=r[n];for(let n=0;n<i.length;n++){let a=i[n],A=r;if(s.matchBase&&a.length===1&&(A=[o]),this.matchOne(A,a,t))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(e){return xe.defaults(e).Minimatch}};xe.AST=XI;xe.Minimatch=ms;xe.escape=$I;xe.unescape=si;var A_=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,ow=new Set,lp=typeof process=="object"&&process?process:{},nw=(e,t,s,r)=>{typeof lp.emitWarning=="function"?lp.emitWarning(e,t,s,r):console.error(`[${s}] ${t}: ${e}`)},za=globalThis.AbortController,RI=globalThis.AbortSignal;if(typeof za>"u"){RI=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(s,r){this._onabort.push(r)}},za=class{constructor(){t()}signal=new RI;abort(s){if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(let r of this.signal._onabort)r(s);this.signal.onabort?.(s)}}};let e=lp.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{e&&(e=!1,nw("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var c_=e=>!ow.has(e),Es=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),aw=e=>Es(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?qa:null:null,qa=class extends Array{constructor(e){super(e),this.fill(0)}},l_=class Qo{heap;length;static#e=!1;static create(t){let s=aw(t);if(!s)return[];Qo.#e=!0;let r=new Qo(t,s);return Qo.#e=!1,r}constructor(t,s){if(!Qo.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new s(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},Ka=class Aw{#e;#t;#s;#r;#i;#o;#l;#A;get perf(){return this.#A}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#c;#u;#p;#g;#a;#d;#C;#B;#E;#k;#m;#b;#y;#f;#Q;#I;#x;#n;#U;static unsafeExposeInternals(t){return{starts:t.#y,ttls:t.#f,autopurgeTimers:t.#Q,sizes:t.#b,keyMap:t.#p,keyList:t.#g,valList:t.#a,next:t.#d,prev:t.#C,get head(){return t.#B},get tail(){return t.#E},free:t.#k,isBackgroundFetch:s=>t.#h(s),backgroundFetch:(s,r,i,o)=>t.#J(s,r,i,o),moveToTail:s=>t.#G(s),indexes:s=>t.#R(s),rindexes:s=>t.#T(s),isStale:s=>t.#w(s)}}get max(){return this.#e}get maxSize(){return th Line truncated
>>> no match, partial?`,e,l,t,p),l===a))}let d;if(typeof c=="string"?(d=u===c,this.debug("string match",c,u,d)):(d=c.test(u),this.debug("pattern match",c,u,d)),!d)return!1}if(o===a&&n===A)return!0;if(o===a)return s;if(n===A)return o===a-1&&e[o]==="";throw new Error("wtf?")}braceExpand(){return ow(this.pattern,this.options)}parse(e){ja(e);let t=this.options;if(e==="**")return ye;if(e==="")return"";let s,r=null;(s=e.match(WL))?r=t.dot?zL:jL:(s=e.match(ML))?r=(t.nocase?t.dot?OL:YL:t.dot?_L:LL)(s[1]):(s=e.match(ZL))?r=(t.nocase?t.dot?XL:KL:t.dot?$L:e_)(s):(s=e.match(JL))?r=t.dot?HL:PL:(s=e.match(VL))&&(r=qL);let i=ew.fromGlob(e,this.options).toMMPattern();return r&&typeof i=="object"&&Reflect.defineProperty(i,"test",{value:r}),i}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,s=t.noglobstar?r_:t.dot?i_:o_,r=new Set(t.nocase?["i"]:[]),i=e.map(a=>{let A=a.map(u=>{if(u instanceof RegExp)for(let l of u.flags.split(""))r.add(l);return typeof u=="string"?l_(u):u===ye?ye:u._src});A.forEach((u,l)=>{let p=A[l+1],g=A[l-1];u!==ye||g===ye||(g===void 0?p!==void 0&&p!==ye?A[l+1]="(?:\\/|"+s+"\\/)?"+p:A[l]=s:p===void 0?A[l-1]=g+"(?:\\/|\\/"+s+")?":p!==ye&&(A[l-1]=g+"(?:\\/|\\/"+s+"\\/)"+p,A[l+1]=ye))});let c=A.filter(u=>u!==ye);if(this.partial&&c.length>=1){let u=[];for(let l=1;l<=c.length;l++)u.push(c.slice(0,l).join("/"));return"(?:"+u.join("|")+")"}return c.join("/")}).join("|"),[o,n]=e.length>1?["(?:",")"]:["",""];i="^"+o+i+n+"$",this.partial&&(i="^(?:\\/|"+o+i.slice(1,-1)+n+")$"),this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...r].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;let s=this.options;this.isWindows&&(e=e.split("\\").join("/"));let r=this.slashSplit(e);this.debug(this.pattern,"split",r);let i=this.set;this.debug(this.pattern,"set",i);let o=r[r.length-1];if(!o)for(let n=r.length-2;!o&&n>=0;n--)o=r[n];for(let n=0;n<i.length;n++){let a=i[n],A=r;if(s.matchBase&&a.length===1&&(A=[o]),this.matchOne(A,a,t))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(e){return xe.defaults(e).Minimatch}};xe.AST=ew;xe.Minimatch=ms;xe.escape=tw;xe.unescape=ri;var u_=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,aw=new Set,up=typeof process=="object"&&process?process:{},Aw=(e,t,s,r)=>{typeof up.emitWarning=="function"?up.emitWarning(e,t,s,r):console.error(`[${s}] ${t}: ${e}`)},za=globalThis.AbortController,FI=globalThis.AbortSignal;if(typeof za>"u"){FI=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(s,r){this._onabort.push(r)}},za=class{constructor(){t()}signal=new FI;abort(s){if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(let r of this.signal._onabort)r(s);this.signal.onabort?.(s)}}};let e=up.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{e&&(e=!1,Aw("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}var p_=e=>!aw.has(e),Es=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),cw=e=>Es(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?qa:null:null,qa=class extends Array{constructor(e){super(e),this.fill(0)}},g_=class Qo{heap;length;static#e=!1;static create(t){let s=cw(t);if(!s)return[];Qo.#e=!0;let r=new Qo(t,s);return Qo.#e=!1,r}constructor(t,s){if(!Qo.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new s(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},Ka=class lw{#e;#t;#s;#r;#i;#o;#l;#A;get perf(){return this.#A}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#c;#u;#p;#g;#a;#d;#C;#B;#E;#k;#m;#b;#y;#f;#Q;#I;#x;#n;#U;static unsafeExposeInternals(t){return{starts:t.#y,ttls:t.#f,autopurgeTimers:t.#Q,sizes:t.#b,keyMap:t.#p,keyList:t.#g,valList:t.#a,next:t.#d,prev:t.#C,get head(){return t.#B},get tail(){return t.#E},free:t.#k,isBackgroundFetch:s=>t.#h(s),backgroundFetch:(s,r,i,o)=>t.#J(s,r,i,o),moveToTail:s=>t.#G(s),indexes:s=>t.#R(s),rindexes:s=>t.#T(s),isStale:s=>t.#w(s)}}get max(){return this.#e}get maxSize(){return th Line truncated
${i.data.body}`:r.body=i.data.body}return r.body=r.body?this.truncateReleaseNotes(r.body):void 0,r}truncateReleaseNotes(t){return t.substring(0,124999)}async createRelease(t){return this.github.rest.repos.createRelease(await this.prepareReleaseMutation(t))}async updateRelease(t){return this.github.rest.repos.updateRelease(await this.prepareReleaseMutation(t))}async finalizeRelease(t){return await this.github.rest.repos.updateRelease({owner:t.owner,repo:t.repo,release_id:t.release_id,draft:!1,make_latest:t.make_latest,discussion_category_name:t.discussion_category_name})}allReleases(t){let s={per_page:100,...t};return this.github.paginate.iterator(this.github.rest.repos.listReleases.endpoint.merge(s))}async listReleaseAssets(t){return this.github.paginate(this.github.rest.repos.listReleaseAssets,{...t,per_page:100})}async deleteReleaseAsset(t){let{release_id:s,...r}=t;try{await this.github.rest.repos.deleteReleaseAsset(r)}catch(i){if((i?.status??i?.response?.status)!==404)throw i;try{await this.github.request("DELETE /repos/{owner}/{repo}/releases/{release_id}/assets/{asset_id}",t)}catch(n){throw new AggregateError([i,n],`Failed to delete release asset ${t.asset_id}. GitHub endpoint: ${ii(i)}; release-scoped endpoint: ${ii(n)}`)}}}async deleteRelease(t){await this.github.rest.repos.deleteRelease(t)}async updateReleaseAsset(t){return await this.github.rest.repos.updateReleaseAsset(t)}async uploadReleaseAsset(t){return this.github.request({method:"POST",url:t.url,headers:{"content-length":`${t.size}`,"content-type":t.mime,authorization:`token ${t.token}`},data:t.data})}},Z_=e=>({name:(0,Hw.basename)(e),mime:K_(e),size:(0,Ow.statSync)(e).size}),K_=e=>(0,Pw.lookup)(e)||"application/octet-stream",Qp=(e,t)=>t.name===e||t.name===_w(e)||t.label===e,X_=e=>{let t=e?.status??e?.response?.status,s=e?.request?.url,r=e?.message,i=typeof s=="string"&&(/\/releases\/assets\//.test(s)||/\/releases\/\d+\/assets(?:\?|$)/.test(s));return t===404&&(i||typeof r=="string"&&r.includes("update-a-release-asset"))},$_=e=>{let t=e?.status??e?.response?.status,s=e?.response?.data?.message??e?.message;return t===422&&/immutable release/i.test(String(s))},e2=(e,t)=>t?`Cannot upload asset ${e} to an immutable release. GitHub only allows asset uploads before a release is published, but draft prereleases publish with the release.published event instead of release.prereleased. If you need prereleases with assets on an immutable-release repository, keep the release as a draft with draft: true, then publish it later from that draft and subscribe downstream workflows to release.published.`:`Cannot upload asset ${e} to an immutable release. GitHub only allows asset uploads before a release is published, so upload assets to a draft release before you publish it.`,Vw=async(e,t,s,r,i,o)=>{let[n,a]=e.github_repository.split("/"),{name:A,mime:c,size:u}=Z_(r),l=i.find(h=>Qp(A,h));if(l){if(e.input_overwrite_files===!1)return console.log(`Asset ${A} already exists and overwrite_files is false...`),null;console.log(`\u267B\uFE0F Deleting previously uploaded asset ${A}...`),await t.deleteReleaseAsset({asset_id:l.id||1,owner:n,repo:a,release_id:o})}console.log(`\u2B06\uFE0F Uploading ${A}...`);let p=new URL(s);p.searchParams.append("name",A);let g=async(h,m=3)=>{if(o!==void 0)for(let B=1;B<=m;B++){let b=(await t.listReleaseAssets({owner:n,repo:a,release_id:o})).find(h);if(b)return b;B<m&&await new Promise(N=>setTimeout(N,1e3))}},d=async()=>{let h=await(0,Jw.open)(r);try{return await t.uploadReleaseAsset({url:p.toString(),size:u,mime:c,token:e.github_token,data:z_(h)})}finally{await h.close()}},E=async h=>{if(!h.name||h.name===A||!h.id)return h;console.log(`\u270F\uFE0F Restoring asset label to ${A}...`);let m=async B=>{let{data:C}=await t.updateReleaseAsset({owner:n,repo:a,asset_id:B,name:h.name,label:A});return C};try{return await m(h.id)}catch(B){if((B?.status??B?.response?.status)===404&&o!==void 0)try{let b=await g(N=>N.id===h.id||N.name===h.name);if(b)return await m(b.id)}catch(b){console.warn(`error refreshing release assets for ${A}: ${b}`)}return console.warn(`error updating release asset label for ${A}: ${B}`),h}},f=async h=>{let m=h.data;if(h.status!==201)throw new Error(`Failed to upload release asset ${A}. received status code ${h.status}
${i.data.body}`:r.body=i.data.body}return r.body=r.body?this.truncateReleaseNotes(r.body):void 0,r}truncateReleaseNotes(t){return t.substring(0,124999)}async createRelease(t){return this.github.rest.repos.createRelease(await this.prepareReleaseMutation(t))}async updateRelease(t){return this.github.rest.repos.updateRelease(await this.prepareReleaseMutation(t))}async finalizeRelease(t){return await this.github.rest.repos.updateRelease({owner:t.owner,repo:t.repo,release_id:t.release_id,draft:!1,make_latest:t.make_latest,discussion_category_name:t.discussion_category_name})}allReleases(t){let s={per_page:100,...t};return this.github.paginate.iterator(this.github.rest.repos.listReleases.endpoint.merge(s))}async listReleaseAssets(t){return this.github.paginate(this.github.rest.repos.listReleaseAssets,{...t,per_page:100})}async deleteReleaseAsset(t){let{release_id:s,...r}=t;try{await this.github.rest.repos.deleteReleaseAsset(r)}catch(i){if((i?.status??i?.response?.status)!==404)throw i;try{await this.github.request("DELETE /repos/{owner}/{repo}/releases/{release_id}/assets/{asset_id}",t)}catch(n){throw new AggregateError([i,n],`Failed to delete release asset ${t.asset_id}. GitHub endpoint: ${Qs(i)}; release-scoped endpoint: ${Qs(n)}`)}}}async deleteRelease(t){await this.github.rest.repos.deleteRelease(t)}async updateReleaseAsset(t){return await this.github.rest.repos.updateReleaseAsset(t)}async uploadReleaseAsset(t){return this.github.request({method:"POST",url:t.url,headers:{"content-length":`${t.size}`,"content-type":t.mime,authorization:`token ${t.token}`},data:t.data})}},t2=e=>({name:(0,qw.basename)(e),mime:s2(e),size:(0,Pw.statSync)(e).size}),s2=e=>(0,Vw.lookup)(e)||"application/octet-stream",Bp=(e,t)=>t.name===e||t.name===Ow(e)||t.label===e,r2=e=>{let t=e?.status??e?.response?.status,s=e?.request?.url,r=e?.message,i=typeof s=="string"&&(/\/releases\/assets\//.test(s)||/\/releases\/\d+\/assets(?:\?|$)/.test(s));return t===404&&(i||typeof r=="string"&&r.includes("update-a-release-asset"))},i2=e=>{let t=e?.status??e?.response?.status,s=e?.response?.data?.message??e?.message;return t===422&&/immutable release/i.test(String(s))},o2=(e,t)=>t?`Cannot upload asset ${e} to an immutable release. GitHub only allows asset uploads before a release is published, but draft prereleases publish with the release.published event instead of release.prereleased. If you need prereleases with assets on an immutable-release repository, keep the release as a draft with draft: true, then publish it later from that draft and subscribe downstream workflows to release.published.`:`Cannot upload asset ${e} to an immutable release. GitHub only allows asset uploads before a release is published, so upload assets to a draft release before you publish it.`,jw=async(e,t,s,r,i,o)=>{let[n,a]=e.github_repository.split("/"),{name:A,mime:c,size:u}=t2(r),l=i.find(h=>Bp(A,h));if(l){if(e.input_overwrite_files===!1)return console.log(`Asset ${A} already exists and overwrite_files is false...`),null;console.log(`\u267B\uFE0F Deleting previously uploaded asset ${A}...`),await t.deleteReleaseAsset({asset_id:l.id||1,owner:n,repo:a,release_id:o})}console.log(`\u2B06\uFE0F Uploading ${A}...`);let p=new URL(s);p.searchParams.append("name",A);let g=async(h,m=3)=>{if(o!==void 0)for(let Q=1;Q<=m;Q++){let b=(await t.listReleaseAssets({owner:n,repo:a,release_id:o})).find(h);if(b)return b;Q<m&&await new Promise(N=>setTimeout(N,1e3))}},d=async()=>{let h=await(0,Hw.open)(r);try{return await t.uploadReleaseAsset({url:p.toString(),size:u,mime:c,token:e.github_token,data:X_(h)})}finally{await h.close()}},E=async h=>{if(!h.name||h.name===A||!h.id)return h;console.log(`\u270F\uFE0F Restoring asset label to ${A}...`);let m=async Q=>{let{data:C}=await t.updateReleaseAsset({owner:n,repo:a,asset_id:Q,name:h.name,label:A});return C};try{return await m(h.id)}catch(Q){if((Q?.status??Q?.response?.status)===404&&o!==void 0)try{let b=await g(N=>N.id===h.id||N.name===h.name);if(b)return await m(b.id)}catch(b){console.warn(`error refreshing release assets for ${A}: ${b}`)}return console.warn(`error updating release asset label for ${A}: ${Q}`),h}},f=async h=>{let m=h.data;if(h.status!==201)throw new Error(`Failed to upload release asset ${A}. received status code ${h.status}
${m.message}
${JSON.stringify(m.errors)}`);let B=await E(m);return console.log(`\u2705 Uploaded ${A}`),B};try{return await f(await d())}catch(h){let m=h?.status??h?.response?.status,B=h?.response?.data;if($_(h))throw new Error(e2(A,e.input_prerelease));if(o!==void 0&&X_(h))try{let C=await g(b=>Qp(A,b));if(C)return console.warn(`error updating release asset metadata for ${A}: ${h}. Matching asset is present after refresh; continuing...`),C}catch(C){console.warn(`error refreshing release assets after metadata update failure: ${C}`)}if(e.input_overwrite_files!==!1&&m===422&&B?.errors?.[0]?.code==="already_exists"&&o!==void 0){console.log(`\u26A0\uFE0F Asset ${A} already exists (race condition), refreshing assets and retrying once...`);let b=(await t.listReleaseAssets({owner:n,repo:a,release_id:o})).find(N=>Qp(A,N));if(b)return await t.deleteReleaseAsset({owner:n,repo:a,release_id:o,asset_id:b.id}),await f(await d())}throw h}},Bp=async(e,t,s=3)=>{if(s<=0)throw console.log("\u274C Too many retries. Aborting..."),new Error("Too many retries.");let[r,i]=e.github_repository.split("/"),o=fp(e.input_tag_name)||(bo(e.github_ref)?e.github_ref.replace("refs/tags/",""):""),n=e.input_discussion_category_name,a=e.input_generate_release_notes,A=e.input_previous_tag;a&&A&&console.log(`\u{1F4DD} Generating release notes using previous tag ${A}`);let c;try{c=await qw(t,r,i,o,s)}catch(u){throw console.log(`\u26A0\uFE0F Unexpected error fetching GitHub release for tag ${e.github_ref}: ${u}`),u}if(c===void 0)return await Yw(o,e,t,r,i,n,a,s,A);try{let u=c;console.log(`Found release ${u.name} (with id=${u.id})`);let l=u.id,p;e.input_target_commitish&&e.input_target_commitish!==u.target_commitish?(console.log(`Updating commit from "${u.target_commitish}" to "${e.input_target_commitish}"`),p=e.input_target_commitish):p=u.target_commitish;let g=o,d=e.input_name||u.name||o,E=mp(e)||"",f=u.body||"",h;e.input_append_body&&E&&f?h=f+`
`+E:h=E||f;let m=e.input_prerelease!==void 0?e.input_prerelease:u.prerelease,B=e.input_make_latest;return{release:(await t.updateRelease({owner:r,repo:i,release_id:l,tag_name:g,target_commitish:p,name:d,body:h,draft:u.draft,prerelease:m,discussion_category_name:n,generate_release_notes:a,make_latest:B,previous_tag_name:A})).data,created:!1}}catch(u){if(u.status!==404)throw console.log(`\u26A0\uFE0F Unexpected error fetching GitHub release for tag ${e.github_ref}: ${u}`),u;return await Yw(o,e,t,r,i,n,a,s,A)}},Cp=async(e,t,s,r=!1,i=3)=>{if(e.input_draft===!0||s.draft===!1)return s;if(i<=0)throw console.log("\u274C Too many retries. Aborting..."),new Error("Too many retries.");let[o,n]=e.github_repository.split("/");try{let{data:a}=await t.finalizeRelease({owner:o,repo:n,release_id:s.id,make_latest:e.input_make_latest,discussion_category_name:e.input_discussion_category_name});return a}catch(a){if(console.warn(`error finalizing release: ${a}`),r&&s.draft&&i2(a)){let A=!1;try{console.log(`\u{1F9F9} Deleting draft release ${s.id} for tag ${s.tag_name} because tag creation is blocked by repository rules...`),await t.deleteRelease({owner:o,repo:n,release_id:s.id}),A=!0}catch(u){console.warn(`error deleting orphan draft release ${s.id}: ${u}`)}let c=A?`Deleted draft release ${s.id} to avoid leaving an orphaned draft release.`:`Failed to delete draft release ${s.id}; manual cleanup may still be required.`;throw new Error(`Tag creation for ${s.tag_name} is blocked by repository rules. ${c}`)}return console.log(`retrying... (${i-1} retries remaining)`),Cp(e,t,s,r,i-1)}},Ip=async(e,t,s,r=3)=>{if(r<=0)throw console.log("\u274C Too many retries. Aborting..."),new Error("Too many retries.");let[i,o]=e.github_repository.split("/");try{return await t.listReleaseAssets({owner:i,repo:o,release_id:s.id})}catch(n){return console.warn(`error listing assets of release: ${n}`),console.log(`retrying... (${r-1} retries remaining)`),Ip(e,t,s,r-1)}};async function qw(e,t,s,r,i=1){try{let{data:n}=await e.getReleaseByTag({owner:t,repo:s,tag:r});return n}catch(n){if(n.status!==404)throw n}if(i<=0)return;let o=Math.max(1,i);for(let n=0;n<o;n+=1){let a=await zw(e,t,s,r),A=Zw(a,void 0);if(A)return A;n<o-1&&await jw(Ww)}}var Ww=1e3,t2=2;async function jw(e){await new Promise(t=>setTimeout(t,e))}async function zw(e,t,s,r){let i=[],o=0;for await(let n of e.allReleases({owner:t,repo:s}))if(i.push(...n.data.filter(a=>a.tag_name===r)),o+=1,o>=t2)break;return i}function Zw(e,t){return t&&e.some(s=>s.id===t.id)||e.length===0?t:[...e].sort((s,r)=>s.draft!==r.draft?Number(s.draft)-Number(r.draft):s.id-r.id)[0]}async function s2(e,t,s,r,i,o){if(!(o.id===i||!o.draft||o.assets.length>0))try{console.log(`\u{1F9F9} Removing duplicate draft release ${o.id} for tag ${r}...`),await e.deleteRelease({owner:t,repo:s,release_id:o.id})}catch(n){console.warn(`error deleting duplicate release ${o.id}: ${n}`)}}async function r2(e,t,s,r,i,o){let n=Math.max(o,1);for(let a=1;a<=n;a+=1){let A;try{A=await qw(e,t,s,r,0)}catch(l){console.warn(`error reloading release for tag ${r}: ${l}`)}let c=[];try{c=await zw(e,t,s,r)}catch(l){console.warn(`error listing recent releases for tag ${r}: ${l}`)}let u=Zw(c,A);if(u){u.id!==i.id&&console.log(`\u21AA\uFE0F Using release ${u.id} for tag ${r} instead of duplicate draft ${i.id}`);let l=c.find(p=>p.id===i.id);return l&&await s2(e,t,s,r,u.id,l),u}a<n&&(console.log(`Release ${i.id} is not yet discoverable by tag ${r}, retrying... (${n-a} retries remaining)`),await jw(Ww))}return console.log(`\u26A0\uFE0F Continuing with newly created release ${i.id} because tag ${r} is still not discoverable`),i}async function Yw(e,t,s,r,i,o,n,a,A){let c=e,u=t.input_name||e,l=mp(t),p=t.input_prerelease,g=p===!0?t.input_draft===!0:!0,d=t.input_target_commitish,E=t.input_make_latest,f="";d&&(f=` using commit "${d}"`),console.log(`\u{1F469}\u200D\u{1F3ED} Creating new GitHub release for tag ${c}${f}...`);try{let h=await s.createRelease({owner:r,repo:i,tag_name:c,name:u,body:l,draft:g,prerelease:p,target_commitish:d,discussion_category_name:o,generate_release_notes:n,make_latest:E,previous_tag_name:A}),m=await r2(s,r,i,c,h.data,a);return{release:m,created:m.id===h.data.id}}catch(h){let m=h;switch(console.log(`\u26A0\uFE0F GitHub release failed with status: ${m.status}`),console.log(ii(h)),m.status){case 403:throw console.log("Skip retry \u2014 your GitHub token/PAT does not have the required permission to create a release"),h;case 404:throw console.log("Skip retry - discussion category mismatch"),h;case 422:if(m.response?.data?.errors?.[0]?.code==="already_exists")console.log("\u26A0\uFE0F Release already exists (race condition detected), retrying to find and update existing release...");else throw console.log("Skip retry - validation failed"),h;break}return console.log(`retrying... (${a-1} retries remaining)`),Bp(t,s,a-1)}}function i2(e){let t=e?.response?.data?.errors;return!Array.isArray(t)||e?.status!==422?!1:t.some(({field:s,message:r})=>s==="pre_re Line truncated
${JSON.stringify(m.errors)}`);let Q=await E(m);return console.log(`\u2705 Uploaded ${A}`),Q};try{return await f(await d())}catch(h){let m=h?.status??h?.response?.status,Q=h?.response?.data;if(i2(h))throw new Error(o2(A,e.input_prerelease));if(o!==void 0&&r2(h))try{let C=await g(b=>Bp(A,b));if(C)return console.warn(`error updating release asset metadata for ${A}: ${h}. Matching asset is present after refresh; continuing...`),C}catch(C){console.warn(`error refreshing release assets after metadata update failure: ${C}`)}if(e.input_overwrite_files!==!1&&m===422&&Q?.errors?.[0]?.code==="already_exists"&&o!==void 0){console.log(`\u26A0\uFE0F Asset ${A} already exists (race condition), refreshing assets and retrying once...`);let b=(await t.listReleaseAssets({owner:n,repo:a,release_id:o})).find(N=>Bp(A,N));if(b)return await t.deleteReleaseAsset({owner:n,repo:a,release_id:o,asset_id:b.id}),await f(await d())}throw h}},Ip=async(e,t,s=3)=>{if(s<=0)throw console.log("\u274C Too many retries. Aborting..."),new Error("Too many retries.");let[r,i]=e.github_repository.split("/"),o=Qp(e.input_tag_name)||(bo(e.github_ref)?e.github_ref.replace("refs/tags/",""):""),n=e.input_discussion_category_name,a=e.input_generate_release_notes,A=e.input_previous_tag;a&&A&&console.log(`\u{1F4DD} Generating release notes using previous tag ${A}`);let c;try{c=await zw(t,r,i,o,s)}catch(u){if(u.status===404){let l=e2(r,i,u);throw console.log(`\u26A0\uFE0F ${l}`),new Cp(l,u)}throw console.log(`\u26A0\uFE0F Unexpected error fetching GitHub release for tag ${e.github_ref}: ${u}`),u}if(c===void 0)return await Jw(o,e,t,r,i,n,a,s,A);try{let u=c;console.log(`Found release ${u.name} (with id=${u.id})`);let l=u.id,p;e.input_target_commitish&&e.input_target_commitish!==u.target_commitish?(console.log(`Updating commit from "${u.target_commitish}" to "${e.input_target_commitish}"`),p=e.input_target_commitish):p=u.target_commitish;let g=o,d=e.input_name||u.name||o,E=fp(e)||"",f=u.body||"",h;e.input_append_body&&E&&f?h=f+`
`+E:h=E||f;let m=e.input_prerelease!==void 0?e.input_prerelease:u.prerelease,Q=e.input_make_latest;return{release:(await t.updateRelease({owner:r,repo:i,release_id:l,tag_name:g,target_commitish:p,name:d,body:h,draft:u.draft,prerelease:m,discussion_category_name:n,generate_release_notes:a,make_latest:Q,previous_tag_name:A})).data,created:!1}}catch(u){if(u instanceof sA)throw u;if(u.status!==404)throw console.log(`\u26A0\uFE0F Unexpected error fetching GitHub release for tag ${e.github_ref}: ${u}`),u;return await Jw(o,e,t,r,i,n,a,s,A)}},wp=async(e,t,s,r=!1,i=3)=>{if(e.input_draft===!0||s.draft===!1)return s;if(i<=0)throw console.log("\u274C Too many retries. Aborting..."),new Error("Too many retries.");let[o,n]=e.github_repository.split("/");try{let{data:a}=await t.finalizeRelease({owner:o,repo:n,release_id:s.id,make_latest:e.input_make_latest,discussion_category_name:e.input_discussion_category_name});return a}catch(a){if(console.warn(`error finalizing release: ${a}`),r&&s.draft&&c2(a)){let A=!1;try{console.log(`\u{1F9F9} Deleting draft release ${s.id} for tag ${s.tag_name} because tag creation is blocked by repository rules...`),await t.deleteRelease({owner:o,repo:n,release_id:s.id}),A=!0}catch(u){console.warn(`error deleting orphan draft release ${s.id}: ${u}`)}let c=A?`Deleted draft release ${s.id} to avoid leaving an orphaned draft release.`:`Failed to delete draft release ${s.id}; manual cleanup may still be required.`;throw new Error(`Tag creation for ${s.tag_name} is blocked by repository rules. ${c}`)}return console.log(`retrying... (${i-1} retries remaining)`),wp(e,t,s,r,i-1)}},bp=async(e,t,s,r=3)=>{if(r<=0)throw console.log("\u274C Too many retries. Aborting..."),new Error("Too many retries.");let[i,o]=e.github_repository.split("/");try{return await t.listReleaseAssets({owner:i,repo:o,release_id:s.id})}catch(n){return console.warn(`error listing assets of release: ${n}`),console.log(`retrying... (${r-1} retries remaining)`),bp(e,t,s,r-1)}};async function zw(e,t,s,r,i=1){try{let{data:n}=await e.getReleaseByTag({owner:t,repo:s,tag:r});return n}catch(n){if(n.status!==404)throw n}if(i<=0)return;let o=Math.max(1,i);for(let n=0;n<o;n+=1){let a=await Xw(e,t,s,r),A=$w(a,void 0);if(A)return A;n<o-1&&await Kw(Zw)}}var Zw=1e3,n2=2;async function Kw(e){await new Promise(t=>setTimeout(t,e))}async function Xw(e,t,s,r){let i=[],o=0;for await(let n of e.allReleases({owner:t,repo:s}))if(i.push(...n.data.filter(a=>a.tag_name===r)),o+=1,o>=n2)break;return i}function $w(e,t){return t&&e.some(s=>s.id===t.id)||e.length===0?t:[...e].sort((s,r)=>s.draft!==r.draft?Number(s.draft)-Number(r.draft):s.id-r.id)[0]}async function a2(e,t,s,r,i,o){if(!(o.id===i||!o.draft||o.assets.length>0))try{console.log(`\u{1F9F9} Removing duplicate draft release ${o.id} for tag ${r}...`),await e.deleteRelease({owner:t,repo:s,release_id:o.id})}catch(n){console.warn(`error deleting duplicate release ${o.id}: ${n}`)}}async function A2(e,t,s,r,i,o){let n=Math.max(o,1);for(let a=1;a<=n;a+=1){let A;try{A=await zw(e,t,s,r,0)}catch(l){console.warn(`error reloading release for tag ${r}: ${l}`)}let c=[];try{c=await Xw(e,t,s,r)}catch(l){console.warn(`error listing recent releases for tag ${r}: ${l}`)}let u=$w(c,A);if(u){u.id!==i.id&&console.log(`\u21AA\uFE0F Using release ${u.id} for tag ${r} instead of duplicate draft ${i.id}`);let l=c.find(p=>p.id===i.id);return l&&await a2(e,t,s,r,u.id,l),u}a<n&&(console.log(`Release ${i.id} is not yet discoverable by tag ${r}, retrying... (${n-a} retries remaining)`),await Kw(Zw))}return console.log(`\u26A0\uFE0F Continuing with newly created release ${i.id} because tag ${r} is still not discoverable`),i}async function Jw(e,t,s,r,i,o,n,a,A){let c=e,u=t.input_name||e,l=fp(t),p=t.input_prerelease,g=p===!0?t.input_draft===!0:!0,d=t.input_target_commitish,E=t.input_make_latest,f="";d&&(f=` using commit "${d}"`),console.log(`\u{1F469}\u200D\u{1F3ED} Creating new GitHub release for tag ${c}${f}...`);try{let h=await s.createRelease({owner:r,repo:i,tag_name:c,name:u,body:l,draft:g,prerelease:p,target_commitish:d,discussion_category_name:o,generate_release_notes:n,make_latest:E,previous_tag_name:A}),m=await A2(s,r,i,c,h.data,a);return{release:m,created:m.id===h.data.id}}catch(h){let m=h;switch(console.log(`\u26A0\uFE0F GitHub release failed with status: ${m.status}`),console.log(Qs(h)),m.status){case 403:throw console.log("Skip retry \u2014 your GitHub token/PAT does not have the required permission to create a release"),h;case 404:let Q=$_(r,i,o,h);throw console.log(`Skip retry \u2014 ${Q}`),new sA(Q,h);case 422:if(m.response?.data?.errors?.[0]?.code==="already_exists")console.log("\u26A0\uFE0F Release already exists (race condition detected), retrying to find and update existing release...");else throw console.log("Skip retry - validation failed"),h;break}return console.log(`retrying... (${a-1} retries remaining)`),Ip(t,s,a-1)}}function c2(e){let t=e?.response?.data?.errors;return!Array.isArray(t)||e?.status!==422?!1:t.som Line truncated
/*! Bundled license information:
undici/lib/web/fetch/body.js:
+48 -2
View File
@@ -68,6 +68,43 @@ type ReleaseMutationParams = {
previous_tag_name?: string;
};
class ReleaseCreationError extends Error {
readonly status = 404;
constructor(message: string, cause: unknown) {
super(message, { cause });
this.name = 'ReleaseCreationError';
}
}
class ReleaseAccessError extends Error {
readonly status = 404;
constructor(message: string, cause: unknown) {
super(message, { cause });
this.name = 'ReleaseAccessError';
}
}
const repositoryAccessGuidance = (owner: string, repo: string): string =>
`Verify that ${owner}/${repo} exists under the expected owner, the token can access it, the repository is selected when using a fine-grained PAT, and the token has Contents: write permission.`;
const releaseCreation404Message = (
owner: string,
repo: string,
discussionCategory: string | undefined,
error: unknown,
): string => {
const discussionGuidance = discussionCategory
? ` Also verify that Discussions and the requested category "${discussionCategory}" are enabled.`
: '';
return `GitHub returned 404 while creating the release. ${repositoryAccessGuidance(owner, repo)}${discussionGuidance} GitHub response: ${errorMessage(error)}`;
};
const releaseLookup404Message = (owner: string, repo: string, error: unknown): string =>
`GitHub returned 404 while checking existing releases. ${repositoryAccessGuidance(owner, repo)} GitHub response: ${errorMessage(error)}`;
export interface Releaser {
getReleaseByTag(params: { owner: string; repo: string; tag: string }): Promise<{ data: Release }>;
@@ -566,6 +603,11 @@ export const release = async (
try {
_release = await findTagFromReleases(releaser, owner, repo, tag, maxRetries);
} catch (error) {
if (error.status === 404) {
const diagnostic = releaseLookup404Message(owner, repo, error);
console.log(`⚠️ ${diagnostic}`);
throw new ReleaseAccessError(diagnostic, error);
}
console.log(
`⚠️ Unexpected error fetching GitHub release for tag ${config.github_ref}: ${error}`,
);
@@ -644,6 +686,9 @@ export const release = async (
created: false,
};
} catch (error) {
if (error instanceof ReleaseCreationError) {
throw error;
}
if (error.status !== 404) {
console.log(
`⚠️ Unexpected error fetching GitHub release for tag ${config.github_ref}: ${error}`,
@@ -1029,8 +1074,9 @@ async function createRelease(
throw error;
case 404:
console.log('Skip retry - discussion category mismatch');
throw error;
const diagnostic = releaseCreation404Message(owner, repo, discussion_category_name, error);
console.log(`Skip retry — ${diagnostic}`);
throw new ReleaseCreationError(diagnostic, error);
case 422:
// Check if this is a race condition with "already_exists" error