mirror of
https://github.com/actions/add-to-project.git
synced 2025-12-11 20:47:05 +00:00
Compare commits
41 Commits
v1.0.1
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57ceef8529 | ||
|
|
4d8d06257b | ||
|
|
3909e1d8be | ||
|
|
e281e5a638 | ||
|
|
9f6e247b35 | ||
|
|
fe565f2aae | ||
|
|
de7dde63cb | ||
|
|
98dbeb0682 | ||
|
|
312a0d9687 | ||
|
|
2b3df9adc0 | ||
|
|
96964cdc1a | ||
|
|
5986a4b4fb | ||
|
|
79c59691a9 | ||
|
|
b770800601 | ||
|
|
e014659d40 | ||
|
|
4949f2137d | ||
|
|
f5473ace9a | ||
|
|
1015d0b51c | ||
|
|
ed5d5cfea4 | ||
|
|
b819e14051 | ||
|
|
9dd28476f5 | ||
|
|
35c112b03f | ||
|
|
b004f407ad | ||
|
|
b8cb126311 | ||
|
|
896ffc63ec | ||
|
|
e73698e2a7 | ||
|
|
244f685bbc | ||
|
|
2a5ef71e5f | ||
|
|
8c1146182d | ||
|
|
66f6cffea1 | ||
|
|
ddf5099c7c | ||
|
|
da1ae5b4fd | ||
|
|
ced87c7078 | ||
|
|
c78e6a180b | ||
|
|
267a19fd1e | ||
|
|
e005a862c6 | ||
|
|
d5b3ce6ad5 | ||
|
|
fa4a4f2866 | ||
|
|
7804f34bc2 | ||
|
|
02edc768b2 | ||
|
|
35b38bc9ba |
2
.licenses/npm/@octokit/endpoint.dep.yml
generated
2
.licenses/npm/@octokit/endpoint.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: '@octokit/endpoint'
|
name: '@octokit/endpoint'
|
||||||
version: 9.0.4
|
version: 9.0.6
|
||||||
type: npm
|
type: npm
|
||||||
summary: Turns REST API endpoints into generic request options
|
summary: Turns REST API endpoints into generic request options
|
||||||
homepage:
|
homepage:
|
||||||
|
|||||||
20
.licenses/npm/@octokit/openapi-types-24.2.0.dep.yml
generated
Normal file
20
.licenses/npm/@octokit/openapi-types-24.2.0.dep.yml
generated
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: '@octokit/openapi-types'
|
||||||
|
version: 24.2.0
|
||||||
|
type: npm
|
||||||
|
summary: Generated TypeScript definitions based on GitHub's OpenAPI spec for api.github.com
|
||||||
|
homepage:
|
||||||
|
license: mit
|
||||||
|
licenses:
|
||||||
|
- sources: LICENSE
|
||||||
|
text: |-
|
||||||
|
Copyright 2020 Gregor Martynus
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
- sources: README.md
|
||||||
|
text: '[MIT](LICENSE)'
|
||||||
|
notices: []
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: '@octokit/plugin-paginate-rest'
|
name: '@octokit/plugin-paginate-rest'
|
||||||
version: 9.2.1
|
version: 9.2.2
|
||||||
type: npm
|
type: npm
|
||||||
summary: Octokit plugin to paginate REST API endpoint responses
|
summary: Octokit plugin to paginate REST API endpoint responses
|
||||||
homepage:
|
homepage:
|
||||||
|
|||||||
2
.licenses/npm/@octokit/request-error.dep.yml
generated
2
.licenses/npm/@octokit/request-error.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: '@octokit/request-error'
|
name: '@octokit/request-error'
|
||||||
version: 5.0.1
|
version: 5.1.1
|
||||||
type: npm
|
type: npm
|
||||||
summary: Error class for Octokit request errors
|
summary: Error class for Octokit request errors
|
||||||
homepage:
|
homepage:
|
||||||
|
|||||||
2
.licenses/npm/@octokit/request.dep.yml
generated
2
.licenses/npm/@octokit/request.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: '@octokit/request'
|
name: '@octokit/request'
|
||||||
version: 8.2.0
|
version: 8.4.1
|
||||||
type: npm
|
type: npm
|
||||||
summary: Send parameterized requests to GitHub's APIs with sensible defaults in browsers
|
summary: Send parameterized requests to GitHub's APIs with sensible defaults in browsers
|
||||||
and Node
|
and Node
|
||||||
|
|||||||
20
.licenses/npm/@octokit/types-13.10.0.dep.yml
generated
Normal file
20
.licenses/npm/@octokit/types-13.10.0.dep.yml
generated
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: '@octokit/types'
|
||||||
|
version: 13.10.0
|
||||||
|
type: npm
|
||||||
|
summary: Shared TypeScript definitions for Octokit projects
|
||||||
|
homepage:
|
||||||
|
license: mit
|
||||||
|
licenses:
|
||||||
|
- sources: LICENSE
|
||||||
|
text: |
|
||||||
|
MIT License Copyright (c) 2019 Octokit contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
- sources: README.md
|
||||||
|
text: '[MIT](LICENSE)'
|
||||||
|
notices: []
|
||||||
2
.licenses/npm/undici.dep.yml
generated
2
.licenses/npm/undici.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: undici
|
name: undici
|
||||||
version: 5.28.4
|
version: 5.29.0
|
||||||
type: npm
|
type: npm
|
||||||
summary: An HTTP/1.1 client, written from scratch for Node.js
|
summary: An HTTP/1.1 client, written from scratch for Node.js
|
||||||
homepage: https://undici.nodejs.org
|
homepage: https://undici.nodejs.org
|
||||||
|
|||||||
@@ -136,9 +136,10 @@ Using these events ensure that a given issue or pull request, in the workflow's
|
|||||||
|
|
||||||
## Creating a PAT and adding it to your repository
|
## Creating a PAT and adding it to your repository
|
||||||
|
|
||||||
- create a new [personal access
|
- Create a new [personal access token](https://github.com/settings/tokens/new). _See [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) for more information_
|
||||||
token](https://github.com/settings/tokens/new) with `project` scope. For private repos you will also need `repo` scope. For fine-grained access tokens, you will need to add the organization projects permission, and the repository issues and pull requests permissions.
|
|
||||||
_See [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) for more information_
|
- For **Tokens (classic)** include the `project` scope; for private repos you will also need `repo` scope.
|
||||||
|
- For **Fine-grained tokens**, you must first select the appropriate _owner_ and associated _repositories_. Then select _Organization permissions -> `projects` `read & write`_, and _Repository permissions -> `issues` `read-only`_ and _`pull requests` `read-only`_.
|
||||||
|
|
||||||
- add the newly created PAT as a repository secret, this secret will be referenced by the [github-token input](#github-token)
|
- add the newly created PAT as a repository secret, this secret will be referenced by the [github-token input](#github-token)
|
||||||
_See [Encrypted secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) for more information_
|
_See [Encrypted secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) for more information_
|
||||||
|
|||||||
267
dist/index.js
generated
vendored
267
dist/index.js
generated
vendored
@@ -29,105 +29,96 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|||||||
__setModuleDefault(result, mod);
|
__setModuleDefault(result, mod);
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
||||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
||||||
return new (P || (P = Promise))(function (resolve, reject) {
|
|
||||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
||||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
||||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
||||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
||||||
});
|
|
||||||
};
|
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
exports.mustGetOwnerTypeQuery = exports.addToProject = void 0;
|
exports.addToProject = addToProject;
|
||||||
|
exports.mustGetOwnerTypeQuery = mustGetOwnerTypeQuery;
|
||||||
const core = __importStar(__nccwpck_require__(2186));
|
const core = __importStar(__nccwpck_require__(2186));
|
||||||
const github = __importStar(__nccwpck_require__(5438));
|
const github = __importStar(__nccwpck_require__(5438));
|
||||||
const urlParse = /\/(?<ownerType>orgs|users)\/(?<ownerName>[^/]+)\/projects\/(?<projectNumber>\d+)/;
|
const urlParse = /\/(?<ownerType>orgs|users)\/(?<ownerName>[^/]+)\/projects\/(?<projectNumber>\d+)/;
|
||||||
function addToProject() {
|
async function addToProject() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
||||||
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
const projectUrl = core.getInput('project-url', { required: true });
|
||||||
const projectUrl = core.getInput('project-url', { required: true });
|
const ghToken = core.getInput('github-token', { required: true });
|
||||||
const ghToken = core.getInput('github-token', { required: true });
|
const labeled = (_a = core
|
||||||
const labeled = (_a = core
|
.getInput('labeled')
|
||||||
.getInput('labeled')
|
.split(',')
|
||||||
.split(',')
|
.map(l => l.trim().toLowerCase())
|
||||||
.map(l => l.trim().toLowerCase())
|
.filter(l => l.length > 0)) !== null && _a !== void 0 ? _a : [];
|
||||||
.filter(l => l.length > 0)) !== null && _a !== void 0 ? _a : [];
|
const labelOperator = core.getInput('label-operator').trim().toLocaleLowerCase();
|
||||||
const labelOperator = core.getInput('label-operator').trim().toLocaleLowerCase();
|
const octokit = github.getOctokit(ghToken);
|
||||||
const octokit = github.getOctokit(ghToken);
|
const issue = (_b = github.context.payload.issue) !== null && _b !== void 0 ? _b : github.context.payload.pull_request;
|
||||||
const issue = (_b = github.context.payload.issue) !== null && _b !== void 0 ? _b : github.context.payload.pull_request;
|
const issueLabels = ((_c = issue === null || issue === void 0 ? void 0 : issue.labels) !== null && _c !== void 0 ? _c : []).map((l) => l.name.toLowerCase());
|
||||||
const issueLabels = ((_c = issue === null || issue === void 0 ? void 0 : issue.labels) !== null && _c !== void 0 ? _c : []).map((l) => l.name.toLowerCase());
|
const issueOwnerName = (_d = github.context.payload.repository) === null || _d === void 0 ? void 0 : _d.owner.login;
|
||||||
const issueOwnerName = (_d = github.context.payload.repository) === null || _d === void 0 ? void 0 : _d.owner.login;
|
core.debug(`Issue/PR owner: ${issueOwnerName}`);
|
||||||
core.debug(`Issue/PR owner: ${issueOwnerName}`);
|
core.debug(`Issue/PR labels: ${issueLabels.join(', ')}`);
|
||||||
core.debug(`Issue/PR labels: ${issueLabels.join(', ')}`);
|
// Ensure the issue matches our `labeled` filter based on the label-operator.
|
||||||
// Ensure the issue matches our `labeled` filter based on the label-operator.
|
if (labelOperator === 'and') {
|
||||||
if (labelOperator === 'and') {
|
if (!labeled.every(l => issueLabels.includes(l))) {
|
||||||
if (!labeled.every(l => issueLabels.includes(l))) {
|
core.info(`Skipping issue ${issue === null || issue === void 0 ? void 0 : issue.number} because it doesn't match all the labels: ${labeled.join(', ')}`);
|
||||||
core.info(`Skipping issue ${issue === null || issue === void 0 ? void 0 : issue.number} because it doesn't match all the labels: ${labeled.join(', ')}`);
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (labelOperator === 'not') {
|
}
|
||||||
if (labeled.length > 0 && issueLabels.some(l => labeled.includes(l))) {
|
else if (labelOperator === 'not') {
|
||||||
core.info(`Skipping issue ${issue === null || issue === void 0 ? void 0 : issue.number} because it contains one of the labels: ${labeled.join(', ')}`);
|
if (labeled.length > 0 && issueLabels.some(l => labeled.includes(l))) {
|
||||||
return;
|
core.info(`Skipping issue ${issue === null || issue === void 0 ? void 0 : issue.number} because it contains one of the labels: ${labeled.join(', ')}`);
|
||||||
}
|
return;
|
||||||
}
|
}
|
||||||
else {
|
}
|
||||||
if (labeled.length > 0 && !issueLabels.some(l => labeled.includes(l))) {
|
else {
|
||||||
core.info(`Skipping issue ${issue === null || issue === void 0 ? void 0 : issue.number} because it does not have one of the labels: ${labeled.join(', ')}`);
|
if (labeled.length > 0 && !issueLabels.some(l => labeled.includes(l))) {
|
||||||
return;
|
core.info(`Skipping issue ${issue === null || issue === void 0 ? void 0 : issue.number} because it does not have one of the labels: ${labeled.join(', ')}`);
|
||||||
}
|
return;
|
||||||
}
|
}
|
||||||
core.debug(`Project URL: ${projectUrl}`);
|
}
|
||||||
const urlMatch = projectUrl.match(urlParse);
|
core.debug(`Project URL: ${projectUrl}`);
|
||||||
if (!urlMatch) {
|
const urlMatch = projectUrl.match(urlParse);
|
||||||
throw new Error(`Invalid project URL: ${projectUrl}. Project URL should match the format <GitHub server domain name>/<orgs-or-users>/<ownerName>/projects/<projectNumber>`);
|
if (!urlMatch) {
|
||||||
}
|
throw new Error(`Invalid project URL: ${projectUrl}. Project URL should match the format <GitHub server domain name>/<orgs-or-users>/<ownerName>/projects/<projectNumber>`);
|
||||||
const projectOwnerName = (_e = urlMatch.groups) === null || _e === void 0 ? void 0 : _e.ownerName;
|
}
|
||||||
const projectNumber = parseInt((_g = (_f = urlMatch.groups) === null || _f === void 0 ? void 0 : _f.projectNumber) !== null && _g !== void 0 ? _g : '', 10);
|
const projectOwnerName = (_e = urlMatch.groups) === null || _e === void 0 ? void 0 : _e.ownerName;
|
||||||
const ownerType = (_h = urlMatch.groups) === null || _h === void 0 ? void 0 : _h.ownerType;
|
const projectNumber = parseInt((_g = (_f = urlMatch.groups) === null || _f === void 0 ? void 0 : _f.projectNumber) !== null && _g !== void 0 ? _g : '', 10);
|
||||||
const ownerTypeQuery = mustGetOwnerTypeQuery(ownerType);
|
const ownerType = (_h = urlMatch.groups) === null || _h === void 0 ? void 0 : _h.ownerType;
|
||||||
core.debug(`Project owner: ${projectOwnerName}`);
|
const ownerTypeQuery = mustGetOwnerTypeQuery(ownerType);
|
||||||
core.debug(`Project number: ${projectNumber}`);
|
core.debug(`Project owner: ${projectOwnerName}`);
|
||||||
core.debug(`Project owner type: ${ownerType}`);
|
core.debug(`Project number: ${projectNumber}`);
|
||||||
// First, use the GraphQL API to request the project's node ID.
|
core.debug(`Project owner type: ${ownerType}`);
|
||||||
const idResp = yield octokit.graphql(`query getProject($projectOwnerName: String!, $projectNumber: Int!) {
|
// First, use the GraphQL API to request the project's node ID.
|
||||||
|
const idResp = await octokit.graphql(`query getProject($projectOwnerName: String!, $projectNumber: Int!) {
|
||||||
${ownerTypeQuery}(login: $projectOwnerName) {
|
${ownerTypeQuery}(login: $projectOwnerName) {
|
||||||
projectV2(number: $projectNumber) {
|
projectV2(number: $projectNumber) {
|
||||||
id
|
id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}`, {
|
}`, {
|
||||||
projectOwnerName,
|
projectOwnerName,
|
||||||
projectNumber,
|
projectNumber,
|
||||||
});
|
});
|
||||||
const projectId = (_j = idResp[ownerTypeQuery]) === null || _j === void 0 ? void 0 : _j.projectV2.id;
|
const projectId = (_j = idResp[ownerTypeQuery]) === null || _j === void 0 ? void 0 : _j.projectV2.id;
|
||||||
const contentId = issue === null || issue === void 0 ? void 0 : issue.node_id;
|
const contentId = issue === null || issue === void 0 ? void 0 : issue.node_id;
|
||||||
core.debug(`Project node ID: ${projectId}`);
|
core.debug(`Project node ID: ${projectId}`);
|
||||||
core.debug(`Content ID: ${contentId}`);
|
core.debug(`Content ID: ${contentId}`);
|
||||||
// Next, use the GraphQL API to add the issue to the project.
|
// Next, use the GraphQL API to add the issue to the project.
|
||||||
// If the issue has the same owner as the project, we can directly
|
// If the issue has the same owner as the project, we can directly
|
||||||
// add a project item. Otherwise, we add a draft issue.
|
// add a project item. Otherwise, we add a draft issue.
|
||||||
if (issueOwnerName === projectOwnerName) {
|
if (issueOwnerName === projectOwnerName) {
|
||||||
core.info('Creating project item');
|
core.info('Creating project item');
|
||||||
const addResp = yield octokit.graphql(`mutation addIssueToProject($input: AddProjectV2ItemByIdInput!) {
|
const addResp = await octokit.graphql(`mutation addIssueToProject($input: AddProjectV2ItemByIdInput!) {
|
||||||
addProjectV2ItemById(input: $input) {
|
addProjectV2ItemById(input: $input) {
|
||||||
item {
|
item {
|
||||||
id
|
id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}`, {
|
}`, {
|
||||||
input: {
|
input: {
|
||||||
projectId,
|
projectId,
|
||||||
contentId,
|
contentId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
core.setOutput('itemId', addResp.addProjectV2ItemById.item.id);
|
core.setOutput('itemId', addResp.addProjectV2ItemById.item.id);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
core.info('Creating draft issue in project');
|
core.info('Creating draft issue in project');
|
||||||
const addResp = yield octokit.graphql(`mutation addDraftIssueToProject($projectId: ID!, $title: String!) {
|
const addResp = await octokit.graphql(`mutation addDraftIssueToProject($projectId: ID!, $title: String!) {
|
||||||
addProjectV2DraftIssue(input: {
|
addProjectV2DraftIssue(input: {
|
||||||
projectId: $projectId,
|
projectId: $projectId,
|
||||||
title: $title
|
title: $title
|
||||||
@@ -137,14 +128,12 @@ function addToProject() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}`, {
|
}`, {
|
||||||
projectId,
|
projectId,
|
||||||
title: issue === null || issue === void 0 ? void 0 : issue.html_url,
|
title: issue === null || issue === void 0 ? void 0 : issue.html_url,
|
||||||
});
|
});
|
||||||
core.setOutput('itemId', addResp.addProjectV2DraftIssue.projectItem.id);
|
core.setOutput('itemId', addResp.addProjectV2DraftIssue.projectItem.id);
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
exports.addToProject = addToProject;
|
|
||||||
function mustGetOwnerTypeQuery(ownerType) {
|
function mustGetOwnerTypeQuery(ownerType) {
|
||||||
const ownerTypeQuery = ownerType === 'orgs' ? 'organization' : ownerType === 'users' ? 'user' : null;
|
const ownerTypeQuery = ownerType === 'orgs' ? 'organization' : ownerType === 'users' ? 'user' : null;
|
||||||
if (!ownerTypeQuery) {
|
if (!ownerTypeQuery) {
|
||||||
@@ -152,7 +141,6 @@ function mustGetOwnerTypeQuery(ownerType) {
|
|||||||
}
|
}
|
||||||
return ownerTypeQuery;
|
return ownerTypeQuery;
|
||||||
}
|
}
|
||||||
exports.mustGetOwnerTypeQuery = mustGetOwnerTypeQuery;
|
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
@@ -2570,7 +2558,7 @@ module.exports = __toCommonJS(dist_src_exports);
|
|||||||
var import_universal_user_agent = __nccwpck_require__(5030);
|
var import_universal_user_agent = __nccwpck_require__(5030);
|
||||||
|
|
||||||
// pkg/dist-src/version.js
|
// pkg/dist-src/version.js
|
||||||
var VERSION = "9.0.4";
|
var VERSION = "9.0.6";
|
||||||
|
|
||||||
// pkg/dist-src/defaults.js
|
// pkg/dist-src/defaults.js
|
||||||
var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
|
var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
|
||||||
@@ -2675,9 +2663,9 @@ function addQueryParameters(url, parameters) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// pkg/dist-src/util/extract-url-variable-names.js
|
// pkg/dist-src/util/extract-url-variable-names.js
|
||||||
var urlVariableRegex = /\{[^}]+\}/g;
|
var urlVariableRegex = /\{[^{}}]+\}/g;
|
||||||
function removeNonChars(variableName) {
|
function removeNonChars(variableName) {
|
||||||
return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
|
return variableName.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g, "").split(/,/);
|
||||||
}
|
}
|
||||||
function extractUrlVariableNames(url) {
|
function extractUrlVariableNames(url) {
|
||||||
const matches = url.match(urlVariableRegex);
|
const matches = url.match(urlVariableRegex);
|
||||||
@@ -2863,7 +2851,7 @@ function parse(options) {
|
|||||||
}
|
}
|
||||||
if (url.endsWith("/graphql")) {
|
if (url.endsWith("/graphql")) {
|
||||||
if (options.mediaType.previews?.length) {
|
if (options.mediaType.previews?.length) {
|
||||||
const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
|
const previewsFromAcceptHeader = headers.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g) || [];
|
||||||
headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
|
headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
|
||||||
const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
|
const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
|
||||||
return `application/vnd.github.${preview}-preview${format}`;
|
return `application/vnd.github.${preview}-preview${format}`;
|
||||||
@@ -3112,7 +3100,7 @@ __export(dist_src_exports, {
|
|||||||
module.exports = __toCommonJS(dist_src_exports);
|
module.exports = __toCommonJS(dist_src_exports);
|
||||||
|
|
||||||
// pkg/dist-src/version.js
|
// pkg/dist-src/version.js
|
||||||
var VERSION = "9.2.1";
|
var VERSION = "9.2.2";
|
||||||
|
|
||||||
// pkg/dist-src/normalize-paginated-list-response.js
|
// pkg/dist-src/normalize-paginated-list-response.js
|
||||||
function normalizePaginatedListResponse(response) {
|
function normalizePaginatedListResponse(response) {
|
||||||
@@ -3160,7 +3148,7 @@ function iterator(octokit, route, parameters) {
|
|||||||
const response = await requestMethod({ method, url, headers });
|
const response = await requestMethod({ method, url, headers });
|
||||||
const normalizedResponse = normalizePaginatedListResponse(response);
|
const normalizedResponse = normalizePaginatedListResponse(response);
|
||||||
url = ((normalizedResponse.headers.link || "").match(
|
url = ((normalizedResponse.headers.link || "").match(
|
||||||
/<([^>]+)>;\s*rel="next"/
|
/<([^<>]+)>;\s*rel="next"/
|
||||||
) || [])[1];
|
) || [])[1];
|
||||||
return { value: normalizedResponse };
|
return { value: normalizedResponse };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -5712,7 +5700,7 @@ var RequestError = class extends Error {
|
|||||||
if (options.request.headers.authorization) {
|
if (options.request.headers.authorization) {
|
||||||
requestCopy.headers = Object.assign({}, options.request.headers, {
|
requestCopy.headers = Object.assign({}, options.request.headers, {
|
||||||
authorization: options.request.headers.authorization.replace(
|
authorization: options.request.headers.authorization.replace(
|
||||||
/ .*$/,
|
/(?<! ) .*$/,
|
||||||
" [REDACTED]"
|
" [REDACTED]"
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
@@ -5780,7 +5768,7 @@ var import_endpoint = __nccwpck_require__(9440);
|
|||||||
var import_universal_user_agent = __nccwpck_require__(5030);
|
var import_universal_user_agent = __nccwpck_require__(5030);
|
||||||
|
|
||||||
// pkg/dist-src/version.js
|
// pkg/dist-src/version.js
|
||||||
var VERSION = "8.2.0";
|
var VERSION = "8.4.1";
|
||||||
|
|
||||||
// pkg/dist-src/is-plain-object.js
|
// pkg/dist-src/is-plain-object.js
|
||||||
function isPlainObject(value) {
|
function isPlainObject(value) {
|
||||||
@@ -5805,7 +5793,7 @@ function getBufferResponse(response) {
|
|||||||
|
|
||||||
// pkg/dist-src/fetch-wrapper.js
|
// pkg/dist-src/fetch-wrapper.js
|
||||||
function fetchWrapper(requestOptions) {
|
function fetchWrapper(requestOptions) {
|
||||||
var _a, _b, _c;
|
var _a, _b, _c, _d;
|
||||||
const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
|
const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
|
||||||
const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;
|
const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;
|
||||||
if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
||||||
@@ -5826,8 +5814,9 @@ function fetchWrapper(requestOptions) {
|
|||||||
return fetch(requestOptions.url, {
|
return fetch(requestOptions.url, {
|
||||||
method: requestOptions.method,
|
method: requestOptions.method,
|
||||||
body: requestOptions.body,
|
body: requestOptions.body,
|
||||||
|
redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect,
|
||||||
headers: requestOptions.headers,
|
headers: requestOptions.headers,
|
||||||
signal: (_c = requestOptions.request) == null ? void 0 : _c.signal,
|
signal: (_d = requestOptions.request) == null ? void 0 : _d.signal,
|
||||||
// duplex must be set if request.body is ReadableStream or Async Iterables.
|
// duplex must be set if request.body is ReadableStream or Async Iterables.
|
||||||
// See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
|
// See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
|
||||||
...requestOptions.body && { duplex: "half" }
|
...requestOptions.body && { duplex: "half" }
|
||||||
@@ -5838,7 +5827,7 @@ function fetchWrapper(requestOptions) {
|
|||||||
headers[keyAndValue[0]] = keyAndValue[1];
|
headers[keyAndValue[0]] = keyAndValue[1];
|
||||||
}
|
}
|
||||||
if ("deprecation" in headers) {
|
if ("deprecation" in headers) {
|
||||||
const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/);
|
const matches = headers.link && headers.link.match(/<([^<>]+)>; rel="deprecation"/);
|
||||||
const deprecationLink = matches && matches.pop();
|
const deprecationLink = matches && matches.pop();
|
||||||
log.warn(
|
log.warn(
|
||||||
`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
|
`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
|
||||||
@@ -11842,7 +11831,7 @@ module.exports = {
|
|||||||
|
|
||||||
|
|
||||||
const { parseSetCookie } = __nccwpck_require__(4408)
|
const { parseSetCookie } = __nccwpck_require__(4408)
|
||||||
const { stringify, getHeadersList } = __nccwpck_require__(3121)
|
const { stringify } = __nccwpck_require__(3121)
|
||||||
const { webidl } = __nccwpck_require__(1744)
|
const { webidl } = __nccwpck_require__(1744)
|
||||||
const { Headers } = __nccwpck_require__(554)
|
const { Headers } = __nccwpck_require__(554)
|
||||||
|
|
||||||
@@ -11918,14 +11907,13 @@ function getSetCookies (headers) {
|
|||||||
|
|
||||||
webidl.brandCheck(headers, Headers, { strict: false })
|
webidl.brandCheck(headers, Headers, { strict: false })
|
||||||
|
|
||||||
const cookies = getHeadersList(headers).cookies
|
const cookies = headers.getSetCookie()
|
||||||
|
|
||||||
if (!cookies) {
|
if (!cookies) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
// In older versions of undici, cookies is a list of name:value.
|
return cookies.map((pair) => parseSetCookie(pair))
|
||||||
return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -12353,14 +12341,15 @@ module.exports = {
|
|||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 3121:
|
/***/ 3121:
|
||||||
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
|
/***/ ((module) => {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
|
||||||
const assert = __nccwpck_require__(9491)
|
/**
|
||||||
const { kHeadersList } = __nccwpck_require__(2785)
|
* @param {string} value
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
function isCTLExcludingHtab (value) {
|
function isCTLExcludingHtab (value) {
|
||||||
if (value.length === 0) {
|
if (value.length === 0) {
|
||||||
return false
|
return false
|
||||||
@@ -12621,31 +12610,13 @@ function stringify (cookie) {
|
|||||||
return out.join('; ')
|
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 = {
|
module.exports = {
|
||||||
isCTLExcludingHtab,
|
isCTLExcludingHtab,
|
||||||
stringify,
|
validateCookieName,
|
||||||
getHeadersList
|
validateCookiePath,
|
||||||
|
validateCookieValue,
|
||||||
|
toIMFDate,
|
||||||
|
stringify
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -14574,6 +14545,14 @@ const { isUint8Array, isArrayBuffer } = __nccwpck_require__(9830)
|
|||||||
const { File: UndiciFile } = __nccwpck_require__(8511)
|
const { File: UndiciFile } = __nccwpck_require__(8511)
|
||||||
const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685)
|
const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685)
|
||||||
|
|
||||||
|
let random
|
||||||
|
try {
|
||||||
|
const crypto = __nccwpck_require__(6005)
|
||||||
|
random = (max) => crypto.randomInt(0, max)
|
||||||
|
} catch {
|
||||||
|
random = (max) => Math.floor(Math.random(max))
|
||||||
|
}
|
||||||
|
|
||||||
let ReadableStream = globalThis.ReadableStream
|
let ReadableStream = globalThis.ReadableStream
|
||||||
|
|
||||||
/** @type {globalThis['File']} */
|
/** @type {globalThis['File']} */
|
||||||
@@ -14659,7 +14638,7 @@ function extractBody (object, keepalive = false) {
|
|||||||
// Set source to a copy of the bytes held by object.
|
// Set source to a copy of the bytes held by object.
|
||||||
source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))
|
source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))
|
||||||
} else if (util.isFormDataLike(object)) {
|
} else if (util.isFormDataLike(object)) {
|
||||||
const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`
|
const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`
|
||||||
const prefix = `--${boundary}\r\nContent-Disposition: form-data`
|
const prefix = `--${boundary}\r\nContent-Disposition: form-data`
|
||||||
|
|
||||||
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
|
/*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
|
||||||
@@ -16641,6 +16620,7 @@ const {
|
|||||||
isValidHeaderName,
|
isValidHeaderName,
|
||||||
isValidHeaderValue
|
isValidHeaderValue
|
||||||
} = __nccwpck_require__(2538)
|
} = __nccwpck_require__(2538)
|
||||||
|
const util = __nccwpck_require__(3837)
|
||||||
const { webidl } = __nccwpck_require__(1744)
|
const { webidl } = __nccwpck_require__(1744)
|
||||||
const assert = __nccwpck_require__(9491)
|
const assert = __nccwpck_require__(9491)
|
||||||
|
|
||||||
@@ -17194,6 +17174,9 @@ Object.defineProperties(Headers.prototype, {
|
|||||||
[Symbol.toStringTag]: {
|
[Symbol.toStringTag]: {
|
||||||
value: 'Headers',
|
value: 'Headers',
|
||||||
configurable: true
|
configurable: true
|
||||||
|
},
|
||||||
|
[util.inspect.custom]: {
|
||||||
|
enumerable: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -26370,6 +26353,20 @@ class Pool extends PoolBase {
|
|||||||
? { ...options.interceptors }
|
? { ...options.interceptors }
|
||||||
: undefined
|
: undefined
|
||||||
this[kFactory] = factory
|
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] () {
|
[kGetDispatcher] () {
|
||||||
@@ -29482,6 +29479,14 @@ module.exports = require("net");
|
|||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 6005:
|
||||||
|
/***/ ((module) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
module.exports = require("node:crypto");
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
/***/ 5673:
|
/***/ 5673:
|
||||||
/***/ ((module) => {
|
/***/ ((module) => {
|
||||||
|
|
||||||
|
|||||||
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
1375
package-lock.json
generated
1375
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
23
package.json
23
package.json
@@ -5,7 +5,10 @@
|
|||||||
"author": "GitHub and contributors",
|
"author": "GitHub and contributors",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.10.1",
|
"@actions/core": "^1.10.1",
|
||||||
"@actions/github": "^6.0.0"
|
"@actions/github": "^6.0.0",
|
||||||
|
"@octokit/plugin-paginate-rest": "^9.2.2",
|
||||||
|
"@octokit/request": "^8.4.1",
|
||||||
|
"@octokit/request-error": "^5.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20.0.0",
|
"node": ">=20.0.0",
|
||||||
@@ -14,19 +17,19 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@github/prettier-config": "^0.0.6",
|
"@github/prettier-config": "^0.0.6",
|
||||||
"@types/jest": "^29.5.12",
|
"@types/jest": "^29.5.12",
|
||||||
"@types/node": "16.18.96",
|
"@types/node": "16.18.101",
|
||||||
"@typescript-eslint/eslint-plugin": "^7.6.0",
|
"@typescript-eslint/eslint-plugin": "^7.14.1",
|
||||||
"@typescript-eslint/parser": "^7.6.0",
|
"@typescript-eslint/parser": "^7.14.1",
|
||||||
"@vercel/ncc": "^0.38.1",
|
"@vercel/ncc": "^0.38.1",
|
||||||
"concurrently": "^8.2.2",
|
"concurrently": "^8.2.2",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-plugin-github": "^4.10.2",
|
"eslint-plugin-github": "^5.0.1",
|
||||||
"eslint-plugin-jest": "^27.9.0",
|
"eslint-plugin-jest": "^28.6.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.2.5",
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"prettier": "3.2.5",
|
"prettier": "3.5.3",
|
||||||
"ts-jest": "^29.1.2",
|
"ts-jest": "^29.3.0",
|
||||||
"typescript": "^5.4.5"
|
"typescript": "^5.5.2"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"actions",
|
"actions",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "ES2015" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */,
|
"target": "ES2018" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */,
|
||||||
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
|
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
|
||||||
"outDir": "./lib" /* Redirect output structure to the directory. */,
|
"outDir": "./lib" /* Redirect output structure to the directory. */,
|
||||||
"rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
|
"rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
|
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
|
||||||
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
|
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
|
||||||
"noUncheckedIndexedAccess": true,
|
"noUncheckedIndexedAccess": true,
|
||||||
"lib": ["ES2015"]
|
"lib": ["ES2018"]
|
||||||
},
|
},
|
||||||
"exclude": ["node_modules", "**/*.test.ts"]
|
"exclude": ["node_modules", "**/*.test.ts"]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user