mirror of
https://github.com/softprops/action-gh-release.git
synced 2026-10-30 18:34:30 +01:00
fix: safely classify GitHub API errors (#822)
* refactor: harden GitHub error classification Signed-off-by: Rui Chen <rui@chenrui.dev> * test: define nested GitHub status handling Signed-off-by: Rui Chen <rui@chenrui.dev> --------- Signed-off-by: Rui Chen <rui@chenrui.dev>
This commit is contained in:
1 parent
d100e75a45
commit
1c214ab373
5 files changed
+560
-105
No files matched your search
+461
-36
@@ -149,6 +149,55 @@ describe('github', () => {
|
||||
expect(pageAfterMatch).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it.each([
|
||||
['a top-level 404', { status: 404 }],
|
||||
['a nested response 404', { response: { status: 404 } }],
|
||||
[
|
||||
'an invalid top-level status with a nested response 404',
|
||||
{ status: '500', response: { status: 404 } },
|
||||
],
|
||||
])('uses release-list fallback for %s', async (_name, lookupError) => {
|
||||
const draftRelease = { ...mockRelease, draft: true };
|
||||
const allReleases = vi.fn(async function* () {
|
||||
yield { data: [draftRelease] };
|
||||
});
|
||||
const releaser = {
|
||||
...mockReleaser,
|
||||
getReleaseByTag: vi.fn().mockRejectedValue(lookupError),
|
||||
allReleases,
|
||||
};
|
||||
|
||||
await expect(findTagFromReleases(releaser, owner, repo, draftRelease.tag_name)).resolves.toBe(
|
||||
draftRelease,
|
||||
);
|
||||
expect(allReleases).toHaveBeenCalledOnce();
|
||||
});
|
||||
|
||||
it.each([
|
||||
['a nested response 500', { response: { status: 500 } }],
|
||||
['a string top-level status', { status: '404' }],
|
||||
['a string nested response status', { response: { status: '404' } }],
|
||||
['a status-less object', { reason: 'lookup failed' }],
|
||||
[
|
||||
'a numeric top-level 500 with a nested response 404',
|
||||
{ status: 500, response: { status: 404 } },
|
||||
],
|
||||
])('does not use release-list fallback for %s', async (_name, lookupError) => {
|
||||
const allReleases = vi.fn(async function* () {
|
||||
yield { data: [mockRelease] };
|
||||
});
|
||||
const releaser = {
|
||||
...mockReleaser,
|
||||
getReleaseByTag: vi.fn().mockRejectedValue(lookupError),
|
||||
allReleases,
|
||||
};
|
||||
|
||||
await expect(findTagFromReleases(releaser, owner, repo, mockRelease.tag_name)).rejects.toBe(
|
||||
lookupError,
|
||||
);
|
||||
expect(allReleases).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('does not exhaust pagination while checking a brand-new tag', async () => {
|
||||
let pagesRead = 0;
|
||||
const releaser = {
|
||||
@@ -346,11 +395,20 @@ describe('github', () => {
|
||||
expect(request).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('falls back to release-scoped asset deletion after a standard 404', async () => {
|
||||
const deleteReleaseAsset = vi.fn().mockRejectedValue({
|
||||
status: 404,
|
||||
message: 'standard route not found',
|
||||
});
|
||||
it.each([
|
||||
{
|
||||
name: 'top-level status',
|
||||
deletionError: { status: 404, message: 'standard route not found' },
|
||||
},
|
||||
{
|
||||
name: 'nested response status',
|
||||
deletionError: {
|
||||
response: { status: 404 },
|
||||
message: 'standard route not found',
|
||||
},
|
||||
},
|
||||
])('falls back to release-scoped asset deletion after a 404 with $name', async (testCase) => {
|
||||
const deleteReleaseAsset = vi.fn().mockRejectedValue(testCase.deletionError);
|
||||
const request = vi.fn().mockResolvedValue({ status: 204 });
|
||||
const releaser = new GitHubReleaser({
|
||||
rest: { repos: { deleteReleaseAsset } },
|
||||
@@ -376,6 +434,30 @@ describe('github', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it.each([
|
||||
['a string', 'not found'],
|
||||
['null', null],
|
||||
['an arbitrary object', { response: { data: 'not found' } }],
|
||||
])('does not misclassify %s as a fallback 404', async (_name, deletionError) => {
|
||||
const request = vi.fn();
|
||||
const releaser = new GitHubReleaser({
|
||||
rest: {
|
||||
repos: { deleteReleaseAsset: vi.fn().mockRejectedValue(deletionError) },
|
||||
},
|
||||
request,
|
||||
} as any);
|
||||
|
||||
await expect(
|
||||
releaser.deleteReleaseAsset({
|
||||
owner: 'owner',
|
||||
repo: 'repo',
|
||||
release_id: 42,
|
||||
asset_id: 99,
|
||||
}),
|
||||
).rejects.toBe(deletionError);
|
||||
expect(request).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('does not mask non-404 asset deletion failures', async () => {
|
||||
const deletionError = { status: 403, message: 'forbidden' };
|
||||
const request = vi.fn();
|
||||
@@ -790,6 +872,83 @@ describe('github', () => {
|
||||
expect(finalizeReleaseSpy).toHaveBeenCalledTimes(1);
|
||||
expect(deleteReleaseSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('retries malformed tag-rule errors without deleting the draft', async () => {
|
||||
const finalizeReleaseSpy = vi.fn().mockRejectedValue({
|
||||
status: 422,
|
||||
response: {
|
||||
data: {
|
||||
errors: [null, 'invalid', { field: 'pre_receive', message: 42 }],
|
||||
},
|
||||
},
|
||||
});
|
||||
const deleteReleaseSpy = vi.fn();
|
||||
const releaser = createReleaser({
|
||||
finalizeRelease: finalizeReleaseSpy,
|
||||
deleteRelease: deleteReleaseSpy,
|
||||
});
|
||||
|
||||
await expect(
|
||||
finalizeRelease(
|
||||
{
|
||||
...config,
|
||||
input_draft: false,
|
||||
},
|
||||
releaser,
|
||||
draftRelease,
|
||||
true,
|
||||
1,
|
||||
),
|
||||
).rejects.toThrow('Too many retries.');
|
||||
|
||||
expect(finalizeReleaseSpy).toHaveBeenCalledOnce();
|
||||
expect(deleteReleaseSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('finds a valid tag-rule violation after malformed validation entries', async () => {
|
||||
const finalizeReleaseSpy = vi.fn().mockRejectedValue({
|
||||
response: {
|
||||
status: 422,
|
||||
data: {
|
||||
errors: [
|
||||
null,
|
||||
'invalid',
|
||||
{
|
||||
field: 'pre_receive',
|
||||
message: 'Cannot create ref due to creations being restricted.',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
const deleteReleaseSpy = vi.fn().mockResolvedValue(undefined);
|
||||
const releaser = createReleaser({
|
||||
finalizeRelease: finalizeReleaseSpy,
|
||||
deleteRelease: deleteReleaseSpy,
|
||||
});
|
||||
|
||||
await expect(
|
||||
finalizeRelease(
|
||||
{
|
||||
...config,
|
||||
input_draft: false,
|
||||
},
|
||||
releaser,
|
||||
draftRelease,
|
||||
true,
|
||||
1,
|
||||
),
|
||||
).rejects.toThrow(
|
||||
'Tag creation for v1.0.0 is blocked by repository rules. Deleted draft release 1 to avoid leaving an orphaned draft release.',
|
||||
);
|
||||
|
||||
expect(finalizeReleaseSpy).toHaveBeenCalledOnce();
|
||||
expect(deleteReleaseSpy).toHaveBeenCalledWith({
|
||||
owner: 'owner',
|
||||
repo: 'repo',
|
||||
release_id: draftRelease.id,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('error handling', () => {
|
||||
@@ -897,6 +1056,52 @@ describe('github', () => {
|
||||
expect(createRelease).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it.each([
|
||||
{
|
||||
name: 'a nested response 404 as repository access failure',
|
||||
listingError: {
|
||||
response: { status: 404 },
|
||||
message: 'Not Found - list-releases',
|
||||
},
|
||||
expectAccessError: true,
|
||||
},
|
||||
{
|
||||
name: 'a nested response 500 as the original error',
|
||||
listingError: {
|
||||
response: { status: 500 },
|
||||
message: 'Server Error - list-releases',
|
||||
},
|
||||
expectAccessError: false,
|
||||
},
|
||||
{
|
||||
name: 'a status-less object as the original error',
|
||||
listingError: { reason: 'release listing failed' },
|
||||
expectAccessError: false,
|
||||
},
|
||||
])('classifies a release-list fallback error with $name', async (testCase) => {
|
||||
const createRelease = vi.fn();
|
||||
const releaser = createReleaser({
|
||||
getReleaseByTag: vi.fn().mockRejectedValue({ status: 404 }),
|
||||
allReleases: async function* () {
|
||||
throw testCase.listingError;
|
||||
},
|
||||
createRelease,
|
||||
});
|
||||
|
||||
const thrown = await release(config, releaser, 1).catch((error) => error);
|
||||
|
||||
if (testCase.expectAccessError) {
|
||||
expect(thrown).toMatchObject({
|
||||
name: 'ReleaseAccessError',
|
||||
status: 404,
|
||||
cause: testCase.listingError,
|
||||
});
|
||||
} else {
|
||||
expect(thrown).toBe(testCase.listingError);
|
||||
}
|
||||
expect(createRelease).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('reports a useful create error without assuming response data exists', async () => {
|
||||
const releaseError = {
|
||||
status: 403,
|
||||
@@ -917,6 +1122,100 @@ describe('github', () => {
|
||||
expect(log).not.toHaveBeenCalledWith('undefined');
|
||||
});
|
||||
|
||||
it.each([
|
||||
{
|
||||
name: 'a nested response 403',
|
||||
releaseError: {
|
||||
response: { status: 403 },
|
||||
message: 'Resource not accessible by integration',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'a nested response 422 without already_exists',
|
||||
releaseError: {
|
||||
response: { status: 422, data: { errors: [{ code: 'invalid' }] } },
|
||||
message: 'Validation Failed',
|
||||
},
|
||||
},
|
||||
])('does not retry release creation for $name', async (testCase) => {
|
||||
const createRelease = vi.fn().mockRejectedValue(testCase.releaseError);
|
||||
const releaser = createReleaser({
|
||||
getReleaseByTag: vi.fn().mockRejectedValue({ status: 404 }),
|
||||
createRelease,
|
||||
allReleases: async function* () {
|
||||
yield { data: [] };
|
||||
},
|
||||
});
|
||||
|
||||
await expect(release(config, releaser, 1)).rejects.toBe(testCase.releaseError);
|
||||
expect(createRelease).toHaveBeenCalledOnce();
|
||||
});
|
||||
|
||||
it('classifies a nested response 404 from release creation without retrying', async () => {
|
||||
const releaseError = {
|
||||
response: { status: 404 },
|
||||
message: 'Not Found - create-a-release',
|
||||
};
|
||||
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, 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');
|
||||
expect(createRelease).toHaveBeenCalledOnce();
|
||||
});
|
||||
|
||||
it.each([
|
||||
['non-object response data', { status: 422, response: { data: 'invalid' } }],
|
||||
['missing validation errors', { status: 422, response: { data: {} } }],
|
||||
['malformed validation errors', { status: 422, response: { data: { errors: [null] } } }],
|
||||
])('does not retry a permanent 422 with %s', async (_name, releaseError) => {
|
||||
const createRelease = vi.fn().mockRejectedValue(releaseError);
|
||||
const releaser = createReleaser({
|
||||
getReleaseByTag: vi.fn().mockRejectedValue({ status: 404 }),
|
||||
createRelease,
|
||||
allReleases: async function* () {
|
||||
yield { data: [] };
|
||||
},
|
||||
});
|
||||
|
||||
await expect(release(config, releaser, 1)).rejects.toBe(releaseError);
|
||||
expect(createRelease).toHaveBeenCalledOnce();
|
||||
});
|
||||
|
||||
it.each([
|
||||
['a string', 'transport failed'],
|
||||
['null', null],
|
||||
['an arbitrary object', { reason: 'transport failed' }],
|
||||
['a nested response 500', { response: { status: 500 } }],
|
||||
])(
|
||||
'retries unclassified release creation failures without secondary TypeErrors when the error is %s',
|
||||
async (_name, releaseError) => {
|
||||
const createRelease = vi.fn().mockRejectedValue(releaseError);
|
||||
const releaser = createReleaser({
|
||||
getReleaseByTag: vi.fn().mockRejectedValue({ status: 404 }),
|
||||
createRelease,
|
||||
allReleases: async function* () {
|
||||
yield { data: [] };
|
||||
},
|
||||
});
|
||||
|
||||
await expect(release(config, releaser, 1)).rejects.toThrow('Too many retries.');
|
||||
expect(createRelease).toHaveBeenCalledOnce();
|
||||
},
|
||||
);
|
||||
|
||||
it('passes previous_tag_name through when creating a release with generated notes', async () => {
|
||||
const createReleaseSpy = vi.fn(async () => ({
|
||||
data: {
|
||||
@@ -1118,6 +1417,99 @@ describe('github', () => {
|
||||
expect(createRelease).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('creates a replacement after an existing-release update returns a nested response 404', async () => {
|
||||
const existingRelease: Release = {
|
||||
id: 41,
|
||||
upload_url: 'existing-upload',
|
||||
html_url: 'existing-html',
|
||||
tag_name: 'v1.0.0',
|
||||
name: 'existing release',
|
||||
body: 'existing body',
|
||||
target_commitish: 'main',
|
||||
draft: false,
|
||||
prerelease: false,
|
||||
assets: [],
|
||||
};
|
||||
const replacementRelease: Release = {
|
||||
...existingRelease,
|
||||
id: 42,
|
||||
upload_url: 'replacement-upload',
|
||||
html_url: 'replacement-html',
|
||||
name: 'v1.0.0',
|
||||
body: undefined,
|
||||
draft: true,
|
||||
};
|
||||
const updateError = { response: { status: 404 }, message: 'release disappeared' };
|
||||
const getReleaseByTag = vi
|
||||
.fn()
|
||||
.mockResolvedValueOnce({ data: existingRelease })
|
||||
.mockResolvedValue({ data: replacementRelease });
|
||||
const updateRelease = vi.fn().mockRejectedValue(updateError);
|
||||
const createRelease = vi.fn().mockResolvedValue({ data: replacementRelease });
|
||||
const releaser = createReleaser({
|
||||
getReleaseByTag,
|
||||
updateRelease,
|
||||
createRelease,
|
||||
allReleases: async function* () {
|
||||
yield { data: [replacementRelease] };
|
||||
},
|
||||
});
|
||||
|
||||
await expect(release(config, releaser, 1)).resolves.toEqual({
|
||||
release: replacementRelease,
|
||||
created: true,
|
||||
});
|
||||
expect(updateRelease).toHaveBeenCalledOnce();
|
||||
expect(createRelease).toHaveBeenCalledOnce();
|
||||
expect(createRelease).toHaveBeenCalledWith({
|
||||
owner: 'owner',
|
||||
repo: 'repo',
|
||||
tag_name: 'v1.0.0',
|
||||
name: 'v1.0.0',
|
||||
body: undefined,
|
||||
draft: true,
|
||||
prerelease: undefined,
|
||||
target_commitish: undefined,
|
||||
discussion_category_name: undefined,
|
||||
generate_release_notes: false,
|
||||
make_latest: undefined,
|
||||
previous_tag_name: undefined,
|
||||
});
|
||||
expect(getReleaseByTag).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
|
||||
it.each([
|
||||
['a nested response 403', { response: { status: 403 }, message: 'forbidden' }],
|
||||
['a nested response 500', { response: { status: 500 }, message: 'server error' }],
|
||||
])(
|
||||
'does not create a replacement after an existing-release update returns %s',
|
||||
async (_name, updateError) => {
|
||||
const existingRelease: Release = {
|
||||
id: 41,
|
||||
upload_url: 'existing-upload',
|
||||
html_url: 'existing-html',
|
||||
tag_name: 'v1.0.0',
|
||||
name: 'existing release',
|
||||
body: 'existing body',
|
||||
target_commitish: 'main',
|
||||
draft: false,
|
||||
prerelease: false,
|
||||
assets: [],
|
||||
};
|
||||
const createRelease = vi.fn();
|
||||
const updateRelease = vi.fn().mockRejectedValue(updateError);
|
||||
const releaser = createReleaser({
|
||||
getReleaseByTag: vi.fn().mockResolvedValue({ data: existingRelease }),
|
||||
updateRelease,
|
||||
createRelease,
|
||||
});
|
||||
|
||||
await expect(release(config, releaser, 1)).rejects.toBe(updateError);
|
||||
expect(updateRelease).toHaveBeenCalledOnce();
|
||||
expect(createRelease).not.toHaveBeenCalled();
|
||||
},
|
||||
);
|
||||
|
||||
it.each([
|
||||
['an omitted draft input', undefined],
|
||||
['a null-expression draft input', undefined],
|
||||
@@ -1263,19 +1655,37 @@ describe('github', () => {
|
||||
expect(uploadReleaseAsset).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('surfaces an actionable immutable-release error for prerelease uploads', async () => {
|
||||
it.each([
|
||||
{
|
||||
name: 'standard release with a nested status',
|
||||
prerelease: undefined,
|
||||
uploadError: {
|
||||
response: { status: 422 },
|
||||
message: 'Cannot upload assets to an immutable release.',
|
||||
},
|
||||
expected:
|
||||
'Cannot upload asset draft-false.txt 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.',
|
||||
},
|
||||
{
|
||||
name: 'prerelease with response data',
|
||||
prerelease: true,
|
||||
uploadError: {
|
||||
status: 422,
|
||||
response: {
|
||||
data: {
|
||||
message: 'Cannot upload assets to an immutable release.',
|
||||
},
|
||||
},
|
||||
},
|
||||
expected:
|
||||
'Cannot upload asset draft-false.txt 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.',
|
||||
},
|
||||
])('surfaces an actionable immutable-release error for a $name', async (testCase) => {
|
||||
const tempDir = mkdtempSync(join(tmpdir(), 'gh-release-immutable-'));
|
||||
const assetPath = join(tempDir, 'draft-false.txt');
|
||||
writeFileSync(assetPath, 'hello');
|
||||
|
||||
const uploadReleaseAsset = vi.fn().mockRejectedValue({
|
||||
status: 422,
|
||||
response: {
|
||||
data: {
|
||||
message: 'Cannot upload assets to an immutable release.',
|
||||
},
|
||||
},
|
||||
});
|
||||
const uploadReleaseAsset = vi.fn().mockRejectedValue(testCase.uploadError);
|
||||
|
||||
const mockReleaser: Releaser = {
|
||||
getReleaseByTag: () => Promise.reject('Not implemented'),
|
||||
@@ -1292,23 +1702,23 @@ describe('github', () => {
|
||||
uploadReleaseAsset,
|
||||
};
|
||||
|
||||
await expect(
|
||||
upload(
|
||||
{
|
||||
...config,
|
||||
input_prerelease: true,
|
||||
},
|
||||
mockReleaser,
|
||||
'https://uploads.github.com/repos/owner/repo/releases/1/assets',
|
||||
assetPath,
|
||||
[],
|
||||
1,
|
||||
),
|
||||
).rejects.toThrow(
|
||||
'Cannot upload asset draft-false.txt 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.',
|
||||
);
|
||||
|
||||
rmSync(tempDir, { recursive: true, force: true });
|
||||
try {
|
||||
await expect(
|
||||
upload(
|
||||
{
|
||||
...config,
|
||||
input_prerelease: testCase.prerelease,
|
||||
},
|
||||
mockReleaser,
|
||||
'https://uploads.github.com/repos/owner/repo/releases/1/assets',
|
||||
assetPath,
|
||||
[],
|
||||
1,
|
||||
),
|
||||
).rejects.toThrow(testCase.expected);
|
||||
} finally {
|
||||
rmSync(tempDir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
it('retries upload after deleting a conflicting renamed asset matched by label', async () => {
|
||||
@@ -1385,7 +1795,24 @@ describe('github', () => {
|
||||
}
|
||||
});
|
||||
|
||||
it('handles 422 already_exists error gracefully', async () => {
|
||||
it.each([
|
||||
{
|
||||
name: 'top-level status',
|
||||
releaseError: {
|
||||
status: 422,
|
||||
response: { data: { errors: [{ code: 'already_exists' }] } },
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'nested response status',
|
||||
releaseError: {
|
||||
response: {
|
||||
status: 422,
|
||||
data: { errors: [{ code: 'already_exists' }] },
|
||||
},
|
||||
},
|
||||
},
|
||||
])('retries a 422 already_exists race with $name', async (testCase) => {
|
||||
vi.useFakeTimers();
|
||||
const existingRelease = {
|
||||
id: 1,
|
||||
@@ -1411,10 +1838,7 @@ describe('github', () => {
|
||||
},
|
||||
createRelease: () => {
|
||||
createAttempts++;
|
||||
return Promise.reject({
|
||||
status: 422,
|
||||
response: { data: { errors: [{ code: 'already_exists' }] } },
|
||||
});
|
||||
return Promise.reject(testCase.releaseError);
|
||||
},
|
||||
updateRelease: () =>
|
||||
Promise.resolve({
|
||||
@@ -1447,6 +1871,7 @@ describe('github', () => {
|
||||
assert.ok(result);
|
||||
assert.equal(result.release.id, 1);
|
||||
assert.equal(result.created, false);
|
||||
expect(createAttempts).toBe(1);
|
||||
});
|
||||
|
||||
it('normalizes refs/tags-prefixed input_tag_name values before reusing an existing release', async () => {
|
||||
|
||||
Vendored
+25
-25
@@ -1,58 +1,58 @@
|
||||
"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
|
||||
"use strict";var Ab=Object.create;var vp=Object.defineProperty;var cb=Object.getOwnPropertyDescriptor;var lb=Object.getOwnPropertyNames;var ub=Object.getPrototypeOf,pb=Object.prototype.hasOwnProperty;var B=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(s){throw t=0,s}};var gb=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of lb(t))!pb.call(e,i)&&i!==s&&vp(e,i,{get:()=>t[i],enumerable:!(r=cb(t,i))||r.enumerable});return e};var Ee=(e,t,s)=>(s=e!=null?Ab(ub(e)):{},gb(t||!e||!e.__esModule?vp(s,"default",{value:e,enumerable:!0}):s,e));var Mp=B(ir=>{"use strict";var w2=require("net"),mb=require("tls"),cA=require("http"),Up=require("https"),fb=require("events"),b2=require("assert"),Qb=require("util");ir.httpOverHttp=Bb;ir.httpsOverHttp=Cb;ir.httpOverHttps=Ib;ir.httpsOverHttps=wb;function Bb(e){var t=new Ft(e);return t.request=cA.request,t}function Cb(e){var t=new Ft(e);return t.request=cA.request,t.createSocket=Np,t.defaultPort=443,t}function Ib(e){var t=new Ft(e);return t.request=Up.request,t}function wb(e){var t=new Ft(e);return t.request=Up.request,t.createSocket=Np,t.defaultPort=443,t}function Ft(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||cA.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on("free",function(r,i,o,n){for(var a=Gp(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)})}Qb.inherits(Ft,fb.EventEmitter);Ft.prototype.addRequest=function(t,s,r,i){var o=this,n=lA({request:t},o.options,Gp(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)}})};Ft.prototype.createSocket=function(t,s){var r=this,i={};r.sockets.push(i);var o=lA({},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")),Xt("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){Xt("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){Xt("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 Xt("tunneling connection has established"),r.sockets[r.sockets.indexOf(i)]=p,s(p)}function u(l){n.removeAllListeners(),Xt(`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)}};Ft.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 Np(e,t){var s=this;Ft.prototype.createSocket.call(s,e,function(r){var i=e.request.getHeader("host"),o=lA({},s.options,{socket:r,servername:i?i.replace(/:.*$/,""):e.host}),n=mb.connect(0,o);s.sockets[s.sockets.indexOf(r)]=n,t(n)})}function Gp(e,t,s){return typeof e=="string"?{host:e,port:t,localAddress:s}:e}function lA(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 Xt;process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?Xt=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)}:Xt=function(){};ir.debug=Xt});var uA=B((x2,Lp)=>{Lp.exports=Mp()});var z=B((v2,_p)=>{_p.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((k2,lg)=>{"use strict";var Yp=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[Yp]===!0}[Yp]=!0},Op=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),pA=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[Op]===!0}[Op]=!0},Jp=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),gA=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[Jp]===!0}[Jp]=!0},Pp=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),hA=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[Pp]===!0}[Pp]=!0},Hp=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),dA=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[Hp]===!0}[Hp]=!0},Vp=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"),EA=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 _x(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(wx.has(n)){i=n;break}}i!==""&&(e.referrerPolicy=i)}function Yx(){return"allowed"}function Ox(){return"success"}function Jx(){return"success"}function Px(e){let t=null;t=e.mode,e.headersList.set("sec-fetch-mode",t,!0)}function Hx(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&&Ac(e.origin)&&!Ac(di(e))&&(t=null);break;case"same-origin":Zo(e,di(e))||(t=null);break;default:}e.headersList.append("origin",t,!0)}}}function hr(e,t){return e}function Vx(e,t,s){return!e?.startTime||e.startTime<t?{domainLookupStartTime:t,domainLookupEndTime:t,connectionStartTime:t,connectionEndTime:t,secureConnectionStartTime:t,ALPNNegotiatedProtocol:e?.ALPNNegotiatedProtocol}:{domainLookupStartTime:hr(e.domainLookupStartTime,s),domainLookupEndTime:hr(e.domainLookupEndTime,s),connectionStartTime:hr(e.connectionStartTime,s),connectionEndTime:hr(e.connectionEndTime,s),secureConnectionStartTime:hr(e.secureConnectionStartTime,s),ALPNNegotiatedProtocol:e.ALPNNegotiatedProtocol}}function qx(e){return hr(kx.now(),e)}function Wx(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 jx(e){return{referrerPolicy:e.referrerPolicy}}function zx(e){let t=e.referrerPolicy;ys(t);let s=null;if(e.referrer==="client"){let a=fh();if(!a||a.origin==="null")return"no-referrer";s=new URL(a)}else e.referrer instanceof URL&&(s=e.referrer);let r=ac(s),i=ac(s,!0);r.toString().length>4096&&(r=i);let o=Zo(e,r),n=hi(r)&&!hi(e.url);switch(t){case"origin":return i??ac(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=di(e);return Zo(r,a)?r:hi(r)&&!hi(a)?"no-referrer":i}default:return n?"no-referrer":i}}function ac(e,t){return ys(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 hi(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 Zx(e,t){if(zo===void 0)return!0;let s=yh(t);if(s==="no metadata"||s.length===0)return!0;let r=Xx(s),i=$x(s,r);for(let o of i){let n=o.algo,a=o.hash,A=zo.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)),ev(A,a))return!0}return!1}var Kx=/(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function yh(e){let t=[],s=!0;for(let r of e.split(" ")){s=!1;let i=Kx.exec(r);if(i===null||i.groups===void 0||i.groups.algo===void 0)continue;let o=i.groups.algo.toLowerCase();Bh.includes(o)&&t.push(i.groups)}return s===!0?"no metadata":t}function Xx(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 $x(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 ev(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 tv(e){}function Zo(e,t){return e.origin===t.origin&&e.origin==="null"||e.protocol===t.protocol&&e.hostname===t.hostname&&e.port===t.port}function sv(){let e,t;return{promise:new Promise((r,i)=>{e=r,t=i}),resolve:e,reject:t}}function rv(e){return e.controller.state==="aborted"}function iv(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function ov(e){return Tx[e.toLowerCase()]??e}function nv(e){let t=JSON.stringify(e);if(t===void 0)throw new TypeError("Value is not JSON serializable");return ys(typeof t=="string"),t}var av=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function xh(e,t,s=0,r=1){class i{#e;#t;#s;constructor(n,a){this.#e=n,
Line truncated
|
||||
`);function Mv(e){for(let t=0;t<e.length;++t)if((e.charCodeAt(t)&-128)!==0)return!1;return!0}function Lv(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 _v(e,t){Xo(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&&$o(e,Nv,o)||o.position===e.length-4&&$o(e,Gv,o))return i;if(e[o.position]!==13||e[o.position+1]!==10)return"failure";o.position+=2;let a=Yv(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",Mv(u)||(u=""),g=new Sv([p],c,{type:u})):g=kv(Buffer.from(p)),Xo(Lh(A)),Xo(typeof g=="string"&&Lh(g)||Dv(g)),i.push(Tv(A,g,c))}}function Yv(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=Er(a=>a!==10&&a!==13&&a!==58,e,t);if(n=dc(n,!0,!0,a=>a===9||a===32),!Rv.test(n.toString())||e[t.position]!==58)return"failure";switch(t.position++,Er(a=>a===32||a===9,e,t),vv(n)){case"content-disposition":{if(s=r=null,!$o(e,Uv,t)||(t.position+=17,s=Oh(e,t),s===null))return"failure";if($o(e,Yh,t)){let a=t.position+Yh.length;if(e[a]===42&&(t.position+=1,a+=1),e[a]!==61||e[a+1]!==34||(t.position+=12,r=Oh(e,t),r===null))return"failure"}break}case"content-type":{let a=Er(A=>A!==10&&A!==13,e,t);a=dc(a,!1,!0,A=>A===9||A===32),i=_h(a);break}case"content-transfer-encoding":{let a=Er(A=>A!==10&&A!==13,e,t);a=dc(a,!1,!0,A=>A===9||A===32),o=_h(a);break}default:Er(a=>a!==10&&a!==13,e,t)}if(e[t.position]!==13&&e[t.position+1]!==10)return"failure";t.position+=2}}function Oh(e,t){Xo(e[t.position-1]===34);let s=Er(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 Er(e,t,s){let r=s.position;for(;r<t.length&&e(t[r]);)++r;return t.subarray(s.position,s.position=r)}function dc(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 $o(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}Jh.exports={multipartFormDataParser:_v,validateBoundary:Lv}});var Qr=B(($2,$h)=>{"use strict";var fi=U(),{ReadableStreamFrom:Ov,isBlobLike:Hh,isReadableStreamLike:Jv,readableStreamClose:Pv,createDeferredPromise:Hv,fullyReadBody:Vv,extractMimeType:qv,utf8DecodeBytes:Wh}=Ne(),{FormData:Vh}=mi(),{kState:fr}=$t(),{webidl:Wv}=he(),{Blob:jv}=require("node:buffer"),Ec=require("node:assert"),{isErrored:jh,isDisturbed:zv}=require("node:stream"),{isArrayBuffer:Zv}=require("node:util/types"),{serializeAMimeType:Kv}=ke(),{multipartFormDataParser:Xv}=Ph(),mc;try{let e=require("node:crypto");mc=t=>e.randomInt(0,t)}catch{mc=e=>Math.floor(Math.random(e))}var en=new TextEncoder;function $v(){}var zh=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,Zh;zh&&(Zh=new FinalizationRegistry(e=>{let t=e.deref();t&&!t.locked&&!zv(t)&&!jh(t)&&t.cancel("Response object has been garbage collected").catch($v)}));function Kh(e,t=!1){let s=null;e instanceof ReadableStream?s=e:Hh(e)?s=e.stream():s=new ReadableStream({async pull(A){let c=typeof i=="string"?en.encode(i):i;c.byteLength&&A.enqueue(c),queueMicrotask(()=>Pv(A))},start(){},type:"bytes"}),Ec(Jv(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(Zv(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(fi.isFormDataLike(e)){let A=`----formdata-undici-0${`${mc(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
|
||||
`),p=[],g=new Uint8Array([13,10]);o=0;let d=!1;for(let[f,h]of e)if(typeof h=="string"){let m=en.encode(c+`; name="${u(l(f))}"\r
|
||||
\r
|
||||
${l(h)}\r
|
||||
`);p.push(m),o+=m.byteLength}else{let m=Xo.encode(`${c}; name="${u(l(f))}"`+(h.name?`; filename="${u(h.name)}"`:"")+`\r
|
||||
`);p.push(m),o+=m.byteLength}else{let m=en.encode(`${c}; name="${u(l(f))}"`+(h.name?`; filename="${u(h.name)}"`:"")+`\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(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
|
||||
`);p.push(m,h,g),typeof h.size=="number"?o+=m.byteLength+h.size+g.byteLength:d=!0}let E=en.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(Hh(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(fi.isDisturbed(e)||e.locked)throw new TypeError("Response body object should not be disturbed or locked");s=e instanceof ReadableStream?e:Ov(e)}if((typeof i=="string"||fi.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(!jh(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 ek(e,t=!1){return e instanceof ReadableStream&&(Ec(!fi.isDisturbed(e),"The body has already been consumed."),Ec(!e.locked,"The stream is locked.")),Kh(e,t)}function tk(e,t){let[s,r]=t.stream.tee();return t.stream=s,{stream:r,length:t.length,source:t.source}}function sk(e){if(e.aborted)throw new DOMException("The operation was aborted.","AbortError")}function rk(e){return{blob(){return mr(this,s=>{let r=qh(this);return r===null?r="":r&&(r=Kv(r)),new jv([s],{type:r})},e)},arrayBuffer(){return mr(this,s=>new Uint8Array(s).buffer,e)},text(){return mr(this,Wh,e)},json(){return mr(this,ok,e)},formData(){return mr(this,s=>{let r=qh(this);if(r!==null)switch(r.essence){case"multipart/form-data":{let i=Xv(s,r);if(i==="failure")throw new TypeError("Failed to parse body as FormData.");let o=new Vh;return o[fr]=i,o}case"application/x-www-form-urlencoded":{let i=new URLSearchParams(s.toString()),o=new Vh;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 mr(this,s=>new Uint8Array(s),e)}}}function ik(e){Object.assign(e.prototype,rk(e))}async function mr(e,t,s){if(Wv.brandCheck(e,s),Xh(e))throw new TypeError("Body is unusable: Body has already been read");sk(e[fr]);let r=Hv(),i=n=>r.reject(n),o=n=>{try{r.resolve(t(n))}catch(a){i(a)}};return e[fr].body==null?(o(Buffer.allocUnsafe(0)),r.promise):(await Vv(e[fr].body,o,i),r.promise)}function Xh(e){let t=e[fr].body;return t!=null&&(t.stream.locked||fi.isDisturbed(t.stream))}function ok(e){return JSON.parse(Wh(e))}function qh(e){let t=e[fr].headersList,s=qv(t);return s==="failure"?null:s}$h.exports={extractBody:Kh,safelyExtractBody:ek,cloneBody:tk,mixinBody:ik,streamRegistry:Zh,hasFinalizationRegistry:zh,bodyUnusable:Xh}});var dd=B((eY,hd)=>{"use strict";var v=require("node:assert"),R=U(),{channels:ed}=nr(),fc=$A(),{RequestContentLengthMismatchError:xs,ResponseContentLengthMismatchError:td,RequestAbortedError:cd,HeadersTimeoutError:nk,HeadersOverflowError:ak,SocketError:Br,InformationalError:Cr,BodyTimeoutError:Ak,HTTPParserError:ck,ResponseExceededMaxSizeError:lk}=_(),{kUrl:ld,kReset:Re,kClient:on,kParser:W,kBlocking:Ci,kRunning:ie,kPending:ud,kSize:sd,kWriting:es,kQueue:rt,kNoRef:Qi,kKeepAliveDefaultTimeout:uk,kHostHeader:pk,kPendingIdx:gk,kRunningIdx:je,kError:Ce,kPipelining:nn,kSocket:ks,kKeepAliveTimeoutValue:An,kMaxHeadersSize:Qc,kKeepAliveMaxTimeout:hk,kKeepAliveTimeoutThreshold:dk,kHeadersTimeout:Ek,kBodyTimeout:mk,kStrictContentLength:Ic,kMaxRequests:rd,kCounter:fk,kMaxResponseSize:Qk,kOnError:id,kResume:Lt,kHTTPContext:pd}=z(),Ge=Zg(),od=Buffer.alloc(0),tn=Buffer[Symbol.species],sn=R.addListener,Bk=R.removeAllListeners,Rs=Symbol("kIdleSocketValidation"),vs=Symbol("kIdleSocketValidationTimeout"),xc=Symbol("kSocketUsed"),Bc;async function Ck(){let e=process.env.JEST_WORKER_ID?sc():void 0,t;try{t=await WebAssembly.compile($g())}catch{t=await WebAssembly.compile(e||sc())}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 tn(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 tn(Qt.buffer,o,i))||0},wasm_on_header_value:(s,r,i)=>{v($.ptr===s);let o=r-Bt+Qt.byteOffset;return $.onHeaderValue(new tn(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 tn(Qt.buffer,o,i))||0},wasm_on_message_complete:s=>(v($.ptr===s),$.onMessageComplete()||0)}})}var Cc=null,wc=Ck();wc.catch();var $=null,Qt=null,rn=0,Bt=null,Ik=0,Bi=1,Ir=2|Bi,an=4|Bi,bc=8|Ik,yc=class{constructor(t,s,{exports:r}){v(Number.isFinite(t[Qc])&&t[Qc]>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[nk],o?E+=`connection: upgrade\r
|
||||
`:E+=e[pk],o?E+=`connection: upgrade\r
|
||||
upgrade: ${o}\r
|
||||
`:e[rn]&&!g[De]?E+=`connection: keep-alive\r
|
||||
`:e[nn]&&!g[Re]?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 Q=0;Q<m.length;Q++)E+=`${h}: ${m[Q]}\r
|
||||
`;else E+=`${h}: ${m}\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
|
||||
`}return ed.sendHeaders.hasSubscribers&&ed.sendHeaders.publish({request:t,headers:E,socket:g}),!A||p===0?ad(d,null,e,t,g,u,E,l):R.isBuffer(A)?ad(d,A,e,t,g,u,E,l):R.isBlobLike(A)?typeof A.stream=="function"?Ad(d,A.stream(),e,t,g,u,E,l):Rk(d,A,e,t,g,u,E,l):R.isStream(A)?kk(d,A,e,t,g,u,E,l):R.isIterable(A)?Ad(d,A,e,t,g,u,E,l):v(!1),!0}function kk(e,t,s,r,i,o,n,a){v(o!==0||s[ie]===0,"stream body cannot be pipelined");let A=!1,c=new cn({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){R.destroy(this,E)}},l=function(){A||t.resume&&t.resume()},p=function(){if(queueMicrotask(()=>{t.removeListener("error",g)}),!A){let d=new cd;queueMicrotask(()=>g(d))}},g=function(d){if(!A){if(A=!0,v(i.destroyed||i[es]&&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")?R.destroy(t,d):R.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 ad(e,t,s,r,i,o,n,a){try{t?R.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
|
||||
`,"latin1"),i.write(t),i.uncork(),r.onBodySent(t),!a&&r.reset!==!1&&(i[Re]=!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 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
|
||||
`,"latin1")),r.onRequestSent(),s[Lt]()}catch(A){e(A)}}async function Rk(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 xs;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 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"),i.write(A),i.uncork(),r.onBodySent(A),r.onRequestSent(),!a&&r.reset!==!1&&(i[Re]=!0),s[Lt]()}catch(A){e(A)}}async function Ad(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 cn({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 cn=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[es]=!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[Ic])throw new xs;process.emitWarning(new xs)}s.cork(),n===0&&(!a&&r.reset!==!1&&(s[Re]=!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===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
|
||||
`,"latin1"),this.bytesWritten+=c;let u=s.write(t);return s.uncork(),r.onBodySent(t),u||s[W].timeout&&s[W].timeoutType===Ir&&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[es]=!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[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
|
||||
`,"latin1"),s!==null&&i!==s){if(r[Ic])throw new xs;process.emitWarning(new xs)}t[W].timeout&&t[W].timeoutType===Ir&&t[W].timeout.refresh&&t[W].timeout.refresh(),r[Lt]()}}destroy(t){let{socket:s,client:r,abort:i}=this;s[es]=!1,t&&(v(r[ie]<=1,"pipeline should only contain this request"),i(t))}};hd.exports=wk});var wd=B((tY,Id)=>{"use strict";var ze=require("node:assert"),{pipeline:Dk}=require("node:stream"),N=U(),{RequestContentLengthMismatchError:vc,RequestAbortedError:Ed,SocketError:Ii,InformationalError:kc}=_(),{kUrl:ln,kReset:pn,kClient:wr,kRunning:gn,kPending:Tk,kQueue:ts,kPendingIdx:Rc,kRunningIdx:it,kError:nt,kSocket:Ae,kStrictContentLength:Fk,kOnError:Dc,kMaxConcurrentStreams:Cd,kHTTP2Session:ot,kResume:ss,kSize:Sk,kHTTPContext:Uk}=z(),_t=Symbol("open streams"),md,fd=!1,un;try{un=require("node:http2")}catch{un={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:Nk,HTTP2_HEADER_METHOD:Gk,HTTP2_HEADER_PATH:Mk,HTTP2_HEADER_SCHEME:Lk,HTTP2_HEADER_CONTENT_LENGTH:_k,HTTP2_HEADER_EXPECT:Yk,HTTP2_HEADER_STATUS:Ok}}=un;function Jk(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 Pk(e,t){e[Ae]=t,fd||(fd=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let s=un.connect(e[ln],{createConnection:()=>t,peerMaxConcurrentStreams:e[Cd]});s[_t]=0,s[wr]=e,s[Ae]=t,N.addListener(s,"error",Vk),N.addListener(s,"frameError",qk),N.addListener(s,"end",Wk),N.addListener(s,"goaway",jk),N.addListener(s,"close",function(){let{[wr]:i}=this,{[Ae]:o}=i,n=this[Ae][nt]||this[nt]||new Ii("closed",N.getSocketInfo(o));if(i[ot]=null,i.destroyed){ze(i[Tk]===0);let a=i[ts].splice(i[it]);for(let A=0;A<a.length;A++){let c=a[A];N.errorRequest(i,c,n)}}}),s.unref(),e[ot]=s,t[ot]=s,N.addListener(t,"error",function(i){ze(i.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[nt]=i,this[wr][Dc](i)}),N.addListener(t,"end",function(){N.destroy(this,new Ii("other side closed",N.getSocketInfo(this)))}),N.addListener(t,"close",function(){let i=this[nt]||new Ii("closed",N.getSocketInfo(this));e[Ae]=null,this[ot]!=null&&this[ot].destroy(i),e[Rc]=e[it],ze(e[gn]===0),e.emit("disconnect",e[ln],[e],i),e[ss]()});let r=!1;return t.on("close",()=>{r=!0}),{version:"h2",defaultPipelining:1/0,write(...i){return Zk(e,...i)},resume(){Hk(e)},destroy(i,o){r?queueMicrotask(o):t.destroy(i).on("close",o)},get destroyed(){return t.destroyed},busy(){return!1}}}function Hk(e){let t=e[Ae];t?.destroyed===!1&&(e[Sk]===0&&e[Cd]===0?(t.unref(),e[ot].unref()):(t.ref(),e[ot].ref()))}function Vk(e){ze(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[Ae][nt]=e,this[wr][Dc](e)}function qk(e,t,s){if(s===0){let r=new kc(`HTTP/2: "frameError" received - type ${e}, code ${t}`);this[Ae][nt]=r,this[wr][Dc](r)}}function Wk(){let e=new Ii("other side closed",N.getSocketInfo(this[Ae]));this.destroy(e),N.destroy(this[Ae],e)}function jk(e){let t=this[nt]||new Ii(`HTTP/2: "GOAWAY" frame received with code ${e}`,N.getSocketInfo(this)),s=this[wr];if(s[Ae]=null,s[Uk]=null,this[ot]!=null&&(this[ot].destroy(t),this[ot]=null),N.destroy(this[Ae],t),s[it]<s[ts].length){let r=s[ts][s[it]];s[ts][s[it]++]=null,N.errorRequest(s,r,t),s[Rc]=s[it]}ze(s[gn]===0),s.emit("disconnect",s[ln],[s],t),s[ss]()}function zk(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function Zk(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 N.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],M=c[C+1];if(Array.isArray(M))for(let O=0;O<M.length;O++)l[b]?l[b]+=`,${M[O]}`:l[b]=M[O];else l[b]=M}let p,{hostname:g,port:d}=e[ln];l[Nk]=o||`${g}${d?`:${d}`:""}`,l[Gk]=r;let E=C=>{t.aborted||t.completed||(C=C||new Ed,N.errorRequest(e,t,C),p!=null&&N.destroy(p,C),N.destroy(u,C),e[ts][e[it]++]=null,e[ss]())};try{t.onConnect(E)}catch(C){N.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[_t],e[ts][e[it]++]=null):p.once("ready",()=>{t.onUpgrade(null,null,p),++s[_t],e[ts][e[it]++]=null}),p.once("close",()=>{s[_t]-=1,s[_t]===0&&s.unref()}),!0;l[Mk]=i,l[Lk]="https";let f=r==="PUT"||r==="POST"||r==="PATCH";u&&typeof u.read=="function"&&u.read(0);let h=N.bodyLength(u);if(N.isFormDataLike(u)){md??=Qr().extractBody;let[C,b]=md(u);l["content-type"]=b,u=C.stream,h=C.length}if(h==null&&(h=t.contentLength),(h===0||!f)&&(h=null),zk(r)&&h>0&&t.contentLength!=null&&t.contentLength!==h){if(e[Fk])return N.errorRequest(e,t,new vc),!1;process.emitWarning(new vc)}h!=null&&(ze(u,"no body must not have content length"),l[_k]=`${h}`),s.ref();let m=r==="GET"||r==="HEAD"||u===null;return a?(l[Yk]="100-continue",p=s.request(l,{endStream:m,signal:A}),p.once("continue",Q)):(p=s.request(l,{endStream:m,signal:A}),Q()),++s[_t],p.once("r
Line truncated
|
||||
`,this[I0]=A??3e5,this[C0]=i??3e5,this[w0]=m??!0,this[b0]=C,this[Uc]=M,this[is]=null,this[R0]=ge>-1?ge:-1,this[T0]=Zt??100,this[te]=null,this[at]=[],this[Ot]=0,this[At]=0,this[xi]=rr=>Gc(this,rr),this[D0]=rr=>Nd(this,rr)}get pipelining(){return this[mn]}set pipelining(t){this[mn]=t,this[xi](!0)}get[Ri](){return this[at].length-this[At]}get[ki](){return this[At]-this[Ot]}get[vi](){return this[at].length-this[Ot]}get[h0](){return!!this[te]&&!this[yr]&&!this[te].destroyed}get[Sc](){return!!(this[te]?.busy(null)||this[vi]>=(Ud(this)||1)||this[Ri]>0)}[g0](t){Gd(this),this.once("connect",t)}[k0](t,s){let r=t.origin||this[It].origin,i=new a0(r,t,s);return this[at].push(i),this[Ts]||(Ds.bodyLength(i.body)==null&&Ds.isIterable(i.body)?(this[Ts]=1,queueMicrotask(()=>Gc(this))):this[xi](!0)),this[Ts]&&this[os]!==2&&this[Sc]&&(this[os]=2),this[os]<2}async[x0](){return new Promise(t=>{this[vi]?this[is]=t:t(null)})}async[v0](t){return new Promise(s=>{let r=this[at].splice(this[At]);for(let o=0;o<r.length;o++){let n=r[o];Ds.errorRequest(this,n,t)}let i=()=>{this[is]&&(this[is](),this[is]=null),s(null)};this[te]?(this[te].destroy(t,i),this[te]=null):queueMicrotask(i),this[xi]()})}},U0=En();function Nd(e,t){if(e[ki]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){Yt(e[At]===e[Ot]);let s=e[at].splice(e[Ot]);for(let r=0;r<s.length;r++){let i=s[r];Ds.errorRequest(e,i,t)}Yt(e[vi]===0)}}async function Gd(e){Yt(!e[yr]),Yt(!e[te]);let{host:t,hostname:s,protocol:r,port:i}=e[It];if(s[0]==="["){let o=s.indexOf("]");Yt(o!==-1);let n=s.substring(1,o);Yt(Sd.isIP(n)),s=n}e[yr]=!0,br.beforeConnect.hasSubscribers&&br.beforeConnect.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[rs],localAddress:e[yi]},connector:e[bi]});try{let o=await new Promise((n,a)=>{e[bi]({host:t,hostname:s,protocol:r,port:i,servername:e[rs],localAddress:e[yi]},(A,c)=>{A?a(A):n(c)})});if(e.destroyed){Ds.destroy(o.on("error",Td),new l0);return}Yt(o);try{e[te]=o.alpnProtocol==="h2"?await S0(e,o):await F0(e,o)}catch(n){throw o.destroy().on("error",Td),n}e[yr]=!1,o[y0]=0,o[Uc]=e[Uc],o[p0]=e,o[E0]=null,br.connected.hasSubscribers&&br.connected.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[rs],localAddress:e[yi]},connector:e[bi],socket:o}),e.emit("connect",e[It],[e])}catch(o){if(e.destroyed)return;if(e[yr]=!1,br.connectError.hasSubscribers&&br.connectError.publish({connectParams:{host:t,hostname:s,protocol:r,port:i,version:e[te]?.version,servername:e[rs],localAddress:e[yi]},connector:e[bi],error:o}),o.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(Yt(e[ki]===0);e[Ri]>0&&e[at][e[At]].servername===e[rs];){let n=e[at][e[At]++];Ds.errorRequest(e,n,o)}else Nd(e,o);e.emit("connectionError",e[It],[e],o)}e[xi]()}function Fd(e){e[os]=0,e.emit("drain",e[It],[e])}function Gc(e,t){e[Ts]!==2&&(e[Ts]=2,N0(e,t),e[Ts]=0,e[Ot]>256&&(e[at].splice(0,e[Ot]),e[At]-=e[Ot],e[Ot]=0))}function N0(e,t){for(;;){if(e.destroyed){Yt(e[Ri]===0);return}if(e[is]&&!e[vi]){e[is](),e[is]=null;return}if(e[te]&&e[te].resume(),e[Sc])e[os]=2;else if(e[os]===2){t?(e[os]=1,queueMicrotask(()=>Fd(e))):Fd(e);continue}if(e[Ri]===0||e[ki]>=(Ud(e)||1))return;let s=e[at][e[At]];if(e[It].protocol==="https:"&&e[rs]!==s.servername){if(e[ki]>0)return;e[rs]=s.servername,e[te]?.destroy(new c0("servername changed"),()=>{e[te]=null,Gc(e)})}if(e[yr])return;if(!e[te]){Gd(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)}}Md.exports=Nc});var Mc=B((nY,Ld)=>{"use strict";var fn=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)}};Ld.exports=class{constructor(){this.head=this.tail=new fn}isEmpty(){return this.head.isEmpty()}push(t){this.head.isFull()&&(this.head=this.head.next=new fn),this.head.push(t)}shift(){let t=this.tail,s=t.shift();return t.isEmpty()&&t.next!==null&&(this.tail=t.next),s}}});var Yd=B((aY,_d)=>{var{kFree:G0,kConnected:M0,kPending:L0,kQueued:_0,kRunning:Y0,kSize:O0}=z(),Fs=Symbol("pool"),Lc=class{constructor(t){this[Fs]=t}get connected(){return this[Fs][M0]}get free(){return this[Fs][G0]}get pending(){return this[Fs][L0]}get queued(){return this[Fs][_0]}get running(){return this[Fs][Y0]}get size(){return this[Fs][O0]}};_d.exports=Lc});var Hc=B((AY,Zd)=>{"use strict";var J0=lr(),P0=Mc(),{kConnected:_c,kSize:Od,kRunning:Jd,kPending:Pd,kQueued:Di,kBusy:H0,kFree:V0,kUrl:q0,kClose:W0,kDestroy:j0,kDispatch:z0}=z(),Z0=Yd(),De=Symbol("clients"),Ie=Symbol("needDrain"),Ti=Symbol("queue"),Yc=Symbol("closed resolve"),Oc=Symbol("onDrain"),Hd=Symbol("onConnect"),Vd=Symbol("onDisconnect"),qd=Symbol("onConnectionError"),Jc=Symbol("get dispatcher"),jd=Symbol("add client"),zd=Sym
Line truncated
|
||||
${r.count} ${r.noun} ${r.is} pending:
|
||||
|
||||
${t.format(s)}
|
||||
`.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
|
||||
`.trim())}};sf.exports=Hl});var Gn=B((GY,Af)=>{"use strict";var of=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:IT}=_(),wT=kr();af()===void 0&&nf(new wT);function nf(e){if(!e||typeof e.dispatch!="function")throw new IT("Argument agent must implement Agent");Object.defineProperty(globalThis,of,{value:e,writable:!0,enumerable:!1,configurable:!1})}function af(){return globalThis[of]}Af.exports={setGlobalDispatcher:nf,getGlobalDispatcher:af}});var Mn=B((LY,cf)=>{"use strict";cf.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 uf=B((_Y,lf)=>{"use strict";var bT=dn();lf.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 bT(s,n,i,o);return s(a,A)}}});var gf=B((YY,pf)=>{"use strict";var yT=xn();pf.exports=e=>t=>function(r,i){return t(r,new yT({...r,retryOptions:{...e,...r.retryOptions}},{handler:i,dispatch:t}))}});var df=B((OY,hf)=>{"use strict";var xT=U(),{InvalidArgumentError:vT,RequestAbortedError:kT}=_(),RT=Mn(),Vl=class extends RT{#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 vT("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=xT.parseHeaders(s)["content-length"];if(n!=null&&n>this.#e)throw new kT(`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 DT({maxSize:e}={maxSize:1024*1024}){return t=>function(r,i){let{dumpMaxSize:o=e}=r,n=new Vl({maxSize:o},i);return t(r,n)}}hf.exports=DT});var ff=B((JY,mf)=>{"use strict";var{isIP:TT}=require("node:net"),{lookup:FT}=require("node:dns"),ST=Mn(),{InvalidArgumentError:Lr,InformationalError:UT}=_(),Ef=Math.pow(2,31)-1,ql=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 UT("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){FT(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===Ef?(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===Ef?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 Wl(this,t,s)}},Wl=class extends ST{#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":KB(o)&&(s[i]=o);break;case"id":XB(o)&&(s[i]=o);break;case"event":o.length>0&&(s[i]=o);break}}processEvent(t){t.retry&&KB(t.retry)&&(this.state.reconnectionTime=parseInt(t.retry,10)),t.id&&XB(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}}};$B.exports={EventSourceStream:Uu}});var AC=B((QO,aC)=>{"use strict";var{pipeline:JN}=require("node:stream"),{fetching:PN}=Hi(),{makeRequest:HN}=Or(),{webidl:qt}=he(),{EventSourceStream:VN}=eC(),{parseMIMEType:qN}=ke(),{createFastMessageEvent:WN}=Wr(),{isNetworkError:tC}=Ji(),{delay:jN}=Fu(),{kEnumerableProperty:Ws}=U(),{environmentSettingsObject:sC}=Ne(),rC=!1,iC=3e3,io=0,oC=1,oo=2,zN="anonymous",ZN="use-credentials",Xr=class e extends EventTarget{#e={open:null,error:null,message:null};#t=null;#s=!1;#r=io;#i=null;#o=null;#l;#A;constructor(t,s={}){super(),qt.util.markAsUncloneable(this);let r="EventSource constructor";qt.argumentLengthCheck(arguments,1,r),rC||(rC=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),t=qt.converters.USVString(t,r,"url"),s=qt.converters.EventSourceInitDict(s,r,"eventSourceInitDict"),this.#l=s.dispatcher,this.#A={lastEventId:"",reconnectionTime:iC};let i=sC,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=zN;s.withCredentials&&(n=ZN,this.#s=!0);let a={redirect:"follow",keepalive:!0,mode:"cors",credentials:n==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};a.client=sC.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=HN(a),this.#c()}get readyState(){return this.#r}get url(){return this.#t}get withCredentials(){return this.#s}#c(){if(this.#r===oo)return;this.#r=io;let t={request:this.#i,dispatcher:this.#l},s=r=>{tC(r)&&(this.dispatchEvent(new Event("error")),this.close()),this.#u()};t.processResponseEndOfBody=s,t.processResponse=r=>{if(tC(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?qN(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=oC,this.dispatchEvent(new Event("open")),this.#A.origin=r.urlList[r.urlList.length-1].origin;let a=new VN({eventSourceSettings:this.#A,push:A=>{this.dispatchEvent(WN(A.type,A.options))}});JN(r.body.stream,a,A=>{A?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#o=PN(t)}async#u(){this.#r!==oo&&(this.#r=io,this.dispatchEvent(new Event("error")),await jN(this.#A.reconnectionTime),this.#r===io&&(this.#A.lastEventId.length&&this.#i.headersList.set("last-event-id",this.#A.lastEventId,!0),this.#c()))}close(){qt.brandCheck(this,e),this.#r!==oo&&(this.#r=oo,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}},nC={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:io,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:oC,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:oo,writable:!1}};Object.defineProperties(Xr,nC);Object.defineProperties(Xr.prototype,nC);Object.defineProperties(Xr.prototype,{close:Ws,onerror:Ws,onmessage:Ws,onopen:Ws,readyState:Ws,url:Ws,withCredentials:Ws});qt.converters.EventSourceInitDict=qt.dictionaryConverter([{key:"withCredentials",converter:qt.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:qt.converters.any}]);aC.exports={EventSource:Xr,defaultReconnectionTime:iC}});var ya=B((BO,T)=>{"use strict";var KN=xr(),cC=Ai(),XN=vr(),$N=oE(),eG=kr(),tG=rl(),sG=RE(),rG=NE(),lC=_(),ba=U(),{InvalidArgumentError:wa}=lC,$r=Cm(),iG=li(),oG=Ll(),nG=rf(),aG=Ol(),AG=yl(),cG=xn(),{getGlobalDispatcher:uC,setGlobalDispatcher:lG}=Gn(),uG=Mn(),pG=dn(),gG=En();Object.assign(cC.prototype,$r);T.exports.Dispatcher=cC;T.exports.Client=KN;T.exports.Pool=XN;T.exports.BalancedPool=$N;T.exports.Agent=eG;T.exports.ProxyAgent=tG;T.exports.EnvHttpProxyAgent=sG;T.exports.RetryAgent=rG;T.exports.RetryHandler=cG;T.exports.DecoratorHandler=uG;T.exports.Redire
Line truncated
|
||||
`+e.errors.map(t=>` - ${t.message}`).join(`
|
||||
`)}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
|
||||
`)}var PM=class extends Error{constructor(e,t,s){super(JM(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},HM=["method","baseUrl","url","headers","request","query","mediaType","operationName"],VM=["query","method","url"],sI=/\/api\/v3\/?$/;function qM(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(VM.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)=>HM.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 sI.test(o)&&(i.url=o.replace(sI,"/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 PM(i,a,n.data)}return n.data.data})}function zu(e,t){let s=e.defaults(t);return Object.assign((i,o)=>qM(s,i,o),{defaults:zu.bind(null,s),endpoint:s.endpoint})}var SJ=zu(po,{headers:{"user-agent":`octokit-graphql.js/${OM} ${Es()}`},method:"POST",url:"/graphql"});function rI(e){return zu(e,{method:"POST",url:"/graphql"})}var Zu="(?:[a-zA-Z0-9_-]+)",iI="\\.",oI=new RegExp(`^${Zu}${iI}${Zu}${iI}${Zu}$`),WM=oI.test.bind(oI);async function jM(e){let t=WM(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 zM(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function ZM(e,t,s,r){let i=t.endpoint.merge(s,r);return i.headers.authorization=zM(e),t(i)}var nI=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:ZM.bind(null,t)})};var Ku="7.0.6";var aI=()=>{},KM=console.warn.bind(console),XM=console.error.bind(console);function $M(e={}){return typeof e.debug!="function"&&(e.debug=aI),typeof e.info!="function"&&(e.info=aI),typeof e.warn!="function"&&(e.warn=KM),typeof e.error!="function"&&(e.error=XM),e}var AI=`octokit-core.js/${Ku} ${Es()}`,_a=class{static VERSION=Ku;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 NC.Collection,r={baseUrl:po.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} ${AI}`:AI,t.baseUrl&&(r.baseUrl=t.baseUrl),t.previews&&(r.mediaType.previews=t.previews),t.timeZone&&(r.headers["time-zone"]=t.timeZone),this.request=po.defaults(r),this.graphql=rI(this.request).defaults(r),this.log=$M(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=nI(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 Xu="17.0.0";var eL={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 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
|
||||
>>> 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 aw(this.pattern,this.options)}parse(e){Za(e);let t=this.options;if(e==="**")return ye;if(e==="")return"";let s,r=null;(s=e.match($L))?r=t.dot?t_:e_:(s=e.match(PL))?r=(t.nocase?t.dot?WL:qL:t.dot?VL:HL)(s[1]):(s=e.match(s_))?r=(t.nocase?t.dot?i_:r_:t.dot?o_:n_)(s):(s=e.match(jL))?r=t.dot?ZL:zL:(s=e.match(KL))&&(r=XL);let i=sw.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?c_:t.dot?l_:u_,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"?E_(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=sw;xe.Minimatch=Qs;xe.escape=rw;xe.unescape=oi;var m_=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,cw=new Set,gp=typeof process=="object"&&process?process:{},lw=(e,t,s,r)=>{typeof gp.emitWarning=="function"?gp.emitWarning(e,t,s,r):console.error(`[${s}] ${t}: ${e}`)},Ka=globalThis.AbortController,UI=globalThis.AbortSignal;if(typeof Ka>"u"){UI=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(s,r){this._onabort.push(r)}},Ka=class{constructor(){t()}signal=new UI;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=gp.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{e&&(e=!1,lw("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 f_=e=>!cw.has(e),fs=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),uw=e=>fs(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?ja:null:null,ja=class extends Array{constructor(e){super(e),this.fill(0)}},Q_=class Co{heap;length;static#e=!1;static create(t){let s=uw(t);if(!s)return[];Co.#e=!0;let r=new Co(t,s);return Co.#e=!1,r}constructor(t,s){if(!Co.#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]}},$a=class pw{#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.#D(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: ${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}
|
||||
${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(Tt(i)!==404)throw i;try{await this.github.request("DELETE /repos/{owner}/{repo}/releases/{release_id}/assets/{asset_id}",t)}catch(o){throw new AggregateError([i,o],`Failed to delete release asset ${t.asset_id}. GitHub endpoint: ${Cs(i)}; release-scoped endpoint: ${Cs(o)}`)}}}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})}},A2=e=>({name:(0,jw.basename)(e),mime:c2(e),size:(0,Vw.statSync)(e).size}),c2=e=>(0,Ww.lookup)(e)||"application/octet-stream",Ip=(e,t)=>t.name===e||t.name===Pw(e)||t.label===e,l2=e=>{let t=Tt(e),s=i2(e),r=Zw(e),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"))},u2=e=>{let t=Tt(e),s=zw(e)?.message??Zw(e);return t===422&&/immutable release/i.test(String(s))},p2=(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.`,eb=async(e,t,s,r,i,o)=>{let[n,a]=e.github_repository.split("/"),{name:A,mime:c,size:u}=A2(r),l=i.find(h=>Ip(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(M=>setTimeout(M,1e3))}},d=async()=>{let h=await(0,qw.open)(r);try{return await t.uploadReleaseAsset({url:p.toString(),size:u,mime:c,token:e.github_token,data:o2(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(Tt(Q)===404&&o!==void 0)try{let b=await g(M=>M.id===h.id||M.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 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
|
||||
${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=Tt(h);if(u2(h))throw new Error(p2(A,e.input_prerelease));if(o!==void 0&&l2(h))try{let Q=await g(C=>Ip(A,C));if(Q)return console.warn(`error updating release asset metadata for ${A}: ${h}. Matching asset is present after refresh; continuing...`),Q}catch(Q){console.warn(`error refreshing release assets after metadata update failure: ${Q}`)}if(e.input_overwrite_files!==!1&&m===422&&Xw(h,"already_exists")&&o!==void 0){console.log(`\u26A0\uFE0F Asset ${A} already exists (race condition), refreshing assets and retrying once...`);let C=(await t.listReleaseAssets({owner:n,repo:a,release_id:o})).find(b=>Ip(A,b));if(C)return await t.deleteReleaseAsset({owner:n,repo:a,release_id:o,asset_id:C.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=Cp(e.input_tag_name)||(xo(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 tb(t,r,i,o,s)}catch(u){if(Tt(u)===404){let l=a2(r,i,u);throw console.log(`\u26A0\uFE0F ${l}`),new wp(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 Hw(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=Bp(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 iA)throw u;if(Tt(u)!==404)throw console.log(`\u26A0\uFE0F Unexpected error fetching GitHub release for tag ${e.github_ref}: ${u}`),u;return await Hw(o,e,t,r,i,n,a,s,A)}},yp=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&&E2(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)`),yp(e,t,s,r,i-1)}},xp=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)`),xp(e,t,s,r-1)}};async function tb(e,t,s,r,i=1){try{let{data:n}=await e.getReleaseByTag({owner:t,repo:s,tag:r});return n}catch(n){if(Tt(n)!==404)throw n}if(i<=0)return;let o=Math.max(1,i);for(let n=0;n<o;n+=1){let a=await ib(e,t,s,r),A=ob(a,void 0);if(A)return A;n<o-1&&await rb(sb)}}var sb=1e3,g2=2;async function rb(e){await new Promise(t=>setTimeout(t,e))}async function ib(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>=g2)break;return i}function ob(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 h2(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 d2(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 tb(e,t,s,r,0)}catch(l){console.warn(`error reloading release for tag ${r}: ${l}`)}let c=[];try{c=await ib(e,t,s,r)}catch(l){console.warn(`error listing recent releases for tag ${r}: ${l}`)}let u=ob(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 h2(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 rb(sb))}return console.log(`\u26A0\uFE0F Continuing with newly created release ${i.id} because tag ${r} is still not discoverable`),i}async function Hw(e,t,s,r,i,o,n,a,A){let c=e,u=t.input_name||e,l=Bp(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 d2(s,r,i,c,h.data,a);return{release:m,created:m.id===h.data.id}}catch(h){let m=Tt(h);switch(console.log(`\u26A0\uFE0F GitHub release failed with status: ${m}`),console.log(Cs(h)),m){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=n2(r,i,o,h);throw console.log(`Skip retry \u2014 ${Q}`),new iA(Q,h);case 422:if(Xw(h,"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 E2(e){return Tt(e)!==422?!1:Kw(e).some(t=>{let s=Dt(t);return s?.field==="pre_receive"&&typeof s.message=="string"&&s.message.includes(
Line truncated
|
||||
/*! Bundled license information:
|
||||
|
||||
undici/lib/web/fetch/body.js:
|
||||
|
||||
+69
-39
@@ -9,6 +9,43 @@ type GitHub = InstanceType<typeof GitHub>;
|
||||
|
||||
type UploadChunk = ArrayBuffer | Uint8Array<ArrayBufferLike>;
|
||||
type UploadBody = ReadableStream<Uint8Array<ArrayBufferLike>>;
|
||||
type UnknownRecord = Record<string, unknown>;
|
||||
|
||||
const asRecord = (value: unknown): UnknownRecord | undefined =>
|
||||
typeof value === 'object' && value !== null ? (value as UnknownRecord) : undefined;
|
||||
|
||||
const getErrorStatus = (error: unknown): number | undefined => {
|
||||
const errorRecord = asRecord(error);
|
||||
if (typeof errorRecord?.status === 'number') {
|
||||
return errorRecord.status;
|
||||
}
|
||||
|
||||
const response = asRecord(errorRecord?.response);
|
||||
return typeof response?.status === 'number' ? response.status : undefined;
|
||||
};
|
||||
|
||||
const getResponseData = (error: unknown): UnknownRecord | undefined => {
|
||||
const response = asRecord(asRecord(error)?.response);
|
||||
return asRecord(response?.data);
|
||||
};
|
||||
|
||||
const getErrorMessage = (error: unknown): string | undefined => {
|
||||
const message = asRecord(error)?.message;
|
||||
return typeof message === 'string' ? message : undefined;
|
||||
};
|
||||
|
||||
const getRequestUrl = (error: unknown): string | undefined => {
|
||||
const request = asRecord(asRecord(error)?.request);
|
||||
return typeof request?.url === 'string' ? request.url : undefined;
|
||||
};
|
||||
|
||||
const getValidationErrors = (error: unknown): unknown[] => {
|
||||
const errors = getResponseData(error)?.errors;
|
||||
return Array.isArray(errors) ? errors : [];
|
||||
};
|
||||
|
||||
const hasValidationErrorCode = (error: unknown, code: string): boolean =>
|
||||
asRecord(getValidationErrors(error)[0])?.code === code;
|
||||
|
||||
const fileUploadStream = (fileHandle: FileHandle): UploadBody => {
|
||||
const source = fileHandle.readableWebStream() as ReadableStream<UploadChunk>;
|
||||
@@ -278,10 +315,7 @@ export class GitHubReleaser implements Releaser {
|
||||
try {
|
||||
await this.github.rest.repos.deleteReleaseAsset(githubParams);
|
||||
} catch (error: unknown) {
|
||||
const status =
|
||||
(error as { status?: number; response?: { status?: number } })?.status ??
|
||||
(error as { response?: { status?: number } })?.response?.status;
|
||||
if (status !== 404) {
|
||||
if (getErrorStatus(error) !== 404) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
@@ -352,10 +386,10 @@ const releaseAssetMatchesName = (
|
||||
asset: { name: string; label?: string | null },
|
||||
): boolean => asset.name === name || asset.name === alignAssetName(name) || asset.label === name;
|
||||
|
||||
const isReleaseAssetUpdateNotFound = (error: any): boolean => {
|
||||
const errorStatus = error?.status ?? error?.response?.status;
|
||||
const requestUrl = error?.request?.url;
|
||||
const errorMessage = error?.message;
|
||||
const isReleaseAssetUpdateNotFound = (error: unknown): boolean => {
|
||||
const errorStatus = getErrorStatus(error);
|
||||
const requestUrl = getRequestUrl(error);
|
||||
const message = getErrorMessage(error);
|
||||
const isReleaseAssetRequest =
|
||||
typeof requestUrl === 'string' &&
|
||||
(/\/releases\/assets\//.test(requestUrl) || /\/releases\/\d+\/assets(?:\?|$)/.test(requestUrl));
|
||||
@@ -363,15 +397,15 @@ const isReleaseAssetUpdateNotFound = (error: any): boolean => {
|
||||
return (
|
||||
errorStatus === 404 &&
|
||||
(isReleaseAssetRequest ||
|
||||
(typeof errorMessage === 'string' && errorMessage.includes('update-a-release-asset')))
|
||||
(typeof message === 'string' && message.includes('update-a-release-asset')))
|
||||
);
|
||||
};
|
||||
|
||||
const isImmutableReleaseAssetUploadFailure = (error: any): boolean => {
|
||||
const errorStatus = error?.status ?? error?.response?.status;
|
||||
const errorMessage = error?.response?.data?.message ?? error?.message;
|
||||
const isImmutableReleaseAssetUploadFailure = (error: unknown): boolean => {
|
||||
const errorStatus = getErrorStatus(error);
|
||||
const message = getResponseData(error)?.message ?? getErrorMessage(error);
|
||||
|
||||
return errorStatus === 422 && /immutable release/i.test(String(errorMessage));
|
||||
return errorStatus === 422 && /immutable release/i.test(String(message));
|
||||
};
|
||||
|
||||
const immutableReleaseAssetUploadMessage = (
|
||||
@@ -480,8 +514,8 @@ export const upload = async (
|
||||
|
||||
try {
|
||||
return await updateAssetLabel(uploadedAsset.id);
|
||||
} catch (error: any) {
|
||||
const errorStatus = error?.status ?? error?.response?.status;
|
||||
} catch (error: unknown) {
|
||||
const errorStatus = getErrorStatus(error);
|
||||
|
||||
if (errorStatus === 404 && releaseId !== undefined) {
|
||||
try {
|
||||
@@ -518,9 +552,8 @@ export const upload = async (
|
||||
|
||||
try {
|
||||
return await handleUploadedAsset(await uploadAsset());
|
||||
} catch (error: any) {
|
||||
const errorStatus = error?.status ?? error?.response?.status;
|
||||
const errorData = error?.response?.data;
|
||||
} catch (error: unknown) {
|
||||
const errorStatus = getErrorStatus(error);
|
||||
|
||||
if (isImmutableReleaseAssetUploadFailure(error)) {
|
||||
throw new Error(immutableReleaseAssetUploadMessage(name, config.input_prerelease));
|
||||
@@ -548,7 +581,7 @@ export const upload = async (
|
||||
if (
|
||||
config.input_overwrite_files !== false &&
|
||||
errorStatus === 422 &&
|
||||
errorData?.errors?.[0]?.code === 'already_exists' &&
|
||||
hasValidationErrorCode(error, 'already_exists') &&
|
||||
releaseId !== undefined
|
||||
) {
|
||||
console.log(
|
||||
@@ -603,7 +636,7 @@ export const release = async (
|
||||
try {
|
||||
_release = await findTagFromReleases(releaser, owner, repo, tag, maxRetries);
|
||||
} catch (error) {
|
||||
if (error.status === 404) {
|
||||
if (getErrorStatus(error) === 404) {
|
||||
const diagnostic = releaseLookup404Message(owner, repo, error);
|
||||
console.log(`⚠️ ${diagnostic}`);
|
||||
throw new ReleaseAccessError(diagnostic, error);
|
||||
@@ -689,7 +722,7 @@ export const release = async (
|
||||
if (error instanceof ReleaseCreationError) {
|
||||
throw error;
|
||||
}
|
||||
if (error.status !== 404) {
|
||||
if (getErrorStatus(error) !== 404) {
|
||||
console.log(
|
||||
`⚠️ Unexpected error fetching GitHub release for tag ${config.github_ref}: ${error}`,
|
||||
);
|
||||
@@ -840,7 +873,7 @@ export async function findTagFromReleases(
|
||||
const { data: release } = await releaser.getReleaseByTag({ owner, repo, tag });
|
||||
return release;
|
||||
} catch (error) {
|
||||
if (error.status !== 404) {
|
||||
if (getErrorStatus(error) !== 404) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@@ -1058,15 +1091,12 @@ async function createRelease(
|
||||
created: canonicalRelease.id === createdRelease.data.id,
|
||||
};
|
||||
} catch (error: unknown) {
|
||||
const githubError = error as {
|
||||
status?: number;
|
||||
response?: { data?: { errors?: Array<{ code?: string }> } };
|
||||
};
|
||||
const errorStatus = getErrorStatus(error);
|
||||
// presume a race with competing matrix runs
|
||||
console.log(`⚠️ GitHub release failed with status: ${githubError.status}`);
|
||||
console.log(`⚠️ GitHub release failed with status: ${errorStatus}`);
|
||||
console.log(errorMessage(error));
|
||||
|
||||
switch (githubError.status) {
|
||||
switch (errorStatus) {
|
||||
case 403:
|
||||
console.log(
|
||||
'Skip retry — your GitHub token/PAT does not have the required permission to create a release',
|
||||
@@ -1080,8 +1110,7 @@ async function createRelease(
|
||||
|
||||
case 422:
|
||||
// Check if this is a race condition with "already_exists" error
|
||||
const errorData = githubError.response?.data;
|
||||
if (errorData?.errors?.[0]?.code === 'already_exists') {
|
||||
if (hasValidationErrorCode(error, 'already_exists')) {
|
||||
console.log(
|
||||
'⚠️ Release already exists (race condition detected), retrying to find and update existing release...',
|
||||
);
|
||||
@@ -1098,16 +1127,17 @@ async function createRelease(
|
||||
}
|
||||
}
|
||||
|
||||
function isTagCreationBlockedError(error: any): boolean {
|
||||
const errors = error?.response?.data?.errors;
|
||||
if (!Array.isArray(errors) || error?.status !== 422) {
|
||||
function isTagCreationBlockedError(error: unknown): boolean {
|
||||
if (getErrorStatus(error) !== 422) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return errors.some(
|
||||
({ field, message }: { field?: string; message?: string }) =>
|
||||
field === 'pre_receive' &&
|
||||
typeof message === 'string' &&
|
||||
message.includes('creations being restricted'),
|
||||
);
|
||||
return getValidationErrors(error).some((validationError) => {
|
||||
const errorRecord = asRecord(validationError);
|
||||
return (
|
||||
errorRecord?.field === 'pre_receive' &&
|
||||
typeof errorRecord.message === 'string' &&
|
||||
errorRecord.message.includes('creations being restricted')
|
||||
);
|
||||
});
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"useUnknownInCatchVariables": false,
|
||||
"useUnknownInCatchVariables": true,
|
||||
/* Basic Options */
|
||||
// "incremental": true, /* Enable incremental compilation */
|
||||
"target": "es2022",
|
||||
|
||||
+4
-4
@@ -7,10 +7,10 @@ export default defineConfig({
|
||||
reporter: ['text', 'json-summary', 'lcov'],
|
||||
include: ['src/**/*.ts'],
|
||||
thresholds: {
|
||||
statements: 88,
|
||||
branches: 83,
|
||||
functions: 86,
|
||||
lines: 88,
|
||||
statements: 94,
|
||||
branches: 90,
|
||||
functions: 95,
|
||||
lines: 94,
|
||||
},
|
||||
},
|
||||
include: ['__tests__/**/*.ts'],
|
||||
|
||||
Reference in new issue
Block a user