From ae02a7bfb83569d73b45515ae6082f80912783f2 Mon Sep 17 00:00:00 2001 From: danadajian Date: Wed, 5 Jan 2022 17:50:01 -0600 Subject: [PATCH] fix: projects api helpers (#68) --- .editorconfig | 4 ---- .github/workflows/create-project-card.yml | 4 ++-- .github/workflows/move-project-card.yml | 6 +++--- dist/0.index.js | 4 ++-- dist/0.index.js.map | 2 +- dist/101.index.js | 4 ++-- dist/101.index.js.map | 2 +- dist/124.index.js | 4 ++-- dist/124.index.js.map | 2 +- dist/263.index.js | 4 ++-- dist/263.index.js.map | 2 +- dist/4.index.js | 4 ++-- dist/4.index.js.map | 2 +- dist/420.index.js | 4 ++-- dist/420.index.js.map | 2 +- dist/473.index.js | 4 ++-- dist/473.index.js.map | 2 +- dist/807.index.js | 4 ++-- dist/807.index.js.map | 2 +- dist/905.index.js | 4 ++-- dist/905.index.js.map | 2 +- dist/956.index.js | 4 ++-- dist/956.index.js.map | 2 +- src/constants.ts | 4 ++-- 24 files changed, 37 insertions(+), 41 deletions(-) diff --git a/.editorconfig b/.editorconfig index 0f22917f4..7b60eb04b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -16,10 +16,6 @@ indent_size = 2 [*.{ts,js,json}] indent_size = 2 -[*.bat] -indent_style = tab -end_of_line = crlf - [LICENSE] insert_final_newline = false diff --git a/.github/workflows/create-project-card.yml b/.github/workflows/create-project-card.yml index c51d83fd6..57a21b4fc 100644 --- a/.github/workflows/create-project-card.yml +++ b/.github/workflows/create-project-card.yml @@ -16,6 +16,6 @@ jobs: - uses: ./ with: helper: create-project-card - project_name: 'test project' - project_destination_column_name: 'test column 1' + project_name: Test Project + project_destination_column_name: Test Column 1 github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/move-project-card.yml b/.github/workflows/move-project-card.yml index d3da10909..272ed94bc 100644 --- a/.github/workflows/move-project-card.yml +++ b/.github/workflows/move-project-card.yml @@ -16,7 +16,7 @@ jobs: - uses: ./ with: helper: move-project-card - project_name: 'test project' - project_origin_column_name: 'test column 1' - project_destination_column_name: 'test column 2' + project_name: Test Project + project_origin_column_name: Test Column 1 + project_destination_column_name: Test Column 2 github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/dist/0.index.js b/dist/0.index.js index 979179d70..65c9a1d19 100644 --- a/dist/0.index.js +++ b/dist/0.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/0.index.js.map b/dist/0.index.js.map index ef6436ad2..772df749b 100644 --- a/dist/0.index.js.map +++ b/dist/0.index.js.map @@ -1 +1 @@ -{"version":3,"file":"0.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/set-latest-pipeline-status.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { DEFAULT_PIPELINE_STATUS, GITHUB_OPTIONS, PRODUCTION_ENVIRONMENT } from '../constants';\nimport { PipelineState } from '../types';\nimport { context as githubContext } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface SetLatestPipelineStatus {\n sha: string;\n context?: string;\n environment?: string;\n}\n\nexport const setLatestPipelineStatus = ({\n sha,\n context = DEFAULT_PIPELINE_STATUS,\n environment = PRODUCTION_ENVIRONMENT\n}: SetLatestPipelineStatus) =>\n octokit.repos\n .listDeployments({\n environment,\n ...githubContext.repo,\n ...GITHUB_OPTIONS\n })\n .then(deploymentsResponse => {\n const deployment_id = deploymentsResponse.data.find(Boolean)?.id;\n if (!deployment_id) {\n core.setFailed('No deployments found.');\n throw new Error();\n }\n return octokit.repos.listDeploymentStatuses({\n deployment_id,\n ...githubContext.repo,\n ...GITHUB_OPTIONS\n });\n })\n .then(deploymentStatusResponse => deploymentStatusResponse.data.find(Boolean))\n .then(deploymentStatus => {\n if (!deploymentStatus) {\n core.setFailed('No deployment statuses found.');\n throw new Error();\n }\n return octokit.repos.createCommitStatus({\n sha,\n context,\n state: deploymentStateToPipelineStateMap[deploymentStatus.state],\n description: deploymentStatus.description,\n target_url: deploymentStatus.target_url,\n ...githubContext.repo\n });\n });\n\nconst deploymentStateToPipelineStateMap: { [deploymentState: string]: PipelineState } = {\n in_progress: 'pending',\n success: 'success',\n failure: 'failure',\n inactive: 'error'\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AACA;AAEA;AACA;AAQA,4TAMA;AAKA;;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;ACrEA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"0.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/set-latest-pipeline-status.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { DEFAULT_PIPELINE_STATUS, GITHUB_OPTIONS, PRODUCTION_ENVIRONMENT } from '../constants';\nimport { PipelineState } from '../types';\nimport { context as githubContext } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface SetLatestPipelineStatus {\n sha: string;\n context?: string;\n environment?: string;\n}\n\nexport const setLatestPipelineStatus = ({\n sha,\n context = DEFAULT_PIPELINE_STATUS,\n environment = PRODUCTION_ENVIRONMENT\n}: SetLatestPipelineStatus) =>\n octokit.repos\n .listDeployments({\n environment,\n ...githubContext.repo,\n ...GITHUB_OPTIONS\n })\n .then(deploymentsResponse => {\n const deployment_id = deploymentsResponse.data.find(Boolean)?.id;\n if (!deployment_id) {\n core.setFailed('No deployments found.');\n throw new Error();\n }\n return octokit.repos.listDeploymentStatuses({\n deployment_id,\n ...githubContext.repo,\n ...GITHUB_OPTIONS\n });\n })\n .then(deploymentStatusResponse => deploymentStatusResponse.data.find(Boolean))\n .then(deploymentStatus => {\n if (!deploymentStatus) {\n core.setFailed('No deployment statuses found.');\n throw new Error();\n }\n return octokit.repos.createCommitStatus({\n sha,\n context,\n state: deploymentStateToPipelineStateMap[deploymentStatus.state],\n description: deploymentStatus.description,\n target_url: deploymentStatus.target_url,\n ...githubContext.repo\n });\n });\n\nconst deploymentStateToPipelineStateMap: { [deploymentState: string]: PipelineState } = {\n in_progress: 'pending',\n success: 'success',\n failure: 'failure',\n inactive: 'error'\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AACA;AAEA;AACA;AAQA,4TAMA;AAKA;;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAMA;AAEA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;ACrEA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/101.index.js b/dist/101.index.js index c695eb025..81f7b470a 100644 --- a/dist/101.index.js +++ b/dist/101.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/101.index.js.map b/dist/101.index.js.map index 38ee3b05d..494d83654 100644 --- a/dist/101.index.js.map +++ b/dist/101.index.js.map @@ -1 +1 @@ -{"version":3,"file":"101.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/notify-pipeline-complete.ts","webpack://github-helpers/./src/helpers/set-deployment-status.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DEFAULT_PIPELINE_DESCRIPTION, DEFAULT_PIPELINE_STATUS, PRODUCTION_ENVIRONMENT } from '../constants';\nimport { context as githubContext } from '@actions/github';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\nimport { setDeploymentStatus } from './set-deployment-status';\n\ninterface NotifyPipelineComplete {\n context?: string;\n description?: string;\n target_url?: string;\n}\n\nexport const notifyPipelineComplete = ({\n context = DEFAULT_PIPELINE_STATUS,\n description = DEFAULT_PIPELINE_DESCRIPTION,\n target_url\n}: NotifyPipelineComplete) =>\n Promise.all([\n octokit.pulls\n .list({\n state: 'open',\n per_page: 100,\n ...githubContext.repo\n })\n .then(pullRequestsResponse => {\n const commitHashes = pullRequestsResponse.data.map(pullRequest => pullRequest.head.sha);\n return map(commitHashes, sha =>\n octokit.repos.createCommitStatus({\n sha,\n context,\n state: 'success',\n description,\n target_url,\n ...githubContext.repo\n })\n );\n }),\n setDeploymentStatus({\n description: DEFAULT_PIPELINE_DESCRIPTION,\n environment: PRODUCTION_ENVIRONMENT,\n state: 'success',\n ...githubContext.repo\n })\n ]);\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DeploymentState } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface SetDeploymentStatus {\n state: DeploymentState;\n environment: string;\n sha?: string;\n description?: string;\n target_url?: string;\n environment_url?: string;\n}\n\nexport const setDeploymentStatus = ({ sha, state, environment, description, target_url, environment_url }: SetDeploymentStatus) =>\n octokit.repos\n .listDeployments({\n sha,\n environment,\n ...context.repo,\n ...GITHUB_OPTIONS\n })\n .then(deploymentsResponse => {\n const deployment_id = deploymentsResponse.data.find(Boolean)?.id;\n if (deployment_id) {\n return octokit.repos.createDeploymentStatus({\n state,\n deployment_id,\n description,\n target_url,\n environment_url,\n ...context.repo,\n ...GITHUB_OPTIONS\n });\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AAQA;AAMA,gFACA;AAKA;AACA;AACA;AAGA;AAGA;AAIA;AACA;AAMA;;;A;;;;;;;;;;;;;;ACxDA;;;;;;;;;;;AAWA;AAGA;AACA;AACA;AAWA,yMAEA;AAEA;AAIA;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;;;A;;;;;;;;;;;;;AChDA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"101.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/notify-pipeline-complete.ts","webpack://github-helpers/./src/helpers/set-deployment-status.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DEFAULT_PIPELINE_DESCRIPTION, DEFAULT_PIPELINE_STATUS, PRODUCTION_ENVIRONMENT } from '../constants';\nimport { context as githubContext } from '@actions/github';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\nimport { setDeploymentStatus } from './set-deployment-status';\n\ninterface NotifyPipelineComplete {\n context?: string;\n description?: string;\n target_url?: string;\n}\n\nexport const notifyPipelineComplete = ({\n context = DEFAULT_PIPELINE_STATUS,\n description = DEFAULT_PIPELINE_DESCRIPTION,\n target_url\n}: NotifyPipelineComplete) =>\n Promise.all([\n octokit.pulls\n .list({\n state: 'open',\n per_page: 100,\n ...githubContext.repo\n })\n .then(pullRequestsResponse => {\n const commitHashes = pullRequestsResponse.data.map(pullRequest => pullRequest.head.sha);\n return map(commitHashes, sha =>\n octokit.repos.createCommitStatus({\n sha,\n context,\n state: 'success',\n description,\n target_url,\n ...githubContext.repo\n })\n );\n }),\n setDeploymentStatus({\n description: DEFAULT_PIPELINE_DESCRIPTION,\n environment: PRODUCTION_ENVIRONMENT,\n state: 'success',\n ...githubContext.repo\n })\n ]);\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DeploymentState } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface SetDeploymentStatus {\n state: DeploymentState;\n environment: string;\n sha?: string;\n description?: string;\n target_url?: string;\n environment_url?: string;\n}\n\nexport const setDeploymentStatus = ({ sha, state, environment, description, target_url, environment_url }: SetDeploymentStatus) =>\n octokit.repos\n .listDeployments({\n sha,\n environment,\n ...context.repo,\n ...GITHUB_OPTIONS\n })\n .then(deploymentsResponse => {\n const deployment_id = deploymentsResponse.data.find(Boolean)?.id;\n if (deployment_id) {\n return octokit.repos.createDeploymentStatus({\n state,\n deployment_id,\n description,\n target_url,\n environment_url,\n ...context.repo,\n ...GITHUB_OPTIONS\n });\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AAQA;AAMA,gFACA;AAKA;AACA;AACA;AAGA;AAGA;AAIA;AACA;AAMA;;;A;;;;;;;;;;;;;;ACxDA;;;;;;;;;;;AAWA;AAGA;AACA;AACA;AAWA,yMAEA;AAEA;AAIA;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;;;A;;;;;;;;;;;;;AChDA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/124.index.js b/dist/124.index.js index c07541d6a..e89ca7525 100644 --- a/dist/124.index.js +++ b/dist/124.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/124.index.js.map b/dist/124.index.js.map index 1b646827d..4f6720ce6 100644 --- a/dist/124.index.js.map +++ b/dist/124.index.js.map @@ -1 +1 @@ -{"version":3,"file":"124.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/create-project-card.ts","webpack://github-helpers/./src/octokit.ts","webpack://github-helpers/./src/utils/get-project-columns.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { SingleColumn, getDestinationColumn, getProjectColumns } from '../utils/get-project-columns';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface CreateProjectCardProps {\n project_name: string;\n project_destination_column_name: string;\n note?: string;\n}\n\nexport const createProjectCard = async ({ project_name, project_destination_column_name, note }: CreateProjectCardProps) => {\n const columnsList = await getProjectColumns({ project_name });\n\n if (!columnsList?.data?.length) {\n core.error(`There are no columns associated to ${project_name} project.`);\n return;\n }\n\n const destinationColumn = getDestinationColumn(columnsList, project_destination_column_name);\n\n if (!destinationColumn) {\n core.info('No destination column was found');\n return;\n }\n const cardParams = await generateCardParams(destinationColumn, note);\n\n return octokit.projects.createCard(cardParams);\n};\n\nconst generateCardParams = async (filteredColumn: SingleColumn, note?: string) => {\n const getResponse = await octokit.pulls.get({ pull_number: context.issue.number, ...context.repo });\n const pullRequest = getResponse.data;\n if (note) {\n return {\n column_id: filteredColumn?.id,\n note,\n ...context.repo,\n ...GITHUB_OPTIONS\n };\n }\n\n return {\n column_id: filteredColumn.id,\n content_id: pullRequest.id,\n content_type: 'PullRequest',\n note,\n ...context.repo,\n ...GITHUB_OPTIONS\n };\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { ColumnListResponse, ProjectListResponse } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface GetProjectColumns {\n project_name: string;\n}\n\nexport interface SingleColumn {\n url: string;\n project_url: string;\n cards_url: string;\n id: number;\n node_id: string;\n name: string;\n created_at: string;\n updated_at: string;\n}\n\nexport const getProjectColumns = async ({ project_name }: GetProjectColumns) => {\n const projectList = await octokit.projects.listForRepo({ state: 'open', per_page: 100, ...context.repo, ...GITHUB_OPTIONS });\n const project = findProjectToModify(projectList, project_name);\n\n if (!project) {\n return null;\n }\n\n return octokit.projects.listColumns({ project_id: project.id, per_page: 100, ...GITHUB_OPTIONS });\n};\n\nconst findProjectToModify = (projectsResponse: ProjectListResponse, project_name: string) =>\n projectsResponse.data.find(project => project.name === project_name);\n\nexport const getDestinationColumn = (columns: ColumnListResponse, project_destination_column_name: string) =>\n columns.data.find(column => column.name === project_destination_column_name);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AAQA;;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAMA;AAEA;AAQA;;;A;;;;;;;;;;;;;AChEA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;;;;;;;;;;;;ACjBA;;;;;;;;;;;AAWA;;;;;;;;;;AAGA;AACA;AACA;AAiBA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAGA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"124.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/create-project-card.ts","webpack://github-helpers/./src/octokit.ts","webpack://github-helpers/./src/utils/get-project-columns.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { SingleColumn, getDestinationColumn, getProjectColumns } from '../utils/get-project-columns';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface CreateProjectCardProps {\n project_name: string;\n project_destination_column_name: string;\n note?: string;\n}\n\nexport const createProjectCard = async ({ project_name, project_destination_column_name, note }: CreateProjectCardProps) => {\n const columnsList = await getProjectColumns({ project_name });\n\n if (!columnsList?.data?.length) {\n core.error(`There are no columns associated to ${project_name} project.`);\n return;\n }\n\n const destinationColumn = getDestinationColumn(columnsList, project_destination_column_name);\n\n if (!destinationColumn) {\n core.info('No destination column was found');\n return;\n }\n const cardParams = await generateCardParams(destinationColumn, note);\n\n return octokit.projects.createCard(cardParams);\n};\n\nconst generateCardParams = async (filteredColumn: SingleColumn, note?: string) => {\n const getResponse = await octokit.pulls.get({ pull_number: context.issue.number, ...context.repo });\n const pullRequest = getResponse.data;\n if (note) {\n return {\n column_id: filteredColumn?.id,\n note,\n ...context.repo,\n ...GITHUB_OPTIONS\n };\n }\n\n return {\n column_id: filteredColumn.id,\n content_id: pullRequest.id,\n content_type: 'PullRequest',\n note,\n ...context.repo,\n ...GITHUB_OPTIONS\n };\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { ColumnListResponse, ProjectListResponse } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface GetProjectColumns {\n project_name: string;\n}\n\nexport interface SingleColumn {\n url: string;\n project_url: string;\n cards_url: string;\n id: number;\n node_id: string;\n name: string;\n created_at: string;\n updated_at: string;\n}\n\nexport const getProjectColumns = async ({ project_name }: GetProjectColumns) => {\n const projectList = await octokit.projects.listForRepo({ state: 'open', per_page: 100, ...context.repo, ...GITHUB_OPTIONS });\n const project = findProjectToModify(projectList, project_name);\n\n if (!project) {\n return null;\n }\n\n return octokit.projects.listColumns({ project_id: project.id, per_page: 100, ...GITHUB_OPTIONS });\n};\n\nconst findProjectToModify = (projectsResponse: ProjectListResponse, project_name: string) =>\n projectsResponse.data.find(project => project.name === project_name);\n\nexport const getDestinationColumn = (columns: ColumnListResponse, project_destination_column_name: string) =>\n columns.data.find(column => column.name === project_destination_column_name);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AAQA;;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAMA;AAEA;AAQA;;;A;;;;;;;;;;;;;AChEA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;;;;;;;;;;;;ACjBA;;;;;;;;;;;AAWA;;;;;;;;;;AAGA;AACA;AACA;AAiBA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAGA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/263.index.js b/dist/263.index.js index f721692d8..e60198fcd 100644 --- a/dist/263.index.js +++ b/dist/263.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/263.index.js.map b/dist/263.index.js.map index 6e9c45943..0a3213b23 100644 --- a/dist/263.index.js.map +++ b/dist/263.index.js.map @@ -1 +1 @@ -{"version":3,"file":"263.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/move-project-card.ts","webpack://github-helpers/./src/octokit.ts","webpack://github-helpers/./src/utils/get-project-columns.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { getDestinationColumn, getProjectColumns } from '../utils/get-project-columns';\nimport { ColumnListResponse } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface MoveProjectCardProps {\n project_destination_column_name: string;\n project_name: string;\n project_origin_column_name: string;\n}\n\nexport const moveProjectCard = async ({\n project_destination_column_name,\n project_origin_column_name,\n project_name\n}: MoveProjectCardProps) => {\n const columnsList = await getProjectColumns({ project_name });\n\n if (!columnsList?.data?.length) {\n core.error(`There are no columns associated to ${project_name} project.`);\n return;\n }\n\n const destinationColumn = getDestinationColumn(columnsList, project_destination_column_name);\n const originColumn = getOriginColumn(columnsList, project_origin_column_name);\n\n if (!originColumn) {\n core.info(`No origin column was found for the name ${project_origin_column_name}`);\n return;\n }\n\n const cardToMove = await getCardToMove(originColumn);\n\n if (cardToMove && destinationColumn) {\n return octokit.projects.moveCard({ card_id: cardToMove.id, column_id: destinationColumn.id, position: 'top', ...GITHUB_OPTIONS });\n } else {\n core.info('No destination column or card to move was found');\n return;\n }\n};\n\nconst getCardToMove = async (originColumn: OriginColumn) => {\n const getResponse = await octokit.pulls.get({ pull_number: context.issue.number, ...context.repo });\n const pullRequest = getResponse.data;\n const cardsResponse = await octokit.projects.listCards({ column_id: originColumn.id, ...GITHUB_OPTIONS });\n\n return cardsResponse.data.find(card => card.content_url === pullRequest.issue_url);\n};\n\ninterface OriginColumn {\n id: number;\n}\n\nconst getOriginColumn = (columns: ColumnListResponse, project_origin_column_name: string) =>\n columns.data.find(column => column.name === project_origin_column_name);\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { ColumnListResponse, ProjectListResponse } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface GetProjectColumns {\n project_name: string;\n}\n\nexport interface SingleColumn {\n url: string;\n project_url: string;\n cards_url: string;\n id: number;\n node_id: string;\n name: string;\n created_at: string;\n updated_at: string;\n}\n\nexport const getProjectColumns = async ({ project_name }: GetProjectColumns) => {\n const projectList = await octokit.projects.listForRepo({ state: 'open', per_page: 100, ...context.repo, ...GITHUB_OPTIONS });\n const project = findProjectToModify(projectList, project_name);\n\n if (!project) {\n return null;\n }\n\n return octokit.projects.listColumns({ project_id: project.id, per_page: 100, ...GITHUB_OPTIONS });\n};\n\nconst findProjectToModify = (projectsResponse: ProjectListResponse, project_name: string) =>\n projectsResponse.data.find(project => project.name === project_name);\n\nexport const getDestinationColumn = (columns: ColumnListResponse, project_destination_column_name: string) =>\n columns.data.find(column => column.name === project_destination_column_name);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AAEA;AACA;AACA;AAQA;;AAKA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAMA;;;A;;;;;;;;;;;;;ACpEA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;;;;;;;;;;;;ACjBA;;;;;;;;;;;AAWA;;;;;;;;;;AAGA;AACA;AACA;AAiBA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAGA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"263.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/move-project-card.ts","webpack://github-helpers/./src/octokit.ts","webpack://github-helpers/./src/utils/get-project-columns.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { getDestinationColumn, getProjectColumns } from '../utils/get-project-columns';\nimport { ColumnListResponse } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface MoveProjectCardProps {\n project_destination_column_name: string;\n project_name: string;\n project_origin_column_name: string;\n}\n\nexport const moveProjectCard = async ({\n project_destination_column_name,\n project_origin_column_name,\n project_name\n}: MoveProjectCardProps) => {\n const columnsList = await getProjectColumns({ project_name });\n\n if (!columnsList?.data?.length) {\n core.error(`There are no columns associated to ${project_name} project.`);\n return;\n }\n\n const destinationColumn = getDestinationColumn(columnsList, project_destination_column_name);\n const originColumn = getOriginColumn(columnsList, project_origin_column_name);\n\n if (!originColumn) {\n core.info(`No origin column was found for the name ${project_origin_column_name}`);\n return;\n }\n\n const cardToMove = await getCardToMove(originColumn);\n\n if (cardToMove && destinationColumn) {\n return octokit.projects.moveCard({ card_id: cardToMove.id, column_id: destinationColumn.id, position: 'top', ...GITHUB_OPTIONS });\n } else {\n core.info('No destination column or card to move was found');\n return;\n }\n};\n\nconst getCardToMove = async (originColumn: OriginColumn) => {\n const getResponse = await octokit.pulls.get({ pull_number: context.issue.number, ...context.repo });\n const pullRequest = getResponse.data;\n const cardsResponse = await octokit.projects.listCards({ column_id: originColumn.id, ...GITHUB_OPTIONS });\n\n return cardsResponse.data.find(card => card.content_url === pullRequest.issue_url);\n};\n\ninterface OriginColumn {\n id: number;\n}\n\nconst getOriginColumn = (columns: ColumnListResponse, project_origin_column_name: string) =>\n columns.data.find(column => column.name === project_origin_column_name);\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { ColumnListResponse, ProjectListResponse } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface GetProjectColumns {\n project_name: string;\n}\n\nexport interface SingleColumn {\n url: string;\n project_url: string;\n cards_url: string;\n id: number;\n node_id: string;\n name: string;\n created_at: string;\n updated_at: string;\n}\n\nexport const getProjectColumns = async ({ project_name }: GetProjectColumns) => {\n const projectList = await octokit.projects.listForRepo({ state: 'open', per_page: 100, ...context.repo, ...GITHUB_OPTIONS });\n const project = findProjectToModify(projectList, project_name);\n\n if (!project) {\n return null;\n }\n\n return octokit.projects.listColumns({ project_id: project.id, per_page: 100, ...GITHUB_OPTIONS });\n};\n\nconst findProjectToModify = (projectsResponse: ProjectListResponse, project_name: string) =>\n projectsResponse.data.find(project => project.name === project_name);\n\nexport const getDestinationColumn = (columns: ColumnListResponse, project_destination_column_name: string) =>\n columns.data.find(column => column.name === project_destination_column_name);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AAEA;AACA;AACA;AAQA;;AAKA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAMA;;;A;;;;;;;;;;;;;ACpEA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;;;;;;;;;;;;ACjBA;;;;;;;;;;;AAWA;;;;;;;;;;AAGA;AACA;AACA;AAiBA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAGA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/4.index.js b/dist/4.index.js index a7a1ad82f..c66ae438b 100644 --- a/dist/4.index.js +++ b/dist/4.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/4.index.js.map b/dist/4.index.js.map index 1a72d6c91..0790105bb 100644 --- a/dist/4.index.js.map +++ b/dist/4.index.js.map @@ -1 +1 @@ -{"version":3,"file":"4.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/prepare-queued-pr-for-merge.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { FIRST_QUEUED_PR_LABEL, JUMP_THE_QUEUE_PR_LABEL, READY_FOR_MERGE_PR_LABEL } from '../constants';\nimport { PullRequest, PullRequestListResponse, SimplePullRequest } from '../types';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\nexport const prepareQueuedPrForMerge = () =>\n octokit.pulls\n .list({\n state: 'open',\n per_page: 100,\n ...context.repo\n })\n .then(findNextPrToMerge)\n .then(pullRequest => {\n if (pullRequest) {\n return updatePrWithMainline(pullRequest);\n }\n });\n\nconst findNextPrToMerge = (pullRequestsResponse: PullRequestListResponse) =>\n pullRequestsResponse.data.find(pr => hasRequiredLabels(pr, [READY_FOR_MERGE_PR_LABEL, JUMP_THE_QUEUE_PR_LABEL])) ??\n pullRequestsResponse.data.find(pr => hasRequiredLabels(pr, [READY_FOR_MERGE_PR_LABEL, FIRST_QUEUED_PR_LABEL]));\n\nconst hasRequiredLabels = (pr: SimplePullRequest, requiredLabels: string[]) =>\n requiredLabels.every(mergeQueueLabel => pr.labels.some(label => label.name === mergeQueueLabel));\n\nexport const updatePrWithMainline = (pullRequest: PullRequest | SimplePullRequest) =>\n octokit.repos\n .merge({\n base: pullRequest.head.ref,\n head: 'HEAD',\n ...context.repo\n })\n .catch(error => {\n if (error.status === 204) {\n core.info('The first PR in the queue is already up to date!');\n }\n if (error.status === 409) {\n core.info('The first PR in the queue has a merge conflict.');\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AACA;AAEA;AACA;AAEA,kHAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;AACA;AAEA;AAGA,4HAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;ACtDA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"4.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/prepare-queued-pr-for-merge.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { FIRST_QUEUED_PR_LABEL, JUMP_THE_QUEUE_PR_LABEL, READY_FOR_MERGE_PR_LABEL } from '../constants';\nimport { PullRequest, PullRequestListResponse, SimplePullRequest } from '../types';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\nexport const prepareQueuedPrForMerge = () =>\n octokit.pulls\n .list({\n state: 'open',\n per_page: 100,\n ...context.repo\n })\n .then(findNextPrToMerge)\n .then(pullRequest => {\n if (pullRequest) {\n return updatePrWithMainline(pullRequest);\n }\n });\n\nconst findNextPrToMerge = (pullRequestsResponse: PullRequestListResponse) =>\n pullRequestsResponse.data.find(pr => hasRequiredLabels(pr, [READY_FOR_MERGE_PR_LABEL, JUMP_THE_QUEUE_PR_LABEL])) ??\n pullRequestsResponse.data.find(pr => hasRequiredLabels(pr, [READY_FOR_MERGE_PR_LABEL, FIRST_QUEUED_PR_LABEL]));\n\nconst hasRequiredLabels = (pr: SimplePullRequest, requiredLabels: string[]) =>\n requiredLabels.every(mergeQueueLabel => pr.labels.some(label => label.name === mergeQueueLabel));\n\nexport const updatePrWithMainline = (pullRequest: PullRequest | SimplePullRequest) =>\n octokit.repos\n .merge({\n base: pullRequest.head.ref,\n head: 'HEAD',\n ...context.repo\n })\n .catch(error => {\n if (error.status === 204) {\n core.info('The first PR in the queue is already up to date!');\n }\n if (error.status === 409) {\n core.info('The first PR in the queue has a merge conflict.');\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AACA;AAEA;AACA;AAEA,kHAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;AACA;AAEA;AAGA,4HAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;ACtDA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/420.index.js b/dist/420.index.js index 402133b6f..a883f3b1a 100644 --- a/dist/420.index.js +++ b/dist/420.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/420.index.js.map b/dist/420.index.js.map index 62eeae8b4..380d967f5 100644 --- a/dist/420.index.js.map +++ b/dist/420.index.js.map @@ -1 +1 @@ -{"version":3,"file":"420.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/initiate-deployment.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { CreateDeploymentResponse, DeploymentState } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface InitiateDeployment {\n sha: string;\n environment: string;\n state?: DeploymentState;\n environment_url?: string;\n description?: string;\n target_url?: string;\n}\n\nexport const initiateDeployment = ({\n sha,\n state = 'in_progress',\n environment,\n environment_url,\n description,\n target_url\n}: InitiateDeployment) =>\n octokit.repos\n .createDeployment({\n ref: sha,\n environment,\n required_contexts: [],\n ...context.repo,\n ...GITHUB_OPTIONS\n })\n .then(newDeploymentResponse => {\n const deployment_id = (newDeploymentResponse.data as CreateDeploymentResponse).id;\n return octokit.repos.createDeploymentStatus({\n state,\n deployment_id,\n description,\n environment_url,\n target_url,\n ...context.repo,\n ...GITHUB_OPTIONS\n });\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAGA;AACA;AACA;AAWA,0NASA;AAOA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;;;A;;;;;;;;;;;;;ACtDA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"420.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/initiate-deployment.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { CreateDeploymentResponse, DeploymentState } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface InitiateDeployment {\n sha: string;\n environment: string;\n state?: DeploymentState;\n environment_url?: string;\n description?: string;\n target_url?: string;\n}\n\nexport const initiateDeployment = ({\n sha,\n state = 'in_progress',\n environment,\n environment_url,\n description,\n target_url\n}: InitiateDeployment) =>\n octokit.repos\n .createDeployment({\n ref: sha,\n environment,\n required_contexts: [],\n ...context.repo,\n ...GITHUB_OPTIONS\n })\n .then(newDeploymentResponse => {\n const deployment_id = (newDeploymentResponse.data as CreateDeploymentResponse).id;\n return octokit.repos.createDeploymentStatus({\n state,\n deployment_id,\n description,\n environment_url,\n target_url,\n ...context.repo,\n ...GITHUB_OPTIONS\n });\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAGA;AACA;AACA;AAWA,0NASA;AAOA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;;;A;;;;;;;;;;;;;ACtDA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/473.index.js b/dist/473.index.js index bce719873..a79fb842b 100644 --- a/dist/473.index.js +++ b/dist/473.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/473.index.js.map b/dist/473.index.js.map index d1e7dc5dc..e60234fc4 100644 --- a/dist/473.index.js.map +++ b/dist/473.index.js.map @@ -1 +1 @@ -{"version":3,"file":"473.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/utils/update-merge-queue.ts","webpack://github-helpers/./src/helpers/manage-merge-queue.ts","webpack://github-helpers/./src/helpers/prepare-queued-pr-for-merge.ts","webpack://github-helpers/./src/helpers/remove-label.ts","webpack://github-helpers/./src/helpers/set-commit-status.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { JUMP_THE_QUEUE_PR_LABEL, QUEUED_FOR_MERGE_PREFIX } from '../constants';\nimport { PullRequestSearchResults } from '../types';\nimport { context } from '@actions/github';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\nimport { removeLabelIfExists } from '../helpers/remove-label';\nimport { updatePrWithMainline } from '../helpers/prepare-queued-pr-for-merge';\n\nexport const updateMergeQueue = (queuedPrs: PullRequestSearchResults) => {\n const sortedPrs = sortPrsByQueuePosition(queuedPrs);\n return map(sortedPrs, updateQueuePosition);\n};\n\nconst sortPrsByQueuePosition = (queuedPrs: PullRequestSearchResults): QueuedPr[] =>\n queuedPrs\n .map(pr => {\n const label = pr.labels.find(label => label.name?.startsWith(QUEUED_FOR_MERGE_PREFIX))?.name;\n const isJumpingTheQueue = Boolean(pr.labels.find(label => label.name === JUMP_THE_QUEUE_PR_LABEL));\n const queuePosition = isJumpingTheQueue ? 0 : Number(label?.split('#')?.[1]);\n return {\n number: pr.number,\n label,\n queuePosition\n };\n })\n .sort((pr1, pr2) => pr1.queuePosition - pr2.queuePosition);\n\nconst updateQueuePosition = async (pr: QueuedPr, index: number) => {\n const { number, label, queuePosition } = pr;\n const newQueuePosition = index + 1;\n if (!label || isNaN(queuePosition) || queuePosition === newQueuePosition) {\n return;\n }\n if (newQueuePosition === 1) {\n const { data: pullRequest } = await octokit.pulls.get({ pull_number: number, ...context.repo });\n await Promise.all([removeLabelIfExists(JUMP_THE_QUEUE_PR_LABEL, number), updatePrWithMainline(pullRequest)]);\n }\n\n return Promise.all([\n octokit.issues.addLabels({\n labels: [`${QUEUED_FOR_MERGE_PREFIX} #${newQueuePosition}`],\n issue_number: number,\n ...context.repo\n }),\n removeLabelIfExists(label, number)\n ]);\n};\n\ntype QueuedPr = {\n number: number;\n label?: string;\n queuePosition: number;\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport {\n FIRST_QUEUED_PR_LABEL,\n JUMP_THE_QUEUE_PR_LABEL,\n MERGE_QUEUE_STATUS,\n QUEUED_FOR_MERGE_PREFIX,\n READY_FOR_MERGE_PR_LABEL\n} from '../constants';\nimport { PullRequest } from '../types';\nimport { context } from '@actions/github';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\nimport { removeLabelIfExists } from './remove-label';\nimport { setCommitStatus } from './set-commit-status';\nimport { updateMergeQueue } from '../utils/update-merge-queue';\n\nexport const manageMergeQueue = async () => {\n const { data: pullRequest } = await octokit.pulls.get({ pull_number: context.issue.number, ...context.repo });\n if (pullRequest.merged || !pullRequest.labels.find(label => label.name === READY_FOR_MERGE_PR_LABEL)) {\n core.info('This PR is not in the merge queue.');\n return removePrFromQueue(pullRequest);\n }\n const {\n data: { items, total_count: queuePosition }\n } = await getQueuedPrData();\n if (pullRequest.labels.find(label => label.name === JUMP_THE_QUEUE_PR_LABEL)) {\n return updateMergeQueue(items);\n }\n if (!pullRequest.labels.find(label => label.name?.startsWith(QUEUED_FOR_MERGE_PREFIX))) {\n await addPrToQueue(pullRequest, queuePosition);\n }\n const isFirstQueuePosition = queuePosition === 1 || pullRequest.labels.find(label => label.name === FIRST_QUEUED_PR_LABEL);\n return setCommitStatus({\n sha: pullRequest.head.sha,\n context: MERGE_QUEUE_STATUS,\n state: isFirstQueuePosition ? 'success' : 'pending',\n description: isFirstQueuePosition ? 'This PR is next to merge.' : 'This PR is in line to merge.'\n });\n};\n\nconst removePrFromQueue = async (pullRequest: PullRequest) => {\n const queueLabel = pullRequest.labels.find(label => label.name?.startsWith(QUEUED_FOR_MERGE_PREFIX))?.name;\n if (queueLabel) {\n await map([READY_FOR_MERGE_PR_LABEL, queueLabel], label => removeLabelIfExists(label, pullRequest.number));\n const {\n data: { items }\n } = await getQueuedPrData();\n await updateMergeQueue(items);\n }\n};\n\nconst addPrToQueue = async (pullRequest: PullRequest, queuePosition: number) =>\n octokit.issues.addLabels({\n labels: [`${QUEUED_FOR_MERGE_PREFIX} #${queuePosition}`],\n issue_number: context.issue.number,\n ...context.repo\n });\n\nconst getQueuedPrData = () => {\n const { repo, owner } = context.repo;\n return octokit.search.issuesAndPullRequests({\n q: `org:${owner}+repo:${repo}+is:pr+is:open+label:\"${READY_FOR_MERGE_PR_LABEL}\"`\n });\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { FIRST_QUEUED_PR_LABEL, JUMP_THE_QUEUE_PR_LABEL, READY_FOR_MERGE_PR_LABEL } from '../constants';\nimport { PullRequest, PullRequestListResponse, SimplePullRequest } from '../types';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\nexport const prepareQueuedPrForMerge = () =>\n octokit.pulls\n .list({\n state: 'open',\n per_page: 100,\n ...context.repo\n })\n .then(findNextPrToMerge)\n .then(pullRequest => {\n if (pullRequest) {\n return updatePrWithMainline(pullRequest);\n }\n });\n\nconst findNextPrToMerge = (pullRequestsResponse: PullRequestListResponse) =>\n pullRequestsResponse.data.find(pr => hasRequiredLabels(pr, [READY_FOR_MERGE_PR_LABEL, JUMP_THE_QUEUE_PR_LABEL])) ??\n pullRequestsResponse.data.find(pr => hasRequiredLabels(pr, [READY_FOR_MERGE_PR_LABEL, FIRST_QUEUED_PR_LABEL]));\n\nconst hasRequiredLabels = (pr: SimplePullRequest, requiredLabels: string[]) =>\n requiredLabels.every(mergeQueueLabel => pr.labels.some(label => label.name === mergeQueueLabel));\n\nexport const updatePrWithMainline = (pullRequest: PullRequest | SimplePullRequest) =>\n octokit.repos\n .merge({\n base: pullRequest.head.ref,\n head: 'HEAD',\n ...context.repo\n })\n .catch(error => {\n if (error.status === 204) {\n core.info('The first PR in the queue is already up to date!');\n }\n if (error.status === 409) {\n core.info('The first PR in the queue has a merge conflict.');\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface RemoveLabel {\n label: string;\n}\n\nexport const removeLabel = ({ label }: RemoveLabel) => removeLabelIfExists(label, context.issue.number);\n\nexport const removeLabelIfExists = (labelName: string, issue_number: number) =>\n octokit.issues\n .removeLabel({\n name: labelName,\n issue_number,\n ...context.repo\n })\n .catch(error => {\n if (error.status === 404) {\n core.info('Label is not present on PR.');\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { PipelineState } from '../types';\nimport { context as githubContext } from '@actions/github';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\n\ninterface SetCommitStatus {\n sha: string;\n context: string;\n state: PipelineState;\n description?: string;\n target_url?: string;\n}\n\nexport const setCommitStatus = ({ sha, context, state, description, target_url }: SetCommitStatus) =>\n map(context.split('\\n'), context =>\n octokit.repos.createCommitStatus({\n sha,\n context,\n state,\n description,\n target_url,\n ...githubContext.repo\n })\n );\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAKA;AACA;AACA;;;AC3DA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC5EA;;;;;;;;;;;AAWA;AAEA;AACA;AAEA;AACA;AAEA,kHAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;AACA;AAEA;AAGA,4HAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;ACtDA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AAMA;AAEA,qJAEA;AAKA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;AClCA;;;;;;;;;;;AAWA;AAGA;AACA;AACA;AAUA;AAIA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;ACjCA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"473.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/utils/update-merge-queue.ts","webpack://github-helpers/./src/helpers/manage-merge-queue.ts","webpack://github-helpers/./src/helpers/prepare-queued-pr-for-merge.ts","webpack://github-helpers/./src/helpers/remove-label.ts","webpack://github-helpers/./src/helpers/set-commit-status.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { JUMP_THE_QUEUE_PR_LABEL, QUEUED_FOR_MERGE_PREFIX } from '../constants';\nimport { PullRequestSearchResults } from '../types';\nimport { context } from '@actions/github';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\nimport { removeLabelIfExists } from '../helpers/remove-label';\nimport { updatePrWithMainline } from '../helpers/prepare-queued-pr-for-merge';\n\nexport const updateMergeQueue = (queuedPrs: PullRequestSearchResults) => {\n const sortedPrs = sortPrsByQueuePosition(queuedPrs);\n return map(sortedPrs, updateQueuePosition);\n};\n\nconst sortPrsByQueuePosition = (queuedPrs: PullRequestSearchResults): QueuedPr[] =>\n queuedPrs\n .map(pr => {\n const label = pr.labels.find(label => label.name?.startsWith(QUEUED_FOR_MERGE_PREFIX))?.name;\n const isJumpingTheQueue = Boolean(pr.labels.find(label => label.name === JUMP_THE_QUEUE_PR_LABEL));\n const queuePosition = isJumpingTheQueue ? 0 : Number(label?.split('#')?.[1]);\n return {\n number: pr.number,\n label,\n queuePosition\n };\n })\n .sort((pr1, pr2) => pr1.queuePosition - pr2.queuePosition);\n\nconst updateQueuePosition = async (pr: QueuedPr, index: number) => {\n const { number, label, queuePosition } = pr;\n const newQueuePosition = index + 1;\n if (!label || isNaN(queuePosition) || queuePosition === newQueuePosition) {\n return;\n }\n if (newQueuePosition === 1) {\n const { data: pullRequest } = await octokit.pulls.get({ pull_number: number, ...context.repo });\n await Promise.all([removeLabelIfExists(JUMP_THE_QUEUE_PR_LABEL, number), updatePrWithMainline(pullRequest)]);\n }\n\n return Promise.all([\n octokit.issues.addLabels({\n labels: [`${QUEUED_FOR_MERGE_PREFIX} #${newQueuePosition}`],\n issue_number: number,\n ...context.repo\n }),\n removeLabelIfExists(label, number)\n ]);\n};\n\ntype QueuedPr = {\n number: number;\n label?: string;\n queuePosition: number;\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport {\n FIRST_QUEUED_PR_LABEL,\n JUMP_THE_QUEUE_PR_LABEL,\n MERGE_QUEUE_STATUS,\n QUEUED_FOR_MERGE_PREFIX,\n READY_FOR_MERGE_PR_LABEL\n} from '../constants';\nimport { PullRequest } from '../types';\nimport { context } from '@actions/github';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\nimport { removeLabelIfExists } from './remove-label';\nimport { setCommitStatus } from './set-commit-status';\nimport { updateMergeQueue } from '../utils/update-merge-queue';\n\nexport const manageMergeQueue = async () => {\n const { data: pullRequest } = await octokit.pulls.get({ pull_number: context.issue.number, ...context.repo });\n if (pullRequest.merged || !pullRequest.labels.find(label => label.name === READY_FOR_MERGE_PR_LABEL)) {\n core.info('This PR is not in the merge queue.');\n return removePrFromQueue(pullRequest);\n }\n const {\n data: { items, total_count: queuePosition }\n } = await getQueuedPrData();\n if (pullRequest.labels.find(label => label.name === JUMP_THE_QUEUE_PR_LABEL)) {\n return updateMergeQueue(items);\n }\n if (!pullRequest.labels.find(label => label.name?.startsWith(QUEUED_FOR_MERGE_PREFIX))) {\n await addPrToQueue(pullRequest, queuePosition);\n }\n const isFirstQueuePosition = queuePosition === 1 || pullRequest.labels.find(label => label.name === FIRST_QUEUED_PR_LABEL);\n return setCommitStatus({\n sha: pullRequest.head.sha,\n context: MERGE_QUEUE_STATUS,\n state: isFirstQueuePosition ? 'success' : 'pending',\n description: isFirstQueuePosition ? 'This PR is next to merge.' : 'This PR is in line to merge.'\n });\n};\n\nconst removePrFromQueue = async (pullRequest: PullRequest) => {\n const queueLabel = pullRequest.labels.find(label => label.name?.startsWith(QUEUED_FOR_MERGE_PREFIX))?.name;\n if (queueLabel) {\n await map([READY_FOR_MERGE_PR_LABEL, queueLabel], label => removeLabelIfExists(label, pullRequest.number));\n const {\n data: { items }\n } = await getQueuedPrData();\n await updateMergeQueue(items);\n }\n};\n\nconst addPrToQueue = async (pullRequest: PullRequest, queuePosition: number) =>\n octokit.issues.addLabels({\n labels: [`${QUEUED_FOR_MERGE_PREFIX} #${queuePosition}`],\n issue_number: context.issue.number,\n ...context.repo\n });\n\nconst getQueuedPrData = () => {\n const { repo, owner } = context.repo;\n return octokit.search.issuesAndPullRequests({\n q: `org:${owner}+repo:${repo}+is:pr+is:open+label:\"${READY_FOR_MERGE_PR_LABEL}\"`\n });\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { FIRST_QUEUED_PR_LABEL, JUMP_THE_QUEUE_PR_LABEL, READY_FOR_MERGE_PR_LABEL } from '../constants';\nimport { PullRequest, PullRequestListResponse, SimplePullRequest } from '../types';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\nexport const prepareQueuedPrForMerge = () =>\n octokit.pulls\n .list({\n state: 'open',\n per_page: 100,\n ...context.repo\n })\n .then(findNextPrToMerge)\n .then(pullRequest => {\n if (pullRequest) {\n return updatePrWithMainline(pullRequest);\n }\n });\n\nconst findNextPrToMerge = (pullRequestsResponse: PullRequestListResponse) =>\n pullRequestsResponse.data.find(pr => hasRequiredLabels(pr, [READY_FOR_MERGE_PR_LABEL, JUMP_THE_QUEUE_PR_LABEL])) ??\n pullRequestsResponse.data.find(pr => hasRequiredLabels(pr, [READY_FOR_MERGE_PR_LABEL, FIRST_QUEUED_PR_LABEL]));\n\nconst hasRequiredLabels = (pr: SimplePullRequest, requiredLabels: string[]) =>\n requiredLabels.every(mergeQueueLabel => pr.labels.some(label => label.name === mergeQueueLabel));\n\nexport const updatePrWithMainline = (pullRequest: PullRequest | SimplePullRequest) =>\n octokit.repos\n .merge({\n base: pullRequest.head.ref,\n head: 'HEAD',\n ...context.repo\n })\n .catch(error => {\n if (error.status === 204) {\n core.info('The first PR in the queue is already up to date!');\n }\n if (error.status === 409) {\n core.info('The first PR in the queue has a merge conflict.');\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface RemoveLabel {\n label: string;\n}\n\nexport const removeLabel = ({ label }: RemoveLabel) => removeLabelIfExists(label, context.issue.number);\n\nexport const removeLabelIfExists = (labelName: string, issue_number: number) =>\n octokit.issues\n .removeLabel({\n name: labelName,\n issue_number,\n ...context.repo\n })\n .catch(error => {\n if (error.status === 404) {\n core.info('Label is not present on PR.');\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { PipelineState } from '../types';\nimport { context as githubContext } from '@actions/github';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\n\ninterface SetCommitStatus {\n sha: string;\n context: string;\n state: PipelineState;\n description?: string;\n target_url?: string;\n}\n\nexport const setCommitStatus = ({ sha, context, state, description, target_url }: SetCommitStatus) =>\n map(context.split('\\n'), context =>\n octokit.repos.createCommitStatus({\n sha,\n context,\n state,\n description,\n target_url,\n ...githubContext.repo\n })\n );\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAKA;AACA;AACA;;;AC3DA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAEA;AACA;AAIA;AAEA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;;AC5EA;;;;;;;;;;;AAWA;AAEA;AACA;AAEA;AACA;AAEA,kHAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;AACA;AAEA;AAGA,4HAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;ACtDA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AAMA;AAEA,qJAEA;AAKA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;AClCA;;;;;;;;;;;AAWA;AAGA;AACA;AACA;AAUA;AAIA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;ACjCA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/807.index.js b/dist/807.index.js index ef9bdff62..5391aec8b 100644 --- a/dist/807.index.js +++ b/dist/807.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/807.index.js.map b/dist/807.index.js.map index 624c30406..277fee0c5 100644 --- a/dist/807.index.js.map +++ b/dist/807.index.js.map @@ -1 +1 @@ -{"version":3,"file":"807.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/set-deployment-status.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DeploymentState } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface SetDeploymentStatus {\n state: DeploymentState;\n environment: string;\n sha?: string;\n description?: string;\n target_url?: string;\n environment_url?: string;\n}\n\nexport const setDeploymentStatus = ({ sha, state, environment, description, target_url, environment_url }: SetDeploymentStatus) =>\n octokit.repos\n .listDeployments({\n sha,\n environment,\n ...context.repo,\n ...GITHUB_OPTIONS\n })\n .then(deploymentsResponse => {\n const deployment_id = deploymentsResponse.data.find(Boolean)?.id;\n if (deployment_id) {\n return octokit.repos.createDeploymentStatus({\n state,\n deployment_id,\n description,\n target_url,\n environment_url,\n ...context.repo,\n ...GITHUB_OPTIONS\n });\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAGA;AACA;AACA;AAWA,yMAEA;AAEA;AAIA;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;;;A;;;;;;;;;;;;;AChDA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"807.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/set-deployment-status.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DeploymentState } from '../types';\nimport { GITHUB_OPTIONS } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\ninterface SetDeploymentStatus {\n state: DeploymentState;\n environment: string;\n sha?: string;\n description?: string;\n target_url?: string;\n environment_url?: string;\n}\n\nexport const setDeploymentStatus = ({ sha, state, environment, description, target_url, environment_url }: SetDeploymentStatus) =>\n octokit.repos\n .listDeployments({\n sha,\n environment,\n ...context.repo,\n ...GITHUB_OPTIONS\n })\n .then(deploymentsResponse => {\n const deployment_id = deploymentsResponse.data.find(Boolean)?.id;\n if (deployment_id) {\n return octokit.repos.createDeploymentStatus({\n state,\n deployment_id,\n description,\n target_url,\n environment_url,\n ...context.repo,\n ...GITHUB_OPTIONS\n });\n }\n });\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAGA;AACA;AACA;AAWA,yMAEA;AAEA;AAIA;;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAIA;AACA;;;A;;;;;;;;;;;;;AChDA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/905.index.js b/dist/905.index.js index 7bb4489aa..e5fe87a91 100644 --- a/dist/905.index.js +++ b/dist/905.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/905.index.js.map b/dist/905.index.js.map index 1533d6956..40b78033a 100644 --- a/dist/905.index.js.map +++ b/dist/905.index.js.map @@ -1 +1 @@ -{"version":3,"file":"905.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/add-pr-approval-label.ts","webpack://github-helpers/./src/octokit.ts","webpack://github-helpers/./src/utils/get-changed-filepaths.ts","webpack://github-helpers/./src/utils/get-core-member-logins.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { CORE_APPROVED_PR_LABEL, PEER_APPROVED_PR_LABEL } from '../constants';\nimport { context } from '@actions/github';\nimport { getCoreMemberLogins } from '../utils/get-core-member-logins';\nimport { octokit } from '../octokit';\n\ninterface AddPrApprovalLabel {\n login: string;\n teams?: string;\n}\n\nexport const addPrApprovalLabel = async ({ teams, login }: AddPrApprovalLabel) => {\n const coreMemberLogins = await getCoreMemberLogins(context.issue.number, teams?.split('\\n'));\n const approvalLabel = coreMemberLogins.includes(login) ? CORE_APPROVED_PR_LABEL : PEER_APPROVED_PR_LABEL;\n return octokit.issues.addLabels({\n labels: [approvalLabel],\n issue_number: context.issue.number,\n ...context.repo\n });\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n","import { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\nexport const getChangedFilepaths = (pull_number: number) =>\n octokit.pulls\n .listFiles({\n pull_number,\n per_page: 100,\n ...context.repo\n })\n .then(listFilesResponse => listFilesResponse.data.map(file => file.filename));\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { CodeOwnersEntry, loadOwners, matchFile } from 'codeowners-utils';\nimport { union, uniq } from 'lodash';\nimport { context } from '@actions/github';\nimport { getChangedFilepaths } from './get-changed-filepaths';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\n\nexport const getCoreMemberLogins = async (pull_number: number, teams?: string[]) => {\n const codeOwners = teams ?? (await getCodeOwners(pull_number));\n\n if (!codeOwners?.length) {\n core.setFailed('No code owners found.');\n throw new Error();\n }\n\n const adminLogins = await map(codeOwners, team =>\n octokit.teams\n .listMembersInOrg({\n org: context.repo.owner,\n team_slug: team,\n per_page: 100\n })\n .then(listMembersResponse => listMembersResponse.data.map(member => member.login))\n );\n return union(...adminLogins);\n};\n\nconst getCodeOwners = async (pull_number: number) => {\n const codeOwners = (await loadOwners(process.cwd())) ?? [];\n const changedFilePaths = await getChangedFilepaths(pull_number);\n const matchingCodeOwners = changedFilePaths.map(filePath => matchFile(filePath, codeOwners) ?? ({} as CodeOwnersEntry));\n return uniq(\n matchingCodeOwners\n .map(owner => owner.owners)\n .flat()\n .filter(Boolean)\n .map(owner => owner.substring(owner.indexOf('/') + 1))\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAKA;;;A;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;;;;;;;;;;ACjBA;AACA;AAEA,mIAEA;AAKA;;;A;;;;;;;;;;;;;;;;;;;;;ACVA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA,oMAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"905.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/add-pr-approval-label.ts","webpack://github-helpers/./src/octokit.ts","webpack://github-helpers/./src/utils/get-changed-filepaths.ts","webpack://github-helpers/./src/utils/get-core-member-logins.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { CORE_APPROVED_PR_LABEL, PEER_APPROVED_PR_LABEL } from '../constants';\nimport { context } from '@actions/github';\nimport { getCoreMemberLogins } from '../utils/get-core-member-logins';\nimport { octokit } from '../octokit';\n\ninterface AddPrApprovalLabel {\n login: string;\n teams?: string;\n}\n\nexport const addPrApprovalLabel = async ({ teams, login }: AddPrApprovalLabel) => {\n const coreMemberLogins = await getCoreMemberLogins(context.issue.number, teams?.split('\\n'));\n const approvalLabel = coreMemberLogins.includes(login) ? CORE_APPROVED_PR_LABEL : PEER_APPROVED_PR_LABEL;\n return octokit.issues.addLabels({\n labels: [approvalLabel],\n issue_number: context.issue.number,\n ...context.repo\n });\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n","import { context } from '@actions/github';\nimport { octokit } from '../octokit';\n\nexport const getChangedFilepaths = (pull_number: number) =>\n octokit.pulls\n .listFiles({\n pull_number,\n per_page: 100,\n ...context.repo\n })\n .then(listFilesResponse => listFilesResponse.data.map(file => file.filename));\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { CodeOwnersEntry, loadOwners, matchFile } from 'codeowners-utils';\nimport { union, uniq } from 'lodash';\nimport { context } from '@actions/github';\nimport { getChangedFilepaths } from './get-changed-filepaths';\nimport { map } from 'bluebird';\nimport { octokit } from '../octokit';\n\nexport const getCoreMemberLogins = async (pull_number: number, teams?: string[]) => {\n const codeOwners = teams ?? (await getCodeOwners(pull_number));\n\n if (!codeOwners?.length) {\n core.setFailed('No code owners found.');\n throw new Error();\n }\n\n const adminLogins = await map(codeOwners, team =>\n octokit.teams\n .listMembersInOrg({\n org: context.repo.owner,\n team_slug: team,\n per_page: 100\n })\n .then(listMembersResponse => listMembersResponse.data.map(member => member.login))\n );\n return union(...adminLogins);\n};\n\nconst getCodeOwners = async (pull_number: number) => {\n const codeOwners = (await loadOwners(process.cwd())) ?? [];\n const changedFilePaths = await getChangedFilepaths(pull_number);\n const matchingCodeOwners = changedFilePaths.map(filePath => matchFile(filePath, codeOwners) ?? ({} as CodeOwnersEntry));\n return uniq(\n matchingCodeOwners\n .map(owner => owner.owners)\n .flat()\n .filter(Boolean)\n .map(owner => owner.substring(owner.indexOf('/') + 1))\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAKA;;;A;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;;;;;;;;;;ACjBA;AACA;AAEA,mIAEA;AAKA;;;A;;;;;;;;;;;;;;;;;;;;;ACVA;;;;;;;;;;;AAWA;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA,oMAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/dist/956.index.js b/dist/956.index.js index 9538bf9b8..8665d6528 100644 --- a/dist/956.index.js +++ b/dist/956.index.js @@ -33,10 +33,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } }; const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.'; diff --git a/dist/956.index.js.map b/dist/956.index.js.map index 5c7bb043f..24de8e823 100644 --- a/dist/956.index.js.map +++ b/dist/956.index.js.map @@ -1 +1 @@ -{"version":3,"file":"956.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/check-pr-title.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental operations. Newer versions of octokit may not require this\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DEFAULT_PR_TITLE_REGEX } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\nimport { setFailed } from '@actions/core';\n\ninterface CheckPrTitle {\n pattern?: string;\n}\n\nexport const checkPrTitle = ({ pattern = DEFAULT_PR_TITLE_REGEX }: CheckPrTitle) => {\n const regex = new RegExp(pattern);\n return octokit.pulls\n .get({\n pull_number: context.issue.number,\n ...context.repo\n })\n .then(prResponse => {\n if (regex.test(prResponse.data.title)) {\n return true;\n }\n setFailed('Pull request title does not meet requirements.');\n return false;\n });\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AAMA;AACA;AACA,qFACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;ACpCA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file +{"version":3,"file":"956.index.js","sources":["webpack://github-helpers/./src/constants.ts","webpack://github-helpers/./src/helpers/check-pr-title.ts","webpack://github-helpers/./src/octokit.ts"],"sourcesContent":["/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details.\nexport const GITHUB_OPTIONS = {\n headers: {\n accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json'\n }\n};\n\nexport const DEFAULT_EXEMPT_DESCRIPTION = 'Passed in case the check is exempt.';\nexport const DEFAULT_PIPELINE_STATUS = 'Pipeline Status';\nexport const DEFAULT_PIPELINE_DESCRIPTION = 'Pipeline clear.';\nexport const PRODUCTION_ENVIRONMENT = 'production';\nexport const CORE_APPROVED_PR_LABEL = 'CORE APPROVED';\nexport const PEER_APPROVED_PR_LABEL = 'PEER APPROVED';\nexport const READY_FOR_MERGE_PR_LABEL = 'READY FOR MERGE';\nexport const MERGE_QUEUE_STATUS = 'QUEUE CHECKER';\nexport const QUEUED_FOR_MERGE_PREFIX = 'QUEUED FOR MERGE';\nexport const FIRST_QUEUED_PR_LABEL = `${QUEUED_FOR_MERGE_PREFIX} #1`;\nexport const JUMP_THE_QUEUE_PR_LABEL = 'JUMP THE QUEUE';\nexport const DEFAULT_PR_TITLE_REGEX = '^(build|ci|chore|docs|feat|fix|perf|refactor|style|test|revert|Revert|BREAKING CHANGE)((.*))?: .+$';\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { DEFAULT_PR_TITLE_REGEX } from '../constants';\nimport { context } from '@actions/github';\nimport { octokit } from '../octokit';\nimport { setFailed } from '@actions/core';\n\ninterface CheckPrTitle {\n pattern?: string;\n}\n\nexport const checkPrTitle = ({ pattern = DEFAULT_PR_TITLE_REGEX }: CheckPrTitle) => {\n const regex = new RegExp(pattern);\n return octokit.pulls\n .get({\n pull_number: context.issue.number,\n ...context.repo\n })\n .then(prResponse => {\n if (regex.test(prResponse.data.title)) {\n return true;\n }\n setFailed('Pull request title does not meet requirements.');\n return false;\n });\n};\n","/*\nCopyright 2021 Expedia, Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n https://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as core from '@actions/core';\nimport { Octokit } from '@octokit/rest';\nimport { getOctokit } from '@actions/github';\n\nexport const octokit = getOctokit(core.getInput('github_token', { required: true })).rest as unknown as Octokit;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;;;;AC/BA;;;;;;;;;;;AAWA;AAEA;AACA;AACA;AACA;AAMA;AACA;AACA,qFACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;;;;;;;;;ACpCA;;;;;;;;;;;AAWA;AAEA;AAEA;AAEA;;;A;;;A","sourceRoot":""} \ No newline at end of file diff --git a/src/constants.ts b/src/constants.ts index 868918a6c..fb8627bcc 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -11,10 +11,10 @@ See the License for the specific language governing permissions and limitations under the License. */ -// These extra headers are for experimental operations. Newer versions of octokit may not require this +// These extra headers are for experimental API features on Github Enterprise. See https://docs.github.com/en/enterprise-server@3.0/rest/overview/api-previews for details. export const GITHUB_OPTIONS = { headers: { - accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json' + accept: 'application/vnd.github.ant-man-preview+json,application/vnd.github.flash-preview+json,application/vnd.github.starfox-preview+json,application/vnd.github.inertia-preview+json' } };