diff --git a/__tests__/__outputs__/dart-json.md b/__tests__/__outputs__/dart-json.md
index 9805d20..2b7ec09 100644
--- a/__tests__/__outputs__/dart-json.md
+++ b/__tests__/__outputs__/dart-json.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/dart-json.json|1 ✅|4 ❌|1 ⚪|4s|
+|[fixtures/dart-json.json](#user-content-r0)|1 ✅|4 ❌|1 ⚪|4s|
## ❌ fixtures/dart-json.json
**6** tests were completed in **4s** with **1** passed, **4** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/dotnet-nunit.md b/__tests__/__outputs__/dotnet-nunit.md
index e33c66d..a0985f5 100644
--- a/__tests__/__outputs__/dotnet-nunit.md
+++ b/__tests__/__outputs__/dotnet-nunit.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/dotnet-nunit.xml|3 ✅|5 ❌|1 ⚪|230ms|
+|[fixtures/dotnet-nunit.xml](#user-content-r0)|3 ✅|5 ❌|1 ⚪|230ms|
## ❌ fixtures/dotnet-nunit.xml
**9** tests were completed in **230ms** with **3** passed, **5** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/dotnet-trx.md b/__tests__/__outputs__/dotnet-trx.md
index eedab46..92f12c0 100644
--- a/__tests__/__outputs__/dotnet-trx.md
+++ b/__tests__/__outputs__/dotnet-trx.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/dotnet-trx.trx|5 ✅|5 ❌|1 ⚪|1s|
+|[fixtures/dotnet-trx.trx](#user-content-r0)|5 ✅|5 ❌|1 ⚪|1s|
## ❌ fixtures/dotnet-trx.trx
**11** tests were completed in **1s** with **5** passed, **5** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/fluent-validation-test-results.md b/__tests__/__outputs__/fluent-validation-test-results.md
index 9337a62..83d0503 100644
--- a/__tests__/__outputs__/fluent-validation-test-results.md
+++ b/__tests__/__outputs__/fluent-validation-test-results.md
@@ -3,7 +3,7 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/external/FluentValidation.Tests.trx|803 ✅||1 ⚪|4s|
+|[fixtures/external/FluentValidation.Tests.trx](#user-content-r0)|803 ✅||1 ⚪|4s|
## ✅ fixtures/external/FluentValidation.Tests.trx
**804** tests were completed in **4s** with **803** passed, **0** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/golang-json.md b/__tests__/__outputs__/golang-json.md
index b3640d8..8b63704 100644
--- a/__tests__/__outputs__/golang-json.md
+++ b/__tests__/__outputs__/golang-json.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/golang-json.json|5 ✅|6 ❌|1 ⚪|6s|
+|[fixtures/golang-json.json](#user-content-r0)|5 ✅|6 ❌|1 ⚪|6s|
## ❌ fixtures/golang-json.json
**12** tests were completed in **6s** with **5** passed, **6** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/jest-junit-eslint.md b/__tests__/__outputs__/jest-junit-eslint.md
index d3ad9b9..5ebb57e 100644
--- a/__tests__/__outputs__/jest-junit-eslint.md
+++ b/__tests__/__outputs__/jest-junit-eslint.md
@@ -3,7 +3,7 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/jest-junit-eslint.xml|1 ✅|||0ms|
+|[fixtures/jest-junit-eslint.xml](#user-content-r0)|1 ✅|||0ms|
## ✅ fixtures/jest-junit-eslint.xml
**1** tests were completed in **0ms** with **1** passed, **0** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/jest-junit.md b/__tests__/__outputs__/jest-junit.md
index ed5a174..951256f 100644
--- a/__tests__/__outputs__/jest-junit.md
+++ b/__tests__/__outputs__/jest-junit.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/jest-junit.xml|1 ✅|4 ❌|1 ⚪|1s|
+|[fixtures/jest-junit.xml](#user-content-r0)|1 ✅|4 ❌|1 ⚪|1s|
## ❌ fixtures/jest-junit.xml
**6** tests were completed in **1s** with **1** passed, **4** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/jest-react-component-test-results.md b/__tests__/__outputs__/jest-react-component-test-results.md
index d71db4c..1365818 100644
--- a/__tests__/__outputs__/jest-react-component-test-results.md
+++ b/__tests__/__outputs__/jest-react-component-test-results.md
@@ -3,7 +3,7 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/external/jest/jest-react-component-test-results.xml|1 ✅|||1000ms|
+|[fixtures/external/jest/jest-react-component-test-results.xml](#user-content-r0)|1 ✅|||1000ms|
## ✅ fixtures/external/jest/jest-react-component-test-results.xml
**1** tests were completed in **1000ms** with **1** passed, **0** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/jest-test-results.md b/__tests__/__outputs__/jest-test-results.md
index 25dd567..cfbc169 100644
--- a/__tests__/__outputs__/jest-test-results.md
+++ b/__tests__/__outputs__/jest-test-results.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/external/jest/jest-test-results.xml|4207 ✅|2 ❌|30 ⚪|166s|
+|[fixtures/external/jest/jest-test-results.xml](#user-content-r0)|4207 ✅|2 ❌|30 ⚪|166s|
## ❌ fixtures/external/jest/jest-test-results.xml
**4239** tests were completed in **166s** with **4207** passed, **2** failed and **30** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/junit-with-message.md b/__tests__/__outputs__/junit-with-message.md
index 988d8fc..634a402 100644
--- a/__tests__/__outputs__/junit-with-message.md
+++ b/__tests__/__outputs__/junit-with-message.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/junit-with-message.xml||1 ❌||1ms|
+|[fixtures/junit-with-message.xml](#user-content-r0)||1 ❌||1ms|
## ❌ fixtures/junit-with-message.xml
**1** tests were completed in **1ms** with **0** passed, **1** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/mocha-json.md b/__tests__/__outputs__/mocha-json.md
index 50419e1..875f881 100644
--- a/__tests__/__outputs__/mocha-json.md
+++ b/__tests__/__outputs__/mocha-json.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/mocha-json.json|1 ✅|4 ❌|1 ⚪|12ms|
+|[fixtures/mocha-json.json](#user-content-r0)|1 ✅|4 ❌|1 ⚪|12ms|
## ❌ fixtures/mocha-json.json
**6** tests were completed in **12ms** with **1** passed, **4** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/mocha-test-results.md b/__tests__/__outputs__/mocha-test-results.md
index 8831d7b..4a6e2f6 100644
--- a/__tests__/__outputs__/mocha-test-results.md
+++ b/__tests__/__outputs__/mocha-test-results.md
@@ -3,7 +3,7 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/external/mocha/mocha-test-results.json|833 ✅||6 ⚪|6s|
+|[fixtures/external/mocha/mocha-test-results.json](#user-content-r0)|833 ✅||6 ⚪|6s|
## ✅ fixtures/external/mocha/mocha-test-results.json
**839** tests were completed in **6s** with **833** passed, **0** failed and **6** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/provider-test-results.md b/__tests__/__outputs__/provider-test-results.md
index b2216ad..172f070 100644
--- a/__tests__/__outputs__/provider-test-results.md
+++ b/__tests__/__outputs__/provider-test-results.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/external/flutter/provider-test-results.json|268 ✅|1 ❌||0ms|
+|[fixtures/external/flutter/provider-test-results.json](#user-content-r0)|268 ✅|1 ❌||0ms|
## ❌ fixtures/external/flutter/provider-test-results.json
**269** tests were completed in **0ms** with **268** passed, **1** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/pulsar-test-results-no-merge.md b/__tests__/__outputs__/pulsar-test-results-no-merge.md
index b1738a4..de5a9b6 100644
--- a/__tests__/__outputs__/pulsar-test-results-no-merge.md
+++ b/__tests__/__outputs__/pulsar-test-results-no-merge.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/external/java/TEST-org.apache.pulsar.AddMissingPatchVersionTest.xml||1 ❌|1 ⚪|116ms|
+|[fixtures/external/java/TEST-org.apache.pulsar.AddMissingPatchVersionTest.xml](#user-content-r0)||1 ❌|1 ⚪|116ms|
## ❌ fixtures/external/java/TEST-org.apache.pulsar.AddMissingPatchVersionTest.xml
**2** tests were completed in **116ms** with **0** passed, **1** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/pulsar-test-results.md b/__tests__/__outputs__/pulsar-test-results.md
index a9a5290..aaaa82e 100644
--- a/__tests__/__outputs__/pulsar-test-results.md
+++ b/__tests__/__outputs__/pulsar-test-results.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/external/java/pulsar-test-report.xml|793 ✅|1 ❌|14 ⚪|2127s|
+|[fixtures/external/java/pulsar-test-report.xml](#user-content-r0)|793 ✅|1 ❌|14 ⚪|2127s|
## ❌ fixtures/external/java/pulsar-test-report.xml
**808** tests were completed in **2127s** with **793** passed, **1** failed and **14** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/rspec-json.md b/__tests__/__outputs__/rspec-json.md
index 7444608..d64cf44 100644
--- a/__tests__/__outputs__/rspec-json.md
+++ b/__tests__/__outputs__/rspec-json.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/rspec-json.json|1 ✅|1 ❌|1 ⚪|0ms|
+|[fixtures/rspec-json.json](#user-content-r0)|1 ✅|1 ❌|1 ⚪|0ms|
## ❌ fixtures/rspec-json.json
**3** tests were completed in **0ms** with **1** passed, **1** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/silent-notes-test-results.md b/__tests__/__outputs__/silent-notes-test-results.md
index 34f5bab..e3abc49 100644
--- a/__tests__/__outputs__/silent-notes-test-results.md
+++ b/__tests__/__outputs__/silent-notes-test-results.md
@@ -3,7 +3,7 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/external/SilentNotes.trx|67 ✅||12 ⚪|1s|
+|[fixtures/external/SilentNotes.trx](#user-content-r0)|67 ✅||12 ⚪|1s|
## ✅ fixtures/external/SilentNotes.trx
**79** tests were completed in **1s** with **67** passed, **0** failed and **12** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/__tests__/__outputs__/swift-xunit.md b/__tests__/__outputs__/swift-xunit.md
index 6f9ed46..b001151 100644
--- a/__tests__/__outputs__/swift-xunit.md
+++ b/__tests__/__outputs__/swift-xunit.md
@@ -1,7 +1,7 @@

|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|fixtures/swift-xunit.xml|2 ✅|1 ❌||220ms|
+|[fixtures/swift-xunit.xml](#user-content-r0)|2 ✅|1 ❌||220ms|
## ❌ fixtures/swift-xunit.xml
**3** tests were completed in **220ms** with **2** passed, **1** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
diff --git a/dist/index.js b/dist/index.js
index bf79df4..2c25940 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -2034,14 +2034,17 @@ function getTestRunsReport(testRuns, options) {
}
if (testRuns.length > 0 || options.onlySummary) {
const tableData = testRuns
- .filter(tr => tr.passed > 0 || tr.failed > 0 || tr.skipped > 0)
- .map(tr => {
+ .map((tr, originalIndex) => ({ tr, originalIndex }))
+ .filter(({ tr }) => tr.passed > 0 || tr.failed > 0 || tr.skipped > 0)
+ .map(({ tr, originalIndex }) => {
const time = (0, markdown_utils_1.formatTime)(tr.time);
const name = tr.path;
+ const addr = options.baseUrl + makeRunSlug(originalIndex, options).link;
+ const nameLink = (0, markdown_utils_1.link)(name, addr);
const passed = tr.passed > 0 ? `${tr.passed} ${markdown_utils_1.Icon.success}` : '';
const failed = tr.failed > 0 ? `${tr.failed} ${markdown_utils_1.Icon.fail}` : '';
const skipped = tr.skipped > 0 ? `${tr.skipped} ${markdown_utils_1.Icon.skip}` : '';
- return [name, passed, failed, skipped, time];
+ return [nameLink, passed, failed, skipped, time];
});
const resultsTable = (0, markdown_utils_1.table)(['Report', 'Passed', 'Failed', 'Skipped', 'Time'], [markdown_utils_1.Align.Left, markdown_utils_1.Align.Right, markdown_utils_1.Align.Right, markdown_utils_1.Align.Right, markdown_utils_1.Align.Right], ...tableData);
sections.push(resultsTable);
@@ -4568,7 +4571,6 @@ class Context {
this.action = process.env.GITHUB_ACTION;
this.actor = process.env.GITHUB_ACTOR;
this.job = process.env.GITHUB_JOB;
- this.runAttempt = parseInt(process.env.GITHUB_RUN_ATTEMPT, 10);
this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);
this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);
this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;
@@ -7154,11 +7156,11 @@ var __copyProps = (to, from, except, desc) => {
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// pkg/dist-src/index.js
-var index_exports = {};
-__export(index_exports, {
+var dist_src_exports = {};
+__export(dist_src_exports, {
Octokit: () => Octokit
});
-module.exports = __toCommonJS(index_exports);
+module.exports = __toCommonJS(dist_src_exports);
var import_universal_user_agent = __nccwpck_require__(3843);
var import_before_after_hook = __nccwpck_require__(2732);
var import_request = __nccwpck_require__(8636);
@@ -7166,7 +7168,7 @@ var import_graphql = __nccwpck_require__(7);
var import_auth_token = __nccwpck_require__(7864);
// pkg/dist-src/version.js
-var VERSION = "5.2.1";
+var VERSION = "5.0.2";
// pkg/dist-src/index.js
var noop = () => {
@@ -7333,7 +7335,7 @@ module.exports = __toCommonJS(dist_src_exports);
var import_universal_user_agent = __nccwpck_require__(3843);
// pkg/dist-src/version.js
-var VERSION = "9.0.6";
+var VERSION = "9.0.4";
// pkg/dist-src/defaults.js
var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
@@ -7438,9 +7440,9 @@ function addQueryParameters(url, parameters) {
}
// pkg/dist-src/util/extract-url-variable-names.js
-var urlVariableRegex = /\{[^{}}]+\}/g;
+var urlVariableRegex = /\{[^}]+\}/g;
function removeNonChars(variableName) {
- return variableName.replace(/(?:^\W+)|(?:(? {
const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
return `application/vnd.github.${preview}-preview${format}`;
@@ -7707,18 +7709,18 @@ var __copyProps = (to, from, except, desc) => {
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// pkg/dist-src/index.js
-var index_exports = {};
-__export(index_exports, {
+var dist_src_exports = {};
+__export(dist_src_exports, {
GraphqlResponseError: () => GraphqlResponseError,
graphql: () => graphql2,
withCustomRequest: () => withCustomRequest
});
-module.exports = __toCommonJS(index_exports);
+module.exports = __toCommonJS(dist_src_exports);
var import_request3 = __nccwpck_require__(8636);
var import_universal_user_agent = __nccwpck_require__(3843);
// pkg/dist-src/version.js
-var VERSION = "7.1.1";
+var VERSION = "7.0.2";
// pkg/dist-src/with-defaults.js
var import_request2 = __nccwpck_require__(8636);
@@ -7766,7 +7768,8 @@ function graphql(request2, query, options) {
);
}
for (const key in options) {
- if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;
+ if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))
+ continue;
return Promise.reject(
new Error(
`[@octokit/graphql] "${key}" cannot be used as variable name`
@@ -7874,7 +7877,7 @@ __export(dist_src_exports, {
module.exports = __toCommonJS(dist_src_exports);
// pkg/dist-src/version.js
-var VERSION = "9.2.2";
+var VERSION = "9.1.5";
// pkg/dist-src/normalize-paginated-list-response.js
function normalizePaginatedListResponse(response) {
@@ -7922,7 +7925,7 @@ function iterator(octokit, route, parameters) {
const response = await requestMethod({ method, url, headers });
const normalizedResponse = normalizePaginatedListResponse(response);
url = ((normalizedResponse.headers.link || "").match(
- /<([^<>]+)>;\s*rel="next"/
+ /<([^>]+)>;\s*rel="next"/
) || [])[1];
return { value: normalizedResponse };
} catch (error) {
@@ -8035,8 +8038,6 @@ var paginatingEndpoints = [
"GET /orgs/{org}/members/{username}/codespaces",
"GET /orgs/{org}/migrations",
"GET /orgs/{org}/migrations/{migration_id}/repositories",
- "GET /orgs/{org}/organization-roles/{role_id}/teams",
- "GET /orgs/{org}/organization-roles/{role_id}/users",
"GET /orgs/{org}/outside_collaborators",
"GET /orgs/{org}/packages",
"GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
@@ -8273,7 +8274,7 @@ __export(dist_src_exports, {
module.exports = __toCommonJS(dist_src_exports);
// pkg/dist-src/version.js
-var VERSION = "10.4.1";
+var VERSION = "10.2.0";
// pkg/dist-src/generated/endpoints.js
var Endpoints = {
@@ -8400,9 +8401,6 @@ var Endpoints = {
"GET /repos/{owner}/{repo}/actions/permissions/selected-actions"
],
getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
- getCustomOidcSubClaimForRepo: [
- "GET /repos/{owner}/{repo}/actions/oidc/customization/sub"
- ],
getEnvironmentPublicKey: [
"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"
],
@@ -8555,9 +8553,6 @@ var Endpoints = {
setCustomLabelsForSelfHostedRunnerForRepo: [
"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
],
- setCustomOidcSubClaimForRepo: [
- "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"
- ],
setGithubActionsDefaultWorkflowPermissionsOrganization: [
"PUT /orgs/{org}/actions/permissions/workflow"
],
@@ -8627,7 +8622,6 @@ var Endpoints = {
listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
markNotificationsAsRead: ["PUT /notifications"],
markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
- markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"],
markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
setThreadSubscription: [
@@ -8904,10 +8898,10 @@ var Endpoints = {
updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
},
copilot: {
- addCopilotSeatsForTeams: [
+ addCopilotForBusinessSeatsForTeams: [
"POST /orgs/{org}/copilot/billing/selected_teams"
],
- addCopilotSeatsForUsers: [
+ addCopilotForBusinessSeatsForUsers: [
"POST /orgs/{org}/copilot/billing/selected_users"
],
cancelCopilotSeatAssignmentForTeams: [
@@ -9220,24 +9214,10 @@ var Endpoints = {
}
]
},
- oidc: {
- getOidcCustomSubTemplateForOrg: [
- "GET /orgs/{org}/actions/oidc/customization/sub"
- ],
- updateOidcCustomSubTemplateForOrg: [
- "PUT /orgs/{org}/actions/oidc/customization/sub"
- ]
- },
orgs: {
addSecurityManagerTeam: [
"PUT /orgs/{org}/security-managers/teams/{team_slug}"
],
- assignTeamToOrgRole: [
- "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"
- ],
- assignUserToOrgRole: [
- "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"
- ],
blockUser: ["PUT /orgs/{org}/blocks/{username}"],
cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
@@ -9246,7 +9226,6 @@ var Endpoints = {
convertMemberToOutsideCollaborator: [
"PUT /orgs/{org}/outside_collaborators/{username}"
],
- createCustomOrganizationRole: ["POST /orgs/{org}/organization-roles"],
createInvitation: ["POST /orgs/{org}/invitations"],
createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"],
createOrUpdateCustomPropertiesValuesForRepos: [
@@ -9257,9 +9236,6 @@ var Endpoints = {
],
createWebhook: ["POST /orgs/{org}/hooks"],
delete: ["DELETE /orgs/{org}"],
- deleteCustomOrganizationRole: [
- "DELETE /orgs/{org}/organization-roles/{role_id}"
- ],
deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
enableOrDisableSecurityProductOnAllOrgRepos: [
"POST /orgs/{org}/{security_product}/{enablement}"
@@ -9271,7 +9247,6 @@ var Endpoints = {
],
getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
- getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"],
getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
getWebhookDelivery: [
@@ -9287,12 +9262,6 @@ var Endpoints = {
listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
listMembers: ["GET /orgs/{org}/members"],
listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
- listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"],
- listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"],
- listOrgRoles: ["GET /orgs/{org}/organization-roles"],
- listOrganizationFineGrainedPermissions: [
- "GET /orgs/{org}/organization-fine-grained-permissions"
- ],
listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
listPatGrantRepositories: [
"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"
@@ -9307,9 +9276,6 @@ var Endpoints = {
listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"],
listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
listWebhooks: ["GET /orgs/{org}/hooks"],
- patchCustomOrganizationRole: [
- "PATCH /orgs/{org}/organization-roles/{role_id}"
- ],
pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
redeliverWebhookDelivery: [
"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
@@ -9334,18 +9300,6 @@ var Endpoints = {
reviewPatGrantRequestsInBulk: [
"POST /orgs/{org}/personal-access-token-requests"
],
- revokeAllOrgRolesTeam: [
- "DELETE /orgs/{org}/organization-roles/teams/{team_slug}"
- ],
- revokeAllOrgRolesUser: [
- "DELETE /orgs/{org}/organization-roles/users/{username}"
- ],
- revokeOrgRoleTeam: [
- "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"
- ],
- revokeOrgRoleUser: [
- "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"
- ],
setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
setPublicMembershipForAuthenticatedUser: [
"PUT /orgs/{org}/public_members/{username}"
@@ -9636,9 +9590,6 @@ var Endpoints = {
{},
{ mapToData: "users" }
],
- cancelPagesDeployment: [
- "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"
- ],
checkAutomatedSecurityFixes: [
"GET /repos/{owner}/{repo}/automated-security-fixes"
],
@@ -9674,15 +9625,12 @@ var Endpoints = {
createForAuthenticatedUser: ["POST /user/repos"],
createFork: ["POST /repos/{owner}/{repo}/forks"],
createInOrg: ["POST /orgs/{org}/repos"],
- createOrUpdateCustomPropertiesValues: [
- "PATCH /repos/{owner}/{repo}/properties/values"
- ],
createOrUpdateEnvironment: [
"PUT /repos/{owner}/{repo}/environments/{environment_name}"
],
createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
createOrgRuleset: ["POST /orgs/{org}/rulesets"],
- createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"],
+ createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"],
createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
createRelease: ["POST /repos/{owner}/{repo}/releases"],
createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"],
@@ -9835,9 +9783,6 @@ var Endpoints = {
getOrgRulesets: ["GET /orgs/{org}/rulesets"],
getPages: ["GET /repos/{owner}/{repo}/pages"],
getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
- getPagesDeployment: [
- "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"
- ],
getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
getPullRequestReviewProtection: [
@@ -10048,9 +9993,6 @@ var Endpoints = {
]
},
securityAdvisories: {
- createFork: [
- "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"
- ],
createPrivateVulnerabilityReport: [
"POST /repos/{owner}/{repo}/security-advisories/reports"
],
@@ -10474,7 +10416,7 @@ var RequestError = class extends Error {
if (options.request.headers.authorization) {
requestCopy.headers = Object.assign({}, options.request.headers, {
authorization: options.request.headers.authorization.replace(
- /(?]+)>; rel="deprecation"/);
+ const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/);
const deprecationLink = matches && matches.pop();
log.warn(
`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
@@ -10687,17 +10628,11 @@ async function getResponseData(response) {
function toErrorMessage(data) {
if (typeof data === "string")
return data;
- let suffix;
- if ("documentation_url" in data) {
- suffix = ` - ${data.documentation_url}`;
- } else {
- suffix = "";
- }
if ("message" in data) {
if (Array.isArray(data.errors)) {
- return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}${suffix}`;
+ return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`;
}
- return `${data.message}${suffix}`;
+ return data.message;
}
return `Unknown error: ${JSON.stringify(data)}`;
}
@@ -37748,7 +37683,7 @@ module.exports = {
const { parseSetCookie } = __nccwpck_require__(8915)
-const { stringify } = __nccwpck_require__(3834)
+const { stringify, getHeadersList } = __nccwpck_require__(3834)
const { webidl } = __nccwpck_require__(4222)
const { Headers } = __nccwpck_require__(6349)
@@ -37824,13 +37759,14 @@ function getSetCookies (headers) {
webidl.brandCheck(headers, Headers, { strict: false })
- const cookies = headers.getSetCookie()
+ const cookies = getHeadersList(headers).cookies
if (!cookies) {
return []
}
- return cookies.map((pair) => parseSetCookie(pair))
+ // In older versions of undici, cookies is a list of name:value.
+ return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))
}
/**
@@ -38258,15 +38194,14 @@ module.exports = {
/***/ }),
/***/ 3834:
-/***/ ((module) => {
+/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
"use strict";
-/**
- * @param {string} value
- * @returns {boolean}
- */
+const assert = __nccwpck_require__(2613)
+const { kHeadersList } = __nccwpck_require__(6443)
+
function isCTLExcludingHtab (value) {
if (value.length === 0) {
return false
@@ -38527,13 +38462,31 @@ function stringify (cookie) {
return out.join('; ')
}
+let kHeadersListNode
+
+function getHeadersList (headers) {
+ if (headers[kHeadersList]) {
+ return headers[kHeadersList]
+ }
+
+ if (!kHeadersListNode) {
+ kHeadersListNode = Object.getOwnPropertySymbols(headers).find(
+ (symbol) => symbol.description === 'headers list'
+ )
+
+ assert(kHeadersListNode, 'Headers cannot be parsed')
+ }
+
+ const headersList = headers[kHeadersListNode]
+ assert(headersList)
+
+ return headersList
+}
+
module.exports = {
isCTLExcludingHtab,
- validateCookieName,
- validateCookiePath,
- validateCookieValue,
- toIMFDate,
- stringify
+ stringify,
+ getHeadersList
}
@@ -38734,132 +38687,6 @@ function onConnectTimeout (socket) {
module.exports = buildConnector
-/***/ }),
-
-/***/ 735:
-/***/ ((module) => {
-
-"use strict";
-
-
-/** @type {Record} */
-const headerNameLowerCasedRecord = {}
-
-// https://developer.mozilla.org/docs/Web/HTTP/Headers
-const wellknownHeaderNames = [
- 'Accept',
- 'Accept-Encoding',
- 'Accept-Language',
- 'Accept-Ranges',
- 'Access-Control-Allow-Credentials',
- 'Access-Control-Allow-Headers',
- 'Access-Control-Allow-Methods',
- 'Access-Control-Allow-Origin',
- 'Access-Control-Expose-Headers',
- 'Access-Control-Max-Age',
- 'Access-Control-Request-Headers',
- 'Access-Control-Request-Method',
- 'Age',
- 'Allow',
- 'Alt-Svc',
- 'Alt-Used',
- 'Authorization',
- 'Cache-Control',
- 'Clear-Site-Data',
- 'Connection',
- 'Content-Disposition',
- 'Content-Encoding',
- 'Content-Language',
- 'Content-Length',
- 'Content-Location',
- 'Content-Range',
- 'Content-Security-Policy',
- 'Content-Security-Policy-Report-Only',
- 'Content-Type',
- 'Cookie',
- 'Cross-Origin-Embedder-Policy',
- 'Cross-Origin-Opener-Policy',
- 'Cross-Origin-Resource-Policy',
- 'Date',
- 'Device-Memory',
- 'Downlink',
- 'ECT',
- 'ETag',
- 'Expect',
- 'Expect-CT',
- 'Expires',
- 'Forwarded',
- 'From',
- 'Host',
- 'If-Match',
- 'If-Modified-Since',
- 'If-None-Match',
- 'If-Range',
- 'If-Unmodified-Since',
- 'Keep-Alive',
- 'Last-Modified',
- 'Link',
- 'Location',
- 'Max-Forwards',
- 'Origin',
- 'Permissions-Policy',
- 'Pragma',
- 'Proxy-Authenticate',
- 'Proxy-Authorization',
- 'RTT',
- 'Range',
- 'Referer',
- 'Referrer-Policy',
- 'Refresh',
- 'Retry-After',
- 'Sec-WebSocket-Accept',
- 'Sec-WebSocket-Extensions',
- 'Sec-WebSocket-Key',
- 'Sec-WebSocket-Protocol',
- 'Sec-WebSocket-Version',
- 'Server',
- 'Server-Timing',
- 'Service-Worker-Allowed',
- 'Service-Worker-Navigation-Preload',
- 'Set-Cookie',
- 'SourceMap',
- 'Strict-Transport-Security',
- 'Supports-Loading-Mode',
- 'TE',
- 'Timing-Allow-Origin',
- 'Trailer',
- 'Transfer-Encoding',
- 'Upgrade',
- 'Upgrade-Insecure-Requests',
- 'User-Agent',
- 'Vary',
- 'Via',
- 'WWW-Authenticate',
- 'X-Content-Type-Options',
- 'X-DNS-Prefetch-Control',
- 'X-Frame-Options',
- 'X-Permitted-Cross-Domain-Policies',
- 'X-Powered-By',
- 'X-Requested-With',
- 'X-XSS-Protection'
-]
-
-for (let i = 0; i < wellknownHeaderNames.length; ++i) {
- const key = wellknownHeaderNames[i]
- const lowerCasedKey = key.toLowerCase()
- headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =
- lowerCasedKey
-}
-
-// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
-Object.setPrototypeOf(headerNameLowerCasedRecord, null)
-
-module.exports = {
- wellknownHeaderNames,
- headerNameLowerCasedRecord
-}
-
-
/***/ }),
/***/ 8707:
@@ -39692,7 +39519,6 @@ const { InvalidArgumentError } = __nccwpck_require__(8707)
const { Blob } = __nccwpck_require__(181)
const nodeUtil = __nccwpck_require__(9023)
const { stringify } = __nccwpck_require__(3480)
-const { headerNameLowerCasedRecord } = __nccwpck_require__(735)
const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))
@@ -39902,15 +39728,6 @@ function parseKeepAliveTimeout (val) {
return m ? parseInt(m[1], 10) * 1000 : null
}
-/**
- * Retrieves a header name and returns its lowercase value.
- * @param {string | Buffer} value Header name
- * @returns {string}
- */
-function headerNameToString (value) {
- return headerNameLowerCasedRecord[value] || value.toLowerCase()
-}
-
function parseHeaders (headers, obj = {}) {
// For H2 support
if (!Array.isArray(headers)) return headers
@@ -40182,7 +39999,6 @@ module.exports = {
isIterable,
isAsyncIterable,
isDestroyed,
- headerNameToString,
parseRawHeaders,
parseHeaders,
parseKeepAliveTimeout,
@@ -40462,14 +40278,6 @@ const { isUint8Array, isArrayBuffer } = __nccwpck_require__(8253)
const { File: UndiciFile } = __nccwpck_require__(3041)
const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(4322)
-let random
-try {
- const crypto = __nccwpck_require__(7598)
- random = (max) => crypto.randomInt(0, max)
-} catch {
- random = (max) => Math.floor(Math.random(max))
-}
-
let ReadableStream = globalThis.ReadableStream
/** @type {globalThis['File']} */
@@ -40555,7 +40363,7 @@ function extractBody (object, keepalive = false) {
// Set source to a copy of the bytes held by object.
source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))
} else if (util.isFormDataLike(object)) {
- const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`
+ const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`
const prefix = `--${boundary}\r\nContent-Disposition: form-data`
/*! formdata-polyfill. MIT License. Jimmy Wärting */
@@ -42537,7 +42345,6 @@ const {
isValidHeaderName,
isValidHeaderValue
} = __nccwpck_require__(5523)
-const util = __nccwpck_require__(9023)
const { webidl } = __nccwpck_require__(4222)
const assert = __nccwpck_require__(2613)
@@ -43091,9 +42898,6 @@ Object.defineProperties(Headers.prototype, {
[Symbol.toStringTag]: {
value: 'Headers',
configurable: true
- },
- [util.inspect.custom]: {
- enumerable: false
}
})
@@ -44331,9 +44135,6 @@ function httpRedirectFetch (fetchParams, response) {
// https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name
request.headersList.delete('authorization')
- // https://fetch.spec.whatwg.org/#authentication-entries
- request.headersList.delete('proxy-authorization', true)
-
// "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement.
request.headersList.delete('cookie')
request.headersList.delete('host')
@@ -46842,18 +46643,14 @@ const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3440
const assert = __nccwpck_require__(2613)
const { isUint8Array } = __nccwpck_require__(8253)
-let supportedHashes = []
-
// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
/** @type {import('crypto')|undefined} */
let crypto
try {
crypto = __nccwpck_require__(6982)
- const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']
- supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))
-/* c8 ignore next 3 */
} catch {
+
}
function responseURL (response) {
@@ -47381,56 +47178,66 @@ function bytesMatch (bytes, metadataList) {
return true
}
- // 3. If response is not eligible for integrity validation, return false.
- // TODO
-
- // 4. If parsedMetadata is the empty set, return true.
+ // 3. If parsedMetadata is the empty set, return true.
if (parsedMetadata.length === 0) {
return true
}
- // 5. Let metadata be the result of getting the strongest
+ // 4. Let metadata be the result of getting the strongest
// metadata from parsedMetadata.
- const strongest = getStrongestMetadata(parsedMetadata)
- const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)
+ const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo))
+ // get the strongest algorithm
+ const strongest = list[0].algo
+ // get all entries that use the strongest algorithm; ignore weaker
+ const metadata = list.filter((item) => item.algo === strongest)
- // 6. For each item in metadata:
+ // 5. For each item in metadata:
for (const item of metadata) {
// 1. Let algorithm be the alg component of item.
const algorithm = item.algo
// 2. Let expectedValue be the val component of item.
- const expectedValue = item.hash
+ let expectedValue = item.hash
// See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
// "be liberal with padding". This is annoying, and it's not even in the spec.
+ if (expectedValue.endsWith('==')) {
+ expectedValue = expectedValue.slice(0, -2)
+ }
+
// 3. Let actualValue be the result of applying algorithm to bytes.
let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')
- if (actualValue[actualValue.length - 1] === '=') {
- if (actualValue[actualValue.length - 2] === '=') {
- actualValue = actualValue.slice(0, -2)
- } else {
- actualValue = actualValue.slice(0, -1)
- }
+ if (actualValue.endsWith('==')) {
+ actualValue = actualValue.slice(0, -2)
}
// 4. If actualValue is a case-sensitive match for expectedValue,
// return true.
- if (compareBase64Mixed(actualValue, expectedValue)) {
+ if (actualValue === expectedValue) {
+ return true
+ }
+
+ let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest('base64url')
+
+ if (actualBase64URL.endsWith('==')) {
+ actualBase64URL = actualBase64URL.slice(0, -2)
+ }
+
+ if (actualBase64URL === expectedValue) {
return true
}
}
- // 7. Return false.
+ // 6. Return false.
return false
}
// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
// https://www.w3.org/TR/CSP2/#source-list-syntax
// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
-const parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i
+const parseHashWithOptions = /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i
/**
* @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
@@ -47444,6 +47251,8 @@ function parseMetadata (metadata) {
// 2. Let empty be equal to true.
let empty = true
+ const supportedHashes = crypto.getHashes()
+
// 3. For each token returned by splitting metadata on spaces:
for (const token of metadata.split(' ')) {
// 1. Set empty to false.
@@ -47453,11 +47262,7 @@ function parseMetadata (metadata) {
const parsedToken = parseHashWithOptions.exec(token)
// 3. If token does not parse, continue to the next token.
- if (
- parsedToken === null ||
- parsedToken.groups === undefined ||
- parsedToken.groups.algo === undefined
- ) {
+ if (parsedToken === null || parsedToken.groups === undefined) {
// Note: Chromium blocks the request at this point, but Firefox
// gives a warning that an invalid integrity was given. The
// correct behavior is to ignore these, and subsequently not
@@ -47466,11 +47271,11 @@ function parseMetadata (metadata) {
}
// 4. Let algorithm be the hash-algo component of token.
- const algorithm = parsedToken.groups.algo.toLowerCase()
+ const algorithm = parsedToken.groups.algo
// 5. If algorithm is a hash function recognized by the user
// agent, add the parsed token to result.
- if (supportedHashes.includes(algorithm)) {
+ if (supportedHashes.includes(algorithm.toLowerCase())) {
result.push(parsedToken.groups)
}
}
@@ -47483,82 +47288,6 @@ function parseMetadata (metadata) {
return result
}
-/**
- * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList
- */
-function getStrongestMetadata (metadataList) {
- // Let algorithm be the algo component of the first item in metadataList.
- // Can be sha256
- let algorithm = metadataList[0].algo
- // If the algorithm is sha512, then it is the strongest
- // and we can return immediately
- if (algorithm[3] === '5') {
- return algorithm
- }
-
- for (let i = 1; i < metadataList.length; ++i) {
- const metadata = metadataList[i]
- // If the algorithm is sha512, then it is the strongest
- // and we can break the loop immediately
- if (metadata.algo[3] === '5') {
- algorithm = 'sha512'
- break
- // If the algorithm is sha384, then a potential sha256 or sha384 is ignored
- } else if (algorithm[3] === '3') {
- continue
- // algorithm is sha256, check if algorithm is sha384 and if so, set it as
- // the strongest
- } else if (metadata.algo[3] === '3') {
- algorithm = 'sha384'
- }
- }
- return algorithm
-}
-
-function filterMetadataListByAlgorithm (metadataList, algorithm) {
- if (metadataList.length === 1) {
- return metadataList
- }
-
- let pos = 0
- for (let i = 0; i < metadataList.length; ++i) {
- if (metadataList[i].algo === algorithm) {
- metadataList[pos++] = metadataList[i]
- }
- }
-
- metadataList.length = pos
-
- return metadataList
-}
-
-/**
- * Compares two base64 strings, allowing for base64url
- * in the second string.
- *
-* @param {string} actualValue always base64
- * @param {string} expectedValue base64 or base64url
- * @returns {boolean}
- */
-function compareBase64Mixed (actualValue, expectedValue) {
- if (actualValue.length !== expectedValue.length) {
- return false
- }
- for (let i = 0; i < actualValue.length; ++i) {
- if (actualValue[i] !== expectedValue[i]) {
- if (
- (actualValue[i] === '+' && expectedValue[i] === '-') ||
- (actualValue[i] === '/' && expectedValue[i] === '_')
- ) {
- continue
- }
- return false
- }
- }
-
- return true
-}
-
// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {
// TODO
@@ -47974,8 +47703,7 @@ module.exports = {
urlHasHttpsScheme,
urlIsHttpHttpsScheme,
readAllBytes,
- normalizeMethodRecord,
- parseMetadata
+ normalizeMethodRecord
}
@@ -50062,17 +49790,12 @@ function parseLocation (statusCode, headers) {
// https://tools.ietf.org/html/rfc7231#section-6.4.4
function shouldRemoveHeader (header, removeContent, unknownOrigin) {
- if (header.length === 4) {
- return util.headerNameToString(header) === 'host'
- }
- if (removeContent && util.headerNameToString(header).startsWith('content-')) {
- return true
- }
- if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {
- const name = util.headerNameToString(header)
- return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'
- }
- return false
+ return (
+ (header.length === 4 && header.toString().toLowerCase() === 'host') ||
+ (removeContent && header.toString().toLowerCase().indexOf('content-') === 0) ||
+ (unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') ||
+ (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === 'cookie')
+ )
}
// https://tools.ietf.org/html/rfc7231#section-6.4
@@ -52270,20 +51993,6 @@ class Pool extends PoolBase {
? { ...options.interceptors }
: undefined
this[kFactory] = factory
-
- this.on('connectionError', (origin, targets, error) => {
- // If a connection error occurs, we remove the client from the pool,
- // and emit a connectionError event. They will not be re-used.
- // Fixes https://github.com/nodejs/undici/issues/3895
- for (const target of targets) {
- // Do not use kRemoveClient here, as it will close the client,
- // but the client cannot be closed in this state.
- const idx = this[kClients].indexOf(target)
- if (idx !== -1) {
- this[kClients].splice(idx, 1)
- }
- }
- })
}
[kGetDispatcher] () {
@@ -59783,14 +59492,6 @@ module.exports = require("net");
/***/ }),
-/***/ 7598:
-/***/ ((module) => {
-
-"use strict";
-module.exports = require("node:crypto");
-
-/***/ }),
-
/***/ 8474:
/***/ ((module) => {
diff --git a/src/report/get-report.ts b/src/report/get-report.ts
index a3385e9..24465e3 100644
--- a/src/report/get-report.ts
+++ b/src/report/get-report.ts
@@ -159,14 +159,17 @@ function getTestRunsReport(testRuns: TestRunResult[], options: ReportOptions): s
if (testRuns.length > 0 || options.onlySummary) {
const tableData = testRuns
- .filter(tr => tr.passed > 0 || tr.failed > 0 || tr.skipped > 0)
- .map(tr => {
+ .map((tr, originalIndex) => ({tr, originalIndex}))
+ .filter(({tr}) => tr.passed > 0 || tr.failed > 0 || tr.skipped > 0)
+ .map(({tr, originalIndex}) => {
const time = formatTime(tr.time)
const name = tr.path
+ const addr = options.baseUrl + makeRunSlug(originalIndex, options).link
+ const nameLink = link(name, addr)
const passed = tr.passed > 0 ? `${tr.passed} ${Icon.success}` : ''
const failed = tr.failed > 0 ? `${tr.failed} ${Icon.fail}` : ''
const skipped = tr.skipped > 0 ? `${tr.skipped} ${Icon.skip}` : ''
- return [name, passed, failed, skipped, time]
+ return [nameLink, passed, failed, skipped, time]
})
const resultsTable = table(